无法在R

时间:2016-09-06 11:20:41

标签: r nls

我试图在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]],names(ind),env)出错:     评估模型时产生的缺失值或无穷大   另外:警告信息:   在sqrt((Kd + So + 0.03)^ 2 - 4 * So * 0.03):NaNs产生

这个术语在平方根中的值不应该与存在的值相反,但是,我不明白为什么它会产生NaN。这与估算过程有关吗?

非常感谢任何帮助,谢谢。

乔治

1 个答案:

答案 0 :(得分:1)

您没有指定下限/上限,因此当kdso(Kd+So+0.03)^2 - 4*So*0.03为负数时,sqrt会生成NaN。尝试同时设置lower/上限bounds _and_ the算法:

  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")