R Stargazer - 手动指定 R^2 并写入 .tex

Mic*_*gge 5 r stargazer

我正在使用 Stargazer 报告一些使用稳健标准误差的模型的结果。计算这些数据然后将模型输入 Stargazer 的过程会删除 R^2 等数据,因此我需要手动添加它。然而,这样做给我带来了问题。stargazer()以下是我尝试运行的基本调用。接下来的一些讨论是生成调用中的数据所需的代码stargazer()

stargazer(fit1_robust, fit2_robust,
    keep.stat = c("n", "adj.rsq"), # doesn't actually result in keeping the stats, but including it just to demonstrate such.
    add.lines = list(c("Adjusted $R^2$", fit1_r2, fit2_r2)),
    out = "~/Test.tex"
    )
Run Code Online (Sandbox Code Playgroud)

当我调用它时,我收到以下错误:

Error in if (nchar(text.matrix[r, c]) > max.length[real.c]) { : 
missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

这有一些有趣的方面:

  • ^如果我省略并仅使用,则不会发生错误"Adjusted $R2$"

  • out如果我不使用参数来指定要导出到的 .tex 文件,则不会发生该错误。

解决这些项目符号中的任何一个都可以“解决”错误,但代价是我的代码没有真正执行我想要的操作。如何按照我在这里所做的方式手动添加调整后的 R^2 (更一般地说,添加涉及 的注释^)?

(注意:我还尝试转义^字符,将其替换为/^。这给出了错误。如果我使用双重转义://^可以防止错误,但随后在生成的 .tex 文件中显示单个转义,这不是我想要的.)

以下是获得上述调用所需的所有对象的其余代码stargazer()

library(stargazer)
library(lmtest)
library(sandwich)

#################
# Simulate Data #
#################

N = 100

A = rnorm(N)
B = rnorm(N)
Y = 2*A + B + rnorm(N)
Data = data.frame(Y, A, B)

#####################################
# Fit Models and Find Robust Errors #
#####################################

fit1 = lm(Y~A)
fit2 = lm(Y~A+B)

fit1_robust = coeftest(fit1, vcov = sandwich)
fit2_robust = coeftest(fit2, vcov = sandwich)

fit1_r2 = round(summary(fit1)$adj.r.squared, 4)
fit2_r2 = round(summary(fit2)$adj.r.squared, 4)
Run Code Online (Sandbox Code Playgroud)

dww*_*dww 4

一种解决方法是将 stargazer 的输出保存在变量中,然后将其写入文件:

star = stargazer(fit1_robust, fit2_robust,
  add.lines = list(c("Adjusted $R^2$", fit1_r2, fit2_r2))
)
cat(star, sep = '\n', file = 'Test.tex')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述