R 问题:如何保存回归输出以便我可以使用 mtable

R question : How to save regression output so I can use mtable

我将多个回归输出保存在一个列表中,但使用 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

我可以确认 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