【问题标题】:R question : How to save regression output so I can use mtableR 问题:如何保存回归输出以便我可以使用 mtable
【发布时间】:2021-05-03 23:43:03
【问题描述】:

我将多个回归输出保存在一个列表中,但使用 mtable 函数比较它们会引发错误。

我的回归具有相同的 x 和 y 列名称和数据类型,但会有不同的数据。此处的最小可重现示例。 匹配常规 lm 输出和保存的列表元素表示它们是相同的。 非常感谢您的帮助!

library(memisc)  # for mtable - comparing regressions

x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))

# simple regression variables can be compared
fit1 = lm(y ~ x)
summary(fit1)
fit2 = lm(y ~ x)
mtable(fit1,fit2)  # This works 

##  Saving as a list changes the lm output when accessing back the list element?

t<- list()
t<- append(t, list(fit1))
t<- append(t, list(fit2))
mtable(t[[1]], t[[2]]) # This does not work 

# with lapply
p<- lapply(1:2,function(k){
  fit1 = lm(y ~ x)
  fit1
})
mtable(p[[1]],p[[2]]) # This does not work

all.equal(fit1,p[[1]]) # Returns TRUE
all.equal(fit1,t[[1]]) # Returns TRUE

【问题讨论】:

    标签: r lapply lm


    【解决方案1】:

    我可以确认mtable 对我不起作用...我不明白为什么它不起作用。它抱怨一些属性:

    Error in attributes(.Data) <- c(attributes(.Data), attrib):  'names' attribute [6] must be the same length as the vector [2]
    

    经过检查,它们都是相同的。

    如果您不太大惊小怪,我会改用stargazer,它非常适合列表。事实上,它可以直接获取列表,mtable 根据它的帮助页面没有。

    x = cumsum(c(0, runif(100, -1, +1)))
    y = cumsum(c(0, runif(100, -1, +1)))
    
    # simple regression variables can be compared
    fit1 = lm(y ~ x)
    fit2 = lm(y ~ x)
    
    # with lapply
    p<- lapply(1:2,function(k){
      fit1 = lm(y ~ x)
      fit1
    })
    
    stargazer::stargazer(fit1, fit2, type = "text")
    #> 
    #> ==========================================================
    #>                                   Dependent variable:     
    #>                               ----------------------------
    #>                                            y              
    #>                                    (1)            (2)     
    #> ----------------------------------------------------------
    #> x                                1.329***      1.329***   
    #>                                  (0.081)        (0.081)   
    #>                                                           
    #> Constant                        -2.198***      -2.198***  
    #>                                  (0.178)        (0.178)   
    #>                                                           
    #> ----------------------------------------------------------
    #> Observations                       101            101     
    #> R2                                0.731          0.731    
    #> Adjusted R2                       0.728          0.728    
    #> Residual Std. Error (df = 99)     1.447          1.447    
    #> F Statistic (df = 1; 99)        269.086***    269.086***  
    #> ==========================================================
    #> Note:                          *p<0.1; **p<0.05; ***p<0.01
    
    stargazer::stargazer(p, type = "text")
    #> 
    #> ==========================================================
    #>                                   Dependent variable:     
    #>                               ----------------------------
    #>                                            y              
    #>                                    (1)            (2)     
    #> ----------------------------------------------------------
    #> x                                1.329***      1.329***   
    #>                                  (0.081)        (0.081)   
    #>                                                           
    #> Constant                        -2.198***      -2.198***  
    #>                                  (0.178)        (0.178)   
    #>                                                           
    #> ----------------------------------------------------------
    #> Observations                       101            101     
    #> R2                                0.731          0.731    
    #> Adjusted R2                       0.728          0.728    
    #> Residual Std. Error (df = 99)     1.447          1.447    
    #> F Statistic (df = 1; 99)        269.086***    269.086***  
    #> ==========================================================
    #> Note:                          *p<0.1; **p<0.05; ***p<0.01
    

    【讨论】:

    • 谢谢你Fons :)
    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2014-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多