我试图将一个非线性回归模型应用于R.
数据如下:
data$WT
[1] 107.194364 95.986477 87.511449 74.028678 67.733609
[6] 52.117508 38.486519 24.197712 15.854248 8.641564
[11] 5.965327 2.871084
data$So
[1] 2.0000000 1.0000000 0.5000000 0.2500000 0.2000000 0.1000000
[7] 0.0500000 0.0250000 0.0125000 0.0062500 0.0031250 0.0015625
模式是:
bindmod <- nls(WT ~
(Ase* ((Kd+So+0.03)- sqrt((Kd+So+0.03)^2 - 4*So*0.03)/2)/So)
, data = data, start = list(Kd = 0.03, Ase = 2000))
试图适应此错误时,会出现以下错误:
numericDeriv(form[3L],name(Ind),env)中的错误:在评估模型时所产生的缺失值或无穷大:警告消息: sqrt((Kd + So + 0.03) ^2-4* So *0.03):生成NaNs
然而,平方根中这个术语的值不应该是负值,所以我不明白它为什么会产生NaNs。这与评估过程有关吗?
任何帮助都将不胜感激,谢谢。
乔治
发布于 2016-09-06 11:34:14
您没有指定下/上界,所以当kd
和so
是负值时,sqrt
会生成NaNs。尝试同时设置两个lower/
upperbounds _and_ the
algorithm`:
nls(WT ~ (Ase* ((Kd+So+0.03) - sqrt((Kd+So+0.03)^2 - 4*So*0.03) / 2) / So ),
data = data,
start = list(Kd = 0.03, Ase = 2000),
lower = list(kd=0.01, Ase= 0.01 ),
algorithm = "port")
https://stackoverflow.com/questions/39347817
复制相似问题