有没有人知道在给定数据集和系数的情况下可以创建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 :(得分:6)
我没有意识到这样做的功能。当然可以制作一个。你的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)?
最好创建自己的功能来进行诊断和预测。
答案 1 :(得分:3)
您似乎可以像往常一样计算lm
对象,然后通过修改$coefficients
结果的lm()
属性来修改系数。
有关详细信息,请参阅此问题和结果:
http://tolstoy.newcastle.edu.au/R/e2/help/07/08/24294.html
不确定它是否符合你想做的事情,但是......