代码之家  ›  专栏  ›  技术社区  ›  Bob Albright

从数据/系数创建lm对象

  •  8
  • Bob Albright  · 技术社区  · 15 年前

    有人知道一个函数可以创建一个给定数据集和系数的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)
    
    2 回复  |  直到 15 年前
        1
  •  6
  •   Ian Fellows    15 年前

    我不知道这样做有什么作用。当然可以做一个。您的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)?

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

        2
  •  3
  •   juba    15 年前

    看来你可以计算 lm 像往常一样,然后通过修改 $coefficients 你的属性 lm() 结果。

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

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

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