簡體   English   中英

R Stargazer - 手動指定R ^ 2並寫入.tex

[英]R Stargazer - Manually Specify R^2 And Write to .tex

我正在使用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"
    )

當我這樣稱呼時,我收到以下錯誤:

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

這有一些有趣的方面:

  • 如果我省略^而不是僅使用"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)

一種解決方法是將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')

在此輸入圖像描述

暫無
暫無

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

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