【问题标题】:R + user defined functionR + 用户定义函数
【发布时间】:2009-12-07 04:06:06
【问题描述】:

我有一种情况,我必须提供一个公式作为nls() 函数的输入。 我有介于时间和方差之间的数据。例如:

Time Variance
1     0.15
2     0.23
3     0.67
4     0.85

现在我使用公式 Vt = ((1-e^kt)/kt)) (q^2)/2k,其中 Vt 是方差在时间 t。我在上面的等式中有两个变量 (k,q) 。我必须确定 k(hat)q(hat)。我可以将上述公式定义为用户定义的公式,并将其作为参数提供给nls() 函数吗?

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    你试过了吗?

    > d = data.frame(t=1:4,V=c(0.15,0.23,0.67,0.85))
    > Vt = function(t,k,q) {((1-exp(k*t))/(k*t))*q^2/(2*k)}
    > nls(V~Vt(t,k,q),data=d,start=list(k=0.1,q=0.1),trace=TRUE)
    1.483693 :  0.1 0.1 
    1.099885 :  -7.358501 -3.593847 
    Error in numericDeriv(form[[3L]], names(ind), env) : 
      Missing value or an infinity produced when evaluating the model
    

    当然没用,但那是因为我还没有坐下来 并找出合理的起始值等。(如果你真的要去 要尝试将 2 参数非线性模型拟合到 4 个数据点,您需要 会有很多麻烦。我希望这只是一个子样本 你的数据...)

    当然,在这种情况下,您也可以只写出公式 nls()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2010-11-20
      相关资源
      最近更新 更多