R的stargazer包:从报告的测试统计量中消除“t =”标签

9

我目前正在使用stargazer准备一张回归结果表格。在其中,我想要显示t统计量。为此,我使用以下简化规范,也可在http://jakeruss.com/cheatsheets/stargazer.html#report-t-statistics-or-p-values-instead-of-standard-errors中找到。

stargazer(output, output2, type = "html",
      report = "vc*t")

生成的表格如下所示,报告t统计量:
0.088    
t = 5.822***

现在我的问题是:"t ="在每个模型和每个系数中都重复出现。这在某种程度上是冗余的,降低了表格的可读性。
有没有一种方法只报告t统计量的值而不带“t =”标签?只显示括号中的值会很好。
谢谢!
2个回答

10
这是可能的,但您必须编辑stargazer函数的源代码:
  1. 使用 trace(stargazer:::.stargazer.wrap, edit = T) 访问 stargazer 函数的编辑屏幕。
  2. 转到第7103/7104行(版本不同可能不同,例如,在2021年4月的版本5.2.2中现在是第7053和7054行),查找 .format.t.stats.left <- "t = ".format.t.stats.right <- "" 并根据需求进行编辑,例如: .format.t.stats.left <- "[".format.t.stats.right <- "]"
  3. 点击"保存"。
  4. 由于对源代码的更改仅是临时的,因此每次重新启动R会话后都需要重做此步骤。
然后,您对 stargazer(model1, type = "text", report = "vc*t") 的输出应该如下所示:
=======================================================================
                                         Dependent variable:           
                              -----------------------------------------
                                           daily_invcount2             
                                              negative                 
                                              binomial                 
-----------------------------------------------------------------------
log(lag_raised_amount + 1)                    -0.466***                
                                              [-7.290]                 
                                                                       
lag_target1                                   -0.661***                
                                              [-7.680]                 
                                                                                                                                                              
Constant                                      -3.480**                 
                                              [-5.490]                 
               
-----------------------------------------------------------------------
Observations                                    6,513                  
Log Likelihood                                 -8,834                
theta                                     1.840*** (0.081)             
Akaike Inf. Crit.                              17,924                
=======================================================================
Note:                         + p<0.1; * p<0.05; ** p<0.01; *** p<0.001

1
很好的答案,但是否有一种方法可以永久应用更改,除非用户更新软件包? - Matthew Son
谢谢。据我所知,不是真的。这个答案:https://dev59.com/ymAf5IYBdhLWcg3wu0tD 提供了一些关于如何编写自定义函数并用此函数覆盖现有函数的想法。 - JNWHH
1
更新于2021年4月:如果您使用的是stargazer 5.2.2,则需要更改的行是7053和7054。 - Raul Guarini Riva

2

一种解决方法是捕获stargazer的输出并进行编辑。以下是一个示例,我将stargazer的输出保存到文件中,然后从该文件中删除“t =”。

stargazer.save <- function(f.out, ...) {
# This is a wrapper function for saving stargazer output to file
output <- capture.output(stargazer(...))
cat(paste(output, collapse = "\n"), "\n", file=f.out, append=TRUE)
}

#save stargazer output (to e.g. a tex file)
stargazer.save(outfile, model.fit, report = "vc*t")

# read file back into R
u = readChar(outfile, file.info(outfile)$size)

# replace "t = " with a blank space
u = gsub("t = ","", u, ignore.case = F)

#write back to file
cat(u, file = outfile, append = F)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接