【问题标题】:Trouble applying NLS in R在 R 中应用 NLS 时遇到问题
【发布时间】:2017-01-13 20:11:15
【问题描述】:

我正在尝试对 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) 中:产生了 NaN

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

任何帮助将不胜感激,谢谢。

乔治

【问题讨论】:

    标签: r nls


    【解决方案1】:

    您没有指定下限/上限,因此当kdso 使得(Kd+So+0.03)^2 - 4*So*0.03 为负数时,sqrt 会产生 NaN。尝试同时设置lower/upperbounds _and_ thealgorithm`:

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

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 2021-10-31
      • 2020-03-04
      • 1970-01-01
      • 2014-10-27
      相关资源
      最近更新 更多