【问题标题】:FELM + Stargazer - Align instrumental variables estimates with OLSFELM + Stargazer - 将工具变量估计与 OLS 对齐
【发布时间】:2018-05-04 16:01:22
【问题描述】:

我在 R 中有一个 felm 对​​象,我正在尝试制作一个表格来比较 OLS 估计和 IV 估计的系数估计。下面的代码生成了一个表格,其中包含两个系数估计值,x 和 `x(fit)` 在不同的行中。

library(lfe)
library(stargazer)
n<-1000

u1<-rnorm(n)
u2<-rnorm(n)
z=3+0.5*rnorm(n)

x=0.5*z+u1
y=2*x+u2

df<-data.frame(y=y,x=x,z=z)

model1<-felm(y~x,data=df)
model2<-felm(y~1|0|(x~z),data=df)

stargazer(model1, model2, df)

===========================================================
                                   Dependent variable:     
                               ----------------------------
                                            y              
                                    (1)            (2)     
-----------------------------------------------------------
x                                 2.003***                 
                                  (0.031)                  

`x(fit)`                                        1.795***   
                                                 (0.149)   

Constant                           -0.041         0.274    
                                  (0.057)        (0.227)   

-----------------------------------------------------------
Observations                       1,000          1,000    
R2                                 0.804          0.796    
Adjusted R2                        0.804          0.795    
Residual Std. Error (df = 998)     1.005          1.027    
===========================================================
Note:                           *p<0.1; **p<0.05; ***p<0.01

我想要的是如下表:

===========================================================
                                   Dependent variable:     
                               ----------------------------
                                            y              
                                    (1)            (2)     
-----------------------------------------------------------
x                                 2.003***        1.795***         
                                  (0.031)        (0.149)                                            

Constant                           -0.041         0.274    
                                  (0.057)        (0.227)   

-----------------------------------------------------------
Observations                       1,000          1,000    
R2                                 0.804          0.796    
Adjusted R2                        0.804          0.795    
Residual Std. Error (df = 998)     1.005          1.027    
===========================================================
Note:                           *p<0.1; **p<0.05; ***p<0.01

我试过了

rownames(model2$coefficients)[rownames(model2$coefficients=="`x(fit)`"]<-"x"

但在 Wald 测试中遇到错误。如果我要检测多个变量,这也很烦人。

有没有更简单的方法来更广泛地对齐 Stargazer 或 R 中不同行的协变量?

【问题讨论】:

    标签: r regression stargazer


    【解决方案1】:

    如果您使用 texreg 而不是 stargazer,这相当简单:

    library(lfe)
    library(texreg)
    
    n<-1000
    
    u1<-rnorm(n)
    u2<-rnorm(n)
    z=3+0.5*rnorm(n)
    
    x=0.5*z+u1
    y=2*x+u2
    
    df<-data.frame(y=y,x=x,z=z)
    
    model1<-felm(y~x,data=df)
    model2<-felm(y~1|0|(x~z),data=df)
    
    screenreg(list(model1, model2), 
              custom.coef.names = c("(Intercept)", "x", "x"))
    #> 
    #> ===============================================
    #>                        Model 1      Model 2    
    #> -----------------------------------------------
    #> (Intercept)               0.05         0.11    
    #>                          (0.05)       (0.13)   
    #> x                         1.98 ***     1.93 ***
    #>                          (0.03)       (0.09)   
    #> -----------------------------------------------
    #> Num. obs.              1000         1000       
    #> R^2 (full model)          0.82         0.81    
    #> R^2 (proj model)          0.82         0.81    
    #> Adj. R^2 (full model)     0.81         0.81    
    #> Adj. R^2 (proj model)     0.81         0.81    
    #> ===============================================
    #> *** p < 0.001, ** p < 0.01, * p < 0.05
    

    正如您所看到的,这通过指定系数标签向量来工作,如果 texreg 发现这些值重复,它将把这些估计值放在同一行(顺便说一下,生成乳胶使用 texreg(list(model1, model2)) 而不是 screenreg)。

    另外值得注意的是,如果您将 NA 插入到 custom.coef.names 中,它将默认恢复为当前名称,因此如果模型中有 100 个其他协变量,您可以使用 custom.coef.names = c(NA, "x", "x", rep(NA, 100)) 而不是全部写出.

    【讨论】:

      猜你喜欢
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 2018-06-19
      • 1970-01-01
      相关资源
      最近更新 更多