“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.”
– Karl Marx1
“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."
– Vladimir I. Lenin2
“A Marxist must take cognisance of real life, of the true facts of reality, and not cling to a theory of yesterday, which, like all theories, at best only outlines the main and the general.”
– Vladimir I. Lenin3
“More economics. But not in the sense of”general" discussions, learned reviews, intellectual plans and similar piffle, for, I regret to say, they are all too often just piffle and nothing more. By economics we mean the gathering, careful checking and study of the facts of the actual organisation of the new life."
– Vladimir I. Lenin4
The general purpose of this project is to characterize the main unfolding structures of late global capitalist society, using the Marxist (accounting and theoretical) framework to organize the study of major sets of high quality, publicly-available international data, such as the following:
The general term structure designates a phenomenon that, though constituted by distinguishable component parts, cannot be reduced to these parts regarded in isolation. Rather, a structure is an emergent property of all of its component parts combined, which exists on a plane that transcends that of its elementary components. The term social structure, in particular, refers here to a relatively stable set of social relations of production. These social structures are quantifiable by means of suitable proportions or (structural) parameters. For example, following Marx (1867), a proportion that summarizes the conditions of the overall class balance of forces in a capitalist society is the rate of exploitation, which appears phenomenally (i.e. distorted or transformed by competition among individual capitals) as the normal profit rate. Thus, a goal of this project is to produce plausible empirical estimates of these proportions, trace out their evolution in the last few decades, and investigate the mutual interplay among them.
In sum, late global society will be viewed as a complex array of intertwined social structures. The elementary components of late global society are the more than 7 billion of human beings currently living on earth. The phenomenon called “late global society” is the resultant of their interactions, jelling into relatively stable social inter-relations or structures, such as capital aggregates, national and multinational states, etc.
At first sight, human society globally considered is conformed as a multinational conglomerate, with national states defining its units. As politically organized and legally constituted in their national states, individuals appears as citizens or subjects of these states. The interrelations among these discrete political entities falls under the rubric of “international” relations. Thus, “international” refers to the interrelations among national states, i.e. the international composition or structure of “global” society. The “regional” structures refer to those that involve aggregates of countries on the basis of shared geographic, demographic (population size), economic (size and productivity), and ethnolinguistic characteristics.
The term “global” highlights that the commonalities connecting all humans in the world are much more fundamental, organic, and fluid than the political and juridical structures of the national states may suggest. In fact, the political and legal structures are rather superficial forms (not necessarily unimportant in practice) in which the deeper structures, structures of an economic character, connecting the world population manifest.
As indicated above, the chief goal of this project is to characterize and summarize these deeper economic structures of global society, i.e. the basic social relations that flow most immediately from the individuals’ ongoing reproduction of their “material lives”: the measure, composition, and evolution of such structures using the vast stock of empirical material publicly available. There is an implicit self critique here, namely that Marxism needs to quantify these structures rather than simply speculate about them or draw inferences unsystematically from ad-hoc factual information. And something similar can be said about the international, regional, and sectoral levels.
For a summary of the theoretical framework used in this study, drawn from (Marx 1867), (Marx 1885), and (Marx 1894), using modern mathematical language, and showing then the rough correspondence between conventional national-accounting categories and Marx’s own, radical, critical, political-economic categories, see my notes on the Marxist framework for macro data analysis, the Marxist framework for inter-industry data analysis.
The first part of the project will use a battery of sample statistics and plots to describe the structure and evolution of late global society. The third will use the methodology of modern cross-sectional, time-series, and panel econometrics to estimate relations among variables and test a host of hypotheses concerning the main proportions involved. A concluding part will summarize, and attempt a brief synthesis, of the chief findings of the project.
The Penn World Table 10.0 (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 183 countries. The period under consideration ranges from 1954 to 2019 with an emphasis on the 1971-2019 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. However, with the resources at hand and considering the potential alternative uses, the cost of transforming a data set of these dimensions to make its variables conform to the theoretical categories seems to be much to steep.
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 overestimation of the labor share of income (value added) and, correspondingly, the underestimation of the capitalists’ surplus value, 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 characterization of the structural variables of interest (productivity, exploitation, and profitability measures) is affected by these discrepancies only to the extent 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
Section
library(readr)
x <- read_csv("Downloads/pwt100.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)
## tibble [12,078 × 14] (S3: tbl_df/tbl/data.frame)
## $ countrycode: chr [1:12078] "ABW" "ABW" "ABW" "ABW" ...
## $ year : num [1:12078] 1954 1955 1956 1957 1958 ...
## $ c : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ Y : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ Ye : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ om : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ l : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ Ks : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ W : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ C : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ K : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ N : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ E : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ L : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
summary(x)
## countrycode year c Y
## Length:12078 Min. :1954 Min. :0.0260 Min. : 28
## Class :character 1st Qu.:1970 1st Qu.:0.5315 1st Qu.: 7152
## Mode :character Median :1986 Median :0.6306 Median : 30951
## Mean :1986 Mean :0.6268 Mean : 311619
## 3rd Qu.:2003 3rd Qu.:0.7415 3rd Qu.: 161706
## Max. :2019 Max. :0.9993 Max. :20596100
## NA's :2167 NA's :1918
## Ye om l Ks
## Min. : 20 Min. :0.090 Min. :1381 Min. :0.005
## 1st Qu.: 6790 1st Qu.:0.452 1st Qu.:1785 1st Qu.:0.206
## Median : 30329 Median :0.537 Median :1964 Median :0.454
## Mean : 309391 Mean :0.532 Mean :1981 Mean :0.489
## 3rd Qu.: 159017 3rd Qu.:0.621 3rd Qu.:2160 3rd Qu.:0.748
## Max. :20862690 Max. :0.903 Max. :3040 Max. :1.975
## NA's :1918 NA's :4315 NA's :8696 NA's :4983
## W C K N
## Min. : 38 Min. : 12 Min. : 28 Min. : 0.0044
## 1st Qu.: 6854 1st Qu.: 4803 1st Qu.: 24296 1st Qu.: 1.5444
## Median : 26665 Median : 19753 Median : 127152 Median : 6.0838
## Mean : 234110 Mean : 183156 Mean : 1474787 Mean : 31.0420
## 3rd Qu.: 130695 3rd Qu.: 90794 3rd Qu.: 775260 3rd Qu.: 19.8403
## Max. :12297749 Max. :14677080 Max. :81726344 Max. :1433.7837
## NA's :4735 NA's :2167 NA's :2003 NA's :1918
## E L
## Min. : 0.0012 Min. : 169.3
## 1st Qu.: 0.7602 1st Qu.: 5429.6
## Median : 2.8442 Median : 12147.1
## Mean : 14.2215 Mean : 61610.1
## 3rd Qu.: 8.2734 3rd Qu.: 43932.6
## Max. :799.3066 Max. :1733631.2
## NA's :2772 NA's :8696
x0 <- x
The variables (hereon called “parameters”) that capture the deeper structures of a capitalist society are, respectively,
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)
## tibble [12,078 × 26] (S3: tbl_df/tbl/data.frame)
## $ countrycode: chr [1:12078] "ABW" "ABW" "ABW" "ABW" ...
## $ year : num [1:12078] 1954 1955 1956 1957 1958 ...
## $ c : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ Y : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ Ye : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ om : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ l : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ Ks : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ W : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ C : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ K : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ N : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ E : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ L : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ yN : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ yE : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ yL : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ wN : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ wE : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ wL : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ s : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ ss : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ h : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ rho : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ r : num [1:12078] NA NA NA NA NA NA NA NA NA NA ...
## $ ka : num [1:12078] 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:2019)
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': 66 obs. of 21 variables:
## $ year: int 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 ...
## $ N : num 2049 2122 2163 2206 2250 ...
## $ E : num 832 860 877 894 920 ...
## $ L : num 668870 682443 693198 698754 696364 ...
## $ Y : num 8223652 8892769 9255498 9598716 9787235 ...
## $ Ye : num 8173657 8839403 9204950 9534211 9748980 ...
## $ W : num 5063572 5412092 5676998 5871016 5970366 ...
## $ C : num 5293654 5683958 5895475 6107692 6238964 ...
## $ K : num 37615393 39987898 41830131 43816962 45515156 ...
## $ yN : num 4014 4191 4280 4350 4350 ...
## $ yE : num 9882 10346 10554 10735 10639 ...
## $ yL : num 12.3 13 13.4 13.7 14.1 ...
## $ wN : num 2472 2551 2625 2661 2653 ...
## $ wE : num 6085 6296 6474 6566 6490 ...
## $ wL : num 7.57 7.93 8.19 8.4 8.57 ...
## $ s : num 0.624 0.643 0.63 0.635 0.639 ...
## $ ss : num 0.553 0.565 0.57 0.572 0.569 ...
## $ h : num 7.74e-07 8.27e-07 8.34e-07 9.06e-07 1.05e-06 ...
## $ rho : num 0.219 0.222 0.221 0.219 0.215 ...
## $ r : num 0.084 0.087 0.0855 0.0851 0.0839 ...
## $ ka : num 0.0779 0.0802 0.0803 0.0797 0.078 ...
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
The global aggregation of the primary variables offers a structural history of late capitalist society in which each person and unit of value (2011 USD), regardless of country or year, appear 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))))
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)
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## Loading required package: ggplot2
##
## 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))
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 resulting 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-2019 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)
iyN <- tapply(x$yN, x$year, mean, na.rm=TRUE)
summary(iyN)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4775 11900 13328 13252 15969 22068
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.
## 13993 27830 32178 31279 36583 49407
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)], miyE[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.
## 8.688 14.667 19.876 21.963 27.620 39.938
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.
## 2322 4941 6145 6743 8640 12820
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.
## 6021 13010 16203 16139 19579 27955
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.
## 3.310 5.991 8.846 9.925 12.919 19.126
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.7591 0.9501 1.0005 0.9990 1.0958 1.2128
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=" ", 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(sigma)^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.5426 0.6771 0.8140 0.7864 0.8745 1.1315
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=" ", 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.038e-05 2.115e-05 6.790e-05 5.843e-05 8.904e-05 9.932e-05
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=" ", 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.2742 0.3017 0.3394 0.3608 0.4304 0.5050
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=" ", 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.1250 0.1376 0.1478 0.1491 0.1588 0.1878
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=" ", 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.08963 0.10361 0.11702 0.11993 0.12689 0.17743
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=" ", 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))))
International relations, those of a political and military character, are largely unconstrained by international law. The actual political interactions among nations are power relations, i.e. they depend ultimately on their respective economic clout. Speaking bluntly, the large degree of international economic inequality conditions the existence of imperialism (colonial, semi-colonial, and neo-colonial domination), defined conventionally as the systematic use of extra-economic methods of exploitation of the working people in poorer nations by, chiefly, the ruling classes in the richer nations, a type of super-exploitation overlaid on the regular economic exploitation, mediated by international trade and finance. Economic power is thus, compounded or leveraged politically and militarily in international affairs.
In sum, the political (and military) might that a nation can project internationally is, ultimately, a function of its productive force. This does not mean that international law is completely irrelevant, but only that its effect is secondary compared to the effects that flow from the highly unequal international distribution of the productive forces of labor.
A rough measure of each nation’s productivity is its annual output. Thus, as a second approximation to the characterization of the deeper international structures of late global capitalist society, one must consider the time-series features of \(Y\)-weighted aggregates (means, standard errors of means, medians, etc.) of the primary variables (those with people and value flows as measurement units), and their resulting structural ratios.
The following plots offer a graphical summary of the evolution of these economically-weighted aggregates, as well as their resulting structural parameters, over the 1971-2019 period. The notational conventions above are also followed here.
iyN <- tapply(x$yN, x$year, mean, na.rm=TRUE)
summary(iyN)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4775 11900 13328 13252 15969 22068
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.
## 13993 27830 32178 31279 36583 49407
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)], miyE[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.
## 8.688 14.667 19.876 21.963 27.620 39.938
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.
## 2322 4941 6145 6743 8640 12820
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.
## 6021 13010 16203 16139 19579 27955
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.
## 3.310 5.991 8.846 9.925 12.919 19.126
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.7591 0.9501 1.0005 0.9990 1.0958 1.2128
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=" ", 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(sigma)^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.5426 0.6771 0.8140 0.7864 0.8745 1.1315
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=" ", 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.038e-05 2.115e-05 6.790e-05 5.843e-05 8.904e-05 9.932e-05
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=" ", 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.2742 0.3017 0.3394 0.3608 0.4304 0.5050
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=" ", 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.1250 0.1376 0.1478 0.1491 0.1588 0.1878
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=" ", 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.08963 0.10361 0.11702 0.11993 0.12689 0.17743
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=" ", 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))))
Given the potential of humans to learn from others (e.g. to appropriate technology or productive knowledge developed by others), contemporaneous output levels may not suffice to properly quantify the productive potential in a given nation. As a third and final approximation to characterizing the deeper international structures of late global capitalist society, the time-series features of \(N\)-weighted 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, are now presented.
The plots summarize graphically the evolution of these demographically-weighted aggregates, as well as their corresponding structural parameters, over the 1971-2019 period. The notational conventions above are maintained in this section as well.
R code here.
Lenin, Vladimir I. 1917a. “Letters on Tactics.” Collected Works 24, 1977.
———. 1917b. “Statistics and Sociology.” Collected Works 23, 1977.
———. 1921. “The Character of Our Newspapers.” Collected Works 28, 1977.
Marx, Karl. 1867. Capital: A Critique of Political Economy. Vol. I.
———. 1885. Capital: A Critique of Political Economy. Vol. II.
———. 1894. Capital: A Critique of Political Economy. Vol. III.
———. 2010. A Contribution to the Critique of Political Economy, 1859.