2012-09-14 75 views
2

如幫助(predict.nls)中所述,當se.fit = TRUE時,應計算預測的標準誤差。但是,我的代碼在下面沒有顯示,但只是預測。Predict無法顯示預測的標準誤差,其中se.fit = TRUE

alloy <- data.frame(x=c(10,30,51,101,203,405,608,810,1013,2026,4052,6078, 
         8104,10130), 
        y=c(0.3561333,0.3453,0.3355,0.327453,0.3065299,0.2839316, 
         0.2675214,0.2552821,0.2455726,0.2264957,0.2049573, 
         0.1886496,0.1755897,0.1651624)) 
model <- nls(y ~ a * x^(-b), data=alloy, start=list(a=.5, b=.1)) 
predict(model, se=TRUE) 

我的代碼有什麼問題?謝謝!

+3

然後'幫助(predict.nls)'接着說,「目前這個參數將被忽略。」 。 – BenBarnes

回答

4

沒有。的?predict.nlsDescription節的最後一行說:

At present ‘se.fit’ and ‘interval’ are ignored. 

也許在cardeltaMethod功能會有所幫助。 (library("sos"); findFn("{delta method} nls")的結果...)

更新:我在第一次嘗試時沒有和car::deltaMethod一起工作。這裏試圖使用emdbook包中的deltavar函數。 attach()/detach()的東西是一個可怕的黑客,但這是我可以快速工作(基於with的解決方案因爲非標準評估而無法工作)。改進歡迎)

attach(alloy) 
> deltavar(a*x^(-b),meanval=coef(model),Sigma=vcov(model)) 
[1] 1.445018e-04 6.956934e-05 4.897363e-05 3.287949e-05 2.527709e-05 
[6] 2.379668e-05 2.487129e-05 2.626029e-05 2.762930e-05 3.300235e-05 
[11] 3.933191e-05 4.317493e-05 4.588509e-05 4.795406e-05 
> detach(alloy) 

注意事項:

  • 這些差異,而不是標準的錯誤;
  • 這是一個delta方法的近似值,在強非線性或強非高斯誤差的情況下可能不準確(我相信Brian Ripley過去曾表示他不認爲delta方法近似值足夠可靠使用,但他是一個純粹的)
  • 我沒有檢查,這是一個明智的辦法
+0

非常感謝您的詳細和善的回答。這對我很有幫助。最好的祝願! –