【问题标题】:How to incorporate mapply with nlsLM in R?如何在 R 中将 mapply 与 nlsLM 合并?
【发布时间】:2015-03-09 14:28:39
【问题描述】:

我正在尝试拟合我的模型y~exp((a*x1+b*x2+c)^d)+f,但我收到一个错误,因为我不确定如何从 Package:minpack.lm 合并mapply with nlsLM

错误:

     Error in fn(par, ...) : 
       unused arguments (x1 = c(0.203114295490632, -0.16516023916803, 
             0.0870323364177826, 

不同数据结构的更多解释:

所以第一次调用 fun 应该是:y[1,1,],x1[1,1,],x2[1,1,]:使用这些值拟合模型并给出结果。然后转到下一次调用并执行相同操作:y[1,2,],x1[1,2,],x2[1,2,]...等

【问题讨论】:

  • fun(x1=x1, x2=x2, y=y) 工作吗?
  • 如果y是一个列表,选择包含你想要的元素,例如y[[1]].
  • nlsLM 的文档中的哪个位置说它接受名为 x1x2y 的参数?
  • 我有一个很长的评论,提出了要测试的东西,直到你用你的编辑把事情弄清楚。我现在有点困惑,但我很清楚我之前所想的一切都是基于对您的数据的错误假设。您是否能够让fun 手动工作?
  • 手动,我的意思是:你能成功执行只做第一批回归的代码吗?我无法让它手动工作,可能是因为我既不熟悉 nlsLM 也不熟悉您的数据结构。我未发表的评论不会有任何好处,因为它对您编辑的 (3D) 数据没有意义。

标签: r nls


【解决方案1】:

我没试过,但是看起来nlsLM需要一个data.frame作为它的数据参数(这更符合模型拟合),试试:

fun <- function(x1, x2, y) {
      out <- nlsLM(y~exp((a*x1+b*x2+c)^d)+f, data = data.frame(x1=x1,x2=x2,y=y),
           start = list(a = 3, b = 0.1, c=0.02,d = 1,f=0.02))
    }
 out=mapply(fun, x1=x1, x2=x2, y=y)

【讨论】:

  • 我收到两个错误:lmdif: info = 0. Improper input parametersMissing value or an infinity produced when evaluating the model
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 2022-01-20
  • 2020-12-10
  • 2014-05-05
  • 1970-01-01
相关资源
最近更新 更多