# 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.

Tags:

Updated: