Hand Coding Instumental Variables
In a previous post we discussed the linear model and how to write a function that performs a linear regression. In this post we will use that linear model function to perform a [Two-Stage Least Squares estimation]. This estimation allows us to […]
Recall that we built the follow linear model function.
We used the following data.
This allowed us to estimate a linear model.
Which includes the intercept, since the default value it TRUE
(see function definition above),
we could estimate it without an intercept using.
Having revisited the above, we can continue with instumental variables.
We will replicate an example from the AER
(Applied Econometric Regressions) package.
We first need to obtain our first stage estimate (putting the whole function between parentheses allows us to both write it to the object s1
and print it).
We can now obtain the predicted (fitted) values
Using these fitted values, we can finally estimate our second stage.
Now compare this to the results using ivreg()
fucntion from the AER
package.
When we compare this estimate to the estimate from the linear model, we find that the effect of the price is significantly overestimated there.
We can also do this using R
’s built in lm
function.
As an intermediate form, we can manually calculate Xhat
(fitted.values
) and estimate using that.
Note that if you estimate a TSLS using the lm
function,
that you can only use the coefficients,
the error terms will be wrong.