Fitting Instrumental-Variable Regressions
ivreg.fit.RdFit instrumental-variable regression by two-stage least squares. This is equivalent to direct instrumental-variables estimation when the number of instruments is equal to the number of predictors.
Arguments
- x
regressor matrix.
- y
vector with dependent variable.
- z
instruments matrix.
- weights
an optional vector of weights to be used in the fitting process.
- offset
an optional offset that can be used to specify an a priori known component to be included during fitting.
- ...
further arguments passed to
lm.fitorlm.wfit, respectively.
Details
ivreg is the high-level interface to the work-horse function ivreg.fit,
a set of standard methods (including summary, vcov, anova,
hatvalues, predict, terms, model.matrix, bread,
estfun) is available and described on summary.ivreg.
ivreg.fit is a convenience interface to lm.fit (or lm.wfit)
for first projecting x onto the image of z and the running
a regression of y onto the projected x.
Value
ivreg.fit returns an unclassed list with the following components:
- coefficients
parameter estimates.
- residuals
a vector of residuals.
- fitted.values
a vector of predicted means.
- weights
either the vector of weights used (if any) or
NULL(if none).- offset
either the offset used (if any) or
NULL(if none).- estfun
a matrix containing the empirical estimating functions.
- n
number of observations.
- nobs
number of observations with non-zero weights.
- rank
the numeric rank of the fitted linear model.
- df.residual
residual degrees of freedom for fitted model.
- cov.unscaled
unscaled covariance matrix for the coefficients.
- sigma
residual standard error.
See also
ivreg, lm.fit
Examples
## data
data("CigarettesSW")
CigarettesSW <- transform(CigarettesSW,
rprice = price/cpi,
rincome = income/population/cpi,
tdiff = (taxs - tax)/cpi
)
## high-level interface
fm <- ivreg(log(packs) ~ log(rprice) + log(rincome) | log(rincome) + tdiff + I(tax/cpi),
data = CigarettesSW, subset = year == "1995")
## low-level interface
y <- fm$y
x <- model.matrix(fm, component = "regressors")
z <- model.matrix(fm, component = "instruments")
ivreg.fit(x, y, z)$coefficients
#> (Intercept) log(rprice) log(rincome)
#> 9.8949555 -1.2774241 0.2804048