Open grantmcdermott opened 4 years ago
Thanks very much for this. I can see a nice argument for returning the reduced form and first stage regressions as additional entries in the iv_robust object. Might be cool if then we could have
tidy(iv_robust_fit, model = "first_stage")
tidy(iv_robust_fit, model = "reduced_form")
tidy(iv_robust_fit, model = "second_stage")
or similar?
@acoppock That looks great to me.
@acoppock I would recommend just adding the first stage as a named element on the iv_robust_fit object, and not directing people to specify non-standard options on tidy / not also supporting summary.
Here is what lfe does for tidy:
> tidy(iv_felm)
# A tibble: 2 x 5
term estimate std.error statistic p.value
<chr> <dbl> <dbl> <dbl> <dbl>
1 log(rincome) 0.462 0.308 1.50 0.141
2 `log(rprice)(fit)` -1.20 0.171 -7.02 0.00000000940
> tidy(iv_felm$stage1)
# A tibble: 3 x 5
term estimate std.error statistic p.value
<chr> <dbl> <dbl> <dbl> <dbl>
1 log(rincome) -0.0290 0.147 -0.197 0.845
2 tdiff 0.0135 0.00305 4.41 0.0000652
3 rtax 0.00757 0.00105 7.22 0.00000000543
Thanks Neal, that's really helpful. Nice way to do both.
can i upvote that issue? :-) thanks
Any news on this?
It's common to see the coefficients from the first-stage regression regression in a 2SLS regression table. For example, see discussion here.
estimatr::iv_robust
does not currently support this AFAIK. (Although it does return some overall diagnostic results from the first-stage if the "diagnostics = T" argument is used.) Would it be possible add the first-stage to the model return object?FWIW,
lfe::felm
supports this with a "stage1" return object. Here's a reprex:Created on 2019-11-07 by the reprex package (v0.3.0)