## Repeating the OLS and SUR estimations in Greene (2003, pp. 351)
data( "GrunfeldGreene" )
library( plm )
pdata.frame( GrunfeldGreene, "firm", "year" )
formulaGrunfeld <- invest ~ value + capital
# OLS
greeneOls <- systemfit( formulaGrunfeld, "OLS",
data = GrunfeldGreene )
summary( greeneOls )
sapply( greeneOls$eq, function(x){return(summary(x)$ssr/20)} ) # sigma^2
# OLS Pooled
greeneOlsPooled <- systemfit( formulaGrunfeld, "OLS",
data = GrunfeldGreene, pooled = TRUE )
summary( greeneOlsPooled )
sum( sapply( greeneOlsPooled$eq, function(x){return(summary(x)$ssr)}) )/97 # sigma^2
# SUR
greeneSur <- systemfit( formulaGrunfeld, "SUR",
data = GrunfeldGreene, methodResidCov = "noDfCor" )
summary( greeneSur )
# SUR Pooled
greeneSurPooled <- systemfit( formulaGrunfeld, "SUR",
data = GrunfeldGreene, pooled = TRUE, methodResidCov = "noDfCor",
residCovWeighted = TRUE )
summary( greeneSurPooled )
## Repeating the OLS and SUR estimations in Theil (1971, pp. 295, 300)
GrunfeldTheil <- subset( GrunfeldGreene,
firm %in% c( "General Electric", "Westinghouse" ) )
pdata.frame( GrunfeldTheil, "firm", "year" )
formulaGrunfeld <- invest ~ value + capital
# OLS
theilOls <- systemfit( formulaGrunfeld, "OLS",
data = GrunfeldTheil )
summary( theilOls )
# SUR
theilSur <- systemfit( formulaGrunfeld, "SUR",
data = GrunfeldTheil, methodResidCov = "noDfCor" )
summary( theilSur )Run the code above in your browser using DataLab