Forum: help


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? |