【问题标题】:Singular gradient error with R's nls / nlsLMR 的 nls / nlsLM 的奇异梯度误差
【发布时间】:2017-09-06 23:48:42
【问题描述】:

我想使用像 brian s. cheng 这样的 logit 函数进行非线性回归,基于 Fox & Weisberg.

我想去most pain-free way 并使用nls,但出现错误

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
NA/NaN/Inf in foreign function call (arg 1)

我检查了我没有任何NaN, Inf or similar,发现我有Singular gradient error。但是,我不使用零残留人工数据(因为不应该使用)。因为它与nls 的内部有关,所以我转向nlsLM,但错误仍然存​​在。我能做什么?

我的数据是https://pastebin.com/iTXQcBzB

我的代码是

nlsLM(y ~ SSlogis(x, Asym, xmid, scal), mydata) % Error in lm.fit
nlsLM(y ~ theta1/(1 + exp(-(theta2 + theta3 * x))), mydata) % Singular gradient

提供的数据其实只是一部分,我的完整代码更像

mydata %>%
  group_by(groupNr) %>%
  do(regmodel = nls(.$y ~ SSlogis(.$x, Asym, xmid, scal), ., 
     start = c(Asym = max(.$y), xmid = mean(.$x), scal = 1)))

【问题讨论】:

    标签: r regression non-linear-regression


    【解决方案1】:

    你需要更好的起始值:

    nls(y ~ SSlogis(x, Asym, xmid, scal), mydata, 
        start = c(Asym = max(mydata$y), xmid = mean(mydata$x), scal = 1))
    

    给予:

    Nonlinear regression model
      model: y ~ SSlogis(x, Asym, xmid, scal)
       data: mydata
         Asym      xmid      scal 
    2.304e+04 5.519e+00 3.065e-01 
     residual sum-of-squares: 477139282
    
    Number of iterations to convergence: 8 
    Achieved convergence tolerance: 5.271e-06
    

    【讨论】:

    • 似乎是朝着正确方向迈出的一步,但现在有了我的数据(我有多个类似这样的数据集,我需要为所有数据集都这样做)我收到错误Error in qr.default(.swts * attr(rhs, "gradient")) :NA/NaN/Inf in external Function call (arg 1)我在问题中发布了代码以说明我在做什么。
    • 我在出现错误的地方创建了一个 pastebin:pastebin.com/ZiVxJQMk
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 2016-10-23
    • 2017-07-19
    相关资源
    最近更新 更多