Один из обходных путей - сохранить вывод 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"
)
Когда я вызываю это, я получаю следующую ошибку:
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 появляется один escape, и это не то, что я хочу.)
Вот остальная часть кода, чтобы получить все объекты, необходимые для вышеуказанного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)