Introduction

This paper seeks to characterize the evolving structure of postwar global capitalist society using

The PWT contains internationally-comparable annual data on real GDP output-method \(Y\), real GDP expenditure-method \(Y_e\), population \(N\), employment \(E\), average hours of labor per employed person \(l\), labor share of income \(\omega\), consumption share of income \(c\), end-of-period capital stock \(K\), capital services \(K^s\), and the internal rate of return of capital \(\tilde{r}\) for 168 countries. The period under consideration ranges from 1954 to 2017 with an emphasis on the 1971-2017 subperiod.

The data are interpreted naively, i.e. under the strong assumption that the variables in the data set match exactly the corresponding Marxist categories. Admittedly, this assumption implies a measurement error of unknown size. With the resources at hand, the cost of transforming the data set of these dimensions to make its variables conform to the theoretical categories seems to be much higher than its potential benefits.

The mapping of the primary theoretical and empirical categories follows:

Symbol Marxist variable PWT variable
\(N\) population population
\(E\) employed workers engaged persons
\(L\) direct labor time hours worked by engaged persons
\(Y\) value added real GDP output method
\(Y_e\) value added real GDP expenditure method
\(W\) variable capital labor income
\(C\) variable capital consumption spending
\(K_s\) constant capital capital services
\(K\) capital stock fixed capital stock

The largest discrepancies between Marxist and empirical categories are related to (1) the likely overestimation of the annual value added as a host of ostensibly nonproductive activities are deemed to add value, and (2) the likely underestimation of the labor share of income (value added), as national accounting conventions include the hefty salaries and labor benefits of managers as labor income.

However, much of the focus of this paper is on the empirical time path of these categories. The time-series characteriztion of the structural variables of interest (productivity, exploitation, and profitability measures) is affected by these discrepancies only inasmuch as such discrepancies grow or decay significantly over time. As long as the magnitude of the discrepancies between theoretical and empirical categories remains relatively constant, the time-series implications of the analysis are barely affected.

To allow full replicability of results, data sets and R code are stored in this repository:

https://github.com/jhuato/deeper_structures

library(readr)
x  <- read_csv("C:/Users/jhuat/Downloads/pwt91.csv")
## Parsed with column specification:
## cols(
##   .default = col_double(),
##   countrycode = col_character(),
##   country = col_character(),
##   currency_unit = col_character(),
##   i_cig = col_character(),
##   i_xm = col_character(),
##   i_xr = col_character(),
##   i_outlier = col_character(),
##   i_irr = col_character()
## )
## See spec(...) for full column specifications.
x <- x[ which(x$year > 1953 ), ]
x$c <- x$csh_c
x$c[x$c<0 | x$c>1] <- NA 
x$Y <- x$rgdpo 
x$Ye <- x$rgdpe
x$om <- x$labsh
x$l <- x$avh
x$Ks <- x$rkna
x$W <- x$labsh * x$Y
x$C <- x$c * x$Ye
x$K <- x$rnna
x$N <- x$pop
x$E <- x$emp
x$L <- x$avh * x$E
x <- x[ , c(1, 4, 53:64)]
str(x)
## Classes 'tbl_df', 'tbl' and 'data.frame':    11648 obs. of  14 variables:
##  $ countrycode: chr  "ABW" "ABW" "ABW" "ABW" ...
##  $ year       : num  1954 1955 1956 1957 1958 ...
##  $ c          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Y          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Ye         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ om         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ l          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Ks         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ W          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ C          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ K          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ N          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ E          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ L          : num  NA NA NA NA NA NA NA NA NA NA ...
summary(x)
##  countrycode             year            c                Y           
##  Length:11648       Min.   :1954   Min.   :0.0256   Min.   :      20  
##  Class :character   1st Qu.:1970   1st Qu.:0.5312   1st Qu.:    6338  
##  Mode  :character   Median :1986   Median :0.6294   Median :   27156  
##                     Mean   :1986   Mean   :0.6233   Mean   :  273105  
##                     3rd Qu.:2001   3rd Qu.:0.7360   3rd Qu.:  139871  
##                     Max.   :2017   Max.   :0.9998   Max.   :18383838  
##                                    NA's   :2153     NA's   :1902      
##        Ye                 om              l              Ks       
##  Min.   :      18   Min.   :0.090   Min.   :1354   Min.   :0.008  
##  1st Qu.:    6157   1st Qu.:0.445   1st Qu.:1791   1st Qu.:0.210  
##  Median :   27255   Median :0.545   Median :1963   Median :0.478  
##  Mean   :  276014   Mean   :0.533   Mean   :1978   Mean   :0.534  
##  3rd Qu.:  140987   3rd Qu.:0.624   3rd Qu.:2141   3rd Qu.:0.829  
##  Max.   :18396068   Max.   :0.900   Max.   :2911   Max.   :3.034  
##  NA's   :1902       NA's   :3832    NA's   :8385   NA's   :4601   
##        W                  C                  K                  N            
##  Min.   :      18   Min.   :      11   Min.   :      16   Min.   :   0.0044  
##  1st Qu.:    4928   1st Qu.:    4206   1st Qu.:   20010   1st Qu.:   1.5902  
##  Median :   19159   Median :   17247   Median :  103732   Median :   6.0550  
##  Mean   :  195376   Mean   :  163964   Mean   : 1145903   Mean   :  30.8136  
##  3rd Qu.:  101824   3rd Qu.:   80432   3rd Qu.:  615449   3rd Qu.:  19.7770  
##  Max.   :10720879   Max.   :13076158   Max.   :94903728   Max.   :1409.5175  
##  NA's   :4267       NA's   :2153       NA's   :1928       NA's   :1902       
##        E                  L          
##  Min.   :  0.0012   Min.   :     89  
##  1st Qu.:  0.9321   1st Qu.:   5387  
##  Median :  3.0132   Median :  12094  
##  Mean   : 14.8520   Mean   :  62007  
##  3rd Qu.:  8.5834   3rd Qu.:  44736  
##  Max.   :792.5753   Max.   :1723336  
##  NA's   :3023       NA's   :8385

The variables (hereon called ``parameters’’) that capture the deeper structures of a capitalist society are, respectively,

  1. Labor productivity, measured by
  1. Exploitation or balance of class forces, measured by
  1. Profitability of capital, measured by

