R +用户定义的功能

时间:2009-12-07 04:06:06

标签: r statistics

我有一种情况,我必须给公式作为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(帽子) q(帽子)。我可以将上述公式定义为用户定义的公式,并将其作为nls()函数的参数提供吗?

1 个答案:

答案 0 :(得分:2)

你试过吗?

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