2010-01-14 234 views
6

有誰知道一個函數可以創建一個給定數據集和係數的lm對象?從數據/係數創建lm對象

我對此感興趣,因爲我開始玩貝葉斯模型平均(BMA),我希望能夠從bicreg的結果中創建一個lm對象。我希望能夠訪問所有良好的通用lm函數,如診斷繪圖,預測,cv.lm等。

如果您非常確定這樣的函數不存在,這對知道也是非常有幫助的!

library(BMA) 
mtcars_y <- mtcars[, 1] #mpg 
mtcars_x <- as.matrix(mtcars[,-1]) 
res <- bicreg(mtcars_x, mtcars_y) 

summary(res) 
res$postmean # bma coefficients 

# The approximate form of the function 
# I'm looking for 
lmObject <- magicFunction(data=mtcars, coefficients=res$postmean) 
+0

哇。我必須始終使用魔法功能。 :) – Shane 2010-01-14 05:03:17

回答

5

沒有功能,我知道這是這樣的。人們當然可以製造。所有這一切你magicFunction需要做的就是創建一個元素的列表:

> names(fakeModel) 
[1] "coefficients" "residuals"  "effects"  "rank"   
[5] "fitted.values" "assign"  "qr"   "df.residual" 
[9] "xlevels"  "call"   "terms"   "model" 

然後使它的LM對象

> class(fakeModel) <- c("lm") 

我只想說,我認爲這是一個壞主意,但。誰說,你應用的通用函數將適用於bicreg對象。例如,你會如何解釋AIC(fakeModel)?

您最好創建自己的函數來執行診斷和預測。

+0

針對AIC(fakeModel)採取的要點。我會寫我自己的預測和診斷。感謝您的建議。 – 2010-01-15 21:02:31

3

看起來你可以照常計算你的lm對象,然後通過修改lm()結果的$coefficients屬性修改係數。

看到這個問題,結果更多的細節:

http://tolstoy.newcastle.edu.au/R/e2/help/07/08/24294.html

不知道它對應於你想要做什麼,但...

+0

這可能適用於預測,但對於診斷我需要保持對象的其餘部分同步。 – 2010-01-15 20:09:30