将统计数据附加到coeftest输出以包含在观星者表

时间:2016-10-19 16:01:06

标签: r stargazer

我有一个glm模型,我使用coeftest包中的lmtest来估计可靠的标准错误。当我使用观星者制作回归表时,我得到了正确的结果,但没有观察数量和其他相关统计数据,如零偏差和模型偏差。

以下是一个例子:

library(lmtest)
library(stargazer)

m1 <- glm(am ~ mpg + cyl + disp, mtcars, family = binomial)
# Simple binomial regression

# For whatever reason, let's say I want to use coeftest to estimate something
m <- coeftest(m1)

stargazer(m, type = "text", single.row = T) # This is fine, but I want to also include the number of observations
                                            # the null deviance and the model deviance.

我特别感兴趣的是观察次数,零偏差和剩余偏差。

我认为如果我用新的系数矩阵替换旧的系数矩阵,我会用正确的统计数据得到正确的估计值,而观星者会识别模型并正确打印。为此,我尝试用coeftest模型中的m1模型替换系数,SE,s,z统计和p值,但其中一些统计数据是用{{ 1}}并且不包含在summary.glm输出中。我可以很容易地在m1输出中替换这些系数,但是观星者不会识别摘要类型类。我尝试使用特定统计信息向summary对象添加属性,但它们不会显示在输出中,而且观星者也无法识别它。

注意:我知道stargazer可以计算强大的SE,但我也在进行其他计算,因此该示例需要包含m输出。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

如果我找对你,你可以尝试以下方法:

首先,将您的观星分析分配给像这样的对象

stargazer.values <- stargazer(m, type = "text", single.row = T) 

然后使用body(stargazer)检查stargazer命令的代码。 希望您可以找到观星者使用但不报告的值的对象。然后,您可以像这样解决它们(例如,如果有一个名为“null.deviance”的对象

stargazers.values$null.deviance

或者,如果它是另一个数据框的一部分,比如df,它可能就像这样

stargazers.values$df$null.deviance

也许像这样的代码可能会有所帮助

print(null.deviance <- stargazers.values$null.deviance)

希望这有帮助!

答案 1 :(得分:0)

将原始模型传递到注视者中,然后使用coeftest传递标准误差(se = ,置信区间(ci.custom = )和/的自定义值可能是最简单的或p个值(p = )。有关如何轻松处理包含多个模型的列表,请参见下文。


suppressPackageStartupMessages(library(lmtest))
suppressPackageStartupMessages(library(stargazer))

mdls <- list(
  m1 = glm(am ~ mpg, mtcars, family = poisson),
  
  m2 = glm(am ~ mpg + cyl + disp, mtcars, family = poisson)
)

# Calculate robust confidence intervals
se_robust <- function(x)
  coeftest(x, vcov. = sandwich::sandwich)[, 2]


# Original SE
stargazer(mdls, type = "text", single.row = T, report = "vcsp")
#> 
#> ===============================================
#>                        Dependent variable:     
#>                   -----------------------------
#>                                am              
#>                        (1)            (2)      
#> -----------------------------------------------
#> mpg               0.106 (0.042)  0.028 (0.083) 
#>                     p = 0.012      p = 0.742   
#> cyl                              0.435 (0.496) 
#>                                    p = 0.381   
#> disp                             -0.014 (0.009)
#>                                    p = 0.151   
#> Constant          -3.247 (1.064) -1.488 (3.411)
#>                     p = 0.003      p = 0.663   
#> -----------------------------------------------
#> Observations            32             32      
#> Log Likelihood       -21.647        -20.299    
#> Akaike Inf. Crit.     47.293         48.598    
#> ===============================================
#> Note:               *p<0.1; **p<0.05; ***p<0.01

# With robust SE
stargazer(
  mdls, type = "text", single.row = TRUE, report = "vcsp", 
  se = lapply(mdls, se_robust))
#> 
#> ===============================================
#>                        Dependent variable:     
#>                   -----------------------------
#>                                am              
#>                        (1)            (2)      
#> -----------------------------------------------
#> mpg               0.106 (0.025)  0.028 (0.047) 
#>                    p = 0.00002     p = 0.560   
#> cyl                              0.435 (0.292) 
#>                                    p = 0.137   
#> disp                             -0.014 (0.007)
#>                                    p = 0.042   
#> Constant          -3.247 (0.737) -1.488 (2.162)
#>                    p = 0.00002     p = 0.492   
#> -----------------------------------------------
#> Observations            32             32      
#> Log Likelihood       -21.647        -20.299    
#> Akaike Inf. Crit.     47.293         48.598    
#> ===============================================
#> Note:               *p<0.1; **p<0.05; ***p<0.01

reprex package(v0.3.0)于2020-11-09创建