【问题标题】:How to present R lm object interaction coefficients in a table?如何在表格中呈现 R lm 对象交互系数?
【发布时间】:2015-04-23 22:19:22
【问题描述】:

考虑一个带有交互项的 lm fit 对象,例如:

Call:
lm(formula = mpg ~ interaction(gear, am, drop = T) - 1 + cyl, data = mtcars)

Coefficients:
interaction(gear, am, drop = T)3.0  interaction(gear, am, drop = T)4.0  
                            35.478                              34.022  
interaction(gear, am, drop = T)4.1  interaction(gear, am, drop = T)5.1  
                            37.949                              36.946  
                               cyl  
                            -2.594  

是否有一种直接的方法可以在二维表中排列(仅)交互项的系数?例如:

gear    am = 0   am = 1   
3       35.478   NA   
4       34.022   37.949
5       NA       36.946

【问题讨论】:

    标签: r lm interaction


    【解决方案1】:

    您可以使用broom 包轻松获取信息。只需根据需要调整表格即可:

    model <- lm(formula = mpg ~ interaction(gear, am, drop = T) - 1 + cyl, data = mtcars)
    
    library(broom)
    tidy(model)[grep("interaction", tidy(model)$term),]
    #                                term estimate std.error statistic      p.value
    #1 interaction(gear, am, drop = T)3.0 35.47755  3.533483  10.04039 1.302118e-10
    #2 interaction(gear, am, drop = T)4.0 34.02157  2.781402  12.23181 1.599806e-12
    #3 interaction(gear, am, drop = T)4.1 37.94942  2.348132  16.16154 2.087857e-15
    #4 interaction(gear, am, drop = T)5.1 36.94589  3.096187  11.93271 2.822201e-12
    

    要得到你想要的表,你可以这样做:

    dtab <- table(mtcars$gear, mtcars$am)
    dtab[which(dtab != 0)] <- tidy(model)[grep("interaction", tidy(model)$term),]$estimate
    dtab[which(dtab == 0)] <- NA
      #       0        1
      #3 35.47755         
      #4 34.02157 37.94942
      #5          36.94589
    

    【讨论】:

    • 它还可以很好地扩展到更高的维度:如果我们对gear, am, carb感兴趣而不是gear, am,请使用table(mtcars$gear, mtcars$am, mtcars$carb)
    猜你喜欢
    • 2019-02-27
    • 2020-10-23
    • 2021-11-06
    • 2021-07-04
    • 2019-04-02
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多