On Sun, 16 Jan 2011, Holger Steinmetz wrote:


Dear Achim,

thank you very much.

One follow up question. The Hausman-test always gives me a p-value of 1 - no matter how small the statistic is.

I now generated orthogonal regressors (X1-X3) and the test gives me


       Hausman specification test for consistency of the 3SLS estimation

data:  data
Hausman = -0.0138, df = 2, p-value = 1

What is confusing to me is the "3SLS".

Hausman tests can be used for comparisons of various models. The implementation in systemfit is intended for comparison of 2SLS and 3SLS but can also be (ab)used for comparison of 2SLS and OLS. You just have to enter the models in the reverse order, i.e., hausman.systemfit(fit2sls, fitOLS).

A worked example that computes the test statistic "by hand" is also included in

  help("Baltagi2002", package = "AER")

in the section about the US consumption data, Chapter 11.

An adaptation is also shown below:

  ## data
  library("AER")
  data("USConsump1993", package = "AER")
  usc <- as.data.frame(USConsump1993)
  usc$investment <- usc$income - usc$expenditure

  ## 2SLS via ivreg(), Hausman by hand
  fm_ols <- lm(expenditure ~ income, data = usc)
  fm_iv <- ivreg(expenditure ~ income | investment, data = usc)
  cf_diff <- coef(fm_iv) - coef(fm_ols)
  vc_diff <- vcov(fm_iv) - vcov(fm_ols)
  x2_diff <- as.vector(t(cf_diff) %*% solve(vc_diff) %*% cf_diff)
  pchisq(x2_diff, df = 2, lower.tail = FALSE)

  ## 2SLS via systemfit(), Hausman via hausman.systemfit()
  library("systemfit")
  sm_ols <- systemfit(expenditure ~ income, data = usc, method = "OLS")
  sm_iv <- systemfit(expenditure ~ income, data = usc, method = "2SLS",
    inst = ~ investment)
  hausman.systemfit(sm_iv, sm_ols)

hth,
Z

I am just beginning to learn about
instrumental variables (I am a psychologist ;) Perhaps that's a problem?

As a background, here's the complete simulation:

W = rnorm(1000)
X2 = rnorm(1000)
X3 = rnorm(1000)
X1 = .5*W  + rnorm(1000)
Y = .4*X1 + .5*X2 + .6*X3 + rnorm(1000)
data = as.data.frame(cbind(X1,X2,X3,Y,W))

fit2sls <- systemfit(Y~X1,data=data,method="2SLS",inst=~W)
fitOLS <- systemfit(Y~X1,data=data,method="OLS")

print(hausman.systemfit(fitOLS, fit2sls))

Best,
Holger
--
View this message in context: 
http://r.789695.n4.nabble.com/Hausman-Test-tp3220016p3220065.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
R-help@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.


______________________________________________
R-help@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.

Reply via email to