簡體   English   中英

將統計信息附加到 coeftest 輸出以包含在觀星者表中

[英]Appending statistics to coeftest output to include in stargazer tables

我有一個 glm 模型,我使用lmtest包中的coeftest來估計穩健的標准誤差。 當我使用 stargazer 生成回歸表時,我得到了正確的結果,但沒有觀察數量和其他相關統計數據,如零偏差和模型偏差。

下面是一個例子:

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.

我對觀察次數、零偏差和殘差偏差特別感興趣。

我認為如果我用新的系數矩陣替換舊的系數矩陣,我會得到正確的估計值和正確的統計數據,觀星者會識別模型並正確打印它。 為此,我嘗試用m1模型中的coeftest模型替換系數、SE、z 統計量和 p 值,但其中一些統計數據是使用summary.glm計算的,不包含在m1輸出中。 我可以輕松地在summary輸出中替換這些系數,但 stargazer 無法識別摘要類型類。 我嘗試使用特定統計信息向m對象添加屬性,但它們沒有顯示在輸出中,並且觀星者無法識別它。

注意:我知道 stargazer 可以計算強大的 SE,但我也在做其他計算,所以這個例子需要包括coeftest輸出。

任何幫助表示贊賞。

將原始模型傳遞到 stargazer 可能是最簡單的,然后使用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 包(v0.3.0) 於 2020 年 11 月 9 日創建

如果我猜對了,您可以嘗試以下操作:

首先,將您的觀星者分析分配給這樣的對象

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)

希望這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM