[R] instrumental variables regression using ivreg (AER) or tsls (sem)

Achim Zeileis Achim.Zeileis at uibk.ac.at
Sun Dec 2 10:32:14 CET 2012


On Thu, 29 Nov 2012, Ranjan Maitra wrote:

> Dear friends,
>
> I am trying to understand and implement instrumental variables
> regression using R.
>
> I found a small (simple) example here which purportedly illustrates the
> mechanics (using 2-stage least-squares):
>
> http://www.r-bloggers.com/a-simple-instrumental-variables-problem/

The 1st stage regression is not quite correct in this example. My 
understanding is that he wants to use distance as an instrument for 
education and all other variables as instruments for themselves. However, 
the rest of the instruments have been erroneously left out of the 1st 
stage in his example.

> Basically, here are the R commands (reproducible example) from that
> site:
>
> # ------ begin R 
>
> library(AER)
>
> library(lmtest)
>
> data("CollegeDistance")
>
> cd.d<-CollegeDistance
>
> simple.ed.1s<- lm(education ~ distance,data=cd.d)

This should be:

simple.ed.1s<- lm(education ~ urban + gender + ethnicity + unemp + distance,
   data=cd.d)

> cd.d$ed.pred<- predict(simple.ed.1s)
>
> simple.ed.2s<- lm(wage ~ urban + gender + ethnicity + unemp + ed.pred ,
> data=cd.d)

And then the same estimates could be obtained in ivreg() as:

m <- ivreg(wage ~ urban + gender + ethnicity + unemp + education |
   urban + gender + ethnicity + unemp + distance, data = CollegeDistance)

Or in tsls() as:

m2 <- tsls(wage ~ urban + gender + ethnicity + unemp + education,
   ~ urban + gender + ethnicity + unemp + distance, data = CollegeDistance)

Best,
Z

> # ------ end R
>
>
> This yields the following summary:
>
> summary(simple.ed.2s)
>
> Call:
> lm(formula = wage ~ urban + gender + ethnicity + unemp + ed.pred,
>    data = cd.d)
>
> Residuals:
>    Min      1Q  Median      3Q     Max 
> -3.1692 -0.8294  0.1502  0.8482  3.9537 
>
> Coefficients:
>                   Estimate Std. Error t value Pr(>|t|) 
> (Intercept)       -2.053604   1.675314  -1.226   0.2203 
> urbanyes          -0.013588   0.046403  -0.293   0.7697 
> genderfemale      -0.086700   0.036909  -2.349   0.0189 * 
> ethnicityafam     -0.566524   0.051686 -10.961  < 2e-16 ***
> ethnicityhispanic -0.529088   0.048429 -10.925  < 2e-16 ***
> unemp              0.145806   0.006969  20.922  < 2e-16 ***
> ed.pred            0.774340   0.120372   6.433 1.38e-10 ***
> ---
> Signif. codes:  0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1 
>
> Residual standard error: 1.263 on 4732 degrees of freedom
> Multiple R-squared: 0.1175,	Adjusted R-squared: 0.1163 
> F-statistic:   105 on 6 and 4732 DF,  p-value: < 2.2e-16 
>
>
>
> Question: Assuming that the above illustration is correct, I was
> wondering how I could mimic these calculations using the ivreg () in
> AER or tsls () in sem?
>
> Any suggestions? 
>
> Many thanks in advance, and best wishes,
> Ranjan
>
> -- 
> Important Notice: This mailbox is ignored: e-mails are set to be
> deleted on receipt. For those needing to send personal or professional
> e-mail, please use appropriate addresses.
>
> ____________________________________________________________
> FREE ONLINE PHOTOSHARING - Share your photos online with your friends and family!
> Visit http://www.inbox.com/photosharing to find out more!
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list