【发布时间】:2019-01-08 02:03:56
【问题描述】:
这是我的第一篇文章,所以我希望我的所有内容都正确无误,并感谢您提供的任何帮助。
我正在尝试将曲线拟合到我收集的一组原始数据。数据是 sigmoid,应该用 Shae-Ackers 模型(生物学中常用)来解释。在查看了此站点上的其他示例后,我最初尝试使用“nls”功能来执行此操作。但是我收到以下错误:
“错误:初始参数估计处的奇异梯度矩阵”。
随后,我尝试使用“nlsLM”功能。正如我从本网站上的其他问题中了解到的那样,这应该使用替代算法来适应我的模型,从而避免错误。但是,我仍然得到同样的错误:
“错误:初始参数估计处的奇异梯度矩阵”。
这是我目前正在尝试工作的代码:
library("minpack.lm")
library("nls2")
L = c(0, 0.0001, 0.0005, 0.001, 0.005,
0.01, 0.05, 0.1, 0.5, 1, 5, 10, 50) # X- values, inducer concentration.
Fluo = c(23.10263117,
21.5111054,
25.01080225,
32.63906667,
82.6671047,
287.1788694,
812.2339928,
1308.71973,
2822.260637,
3675.085354,
4634,
4399.131349,
4096.759224) # Y-values, fluorescence measurement.
model <- nlsLM(Fluo ~ Fmax*((k1 + k3C0*((L^n)/(kd^n + L^n)))/(1 + k1 + k2C0*((L^n)/(kd^n + L^n)) + k3C0*((L^n)/(kd^n + L^n)))),
start = c(k1 = 0.009,k2C0 = 37.5,k3C0 = 3.4,kd = 0.09,n = 2.8,Fmax = 7650), algorithm = "LM", trace = TRUE)
plot(log10(L), log10(Fluo), main = "data")
lines(log10(L), log10(fitted(model)), col = "red", lty = 2)
我提供的初始估计值应该与我正在寻找的值非常接近,因为这些值之前已在文献中针对我试图拟合的系统进行了报道。
所以我的总体问题是这样的:
1. 有没有办法可以找到可以避免此错误的替代起始估计值?
2. 除了“nls”或“nlsLM”之外,我还可以使用哪些其他函数来拟合我的模型? (我也看过'nls.lm',但不确定如何正确实施)。
非常感谢您的帮助,如果需要,我很乐意提供任何其他信息!
【问题讨论】:
标签: r nls model-fitting