2009-12-07 108 views
1

我有一種情況需要輸入公式作爲nls()函數的輸入。 我有時間和方差之間的數據。例如:R +用戶自定義函數

Time Variance 
1  0.15 
2  0.23 
3  0.67 
4  0.85 

現在我使用公式VT =((1-E ^克拉)/克拉))(Q^2)/ 2K,其中的Vt是方差在時間t。在上面的等式中,我有兩個變量(k,q)。我必須確定(帽子)(帽子)。我可以將上述公式定義爲用戶定義的公式並將其作爲nls()函數的參數嗎?

回答

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