首页 > 解决方案 > R 问题:如何保存回归输出以便我可以使用 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

标签: rlapplylm

解决方案


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

推荐阅读