12

有谁知道给定数据集和系数可以创建 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)
4

2 回答 2

7

我知道没有任何功能可以做到这一点。当然可以制作一个。您的 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)?

您最好创建自己的函数来进行诊断和预测。

于 2010-01-14T06:03:04.587 回答
3

看来您可以lm照常计算对象,然后通过修改结果的$coefficients属性来修改系数lm()

有关更多详细信息,请参阅此问题和结果:

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

不确定它是否符合您想要做的事情,但......

于 2010-01-14T10:42:21.017 回答