首页 > 解决方案 > 将带有回归结果的数据帧的协变量输入 Stargazer

问题描述

我有一个数据集形式的回归输出。如何stargazer手动输入估计值和标准误差?这样,stargazer创建其典型的回归表?

                               term       estimate      std.error statistic      p.value
1                               rho  0.56782511824 0.016618530837 34.168190 0.000000e+00
2                       (Intercept) -4.10698330735 0.537699847356 -7.638059 2.198242e-14
4                 Unemployment_Rate  0.02288489900 0.016412419393  1.394365 1.632075e-01
5                         pop_sq_mi  0.00020135202 0.000045361286  4.438852 9.044016e-06
6                           prcntHS  0.13303000437 0.006002571434 22.162169 0.000000e+00
7                           prcntBA  0.03698563228 0.012723399878  2.906899 3.650316e-03
8                        prcntBlack  0.00877367484 0.004458885465  1.967683 4.910448e-02
9                        prcntMulti  0.01404154066 0.004182210799  3.357445 7.866653e-04
10                        prcntHisp  0.04316697336 0.003523552546 12.250980 0.000000e+00
11                 prcntForeignBorn  0.02229836451 0.009707563865  2.297009 2.161824e-02
12                     medianIncome -0.00002809549 0.000002933667 -9.576917 0.000000e+00
13                     per_gop_2016 -0.02366390363 0.002698813668 -8.768261 0.000000e+00

我尝试使用以下方法(例如),但运气不佳。

X1 <- sample(seq(1,100,1), 100,replace= T)
X2 <- sample(seq(1,100,1), 100,replace= T)
Y <- sample(seq(1,100,1), 100,replace= T)

df <- data.frame(Y, X1, X2)

Results <- lm(Y ~ X1 + X2, data = df)

library(broom)
Results_DF <- data.frame(tidy(Results))

stargazer(type = "text", 
          coef = list(Results_DF$estimate, Results_DF$estimate),
          se = list(Results_DF$std.error, Results_DF$std.error),
          omit.table.layout = "s")

Error in if (substr(inside[i], 1, nchar("list(")) == "list(") { : 
  missing value where TRUE/FALSE needed

任何建议将不胜感激。谢谢你!

标签: rr-markdownstargazer

解决方案


你快到了。

在这里,您可以找到一个可重现的示例。应该可以对其进行修改,使其与您的数据一起使用。小心 t 和 p 值。查看p.autostargazer 中的选项。当然,您需要手动更改或删除包含观察、F-stat 等的回归页脚。

library(stargazer)

# coefficients data
d_lm <- data.frame(var = letters[1:4],
                   est = runif(4),
                   sd = runif(4),
                   t = runif(4),
                   p = runif(4))

# fake data
d <- data.frame(y = runif(30),
                a = runif(30),
                b = runif(30),
                c = runif(30),
                d = runif(30))

# fake regression
lm <- lm(y ~ a + b + c + d -1, d)

stargazer(lm,
          coef = list(d_lm$est),
          se = list(d_lm$sd),
          t = list(d_lm$t), # if not supplied stargazer will calculate t values for you
          p = list(d_lm$p), # if not supplied stargazer will calculate p values for you
          type = "text")

推荐阅读