This computes the annual parameters for each country:

x$yN <- x$Y/x$N
x$yE <- x$Y/x$E
x$yL <- x$Y/x$L
x$wN <- (1 - x$om)*x$Y/x$N
x$wE <- (1 - x$om)*x$Y/x$E
x$wL <- (1 - x$om)*x$Y/x$L
x$s <- (1 - x$om)/x$om
x$ss <- (1 - x$c)/x$c
x$h <- x$Ks/x$W
x$rho <- x$Y/x$K
x$r <- (1 - x$om)*x$Y/x$K
x$ka <- (1 - x$c)*x$Y/x$K
str(x)
## Classes 'tbl_df', 'tbl' and 'data.frame':    11648 obs. of  26 variables:
##  $ countrycode: chr  "ABW" "ABW" "ABW" "ABW" ...
##  $ year       : num  1954 1955 1956 1957 1958 ...
##  $ c          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Y          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Ye         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ om         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ l          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Ks         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ W          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ C          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ K          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ N          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ E          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ L          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ yN         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ yE         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ yL         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ wN         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ wE         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ wL         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ s          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ ss         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ h          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ rho        : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ r          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ ka         : num  NA NA NA NA NA NA NA NA NA NA ...

These structures are defined globally, by agggregation of

N <- tapply(x$N, x$year, sum, na.rm=TRUE) 
E <- tapply(x$E, x$year, sum, na.rm=TRUE)
L <- tapply(x$L, x$year, sum, na.rm=TRUE) 
Y <- tapply(x$Y, x$year, sum, na.rm=TRUE) 
Ye <- tapply(x$Ye, x$year, sum, na.rm=TRUE) 
W <- tapply(x$W, x$year, sum, na.rm=TRUE) 
C <- tapply(x$C, x$year, sum, na.rm=TRUE) 
K <- tapply(x$K, x$year, sum, na.rm=TRUE)
Ks <- tapply(x$Ks, x$year, sum, na.rm=TRUE)
yN <- Y/N
yE <- Y/E
yL <- Y/L
wN <- W/N
wE <- W/E
wL <- W/L
s <- (Y-W)/W
ss <- (Y - C)/C
h <- Ks/W
rho <- Y/K
r <- (Y-W)/K
ka <- (Y-C)/K
year <- c(1954:2017)
g <- data.frame(year, N, E, L, Y, Ye, W, C, K, yN, yE, yL, wN, wE, wL, 
                s, ss, h, rho, r, ka)
str(g)
## 'data.frame':    64 obs. of  21 variables:
##  $ year: int  1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 ...
##  $ N   : num  2047 2120 2161 2205 2249 ...
##  $ E   : num  846 874 892 910 935 ...
##  $ L   : num  674430 688711 699984 706030 704023 ...
##  $ Y   : num  7574162 8217579 8535440 8851155 8996442 ...
##  $ Ye  : num  7667910 8314487 8643475 8952750 9124558 ...
##  $ W   : num  4620027 4954604 5190471 5366630 5436475 ...
##  $ C   : num  4961254 5339159 5528277 5722745 5824452 ...
##  $ K   : num  28542956 30570574 32027560 33548059 35012958 ...
##  $ yN  : num  3699 3875 3949 4014 4001 ...
##  $ yE  : num  8955 9401 9570 9731 9617 ...
##  $ yL  : num  11.2 11.9 12.2 12.5 12.8 ...
##  $ wN  : num  2257 2337 2401 2434 2418 ...
##  $ wE  : num  5462 5668 5819 5900 5812 ...
##  $ wL  : num  6.85 7.19 7.42 7.6 7.72 ...
##  $ s   : num  0.639 0.659 0.644 0.649 0.655 ...
##  $ ss  : num  0.527 0.539 0.544 0.547 0.545 ...
##  $ h   : num  9.61e-07 1.01e-06 1.02e-06 1.11e-06 1.29e-06 ...
##  $ rho : num  0.265 0.269 0.267 0.264 0.257 ...
##  $ r   : num  0.103 0.107 0.104 0.104 0.102 ...
##  $ ka  : num  0.0915 0.0942 0.0939 0.0933 0.0906 ...

Also, these structures are defined internationally by taking account, in due turn, of each country’s

The analysis seeks to empirically characterize

The last section reports on the results of VARs, SVARs, VECM, and SVECM estimations, in an attempt to capture structural relations among

Global results

The global aggregation of the primary variables offers a structural history of modern capitalist society in which each person and unit of value, regardless of country or year, appears as the basic units of observation.

The following plots offer a graphical summary of the contrast between the various measures of labor productivity (per capita, per worker, and per hour) and the corresponding measures of the real wage (per capita, per worker, and per hour):

byN <- coef(lm(log(g$yN) ~ g$year))[2]
bwN <- coef(lm(log(g$wN) ~ g$year))[2]
plot(g$year, g$yN, type="l", ylim=c(2000, 15000), 
     main="Global per-capita productivity and wage", 
     xlab="Year", ylab="2011 USD")
lines(g$year, g$wN, lty=2)
mtext(bquote(hat(y[N]) ==.(round(byN, 4))~","~ hat(w[N]) ==.(round(bwN, 4))))
legend("topleft", bty="n", lty=c(1, 2), c(expression(paste(y[N]), paste(w[N]))))

byE <- coef(lm(log(g$yE) ~ g$year))[2]
bwE <- coef(lm(log(g$wE) ~ g$year))[2]
plot(g$year, g$yE, type="l", ylim=c(5000, 35000), 
     main="Global per-worker productivity and wage", 
     xlab="Year", ylab="2011 USD")
lines(g$year, g$wE, lty=2)
mtext(bquote(hat(y[E]) ==.(round(byE, 4))~","~ hat(w[E]) ==.(round(bwE, 4))))
legend("topleft", bty="n", lty=c(1, 2), c(expression(paste(y[E]), paste(w[E]))))

byL <- coef(lm(log(g$yL[-c(1:16)]) ~ g$year[-c(1:16)]))[2]
bwL <- coef(lm(log(g$wL[-c(1:16)]) ~ g$year[-c(1:16)]))[2]
plot(g$year[-c(1:16)], g$yL[-c(1:16)], type="l", ylim=c(0, 20), 
     main="Global per-hour productivity and wage", 
     xlab="Year", ylab="2011 USD")
