Wald test
Model 1: hsngval ~ pcturban + faminc + reg2 + reg3 + reg4 Model 2: hsngval ~ pcturban Res.Df Df F Pr(>F) 1 44 2 48 -4 12.975 4.643e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Wald test
Model 1: hsngval ~ pcturban + faminc + reg2 + reg3 + reg4 Model 2: hsngval ~ pcturban Res.Df Df F Pr(>F) 1 44 2 48 -4 12.975 4.643e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Wald test
Model 1: hsngval ~ pcturban + faminc + reg2 + reg3 + reg4 Model 2: hsngval ~ pcturban Res.Df Df F Pr(>F) 1 44 2 48 -4 12.975 4.643e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Wald test
Model 1: hsngval ~ pcturban + faminc + reg2 + reg3 + reg4 Model 2: hsngval ~ pcturban Res.Df Df F Pr(>F) 1 44 2 48 -4 12.975 4.643e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Wald test
Model 1: hsngval ~ pcturban + faminc + reg2 + reg3 + reg4 Model 2: hsngval ~ pcturban Res.Df Df F Pr(>F) 1 44 2 48 -4 12.975 4.643e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
https://www.schmidheiny.name/teaching/iv2up.pdf
The IV (2SLS) estimator is conveniently implemented in the R package AER as command
ivreg(y ~ x1 + x2 + w1 + w2 | z1 + z2 + z3 + w1 + w2)
where x1 and x2 are endogenous regressors, w1 and w2 exogeneous regressors,
and z1 to z3 are excluded instruments. For example, load data
library(foreign)
hsng2 <- read.dta("http://www.stata-press.com/data/r11/hsng2.dta")
and regress median monthly rents (rent) of census divisions on the share
of urban population (pcturban) and the median housing value (hsngval)
> library(foreign)
hsng2 <- read.dta("http://www.stata-press.com/data/r11/hsng2.dta")
fiv <- ivreg(rent~hsngval+pcturban|pcturban+faminc+reg2+reg3+reg4,
data = hsng2)
summary(fiv)
Housing values are likely endogeneous and therefore instrumented by median
family income (faminc) and 3 regional dummies (reg2, reg4, reg4).
The Eicker-Huber-White covariance estimator which is robust to heteroscedastic error terms is reported after estimation with
library(sandwich)
library(lmtest)
coeftest(fm, vcov=sandwich)
First stage results are reported by explicitly estimating them. E.g,
first <- lm(hsngval~pcturban+faminc+reg2+reg3+reg4, data = hsng2)
summary(first)
In case of a single endogenous variable (K = 1), the F-statistic to assess
weak instruments is reported after estimating the first stage with e.g.
waldtest(first, .~.-faminc-reg2-reg3-reg4)
or in case of heteroscedatistic errors
waldtest(first, .~.-faminc-reg2-reg3-reg4, vcov=sandwich)
library(sandwich) library(foreign) hsng2 <- read.dta("http://www.stata-press.com/data/r11/hsng2.dta") library(foreign) library(sandwich) library(lmtest) hsng2 <- read.dta("http://www.stata-press.com/data/r11/hsng2.dta") fiv <- ivreg(rent~hsngval+pcturban|pcturban+faminc+reg2+reg3+reg4, data = hsng2) summary(fiv)
Call: ivreg(formula = rent ~ hsngval + pcturban | pcturban + faminc + reg2 + reg3 + reg4, data = hsng2)
Residuals: Min 1Q Median 3Q Max -84.1948 -11.6023 -0.5239 8.6583 73.6130
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.207e+02 1.571e+01 7.685 7.55e-10 *** hsngval 2.240e-03 3.388e-04 6.612 3.17e-08 *** pcturban 8.152e-02 3.082e-01 0.265 0.793 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 22.86 on 47 degrees of freedom Multiple R-Squared: 0.5989, Adjusted R-squared: 0.5818 Wald test: 42.66 on 2 and 47 DF, p-value: 2.731e-11
coeftest(fiv, vcov=sandwich)
t test of coefficients:
Estimate Std. Error t value Pr(>|t|) (Intercept) 1.2071e+02 1.5255e+01 7.9123 3.444e-10 *** hsngval 2.2398e-03 6.7200e-04 3.3331 0.001681 ** pcturban 8.1516e-02 4.4459e-01 0.1833 0.855313 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
first <- lm(hsngval~pcturban+faminc+reg2+reg3+reg4, data = hsng2) summary(first)
Call: lm(formula = hsngval ~ pcturban + faminc + reg2 + reg3 + reg4, data = hsng2)
Residuals: Min 1Q Median 3Q Max -10504 -5223 -1162 2939 46756
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -1.867e+04 1.200e+04 -1.557 0.126736 pcturban 1.822e+02 1.150e+02 1.584 0.120289 faminc 2.731e+00 6.819e-01 4.006 0.000235 *** reg2 -5.095e+03 4.122e+03 -1.236 0.223007 reg3 -1.778e+03 4.073e+03 -0.437 0.664552 reg4 1.341e+04 4.048e+03 3.314 0.001849 ** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 9253 on 44 degrees of freedom Multiple R-squared: 0.6908, Adjusted R-squared: 0.6557 F-statistic: 19.66 on 5 and 44 DF, p-value: 3.032e-10
waldtest(first, .~.-faminc-reg2-reg3-reg4)
Wald test
Model 1: hsngval ~ pcturban + faminc + reg2 + reg3 + reg4 Model 2: hsngval ~ pcturban Res.Df Df F Pr(>F) 1 44 2 48 -4 13.298 3.495e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 >
waldtest(first, .~.-faminc-reg2-reg3-reg4, vcov=sandwich)
Wald test
Model 1: hsngval ~ pcturban + faminc + reg2 + reg3 + reg4 Model 2: hsngval ~ pcturban Res.Df Df F Pr(>F) 1 44 2 48 -4 12.975 4.643e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1