SCM

Forum: help

Monitor Forum | Start New Thread Start New Thread
Different Instruments for Different Equations: 2SLS, 3SLS-GMM, 3SLS-Schmidt [ Reply ]
By: Arne Henningsen on 2015-11-30 22:08
[forum:42755]
I was asked why the 3SLS-GMM estimator and the 3SLS-Schmidt estimator give the same results as the 2SLS estimator in the following example with different instruments for different equations, while the other 3SLS estimators give different results:

library( "systemfit" )
data( "Kmenta" )
eqDemand <- consump ~ price + income
eqSupply <- consump ~ price + farmPrice + trend
system <- list( demand = eqDemand, supply = eqSupply )
## We have different instruments for different equations
inst1 <- ~ income + farmPrice
inst2 <- ~ income + farmPrice + trend
instlist <- list( inst1, inst2 )
## Now we try different estimators
## 2SLS estimation with different instruments in each equation
fit2sls2 <- systemfit( system, "2SLS", inst = instlist, data = Kmenta )
coef(summary(fit2sls2))
## 3SLS estimation with GLS 3SLS formula
fit3sls <- systemfit( system, "3SLS", inst = instlist, data = Kmenta )
coef(summary(fit3sls))
all.equal( coef(fit2sls2), coef(fit3sls) ) # FALSE

## 3SLS estimation with IV-3SLS formula
fit3slsIv <- systemfit( system, "3SLS", inst = instlist, data = Kmenta,
method3sls = "IV" )
coef(summary(fit3slsIv))
all.equal( coef( fit2sls2 ), coef( fit3slsIv ) ) # FALSE
all.equal( coef( fit3sls ), coef( fit3slsIv ) ) # FALSE

## 3SLS estimation with GMM-3SLS formula
fit3slsGmm <- systemfit( system, "3SLS", inst = instlist, data = Kmenta,
method3sls = "GMM" )
coef(summary(fit3slsGmm))
all.equal( coef(summary(fit2sls2)), coef(summary(fit3slsGmm)) ) # TRUE
all.equal( coef( fit3sls ), coef( fit3slsGmm ) ) # FALSE
all.equal( coef( fit3slsIv ), coef( fit3slsGmm ) ) # FALSE

## 3SLS estimation with Schmidt
fitSchmidt <- systemfit( system, "3SLS", inst = instlist, data = Kmenta, method3sls = "Schmidt" )
coef(summary(fitSchmidt))
all.equal( coef(summary(fit2sls2)), coef(summary(fitSchmidt)) ) # TRUE
all.equal( coef( fit3sls ), coef( fitSchmidt ) ) # FALSE
all.equal( coef( fit3slsIv ), coef( fitSchmidt ) ) # FALSE
all.equal( coef(summary(fit3slsGmm)), coef(summary(fitSchmidt)) ) # TRUE

## 3SLS estimation with EViews formula
fitEViews <- systemfit( system, "3SLS", inst = instlist, data = Kmenta,
method3sls = "EViews" )
coef(summary(fitEViews))
all.equal( coef( fit2sls2 ), coef( fitEViews ) ) # FALSE
all.equal( coef( fit3sls ), coef( fitEViews ) ) # FALSE
all.equal( coef( fit3slsIv ), coef( fitEViews ) ) # TRUE
all.equal( coef(summary(fit3slsIv)), coef(summary(fitEViews)) ) # FALSE
all.equal( coef( fit3slsGmm ), coef( fitEViews ) ) # FALSE
all.equal( coef( fitSchmidt ), coef( fitEViews ) ) # FALSE

Unfortunately, I don't know the answer :-(

Does anybody else know?

Thanks to:
Vienna University of Economics and Business Powered By FusionForge