2010-01-14 232 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