lines(g$year[-c(1:16)], g$wL[-c(1:16)], lty=2)
mtext(bquote(hat(y[L])  ==.(round(byL, 4))~","~ hat(w[L])  ==.(round(bwL, 4))))
legend("topleft", bty="n", lty=c(1, 2), c(expression(paste(y[L]), paste(w[L]))))

These plots show, respectively, the exploitation and expenditure-exploitation rates:

bs <- coef(lm(log(g$s) ~ g$year))[2]
bss <- coef(lm(log(g$ss) ~ g$year))[2]
plot(g$year, g$s, type="l", ylim=c(0.4, 1),
     main="Global exploitation rates", 
     xlab="Year", ylab=" ")
lines(g$year, g$ss, lty=2)
mtext(bquote(hat(sigma)  ==.(round(bs, 4))~","~ hat(sigma[e]) ==.(round(bss, 4))))
legend("topleft", bty="n", lty=c(1, 2), c(expression(paste(sigma), paste(sigma[e] ))))

The flow-flow capital consumption plot follows:

bh <- coef(lm(log(g$h) ~ g$year))[2]
plot(g$year, g$h, type="l", 
     main="Global flow-flow capital composition", 
     xlab="Year", ylab="h")
mtext(bquote(hat(h) ==.(round(bh, 4))))

The output-capital ratio plot follows:

brho <- coef(lm(log(g$rho) ~ g$year))[2]
plot(g$year, g$rho, type="l", 
     main="Global output-capital ratio", 
     xlab="Year", ylab=expression(paste(rho)))
mtext(bquote(hat(rho) ==.(round(brho, 4))))

The following plots show the profit and accumulation rates:

br <- coef(lm(log(g$r) ~ g$year))[2]
bka <- coef(lm(log(g$ka) ~ g$year))[2]
plot(g$year, g$r, type="l", ylim=c(0.08, .13),
     main="Global profit rates", 
     xlab="Year", ylab=" ")
lines(g$year, g$ka, lty=2)
mtext(bquote(hat(r)  ==.(round(br, 4))~","~ hat(kappa) ==.(round(bka, 4))))
legend("topleft", bty="n", lty=c(1, 2), c(expression(paste(r), paste(kappa))))

International results

The following density plots show the international distribution of the structural parameters in selected years: 1975, 1995, and 2015:

yN75<-log(na.omit(subset(x$yN, x$year==1975)))
yN95<-log(na.omit(subset(x$yN, x$year==1995)))
yN15<-log(na.omit(subset(x$yN, x$year==2015)))

yE75<-log(na.omit(subset(x$yE, x$year==1975)))
yE95<-log(na.omit(subset(x$yE, x$year==1995)))
yE15<-log(na.omit(subset(x$yE, x$year==2015)))

yL75<-log(na.omit(subset(x$yL, x$year==1975)))
yL95<-log(na.omit(subset(x$yL, x$year==1995)))
yL15<-log(na.omit(subset(x$yL, x$year==2015)))

wN75<-log(na.omit(subset(x$wN, x$year==1975)))
wN95<-log(na.omit(subset(x$wN, x$year==1995)))
wN15<-log(na.omit(subset(x$wN, x$year==2015)))

wE75<-log(na.omit(subset(x$wE, x$year==1975)))
wE95<-log(na.omit(subset(x$wE, x$year==1995)))
wE15<-log(na.omit(subset(x$wE, x$year==2015)))

wL75<-log(na.omit(subset(x$wL, x$year==1975)))
wL95<-log(na.omit(subset(x$wL, x$year==1995)))
wL15<-log(na.omit(subset(x$wL, x$year==2015)))

s75<-log(na.omit(subset(x$s, x$year==1975)))
s95<-log(na.omit(subset(x$s, x$year==1995)))
s15<-log(na.omit(subset(x$s, x$year==2015)))

ss75<-log(na.omit(subset(x$ss, x$year==1975)))
ss95<-log(na.omit(subset(x$ss, x$year==1995)))
ss15<-log(na.omit(subset(x$ss, x$year==2015)))

h75<-log(na.omit(subset(x$h, x$year==1975)))
h95<-log(na.omit(subset(x$h, x$year==1995)))
h15<-log(na.omit(subset(x$h, x$year==2015)))

rho75<-log(na.omit(subset(x$rho, x$year==1975)))
rho95<-log(na.omit(subset(x$rho, x$year==1995)))
rho15<-log(na.omit(subset(x$rho, x$year==2015)))

r75<-log(na.omit(subset(x$r, x$year==1975)))
r95<-log(na.omit(subset(x$r, x$year==1995)))
r15<-log(na.omit(subset(x$r, x$year==2015)))

ka75<-log(na.omit(subset(x$ka, x$year==1975)))
ka95<-log(na.omit(subset(x$ka, x$year==1995)))
ka15<-log(na.omit(subset(x$ka, x$year==2015)))

# Multi plot function:
# The input of the function MUST be a numeric list
plot.multi.dens <- function(s)
{
        junk.x = NULL
        junk.y = NULL
        for(i in 1:length(s))
        {
                junk.x = c(junk.x, density(s[[i]])$x)
                junk.y = c(junk.y, density(s[[i]])$y)
        }
        xr <- range(junk.x)
        yr <- range(junk.y)
        plot(density(s[[1]]), xlim = xr, ylim = yr, main = "", xlab = "")
        for(i in 1:length(s))
        {
                lines(density(s[[i]]), xlim = xr, ylim = yr, lty=i)
        }
}

