2012-12-07 134 views
3

我是來自Stata世界的R的新手。我剛剛運行的線性模型(具有約100個變量,各有500個數據點左右),像這樣:預測預測的標準誤差

RegModel.3 <- lm(ordercount~timecount2+timecount4 .... expeditedrop, data=Dataset) 

現在我想找到預測的標準誤差,如在Stata的stdf功能,爲每個擬合值。

我嘗試下面的代碼:

predict(RegModel.3$fitted.values, new, se.fit=TRUE) 

但我發現了以下錯誤:

Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "c('double', 'numeric')" 

我在做什麼錯?此外,我怎麼去類似的方式的方式使用write.csv命令導出輸出我寫的係數:

write.csv(RegModel.3$coefficients, file='results.csv') 

謝謝!

回答

4

可再現從?lm採取例如:

write.csv(cbind(pp$fit,stderr=pp$se.fit),file="predintervals.csv") 

ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14) 
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69) 
group <- gl(2,10,20, labels=c("Ctl","Trt")) 
weight <- c(ctl, trt) 
lm.D9 <- lm(weight ~ group) 


pp <- predict(lm.D9, interval="prediction",se.fit=TRUE) 

(參見?predict.lm供參考)和應該這樣做。 (在這種情況下,標準誤差全部相同,因爲存在單個分類預測器並且沒有連續預測器......)

PS:只要有可能,最好使用標準訪問器,如coef()來提取係數或fitted()以提取擬合值,而不是通過$到達對象內部。嘗試methods(class="lm")以查看可用的訪問器。

編輯:插圖,一般的做法仍然是一個大問題的工作:

set.seed(101) 
X <- matrix(runif(101*500),nrow=500) 
prednames <- paste0("predictor",1:100) 
X2 <- setNames(as.data.frame(X), 
       c("response",prednames)) 
form <- reformulate(paste(prednames,collapse="+"),response="response") 
fit1 <- lm(form,data=X2) 
pp <- predict(fit1,interval="predict",se.fit=TRUE) 
+1

當我使用預測(),我得到以下錯誤:錯誤predict.lm(RegModel.3,間隔=「預測」,se.fit = TRUE): 下標越界---你知道我爲什麼得到它嗎? – Bryan

+1

@ user1884063請發佈一個[可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) –

+0

或至少告訴我們什麼'str(RegModel .3)'是... –