我有一种情况,我必须给公式作为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()
函数的参数提供吗?
答案 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()