Skip to contents

Cross-section data on OECD countries, used for growth regressions.

Usage

data("OECDGrowth")

Format

A data frame with 22 observations on the following 6 variables.

gdp85

real GDP in 1985 (per person of working age, i.e., age 15 to 65), in 1985 international prices.

gdp60

real GDP in 1960 (per person of working age, i.e., age 15 to 65), in 1985 international prices.

invest

average of annual ratios of real domestic investment to real GDP (1960–1985).

school

percentage of the working-age population that is in secondary school.

randd

average of annual ratios of gross domestic expenditure on research and development to nominal GDP (of available observations during 1960–1985).

popgrowth

annual population growth 1960–1985, computed as log(pop85/pop60)/25.

Source

Appendix 1 Nonneman and Vanhoudt (1996), except for one bad misprint: The value of school for Norway is given as 0.01, the correct value is 0.1 (see Mankiw, Romer and Weil, 1992). OECDGrowth contains the corrected data.

References

Mankiw, N.G., Romer, D., and Weil, D.N. (1992). A Contribution to the Empirics of Economic Growth. Quarterly Journal of Economics, 107, 407–437.

Nonneman, W., and Vanhoudt, P. (1996). A Further Augmentation of the Solow Model and the Empirics of Economic Growth. Quarterly Journal of Economics, 111, 943–953.

Zaman, A., Rousseeuw, P.J., and Orhan, M. (2001). Econometric Applications of High-Breakdown Robust Regression Techniques. Economics Letters, 71, 1–8.

See also

Examples

data("OECDGrowth")

## Nonneman and Vanhoudt (1996), Table II
cor(OECDGrowth[, 3:6])
#>                invest    school       randd  popgrowth
#> invest     1.00000000 0.1932304  0.08393141 -0.1741348
#> school     0.19323038 1.0000000  0.22537585  0.1511896
#> randd      0.08393141 0.2253759  1.00000000 -0.2159874
#> popgrowth -0.17413475 0.1511896 -0.21598736  1.0000000
cor(log(OECDGrowth[, 3:6]))
#>                 invest    school      randd    popgrowth
#> invest     1.000000000 0.1693693  0.1656111 -0.001127063
#> school     0.169369305 1.0000000  0.3726155  0.180426653
#> randd      0.165611060 0.3726155  1.0000000 -0.224119587
#> popgrowth -0.001127063 0.1804267 -0.2241196  1.000000000

## textbook Solow model
## Nonneman and Vanhoudt (1996), Table IV, and
## Zaman, Rousseeuw and Orhan (2001), Table 2
so_ols <- lm(log(gdp85/gdp60) ~ log(gdp60) + log(invest) + log(popgrowth+.05),
  data = OECDGrowth)
summary(so_ols)
#> 
#> Call:
#> lm(formula = log(gdp85/gdp60) ~ log(gdp60) + log(invest) + log(popgrowth + 
#>     0.05), data = OECDGrowth)
#> 
#> Residuals:
#>      Min       1Q   Median       3Q      Max 
#> -0.18400 -0.03989 -0.00785  0.04506  0.31879 
#> 
#> Coefficients:
#>                       Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)            2.97590    1.02159   2.913  0.00928 ** 
#> log(gdp60)            -0.34286    0.05649  -6.070 9.77e-06 ***
#> log(invest)            0.65011    0.20200   3.218  0.00477 ** 
#> log(popgrowth + 0.05) -0.57302    0.29040  -1.973  0.06403 .  
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
#> Residual standard error: 0.1329 on 18 degrees of freedom
#> Multiple R-squared:  0.7464,	Adjusted R-squared:  0.7041 
#> F-statistic: 17.66 on 3 and 18 DF,  p-value: 1.342e-05
#> 

## augmented and extended Solow growth model
## Nonneman and Vanhoudt (1996), Table IV
aso_ols <- lm(log(gdp85/gdp60) ~ log(gdp60) + log(invest) +
  log(school) + log(popgrowth+.05), data = OECDGrowth)
eso_ols <- lm(log(gdp85/gdp60) ~ log(gdp60) + log(invest) +
  log(school) + log(randd) + log(popgrowth+.05), data = OECDGrowth)

## determine unusual observations using LTS
library("MASS")
so_lts <- lqs(log(gdp85/gdp60) ~ log(gdp60) +  log(invest) + log(popgrowth+.05),
  data = OECDGrowth, psamp = 13, nsamp = "exact")

## large residuals
nok1 <- abs(residuals(so_lts))/so_lts$scale[2] > 2.5
residuals(so_lts)[nok1]/so_lts$scale[2]
#>    Canada       USA     Japan    Norway  Portugal    Turkey Australia 
#>  9.073016  6.236138  9.794816  4.600128 -3.262267 -4.026912  4.518340 

## high leverage
X <- model.matrix(so_ols)[,-1]
cv <- cov.rob(X, nsamp = "exact")
mh <- sqrt(mahalanobis(X, cv$center, cv$cov))
nok2 <- mh > 2.5
mh[nok2]
#>         Canada            USA    Netherlands         Turkey United Kingdom 
#>       5.143551       4.502653       2.736996       7.203009       2.528942 
#>      Australia    New Zealand 
#>       4.503551       4.212121 

## bad leverage
nok <- which(nok1 & nok2)
nok
#>    Canada       USA    Turkey Australia 
#>         1         2        19        21 

## robust results without bad leverage points
so_rob <- update(so_ols, subset = -nok)
summary(so_rob)
#> 
#> Call:
#> lm(formula = log(gdp85/gdp60) ~ log(gdp60) + log(invest) + log(popgrowth + 
#>     0.05), data = OECDGrowth, subset = -nok)
#> 
#> Residuals:
#>       Min        1Q    Median        3Q       Max 
#> -0.154537 -0.055476 -0.006506  0.031592  0.267732 
#> 
#> Coefficients:
#>                       Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)            3.77645    1.28158   2.947  0.01061 *  
#> log(gdp60)            -0.45072    0.05686  -7.927 1.52e-06 ***
#> log(invest)            0.70329    0.19065   3.689  0.00243 ** 
#> log(popgrowth + 0.05) -0.65042    0.41902  -1.552  0.14291    
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
#> Residual standard error: 0.1069 on 14 degrees of freedom
#> Multiple R-squared:  0.8532,	Adjusted R-squared:  0.8218 
#> F-statistic: 27.13 on 3 and 14 DF,  p-value: 4.301e-06
#> 
## This is similar to Zaman, Rousseeuw and Orhan (2001), Table 2
## but uses exact computations (and not sub-optimal results
## for the robust functions lqs and cov.rob)