library(Hmisc)
## Warning: package 'Hmisc' was built under R version 3.6.3
## Loading required package: lattice
## Loading required package: survival
## Warning: package 'survival' was built under R version 3.6.3
## Loading required package: Formula
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 3.6.3
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
## 
##     format.pval, units
# Density plots:
plot.multi.dens(list(yN75,yN95,yN15))
title(main = expression(paste(log(y[N]), ": Per-capita productivity")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(yE75,yE95,yE15))
title(main = expression(paste(log(y[E]), ": Per-worker productivity")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(yL75,yL95,yL15))
title(main = expression(paste(log(y[L]), ": Per-hour productivity")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(wN75,wN95,wN15))
title(main = expression(paste(log(w[N]), ": Per-capita wage")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(wE75,wE95,wE15))
title(main = expression(paste(log(w[E]), ": Per-worker wage")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(wL75,wL95,wL15))
title(main = expression(paste(log(w[L]), ": Per-hour wage")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(s75,s95,s15))
title(main = expression(paste(log(sigma), ": Exploitation rate")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(ss75,ss95,ss15))
title(main = expression(paste(log(sigma[e]), ": Expenditure-exploitation rate")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(h75,h95,h15))
title(main = expression(paste(log(h), ": Capital composition")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(rho75,rho95,rho15))
title(main = expression(paste(log(rho), ": Output-capital ratio")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(r75,r95,r15))
title(main = expression(paste(log(r), ": Profit rate")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

plot.multi.dens(list(ka75,ka95,ka15))
title(main = expression(paste(log(kappa), ": Accumulation rate")))
legend("topleft", bty="n", legend=c("1975","1995","2015"), lty =(1:3))

Unweighted aggregates: one country, one observation unit

Under current international law, national states are endowed with formal political sovereignity. History shows that the weight of the juridical figure is relative in terms of effective international relations. As a first approximation to the characterization of the deep international structures of postwar global capitalist society, one must consider the time-series features of plain unweighted aggregates (means, standard errors of means, medians, etc.) of the primary variables (those with people and value flows as measurement units), and their result structural ratios.

The following plots provide a graphical summary of the evolution of these unweighted aggregates, as well as their resulting structural parameters, over the 1971-2017 period. Let a primary variable for a country \(i\) and a year \(t\) be denoted as \(X_{it}\). Then the mean of this variable across all countries in year \(t\) is denoted as \(\bar{X}_t.\) The time mean of this variable is then denoted as \(\bar{X}^T \equiv \sum_{i=1}^T\) where \(T\) is the length of the time-series sample. Similarly, the cross-country median of the variable is denoted as \(\tilde{X}_t\) and its time mean as \(\tilde{X}^T\). In general, the superscript \(T\) denotes a time mean of the corresponding variable. The geometric mean of the annual growth rate of any variable \(X\) over the period is denoted as \(\hat{X}\). Confidence intervals around the cross-country mean of a variable (in year \(t\), not indicated) are constructed as \([\bar{X} \pm 2 \ \text{se}(\bar{X})]\), where \(\text{se}(\bar{X}) = \bar{X}/\sqrt{n}\), where \(n\) is the length of the country sample in that particular year.

library(plotrix)
## Warning: package 'plotrix' was built under R version 3.6.3
library(plotrix)
iyN <- tapply(x$yN, x$year, mean, na.rm=TRUE)
summary(iyN)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    4254   10089   13441   12187   14547   19152
biyN <- coef(lm(log(iyN[c(20:64)]) ~ year[c(20:64)]))[2]
seiyN <- tapply(x$yN, x$year, std.error, na.rm=TRUE)
miyN <- tapply(x$yN, x$year, median, na.rm=TRUE)
ciH <- iyN + 2*seiyN
ciL <- iyN - 2*seiyN
plot(year[c(20:64)], iyN[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of per-capita output ", y[N])), 
     xlab="Year", ylab="2011 USD/capita", ylim=c(4000, 25000), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], iyN[c(20:64)], lty=1)
lines(year[c(20:64)], miyN[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(y[N]))), expression(paste(tilde(y[N])))), 
       lty =c(1,2))
mtext(bquote(bar(y[N])^T  == .(round(mean(iyN[c(20:64)]), 1))~ "
             "~se(bar(y[N]))^T ==.(round(mean(seiyN[c(20:64)]), 1))~" 
             "~tilde(y[N])^T  == .(round(mean(miyN[c(20:64)]), 1))~" 
             "~hat(bar(y[N]))  ==.(round(biyN, 4))))

iyE <- tapply(x$yE, x$year, mean, na.rm=TRUE)
summary(iyE)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   12623   22748   29410   27679   32053   42156
biyE <- coef(lm(log(iyE[c(20:64)]) ~ year[c(20:64)]))[2]
seiyE <- tapply(x$yE, x$year, std.error, na.rm=TRUE)
miyE <- tapply(x$yE, x$year, median, na.rm=TRUE)
ciH <- iyE + 2*seiyE
ciL <- iyE - 2*seiyE
plot(year[c(20:64)], iyE[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of per-worker output ", y[E])), 
     xlab="Year", ylab="2011 USD/worker", ylim=c(0, 55000), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], iyE[c(20:64)], lty=1)
lines(year[c(20:64)], miyN[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(y[E]))), expression(paste(tilde(y[E])))), 
       lty =c(1,2))
mtext(bquote(bar(y[E])^T  == .(round(mean(iyE[c(20:64)]), 1))~ "
             "~se(bar(y[E]))^T ==.(round(mean(seiyE[c(20:64)]), 1))~" 
             "~tilde(y[E])^T  == .(round(mean(miyE[c(20:64)]), 1))~" 
             "~hat(bar(y[E]))  ==.(round(biyE, 4))))

iyL <- tapply(x$yL, x$year, mean, na.rm=TRUE)
summary(iyL)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   7.668  12.762  17.079  18.917  23.592  34.646
biyL <- coef(lm(log(iyL[c(20:64)]) ~ year[c(20:64)]))[2]
seiyL <- tapply(x$yL, x$year, std.error, na.rm=TRUE)
miyL <- tapply(x$yL, x$year, median, na.rm=TRUE)
ciH <- iyL + 2*seiyL
ciL <- iyL - 2*seiyL
plot(year[c(20:64)], iyL[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of per-hour output ", y[L])), 
     xlab="Year", ylab="2011 USD/hour", ylim=c(10, 40), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], iyL[c(20:64)], lty=1)
lines(year[c(20:64)], miyL[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(y[L]))), expression(paste(tilde(y[L])))), 
       lty =c(1,2))
mtext(bquote(bar(y[L])^T  == .(round(mean(iyL[c(20:64)]), 1))~ "
             "~se(bar(y[L]))^T ==.(round(mean(seiyL[c(20:64)]), 1))~" 
             "~tilde(y[L])^T  == .(round(mean(miyL[c(20:64)]), 1))~" 
             "~hat(bar(y[L]))  ==.(round(biyL, 4))))

iwN <- tapply(x$wN, x$year, mean, na.rm=TRUE)
summary(iwN)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1962    4884    6488    6301    7534   11237
biwN <- coef(lm(log(iwN[c(20:64)]) ~ year[c(20:64)]))[2]
seiwN <- tapply(x$wN, x$year, std.error, na.rm=TRUE)
miwN <- tapply(x$wN, x$year, median, na.rm=TRUE)
ciH <- iwN + 2*seiwN
ciL <- iwN - 2*seiwN
plot(year[c(20:64)], iwN[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of per-capita wage ", w[N])), 
     xlab="Year", ylab="2011 USD/capita", ylim=c(1500, 15000), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], iwN[c(20:64)], lty=1)
lines(year[c(20:64)], miwN[c(20:64)], lty=2)
# lines(year[c(20:64)], iwN[c(20:64)] + 2*seiwN[c(20:64)], lty=2)
# lines(year[c(20:64)], iwN[c(20:64)] - 2*seiwN[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(w[N]))), expression(paste(tilde(w[N])))), 
       lty =c(1,2))
mtext(bquote(bar(w[N])^T  == .(round(mean(iwN[c(20:64)]), 1))~ "
             "~se(bar(w[N]))^T ==.(round(mean(seiwN[c(20:64)]), 1))~" 
             "~tilde(w[N])^T  == .(round(mean(miwN[c(20:64)]), 1))~" 
             "~hat(bar(w[N]))  ==.(round(biwN, 4))))

iwE <- tapply(x$wE, x$year, mean, na.rm=TRUE)
summary(iwE)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    5524   10855   14972   14360   16852   24022
biwE <- coef(lm(log(iwE[c(20:64)]) ~ year[c(20:64)]))[2]
seiwE <- tapply(x$wE, x$year, std.error, na.rm=TRUE)
miwE <- tapply(x$wE, x$year, median, na.rm=TRUE)
ciH <- iwE + 2*seiwE
ciL <- iwE - 2*seiwE
plot(year[c(20:64)], iwE[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of per-worker wage ", w[E])), 
     xlab="Year", ylab="2011 USD/worker", ylim=c(5000, 32000), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], iwE[c(20:64)], lty=1)
lines(year[c(20:64)], miwE[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(w[E]))), expression(paste(tilde(w[E])))), 
       lty =c(1,2))
mtext(bquote(bar(w[E])^T  == .(round(mean(iwE[c(20:64)]), 1))~ "
             "~se(bar(w[E]))^T ==.(round(mean(seiwE[c(20:64)]), 1))~" 
             "~tilde(w[E])^T  == .(round(mean(miwE[c(20:64)]), 1))~" 
             "~hat(bar(w[E]))  ==.(round(biwE, 4))))

iwL <- tapply(x$wL, x$year, mean, na.rm=TRUE)
summary(iwL)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.898   5.253   7.743   8.602  11.155  16.971
biwL <- coef(lm(log(iwL[c(20:64)]) ~ year[c(20:64)]))[2]
seiwL <- tapply(x$wL, x$year, std.error, na.rm=TRUE)
miwL <- tapply(x$wL, x$year, median, na.rm=TRUE)
ciH <- iwL + 2*seiwL
ciL <- iwL - 2*seiwL
plot(year[c(20:64)], iwL[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of per-hour wage ", w[L])), 
     xlab="Year", ylab="2011 USD/hour", ylim=c(4, 20), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], iwL[c(20:64)], lty=1)
lines(year[c(20:64)], miwL[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(w[L]))), expression(paste(tilde(w[L])))), 
       lty =c(1,2))
mtext(bquote(bar(w[L])^T  == .(round(mean(iwL[c(20:64)]), 2))~ "
             "~se(bar(w[L]))^T ==.(round(mean(seiwL[c(20:64)]), 2))~" 
             "~tilde(w[L])^T  == .(round(mean(miwL[c(20:64)]), 2))~" 
             "~hat(bar(w[L]))  ==.(round(biwL, 4))))

is <- tapply(x$s, x$year, mean, na.rm=TRUE)
summary(is)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.8415  0.9592  1.0048  1.0168  1.0761  1.2265
bis <- coef(lm(log(is[c(20:64)]) ~ year[c(20:64)]))[2]
seis <- tapply(x$s, x$year, std.error, na.rm=TRUE)
mis <- tapply(x$s, x$year, median, na.rm=TRUE)
ciH <- is + 2*seis
ciL <- is - 2*seis
plot(year[c(20:64)], is[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of exploitation rate ", sigma)), 
     xlab="Year", ylab="2011 USD/hour", ylim=c(.6, 1.4), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], is[c(20:64)], lty=1)
lines(year[c(20:64)], mis[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(sigma))), expression(paste(tilde(sigma)))), 
       lty =c(1,2))
mtext(bquote(bar(s)^T  == .(round(mean(is[c(20:64)]), 3))~ "
             "~se(bar(sigma))^T ==.(round(mean(seis[c(20:64)]), 3))~" 
             "~tilde(sigma)^T  == .(round(mean(mis[c(20:64)]), 3))~" 
             "~hat(bar(sigma))  ==.(round(bis, 4))))

iss <- tapply(x$ss, x$year, mean, na.rm=TRUE)
summary(iss)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.5323  0.6682  0.8302  0.7940  0.8954  1.1472
biss <- coef(lm(log(iss[c(20:64)]) ~ year[c(20:64)]))[2]
seiss <- tapply(x$ss, x$year, std.error, na.rm=TRUE)
miss <- tapply(x$ss, x$year, median, na.rm=TRUE)
ciH <- iss + 2*seiss
ciL <- iss - 2*seiss
plot(year[c(20:64)], iss[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of exploitation rate[e] ", sigma[e])), 
     xlab="Year", ylab="2011 USD/hour", ylim=c(.3, 1.5), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], iss[c(20:64)], lty=1)
lines(year[c(20:64)], miss[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(sigma[e]))), expression(paste(tilde(sigma[e])))), 
       lty =c(1,2))
mtext(bquote(bar(sigma[e])^T  == .(round(mean(iss[c(20:64)]), 3))~ "
             "~se(bar(sigma[e]))^T ==.(round(mean(seiss[c(20:64)]), 3))~" 
             "~tilde(sigma[e])^T  == .(round(mean(miss[c(20:64)]), 3))~" 
             "~hat(bar(sigma[e]))  ==.(round(biss, 4))))

ih <- tapply(x$h, x$year, mean, na.rm=TRUE)
summary(ih)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## 1.468e-05 6.011e-05 1.120e-04 9.466e-05 1.232e-04 1.468e-04
bih <- coef(lm(log(ih[c(20:64)]) ~ year[c(20:64)]))[2]
seih <- tapply(x$h, x$year, std.error, na.rm=TRUE)
mih <- tapply(x$h, x$year, median, na.rm=TRUE)
ciH <- ih + 2*seih
ciL <- ih - 2*seih
plot(year[c(20:64)], ih[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of capital composition ", h)), 
     xlab="Year", ylab="2011 USD/hour", ylim=c(-0.00001, 2.4e-04), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], ih[c(20:64)], lty=1)
lines(year[c(20:64)], mih[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(h))), expression(paste(tilde(h)))), 
       lty =c(1,2))
mtext(bquote(bar(h)^T  == .(round(mean(ih[c(20:64)]), 6))~ "
             "~se(bar(h))^T ==.(round(mean(seih[c(20:64)]), 6))~" 
             "~tilde(h)^T  == .(round(mean(mih[c(20:64)]), 6))~" 
             "~hat(bar(h))  ==.(round(bih, 6))))

irho <- tapply(x$rho, x$year, mean, na.rm=TRUE)
summary(irho)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.2716  0.3098  0.3677  0.3800  0.4500  0.5433
birho <- coef(lm(log(irho[c(20:64)]) ~ year[c(20:64)]))[2]
seirho <- tapply(x$rho, x$year, std.error, na.rm=TRUE)
mirho <- tapply(x$rho, x$year, median, na.rm=TRUE)
ciH <- irho + 2*seirho
ciL <- irho - 2*seirho
plot(year[c(20:64)], irho[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of output-capital ratio ", rho)), 
     xlab="Year", ylab="2011 USD/hour", ylim=c(.2, .7), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], irho[c(20:64)], lty=1)
lines(year[c(20:64)], mirho[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(rho))), expression(paste(tilde(rho)))), 
       lty =c(1,2))
mtext(bquote(bar(rho)^T  == .(round(mean(irho[c(20:64)]), 4))~ "
             "~se(bar(rho))^T ==.(round(mean(seirho[c(20:64)]), 4))~" 
             "~tilde(rho)^T  == .(round(mean(mirho[c(20:64)]), 4))~" 
             "~hat(bar(rho))  ==.(round(birho, 5))))

ir <- tapply(x$r, x$year, mean, na.rm=TRUE)
summary(ir)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.1231  0.1353  0.1470  0.1539  0.1695  0.1997
bir <- coef(lm(log(ir[c(20:64)]) ~ year[c(20:64)]))[2]
seir <- tapply(x$r, x$year, std.error, na.rm=TRUE)
mir <- tapply(x$r, x$year, median, na.rm=TRUE)
ciH <- ir + 2*seir
ciL <- ir - 2*seir
plot(year[c(20:64)], ir[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of profit rate ", r)), 
     xlab="Year", ylab="2011 USD/hour", ylim=c(.07, .26), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], ir[c(20:64)], lty=1)
lines(year[c(20:64)], mir[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(r))), expression(paste(tilde(r)))), 
       lty =c(1,2))
mtext(bquote(bar(r)^T  == .(round(mean(ir[c(20:64)]), 4))~ "
             "~se(bar(r))^T ==.(round(mean(seir[c(20:64)]), 4))~" 
             "~tilde(r)^T  == .(round(mean(mir[c(20:64)]), 4))~" 
             "~hat(bar(r))  ==.(round(bir, 5))))

ika <- tapply(x$ka, x$year, mean, na.rm=TRUE)
summary(ika)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.09256 0.10813 0.12673 0.12964 0.13939 0.20427
bika <- coef(lm(log(ika[c(20:64)]) ~ year[c(20:64)]))[2]
seika <- tapply(x$ka, x$year, std.error, na.rm=TRUE)
mika <- tapply(x$ka, x$year, median, na.rm=TRUE)
ciH <- ika + 2*seika
ciL <- ika - 2*seika
plot(year[c(20:64)], ika[c(20:64)], type="l", lty=0, 
     main=expression(paste("Mean (95% CI) and median of accumulation rate ", kappa)), 
     xlab="Year", ylab="2011 USD/hour", ylim=c(0, .3), sub = "Data: PWT")
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col="gray90", border=NA)
lines(year[c(20:64)], ika[c(20:64)], lty=1)
lines(year[c(20:64)], mika[c(20:64)], lty=2)
legend("top", bty="n", 
       legend=c(expression(paste(bar(kappa))), expression(paste(tilde(kappa)))), 
       lty =c(1,2))
mtext(bquote(bar(kappa)^T  == .(round(mean(ika[c(20:64)]), 4))~ "
             "~se(bar(kappa))^T ==.(round(mean(seika[c(20:64)]), 4))~" 
             "~tilde(kappa)^T  == .(round(mean(mika[c(20:64)]), 4))~" 
             "~hat(bar(ka))  ==.(round(bika, 5))))

# Comparisons

iyN <- tapply(x$yN, x$year, mean, na.rm=TRUE)
miyN <- tapply(x$yN, x$year, median, na.rm=TRUE)
seiyN <- tapply(x$yN, x$year, std.error, na.rm=TRUE)
ciH <- iyN + 2*seiyN
ciL <- iyN - 2*seiyN
biyN <- coef(lm(log(iyN) ~ year))[2]
plot(year[c(20:64)], iyN[c(20:64)], type="l", lty=0, 
     main=expression(paste("Means (95% CI) and medians of ", y[N], " and ", w[N])), 
     xlab="Year", ylab="2011 USD", ylim=c(900, 30000))
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col=rgb(1, 0, 0, alpha=.25), border=NA)
lines(year[c(20:64)], iyN[c(20:64)], lty=1, col="red")
lines(year[c(20:64)], miyN[c(20:64)], lty=2, col="red")
iwN <- tapply(x$wN, x$year, mean, na.rm=TRUE)
miwN <- tapply(x$wN, x$year, median, na.rm=TRUE)
seiwN <- tapply(x$wN, x$year, std.error, na.rm=TRUE)
ciH <- iwN + 2*seiwN
ciL <- iwN - 2*seiwN
biwN <- coef(lm(log(iwN) ~ year))[2]
lines(year[c(20:64)], iwN[c(20:64)], lty=0)
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col=rgb(0, 0, 1, .25), border=NA)
lines(year[c(20:64)], iwN[c(20:64)], lty=1, col="blue")
lines(year[c(20:64)], miwN[c(20:64)], lty=2, col="blue")
legend("top", bty="n", legend=c(expression(paste(bar(y[N]))), 
                                expression(paste(bar(w[N]))), 
                                expression(paste(tilde(y[N]))), 
                                expression(paste(tilde(w[N])))), 
       lty =c(1,1, 2, 2), lwd = c(1, 1, 2, 2), col=c("red", "blue", "red", "blue"))
mtext(bquote(hat(bar(y[N]))  ==.(round(biyN, 4))~","~ hat(bar(w[N])) ==.(round(biwN, 4))))

iyE <- tapply(x$yE, x$year, mean, na.rm=TRUE)
miyE <- tapply(x$yE, x$year, median, na.rm=TRUE)
seiyE <- tapply(x$yE, x$year, std.error, na.rm=TRUE)
ciH <- iyE + 2*seiyE
ciL <- iyE - 2*seiyE
biyE <- coef(lm(log(iyE) ~ year))[2]
plot(year[c(20:64)], iyE[c(20:64)], type="l", lty=0, 
     main=expression(paste("Means (95% CI) and medians of ", y[E], 
                           " and ", w[E])), 
     xlab="Year", ylab="2011 USD", ylim=c(5000, 60000))
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col=rgb(1, 0, 0, alpha=.25), border=NA)
lines(year[c(20:64)], iyE[c(20:64)], lty=1, col="red")
lines(year[c(20:64)], miyE[c(20:64)], lty=2, col="red")
iwE <- tapply(x$wE, x$year, mean, na.rm=TRUE)
miwE <- tapply(x$wE, x$year, median, na.rm=TRUE)
seiwE <- tapply(x$wE, x$year, std.error, na.rm=TRUE)
ciH <- iwE + 2*seiwE
ciL <- iwE - 2*seiwE
biwE <- coef(lm(log(iwE) ~ year))[2]
lines(year[c(20:64)], iwE[c(20:64)], lty=0)
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col=rgb(0, 0, 1, .25), border=NA)
lines(year[c(20:64)], iwE[c(20:64)], lty=1, col="blue")
lines(year[c(20:64)], miwE[c(20:64)], lty=2, col="blue")
legend("top", bty="n", legend=c(expression(paste(bar(y[E]))), 
                                expression(paste(bar(w[E]))), 
                                expression(paste(tilde(y[E]))), 
                                expression(paste(tilde(w[E])))), 
       lty =c(1,1, 2, 2), lwd = c(1, 1, 2, 2), col=c("red", "blue", "red", "blue"))
mtext(bquote(hat(bar(y[E]))  ==.(round(biyE, 4))~","~ hat(bar(w[E])) ==.(round(biwE, 4))))

iyL <- tapply(x$yL, x$year, mean, na.rm=TRUE)
miyL <- tapply(x$yL, x$year, median, na.rm=TRUE)
seiyL <- tapply(x$yL, x$year, std.error, na.rm=TRUE)
ciH <- iyL + 2*seiyL
ciL <- iyL - 2*seiyL
biyL <- coef(lm(log(iyL) ~ year))[2]
plot(year[c(20:64)], iyL[c(20:64)], type="l", lty=0, 
     main=expression(paste("Means (95% CI) and medians of ", y[L], 
                           " and ", w[L])), 
     xlab="Year", ylab="2011 USD", ylim=c(4, 41))
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col=rgb(1, 0, 0, alpha=.25), border=NA)
lines(year[c(20:64)], iyL[c(20:64)], lty=1, col="red")
lines(year[c(20:64)], miyL[c(20:64)], lty=2, col="red")
iwL <- tapply(x$wL, x$year, mean, na.rm=TRUE)
miwL <- tapply(x$wL, x$year, median, na.rm=TRUE)
seiwL <- tapply(x$wL, x$year, std.error, na.rm=TRUE)
ciH <- iwL + 2*seiwL
ciL <- iwL - 2*seiwL
biwL <- coef(lm(log(iwL) ~ year))[2]
lines(year[c(20:64)], iwL[c(20:64)], lty=0)
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col=rgb(0, 0, 1, .25), border=NA)
lines(year[c(20:64)], iwL[c(20:64)], lty=1, col="blue")
lines(year[c(20:64)], miwL[c(20:64)], lty=2, col="blue")
legend("topleft", bty="n", legend=c(expression(paste(bar(y[L]))), 
                                expression(paste(bar(w[L]))), 
                                expression(paste(tilde(y[L]))), 
                                expression(paste(tilde(w[L])))), 
       lty =c(1,1, 2, 2), lwd = c(1, 1, 2, 2), col=c("red", "blue", "red", "blue"))
mtext(bquote(hat(bar(y[L]))  ==.(round(biyL, 4))~","~ hat(bar(w[L])) ==.(round(biwL, 4))))

is <- tapply(x$s, x$year, mean, na.rm=TRUE)
mis <- tapply(x$s, x$year, median, na.rm=TRUE)
seis <- tapply(x$s, x$year, std.error, na.rm=TRUE)
ciH <- is + 2*seis
ciL <- is - 2*seis
bis <- coef(lm(log(is) ~ year))[2]
plot(year[c(20:64)], is[c(20:64)], type="l", lty=0, 
     main=expression(paste("Means (95% CI) and medians of ", 
                           sigma, " and ", sigma[e])), 
     xlab="Year", ylab=" ", ylim=c(0.4, 1.7))
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col=rgb(1, 0, 0, alpha=.25), border=NA)
lines(year[c(20:64)], is[c(20:64)], lty=1, col="red")
lines(year[c(20:64)], mis[c(20:64)], lty=2, col="red")
iss <- tapply(x$ss, x$year, mean, na.rm=TRUE)
miss <- tapply(x$ss, x$year, median, na.rm=TRUE)
seiss <- tapply(x$ss, x$year, std.error, na.rm=TRUE)
ciH <- iss + 2*seiss
ciL <- iss - 2*seiss
biss <- coef(lm(log(iss) ~ year))[2]
lines(year[c(20:64)], iss[c(20:64)], lty=0)
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col=rgb(0, 0, 1, .25), border=NA)
lines(year[c(20:64)], iss[c(20:64)], lty=1, col="blue")
lines(year[c(20:64)], miss[c(20:64)], lty=2, col="blue")
legend("top", bty="n", legend=c(expression(paste(bar(sigma))), 
                                    expression(paste(bar(sigma[e]))), 
                                    expression(paste(tilde(sigma))), 
                                    expression(paste(tilde(sigma[e])))), 
       lty =c(1,1, 2, 2), col=c("red", "blue", "red", "blue"))
mtext(bquote(hat(bar(sigma))  ==.(round(bis, 4))~","~ hat(bar(sigma[e])) ==.(round(biss, 4))))

ir <- tapply(x$r, x$year, mean, na.rm=TRUE)
mir <- tapply(x$r, x$year, median, na.rm=TRUE)
seir <- tapply(x$r, x$year, std.error, na.rm=TRUE)
ciH <- ir + 2*seir
ciL <- ir - 2*seir
bir <- coef(lm(log(ir) ~ year))[2]
plot(year[c(20:64)], ir[c(20:64)], type="l", lty=0, 
     main=expression(paste("Means (95% CI) and medians of ", 
                           r, " and ", kappa)), 
     xlab="Year", ylab=" ", ylim=c(0.05, .3))
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col=rgb(1, 0, 0, alpha=.25), border=NA)
lines(year[c(20:64)], ir[c(20:64)], lty=1, col="red")
lines(year[c(20:64)], mir[c(20:64)], lty=2, col="red")
ika <- tapply(x$ka, x$year, mean, na.rm=TRUE)
mika <- tapply(x$ka, x$year, median, na.rm=TRUE)
seika <- tapply(x$ka, x$year, std.error, na.rm=TRUE)
ciH <- ika + 2*seika
ciL <- ika - 2*seika
bika <- coef(lm(log(ika) ~ year))[2]
lines(year[c(20:64)], ika[c(20:64)], lty=0)
polygon(c(year[c(20:64)], rev(year[c(20:64)])), 
        c(ciL[c(20:64)], rev(ciH[c(20:64)])), 
        col=rgb(0, 0, 1, .25), border=NA)
lines(year[c(20:64)], ika[c(20:64)], lty=1, col="blue")
lines(year[c(20:64)], mika[c(20:64)], lty=2, col="blue")
legend("top", bty="n", legend=c(expression(paste(bar(r))), 
                                expression(paste(bar(kappa))), 
                                expression(paste(tilde(r))), 
                                expression(paste(tilde(kappa)))), 
       lty =c(1,1, 2, 2), lwd = c(1, 1, 2, 2), col=c("red", "blue", "red", "blue"))
mtext(bquote(hat(bar(r))  ==.(round(bir, 4))~","~ hat(bar(kappa)) ==.(round(bika, 4))))

References

Lenin, Vladimir I. 1977. “Statistics and Sociology.” Collected Works Vol. 23.

Marx, Karl. n.d. A Contribution to the Critique of Political Economy.


  1. “In the social production of their existence, men inevitably enter into definite relations, which are independent of their will, namely relations of production appropriate to a given stage in the development of their material forces of production. The totality of these relations of production constitutes the economic structure of society, the real foundation, on which arises a legal and political superstructure and to which correspond definite forms of social consciousness. The mode of production of material life conditions the general process of social, political and intellectual life. It is not the consciousness of men that determines their existence, but their social existence that determines their consciousness. At a certain stage of development, the material productive forces of society come into conflict with the existing relations of production or—this merely expresses the same thing in legal terms—with the property relations within the framework of which they have operated hitherto. From forms of development of the productive forces these relations turn into their fetters. Then begins an era of social revolution. The changes in the economic foundation lead sooner or later to the transformation of the whole immense superstructure. In studying such transformations it is always necessary to distinguish between the material transformation of the economic conditions of production, which can be determined with the precision of natural science, and the legal, political, religious, artistic or philosophic—in short, ideological forms in which men become conscious of this conflict and fight it out.” (Marx, n.d., 263.)↩︎

  2. “The most widely used, and most fallacious, method in the realm of social phenomena is to tear out individual minor facts and juggle with examples. Selecting chance examples presents no difficulty at all, but is of no value, or of purely negative value, for in each individual case everything hinges on the historically concrete situation. Facts, if we take them in their entirety, in their interconnection, are not only stubborn things, but undoubtedly proof-bearing things. Minor facts, if taken out of their entirety, out of their interconnection, if they are arbitrarily selected and torn out of context, are merely things for juggling, or even worse. … We must seek to build a reliable foundation of precise and indisputable facts that can be confronted to any of the”general" or “example-based” arguments now so grossly misused in certain countries. And if it is to be a real foundation, we must take not individual facts, but the sum total of facts, without a single exception, relating to the question under discussion. Otherwise there will be the inevitable, and fully justified, suspicion that the facts were selected or compiled arbitrarily, that instead of historical phenomena being presented in objective interconnection and interdependence and treated as a whole, we are presenting a “subjective” concoction to justify what might prove to be a dirty business. This does happen … and more often than one might think. Proceeding from these considerations, we have decided to begin with statistics, fully aware of course that statistics are deeply antipathetic to certain readers, who prefer “flattering deception” to “base truths”, and to certain authors, who are prone to smuggle in political contraband under cover of “general” disquisitions about internationalism, cosmopolitanism, nationalism, patriotism, etc. … For a proper survey of the whole complex of data on national movements, we must take the whole population of the earth. And in so doing, two criteria must be established with the utmost accuracy and examined with the utmost fullness: first, national homogeneity or heterogeneity of the population of various states; second, division of states (or of state-like formations in cases where there is doubt that we are really dealing with a state) into politically independent and politically dependent." (Lenin 1977, 272–3.) ↩︎

  3. Note that \(l\) is the average per-worker hours worked.↩︎

  4. Note that \(\omega\) is the labor share of total income and \(c\) is the consumption share of total expenditure.↩︎