“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
Although I have taught econometrics and mathematical economics to undergraduate and graduate students for a number of years, I am personally skeptical of data and of statistical methods. Aside from the biased conceptualization, sampling methods, accounting frameworks, and myriad decisions that creep into the collection, compilation, processing, and organization of data, there is a host of additional errors that plague their analysis and interpretation. Clearly, the GIGO principle (“garbage-in, garbage-out”) applies. There is no statistical method capable of turning bad data into good one, and there are many statistical methods that can obfuscate the self evident.
However, there is also much to say about the laws of large numbers, central limit theorems, and a whole battery of other logical-deductive mathematical results. A lot of what we call civilization, culture, and industry (let alone finance) rests on them. Under certain premises (that often map nicely to conditions in nature and social life when contemplated at a modest human scale), by comparison to individual cases, aggregates (or averages) display remarkably regular traits and patterns. While one can be extremely incredulous about the likely fate of individual cases, one can be relatively more assured about where a large number of cases may collectively wind up. Rationalist views of this type imbued the minds of the intellectual giants that ushered the birth of modern society, including among them — though with the radical, critical, and revolutionary detachment inherent to the categorical imperative of siding with the most exploited in their intransigent opposition against everything oppressive – Marx and his earlier followers as well. Beware: Such views will also inform the rather nonchallant approach to handling the data sets alluded in this document.
Marx’s works5 are full with allusions to the Hegelian (ontological and epistemological) duality between what is essential and necessary (regular or expected, and therefore subject to some measure of human control) and what is phenomenal and contingent (surprising or unexpected, entropic or irreducibly outside of human control) in modern social life. How can one gain the knowledge of necessity, which may grants us the freedom to consciously conform our social structures, without deploying instruments that modern science and industry have forged to reign in on the chaos and confusion of life? There’s no royal road to science, the bearded man wrote. No pain, in the form of provisionally accepting dubious assumptions, no gain in the form of some light shed on a confusing mass of observations!
Awareness of this dilemma is the reason why I have, in the last few years, taken upon myself the task of sweeping through large, publicly available, statistical data sets using rather straightforward methods of statistical description and analysis. So far, I have avoided the fancier methods, though I am more than willing to deploy them once the basic descriptive picture emerging from this exercise has been properly (i.e. socially) validated. The ultimate goal is to help Marxists and all those who struggle for socialism to gain a deeper understanding of the concrete, quantifiable structure of late global capitalist society and of its historical evolution, so we may become more capable of overthrowing the rule of capital for good.6
Acknowledgments here.
The general purpose of this project is to characterize the main unfolding structures of late global capitalist society, using an explicitly Marxist (accounting and theoretical) framework to organize the study of two major sets of reputable, publicly available, internationally comparable data:
The concept of a 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., a process accelerated by the dramatic decrease in the social-labor costs of modern communications and transportation.
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 here to the interrelations among national states, i.e. the international composition or structure of global society. The regional structures refer to those involving aggregates of countries on the basis of shared geographic and ethnolinguistic, demographic (population size), and economic (size and productivity) 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 national states may suggest. In fact, the Marxist claim is that 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:7 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 Huato (2020a) and Huato (2020b).
In their complete form, a first part will use a battery of sample statistics and plots to describe the structure and evolution of late global capitalist society. A second part 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 structural proportions involved. A concluding part will summarize, and attempt a brief synthesis, of the chief findings of the project.
This document only presents (at this stage) raw results from the analysis of the Penn World Table 10.0. The results of the analysis of the Eora26 Input-Output tables, conducted jointly with Jesús Lara (UMass Amherst), will be presented in a separate document.
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 roughly match the corresponding Marxist categories. Admittedly, this assumption implies a measurement error of unknown magnitude. However, with the resources at hand and considering alternative courses of action, the cost of transforming a data set of these dimensions to make its variables conform to the theoretical categories seems to be much too steep.
In the version of the data set utilized here, there is a total of 12,078 observations (183 countries by 66 years) and 11 numerical variables, for a total of 132,858 numerical data points, of which 37,189 are missing values. To mind, 28% of all the possible numerical values in the set are absent; most frequently those covering the first 10 to 20 years of the 66-year period. Pondering the totality of the data “as is” requires taking full stock of this glaring data absence as per se informative. After all, the ability of national statistical agencies to sample, collect, compile, and organize the national accounts is itself a function of the degree of modern capitalist development of a society and, hence, empirical evidence thereof.
Readers must be warned that the global and international data aggregates in this study are unbalanced as a result of these holes in the sample for particular countries and years. Countries and years with incomplete data are not removed from the data set in order to balance the sample. Except for the removal of a few extreme outliers in the PWT’s consumption share of expenditure, this study takes the data set as is. The rationale for this drastic decision is that partial absence of systematic observations of a process is itself informative of the nature of the process itself as it relates to the observer and, therefore, the corresponding uncertainty about the process should incorporate such data absence in the framework of analysis.8
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 capital performance 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 stable over time, the time-series implications of the analysis are not affected.
To allow full replicability of results, data sets and R code are stored in this repository:
https://github.com/jhuato/deeper_structures
## ── Attaching packages ──────────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.2 ✓ purrr 0.3.4
## ✓ tibble 3.0.3 ✓ dplyr 1.0.2
## ✓ tidyr 1.1.2 ✓ stringr 1.4.0
## ✓ readr 1.3.1 ✓ forcats 0.5.0
## ── Conflicts ─────────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
## 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.
## Rows: 12,078
## Columns: 14
## $ countrycode <chr> "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "…
## $ country <chr> "Aruba", "Aruba", "Aruba", "Aruba", "Aruba", "Aruba", "Ar…
## $ year <dbl> 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 196…
## $ N <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ E <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ l <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Ye <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Y <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ om <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ c <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Ks <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ K <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ i <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ delta <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## Rows: 12,078
## Columns: 19
## $ countrycode <chr> "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "…
## $ country <chr> "Aruba", "Aruba", "Aruba", "Aruba", "Aruba", "Aruba", "Ar…
## $ year <dbl> 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 196…
## $ N <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ E <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ l <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Ye <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Y <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ om <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ c <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ Ks <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ K <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ i <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ delta <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ W <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ C <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ L <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ R <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ D <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
The variables (hereon called “parameters” or “proportions”) that capture the deeper structures of a capitalist society are, respectively,
This computes the annual parameters for each country:
p <- x %>%
mutate(yN=Y/N, yE=Y/E, yL=Y/L, yeN=Ye/N, yeE=Ye/E, yeL=Ye/L, wN=W/N,
wE=W/E, wL=W/L, cN=C/N, cE=C/E, cL=C/L, s=(Y-W)/W, ss=(Ye-C)/C,
h=Ks/W, hs=K/E, hd=D/W, gamma=Y/K, r=(Y-W)/K, k=(Ye-C)/K, d=D/K,
i=R/K) %>%
select(countrycode, country, year, N, Y, Ye, yN, yE, yL, yeN, yeE, yeL,
wN, wE, wL, cN, cE, cL, s, ss, h, hs, hd, gamma, r, k, d, i)
summary(p)
## countrycode country year N
## Length:12078 Length:12078 Min. :1954 Min. : 0.0044
## Class :character Class :character 1st Qu.:1970 1st Qu.: 1.5444
## Mode :character Mode :character Median :1986 Median : 6.0838
## Mean :1986 Mean : 31.0420
## 3rd Qu.:2003 3rd Qu.: 19.8403
## Max. :2019 Max. :1433.7837
## NA's :1918
## Y Ye yN yE
## Min. : 28 Min. : 20 Min. : 214.4 Min. : 612.2
## 1st Qu.: 7152 1st Qu.: 6790 1st Qu.: 2608.0 1st Qu.: 7970.4
## Median : 30951 Median : 30329 Median : 6809.4 Median : 21439.5
## Mean : 311619 Mean : 309391 Mean : 14306.7 Mean : 33754.3
## 3rd Qu.: 161706 3rd Qu.: 159017 3rd Qu.: 17082.3 3rd Qu.: 45193.3
## Max. :20596100 Max. :20862690 Max. :444511.3 Max. :779520.9
## NA's :1918 NA's :1918 NA's :1918 NA's :2772
## yL yeN yeE yeL
## Min. : 0.767 Min. : 244.6 Min. : 612.9 Min. : 0.725
## 1st Qu.: 9.253 1st Qu.: 2494.7 1st Qu.: 7730.9 1st Qu.: 9.038
## Median : 19.585 Median : 6563.1 Median : 20972.6 Median : 19.433
## Mean : 24.204 Mean : 13452.0 Mean : 32592.0 Mean : 24.371
## 3rd Qu.: 34.983 3rd Qu.: 16998.4 3rd Qu.: 44368.5 3rd Qu.: 35.979
## Max. :129.034 Max. :283540.2 Max. :652301.0 Max. :124.785
## NA's :8696 NA's :1918 NA's :2772 NA's :8696
## wN wE wL cN
## Min. : 107.6 Min. : 262.4 Min. : 0.884 Min. : 183.2
## 1st Qu.: 1717.8 1st Qu.: 5277.8 1st Qu.: 5.796 1st Qu.: 1680.9
## Median : 4252.1 Median : 12261.1 Median :11.907 Median : 3967.7
## Mean : 7960.2 Mean : 18497.5 Mean :14.712 Mean : 7086.9
## 3rd Qu.: 10953.0 3rd Qu.: 26276.5 3rd Qu.:21.467 3rd Qu.: 9613.5
## Max. :230616.1 Max. :404421.8 Max. :64.156 Max. :61033.9
## NA's :4735 NA's :4735 NA's :8923 NA's :2167
## cE cL s ss
## Min. : 475.9 Min. : 0.569 Min. : 0.107 Min. : 0.0007
## 1st Qu.: 5128.1 1st Qu.: 5.604 1st Qu.: 0.619 1st Qu.: 0.3486
## Median : 12576.7 Median :11.639 Median : 0.862 Median : 0.5859
## Mean : 17474.9 Mean :13.807 Mean : 1.038 Mean : 0.8093
## 3rd Qu.: 25250.2 3rd Qu.:20.286 3rd Qu.: 1.244 3rd Qu.: 0.8816
## Max. :111525.5 Max. :52.521 Max. :10.154 Max. :37.5005
## NA's :2957 NA's :8701 NA's :4735 NA's :2167
## h hs hd gamma
## Min. :0.000 Min. : 385 Min. :0.015 Min. :0.0158
## 1st Qu.:0.000 1st Qu.: 27961 1st Qu.:0.234 1st Qu.:0.1628
## Median :0.000 Median : 93260 Median :0.345 Median :0.2415
## Mean :0.000 Mean : 167697 Mean :0.422 Mean :0.3514
## 3rd Qu.:0.000 3rd Qu.: 248373 3rd Qu.:0.489 3rd Qu.:0.3723
## Max. :0.004 Max. :4036140 Max. :3.388 Max. :5.1759
## NA's :4983 NA's :2822 NA's :4745 NA's :2003
## r k d i
## Min. :0.007 Min. :0.0003 Min. :0.0125 Min. :0.010
## 1st Qu.:0.062 1st Qu.:0.0529 1st Qu.:0.0337 1st Qu.:0.062
## Median :0.103 Median :0.0837 Median :0.0395 Median :0.101
## Mean :0.149 Mean :0.1120 Mean :0.0423 Mean :0.123
## 3rd Qu.:0.163 3rd Qu.:0.1262 3rd Qu.:0.0486 3rd Qu.:0.158
## Max. :2.588 Max. :1.3943 Max. :0.1000 Max. :1.096
## NA's :4745 NA's :2248 NA's :2003 NA's :4745
The following plots show the time paths of unweighted means and medians of the structural parameters. The color-shaded ribbons show 2-standard error “confidence intervals” around the corresponding annual unweighted means. This provides information about the international (one country is one unit of observation) distribution of these structural parameters and their evolution over time.
p1 <- p %>% filter(year> 1969)
p2 <- p%>% filter(year> 1979)
ggplot(p, aes(x=year)) +
ggtitle("Per-capita",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=yN), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightpink", alpha=.5) +
stat_summary(aes(y=wN), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightblue", alpha=.5) +
stat_summary(aes(y=yN, color="Output"), geom="path", fun=mean) +
stat_summary(aes(y=wN, color="Wage"), geom="path", fun=mean) +
stat_summary(aes(y=yN, color="Output"), geom="path", fun=median, linetype="dashed") +
stat_summary(aes(y=wN, color="Wage"), geom="path", fun=median, linetype="dashed") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
## Warning: Removed 1918 rows containing non-finite values (stat_summary).
## Warning: Removed 4735 rows containing non-finite values (stat_summary).
## Warning: Removed 1918 rows containing non-finite values (stat_summary).
## Warning: Removed 4735 rows containing non-finite values (stat_summary).
## Warning: Removed 1918 rows containing non-finite values (stat_summary).
## Warning: Removed 4735 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Per-capita",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=yeN), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightblue", alpha=.5) +
stat_summary(aes(y=cN), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightpink", alpha=.5) +
stat_summary(aes(y=yeN, color="Expenditure"), geom="path", fun=mean) +
stat_summary(aes(y=cN, color="Consumption"), geom="path", fun=mean) +
stat_summary(aes(y=yeN, color="Expenditure"), geom="path", fun=median, linetype="dashed") +
stat_summary(aes(y=cN, color="Consumption"), geom="path", fun=median, linetype="dashed") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
## Warning: Removed 1918 rows containing non-finite values (stat_summary).
## Warning: Removed 2167 rows containing non-finite values (stat_summary).
## Warning: Removed 1918 rows containing non-finite values (stat_summary).
## Warning: Removed 2167 rows containing non-finite values (stat_summary).
## Warning: Removed 1918 rows containing non-finite values (stat_summary).
## Warning: Removed 2167 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Per-worker",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=yE), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightpink", alpha=.5) +
stat_summary(aes(y=wE), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightblue", alpha=.5) +
stat_summary(aes(y=yE, color="Output"), geom="path", fun=mean) +
stat_summary(aes(y=wE, color="Wage"), geom="path", fun=mean) +
stat_summary(aes(y=yE, color="Output"), geom="path", fun=median, linetype="dashed") +
stat_summary(aes(y=wE, color="Wage"), geom="path", fun=median, linetype="dashed") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
## Warning: Removed 2772 rows containing non-finite values (stat_summary).
## Warning: Removed 4735 rows containing non-finite values (stat_summary).
## Warning: Removed 2772 rows containing non-finite values (stat_summary).
## Warning: Removed 4735 rows containing non-finite values (stat_summary).
## Warning: Removed 2772 rows containing non-finite values (stat_summary).
## Warning: Removed 4735 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Per-worker",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=yeE), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightblue", alpha=.5) +
stat_summary(aes(y=cE), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightpink", alpha=.5) +
stat_summary(aes(y=yeE, color="Expenditure"), geom="path", fun=mean) +
stat_summary(aes(y=cE, color="Consumption"), geom="path", fun=mean) +
stat_summary(aes(y=yeE, color="Expenditure"), geom="path", fun=median, linetype="dashed") +
stat_summary(aes(y=cE, color="Consumption"), geom="path", fun=median, linetype="dashed") +
labs(color=NULL) +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
theme_classic()
## Warning: Removed 2772 rows containing non-finite values (stat_summary).
## Warning: Removed 2957 rows containing non-finite values (stat_summary).
## Warning: Removed 2772 rows containing non-finite values (stat_summary).
## Warning: Removed 2957 rows containing non-finite values (stat_summary).
## Warning: Removed 2772 rows containing non-finite values (stat_summary).
## Warning: Removed 2957 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Per-hour",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=yL), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightpink", alpha=.5) +
stat_summary(aes(y=wL), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightblue", alpha=.5) +
stat_summary(aes(y=yL, color="Output"), geom="path", fun=mean) +
stat_summary(aes(y=wL, color="Wage"), geom="path", fun=mean) +
stat_summary(aes(y=yL, color="Output"), geom="path", fun=median, linetype="dashed") +
stat_summary(aes(y=wL, color="Wage"), geom="path", fun=median, linetype="dashed") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
## Warning: Removed 8696 rows containing non-finite values (stat_summary).
## Warning: Removed 8923 rows containing non-finite values (stat_summary).
## Warning: Removed 8696 rows containing non-finite values (stat_summary).
## Warning: Removed 8923 rows containing non-finite values (stat_summary).
## Warning: Removed 8696 rows containing non-finite values (stat_summary).
## Warning: Removed 8923 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Per-hour",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=yeL), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightblue", alpha=.5) +
stat_summary(aes(y=cL), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightpink", alpha=.5) +
stat_summary(aes(y=yeL, color="Expenditure"), geom="path", fun=mean) +
stat_summary(aes(y=cL, color="Consumption"), geom="path", fun=mean) +
stat_summary(aes(y=yeL, color="Expenditure"), geom="path", fun=median, linetype="dashed") +
stat_summary(aes(y=cL, color="Consumption"), geom="path", fun=median, linetype="dashed") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
## Warning: Removed 8696 rows containing non-finite values (stat_summary).
## Warning: Removed 8701 rows containing non-finite values (stat_summary).
## Warning: Removed 8696 rows containing non-finite values (stat_summary).
## Warning: Removed 8701 rows containing non-finite values (stat_summary).
## Warning: Removed 8696 rows containing non-finite values (stat_summary).
## Warning: Removed 8701 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Ff capital composition",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=h), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightgray", alpha=.5) +
stat_summary(aes(y=h), geom="path", fun=mean) +
stat_summary(aes(y=h), geom="path", fun=median, linetype="dashed") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
theme_classic()
## Warning: Removed 4983 rows containing non-finite values (stat_summary).
## Warning: Removed 4983 rows containing non-finite values (stat_summary).
## Warning: Removed 4983 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Capital composition",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=hs), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightgray", alpha=.5) +
stat_summary(aes(y=hs), geom="path", fun=mean) +
stat_summary(aes(y=hs), geom="path", fun=median, linetype="dashed") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
theme_classic()
## Warning: Removed 2822 rows containing non-finite values (stat_summary).
## Warning: Removed 2822 rows containing non-finite values (stat_summary).
## Warning: Removed 2822 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Delta-capital composition",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=hd), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightgray", alpha=.5) +
stat_summary(aes(y=hd), geom="path", fun=mean) +
stat_summary(aes(y=hd), geom="path", fun=median, linetype="dashed") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
theme_classic()
## Warning: Removed 4745 rows containing non-finite values (stat_summary).
## Warning: Removed 4745 rows containing non-finite values (stat_summary).
## Warning: Removed 4745 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Output-capital ratio",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=gamma), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightgray", alpha=.5) +
stat_summary(aes(y=gamma), geom="path", fun=mean) +
stat_summary(aes(y=gamma), geom="path", fun=median, linetype="dashed") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
theme_classic()
## Warning: Removed 2003 rows containing non-finite values (stat_summary).
## Warning: Removed 2003 rows containing non-finite values (stat_summary).
## Warning: Removed 2003 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Depreciation rate",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=d), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightgray", alpha=.5) +
stat_summary(aes(y=d), geom="path", fun=mean) +
stat_summary(aes(y=d), geom="path", fun=median, linetype="dashed") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
theme_classic()
## Warning: Removed 2003 rows containing non-finite values (stat_summary).
## Warning: Removed 2003 rows containing non-finite values (stat_summary).
## Warning: Removed 2003 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Capital performance: Mean (w/2SE CI's)",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=r), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightgreen", alpha=.5) +
stat_summary(aes(y=k), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightpink", alpha=.5) +
stat_summary(aes(y=i), geom="ribbon", fun.data=mean_se,
fun.args = list(mult = 2), fill="lightblue", alpha=.5) +
stat_summary(aes(y=r, color="Profit rate"), geom="path", fun=mean) +
stat_summary(aes(y=k, color="Accum rate"), geom="path", fun=mean) +
stat_summary(aes(y=i, color="RIR rate"), geom="path", fun=mean) +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
## Warning: Removed 4745 rows containing non-finite values (stat_summary).
## Warning: Removed 2248 rows containing non-finite values (stat_summary).
## Warning: Removed 4745 rows containing non-finite values (stat_summary).
## Warning: Removed 4745 rows containing non-finite values (stat_summary).
## Warning: Removed 2248 rows containing non-finite values (stat_summary).
## Warning: Removed 4745 rows containing non-finite values (stat_summary).
ggplot(p, aes(x=year)) +
ggtitle("Capital performance: Median",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
stat_summary(aes(y=r, color="Profit rate"), geom="path", fun=median) +
stat_summary(aes(y=k, color="Accum rate"), geom="path", fun=median) +
stat_summary(aes(y=i, color="RIR rate"), geom="path", fun=median) +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
## Warning: Removed 4745 rows containing non-finite values (stat_summary).
## Warning: Removed 2248 rows containing non-finite values (stat_summary).
## Warning: Removed 4745 rows containing non-finite values (stat_summary).
As per Marx11, since the profit rate is a trans-form of the exploitation rate, the profit rate can be decomposed into the rate of exploitation (alternatively, the profit share) and competition effect as captured by either the capital composition (alternatively, the output-capital ratio). One component can be viewed as the result of the “pure” class struggle and the other as the result of socially-conditioned “technical” choices. For more on this, see Huato12. The following scatter plot helps us to visualize this decomposition of the profit rate.
gr <- c(rep("Annual unweighted means", 66))
p_bar <- p %>% group_by(year) %>%
summarize(s_bar=mean(s, na.rm=T),
r_bar=mean(r, na.rm=T),
ss_bar=mean(ss, na.rm=T),
k_bar=mean(r, na.rm=T)) %>%
add_column(gr) %>%
select(gr, year, s_bar, r_bar, ss_bar, k_bar)
## `summarise()` ungrouping output (override with `.groups` argument)
glimpse(p_bar)
## Rows: 66
## Columns: 6
## $ gr <chr> "Annual unweighted means", "Annual unweighted means", "Annual …
## $ year <dbl> 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 19…
## $ s_bar <dbl> 0.7590819, 0.8097321, 0.8094281, 0.8095307, 0.8100154, 0.81681…
## $ r_bar <dbl> 0.1260910, 0.1251681, 0.1249579, 0.1256968, 0.1254810, 0.14111…
## $ ss_bar <dbl> 0.5480524, 0.5477983, 0.5600972, 0.5426347, 0.5612114, 0.59312…
## $ k_bar <dbl> 0.1260910, 0.1251681, 0.1249579, 0.1256968, 0.1254810, 0.14111…
summary(p_bar)
## gr year s_bar r_bar
## Length:66 Min. :1954 Min. :0.7591 Min. :0.1250
## Class :character 1st Qu.:1970 1st Qu.:0.9969 1st Qu.:0.1376
## Mode :character Median :1986 Median :1.0323 Median :0.1478
## Mean :1986 Mean :1.0138 Mean :0.1491
## 3rd Qu.:2003 3rd Qu.:1.0958 3rd Qu.:0.1588
## Max. :2019 Max. :1.2128 Max. :0.1878
## ss_bar k_bar
## Min. :0.5426 Min. :0.1250
## 1st Qu.:0.6771 1st Qu.:0.1376
## Median :0.8140 Median :0.1478
## Mean :0.7864 Mean :0.1491
## 3rd Qu.:0.8745 3rd Qu.:0.1588
## Max. :1.1315 Max. :0.1878
ggplot(p_bar, aes(x=s_bar, y=r_bar, label=year)) +
ggtitle("Profit rate vs exploitation rate",
subtitle = "Source: PWT 10.0") +
ylab("Profit rate") + xlab("Exploitation rate") +
geom_point(size=.6) +
geom_segment(aes(xend=c(tail(s_bar, n=-1), NA),
yend=c(tail(r_bar, n=-1), NA))) +
geom_text_repel(data =
subset(p_bar, year %in%
c(1955, 1965, 1975, 1985, 1995, 2005, 2015)),
size=3) +
facet_wrap( ~ gr) +
theme_classic()
## Warning: Removed 1 rows containing missing values (geom_segment).
ggplot(p_bar, aes(x=ss_bar, y=k_bar, label=year)) +
ggtitle("Accumulation rate vs exploitation rate[e]",
subtitle = "Source: PWT 10.0") +
ylab("Accumulation rate") + xlab("Exploitation rate[e]") +
geom_point(size=.6) +
geom_segment(aes(xend=c(tail(ss_bar, n=-1), NA),
yend=c(tail(k_bar, n=-1), NA))) +
geom_text_repel(data =
subset(p_bar, year %in%
c(1955, 1965, 1975, 1985, 1995, 2005, 2015)),
size=3) +
facet_wrap( ~ gr) +
theme_classic()
## Warning: Removed 1 rows containing missing values (geom_segment).
These structures are defined globally, by agggregation of
Let a primary variable for a country \(i\) and a year \(t\) be denoted as \(X_{it}\). Then, the global agregate of this primary variable is given by \[X_t \equiv \sum_{i=1}^{183} X_{it},\] where \(t=1971, \dots, 2019\) is the year, \(X\) is the global aggregate of the primary variable, and \(X_i\) is the level of the primary variable in country \(i = 1, \dots, 183\). Now, let a structural parameter \(x \equiv X/Z\) be a ratio of primary variables \(X\) and \(Z\).
Then, the global aggregate of the structural parameter is then defined as \[x_t \equiv \frac{X_t}{Z_t} = \frac{\sum_{i=1}^{183} X_{it}}{\sum_{1=1}^{183}}.\]
The global aggregation of the primary variables offers a structural history of late capitalist society in which each person and each unit of value (2011 USD), regardless of country or year, appear as the basic units of observation.
This R code computes the global aggregates of the structural parameters.
g <- x %>%
group_by(year) %>%
summarise_at(vars(-c(countrycode, country, l, om, c, i, delta)), sum,
na.rm = TRUE)
gp <- g %>%
mutate(yN=Y/N, yE=Y/E, yL=Y/L, yeN=Ye/N, yeE=Ye/E, yeL=Ye/L, wN=W/N,
wE=W/E, wL=W/L, cN=C/N, cE=C/E, cL=C/L, s=(Y-W)/W, ss=(Ye-C)/C,
h=Ks/W, hs=K/E, gamma=Y/K, r=(Y-W)/K, k=(Ye-C)/K, d=D/K, i=R/K,
hd=D/W) %>%
select(year, yN, yE, yL, yeN, yeE, yeL, wN, wE, wL, cN, cE, cL, s, ss,
h, hs, hd, gamma, r, k, d, i)
summary(gp)
## year yN yE yL
## Min. :1954 Min. : 4014 Min. : 9882 Min. : 8.741
## 1st Qu.:1970 1st Qu.: 5833 1st Qu.:15489 1st Qu.:10.562
## Median :1986 Median : 7499 Median :18249 Median :13.567
## Mean :1986 Mean : 8774 Mean :20919 Mean :14.731
## 3rd Qu.:2003 3rd Qu.:10632 3rd Qu.:24588 3rd Qu.:18.367
## Max. :2019 Max. :16572 Max. :37881 Max. :23.386
## yeN yeE yeL wN
## Min. : 3990 Min. : 9822 Min. : 8.687 Min. :2472
## 1st Qu.: 5799 1st Qu.:15398 1st Qu.:10.415 1st Qu.:3425
## Median : 7394 Median :17987 Median :13.573 Median :4226
## Mean : 8708 Mean :20762 Mean :14.625 Mean :4835
## 3rd Qu.:10653 3rd Qu.:24637 3rd Qu.:18.085 3rd Qu.:5822
## Max. :16597 Max. :37939 Max. :23.422 Max. :8656
## wE wL cN cE
## Min. : 6085 Min. : 5.138 Min. :2584 Min. : 6361
## 1st Qu.: 9094 1st Qu.: 6.036 1st Qu.:3417 1st Qu.: 9073
## Median :10372 Median : 7.718 Median :4410 Median :10538
## Mean :11555 Mean : 8.244 Mean :5075 Mean :12115
## 3rd Qu.:13465 3rd Qu.:10.013 3rd Qu.:6285 3rd Qu.:14536
## Max. :19787 Max. :13.732 Max. :9386 Max. :21456
## cL s ss h
## Min. : 5.120 Min. :0.6241 Min. :0.5440 Min. :7.744e-07
## 1st Qu.: 6.128 1st Qu.:0.7026 1st Qu.:0.6696 1st Qu.:1.275e-06
## Median : 8.282 Median :0.7768 Median :0.6973 Median :2.018e-06
## Mean : 8.623 Mean :0.7806 Mean :0.6940 Mean :1.771e-06
## 3rd Qu.:10.622 3rd Qu.:0.8260 3rd Qu.:0.7280 3rd Qu.:2.171e-06
## Max. :13.774 Max. :0.9561 Max. :0.8147 Max. :2.399e-06
## hs hd gamma r
## Min. : 45200 Min. :0.2428 Min. :0.1811 Min. :0.07930
## 1st Qu.: 72023 1st Qu.:0.2803 1st Qu.:0.1934 1st Qu.:0.08477
## Median : 94740 Median :0.3445 Median :0.2124 Median :0.08708
## Mean : 99322 Mean :0.3228 Mean :0.2093 Mean :0.09158
## 3rd Qu.:123298 3rd Qu.:0.3539 3rd Qu.:0.2190 3rd Qu.:0.09044
## Max. :163665 Max. :0.3739 Max. :0.2448 Max. :0.11911
## k d i
## Min. :0.07318 Min. :0.03268 Min. :0.07083
## 1st Qu.:0.07816 1st Qu.:0.03540 1st Qu.:0.07782
## Median :0.08190 Median :0.03685 Median :0.08093
## Mean :0.08499 Mean :0.03770 Mean :0.08967
## 3rd Qu.:0.08809 3rd Qu.:0.03883 3rd Qu.:0.10922
## Max. :0.10765 Max. :0.04521 Max. :0.11930
gp1 <- gp %>% filter(year> 1969)
gp2 <- gp%>% filter(year> 1979)
The following plots show time paths of the global structural parameters:
ggplot(gp, aes(x=year)) +
stat_summary(aes(y = yN, color="Output"), fun=mean, geom="path") +
stat_summary(aes(y = yeN, color="Expenditure"), fun=mean, geom="path") +
ggtitle("Global per-capita",
subtitle = "Source: PWT 10.0") +
ylab("2017 USD") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
ggplot(gp, aes(x=year)) +
stat_summary(aes(y = yE, color="Output"), fun=mean, geom="path") +
stat_summary(aes(y = yeE, color="Expenditure"), fun=mean, geom="path") +
stat_summary(aes(y = wE, color="Wage"), fun=mean, geom="path") +
stat_summary(aes(y = cE, color="Consumption"), fun=mean, geom="path") +
ggtitle("Global per-worker",
subtitle = "Source: PWT 10.0") +
ylab("2017 USD") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
ggplot(gp, aes(x=year)) +
stat_summary(aes(y = yL, color="Output"), fun=mean, geom="path") +
stat_summary(aes(y = yeL, color="Expenditure"), fun=mean, geom="path") +
stat_summary(aes(y = wL, color="Wage"), fun=mean, geom="path") +
stat_summary(aes(y = cL, color="Consumption"), fun=mean, geom="path") +
ggtitle("Global per-hour",
subtitle = "Source: PWT 10.0") +
ylab("2017 USD") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
ggplot(gp2, aes(x=year)) +
stat_summary(aes(y = yL, color="Output"), fun=mean, geom="path") +
stat_summary(aes(y = yeL, color="Expenditure"), fun=mean, geom="path") +
stat_summary(aes(y = wL, color="Wage"), fun=mean, geom="path") +
stat_summary(aes(y = cL, color="Consumption"), fun=mean, geom="path") +
ggtitle("Global per-hour",
subtitle = "Source: PWT 10.0") +
ylab("2017 USD") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
ggplot(gp, aes(x=year)) +
geom_path(aes(y = s, color="Output")) +
geom_path(aes(y = ss, color="Expenditure")) +
ggtitle("Global exploitation rates",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
ggplot(gp, aes(x=year, y=h, group=1)) +
geom_path() + ggtitle("Global ff capital composition",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019, by=5)) +
theme_classic()
ggplot(gp, aes(x=year, y=hs, group=1)) +
geom_path() + ggtitle("Global capital composition",
subtitle = "Source: PWT 10.0") +
ylab("$/worker") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019, by=5)) +
theme_classic()
ggplot(gp, aes(x=year, y=hd, group=1)) +
geom_path() + ggtitle("Global delta-capital composition",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019, by=5)) +
theme_classic()
ggplot(gp, aes(x=year, y=gamma, group=1)) +
geom_path() + ggtitle("Global output-capital ratio",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019, by=5)) +
theme_classic()
ggplot(gp, aes(x=year)) +
stat_summary(aes(y = r, color="Profit rate"), fun=mean, geom="path") +
stat_summary(aes(y = k, color="Accum rate"), fun=mean, geom="path") +
stat_summary(aes(y = i, color="RIR rate"), fun=mean, geom="path") +
ggtitle("Global capital performance",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
labs(color=NULL) +
theme_classic()
The empirical relationship between the global exploitation rates, on the one hand, and the global rates of profit and accumulation, on the other hand, can be displayed in this small sample of scatter plots:
grg <- c(rep("Global aggregates", 66))
gp <- gp %>%
add_column(grg)
glimpse(gp)
## Rows: 66
## Columns: 24
## $ year <dbl> 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 196…
## $ yN <dbl> 4014.296, 4191.145, 4279.514, 4350.333, 4349.656, 4409.473, 435…
## $ yE <dbl> 9881.886, 10345.846, 10554.331, 10735.241, 10639.043, 10795.223…
## $ yL <dbl> 12.294838, 13.030781, 13.351873, 13.736904, 14.054768, 14.70166…
## $ yeN <dbl> 3989.892, 4165.994, 4256.142, 4321.098, 4332.654, 4396.382, 429…
## $ yeE <dbl> 9821.81, 10283.76, 10496.69, 10663.10, 10597.46, 10763.18, 1085…
## $ yeL <dbl> 12.220093, 12.952581, 13.278954, 13.644590, 13.999833, 14.65802…
## $ wN <dbl> 2471.734, 2550.709, 2624.904, 2660.864, 2653.358, 2657.482, 258…
## $ wE <dbl> 6084.601, 6296.426, 6473.657, 6566.166, 6489.981, 6506.019, 652…
## $ wL <dbl> 7.570334, 7.930463, 8.189570, 8.402122, 8.573627, 8.860337, 9.3…
## $ cN <dbl> 2584.046, 2678.839, 2725.922, 2768.130, 2772.728, 2736.682, 268…
## $ cE <dbl> 6361.077, 6612.715, 6722.793, 6830.867, 6781.957, 6699.916, 678…
## $ cL <dbl> 7.914320, 8.328835, 8.504744, 8.740834, 8.959343, 9.124399, 9.6…
## $ s <dbl> 0.6240812, 0.6431299, 0.6303508, 0.6349328, 0.6393025, 0.659266…
## $ ss <dbl> 0.5440484, 0.5551493, 0.5613585, 0.5610170, 0.5625960, 0.606464…
## $ h <dbl> 7.743739e-07, 8.267906e-07, 8.336279e-07, 9.063160e-07, 1.04959…
## $ hs <dbl> 45200.24, 46521.91, 47700.20, 49005.06, 49476.45, 49727.68, 507…
## $ hd <dbl> 0.2427993, 0.2444977, 0.2456115, 0.2507852, 0.2571819, 0.259377…
## $ gamma <dbl> 0.2186246, 0.2223865, 0.2212639, 0.2190639, 0.2150324, 0.217086…
## $ r <dbl> 0.08401029, 0.08704328, 0.08554838, 0.08507436, 0.08385931, 0.0…
## $ k <dbl> 0.07656450, 0.07891000, 0.07911701, 0.07820074, 0.07711753, 0.0…
## $ d <dbl> 0.03268426, 0.03309111, 0.03333329, 0.03360260, 0.03373536, 0.0…
## $ i <dbl> 0.11592392, 0.11930346, 0.11549290, 0.11427800, 0.11357330, 0.1…
## $ grg <chr> "Global aggregates", "Global aggregates", "Global aggregates", …
ggplot(gp, aes(x=s, y=r, label=year)) +
ggtitle("Profit rate vs exploitation rate",
subtitle = "Source: PWT 10.0") +
ylab("Profit rate") + xlab("Exploitation rate") +
geom_point(size=.5) +
geom_segment(aes(xend=c(tail(s, n=-1), NA),
yend=c(tail(r, n=-1), NA))) +
geom_text_repel(data =
subset(gp, year %in%
c(1954, 1959, 1969, 1979, 1989, 1999, 2009, 2019)),
size=3) +
facet_wrap( ~ grg) +
theme_classic()
## Warning: Removed 1 rows containing missing values (geom_segment).
ggplot(gp, aes(x=ss, y=k, label=year)) +
ggtitle("Accumulation rate vs exploitation rate[e]",
subtitle = "Source: PWT 10.0") +
ylab("Accumulation rate") + xlab("Exploitation rate[e]") +
geom_point(size=.5) +
geom_segment(aes(xend=c(tail(ss, n=-1), NA),
yend=c(tail(k, n=-1), NA))) +
geom_text_repel(data =
subset(gp, year %in%
c(1954, 1959, 1969, 1979, 1989, 1999, 2009, 2019)),
size=3) +
facet_wrap( ~ grg) +
theme_classic()
## Warning: Removed 1 rows containing missing values (geom_segment).
Aside from taking account of these structures internationally, i.e. by regarding each country’s legal and political formations as endowed with a modicum of effective sovereignty and self-determination (one country is one unit of observation), also taken into consideration are each country’s:
For country \(i\) and year \(t\), the (net) weighted structural parameter is defined as \[x^Y_{it} \equiv \theta_{it} x_{it},\] \[\theta_{it} \equiv \frac{Y_{it}}{Y_t},\]
where \(\theta\) is the weight variable: \(N\), \(Y\), or \(y_N\).
The analysis seeks to empirically characterize
Scatter plots between structural parameters help to visually recognize potential linkages among the structural parameters; more specifically among
Further empirical analyses of the relationships between structural parameters may deploy a battery of econometric methods, such as VARs, SVARs, VECM, and SVECM estimations. That is left for future work.
Subsetting of the data set:
Ywp <- p %>%
group_by(year) %>%
mutate(w=Y/sum(Y, na.rm = TRUE))
Ywp <- Ywp %>%
mutate(yN=yN*w, yE=yE*w, yL=yL*w, yeN=yeN*w, yeE=yeE*w, yeL=yeL*w, wN=wN*w,
wE=wE*w, wL=wL*w, cN=cN*w, cE=cE*w, cL=cL*w, s=s*w, ss=ss*w, h=h*w,
hs*w, hd*w, gamma=gamma*w, r=r*w, k=k*w, i=i*w) %>%
summarise_at(vars(yN, yE, yL, yeN, yeE, yeL, wN, wE, wL, cN, cE, cL, s, ss,
h, hs, hd, gamma, r, k, i), sum, na.rm = TRUE)
glimpse(Ywp)
## Rows: 66
## Columns: 22
## $ year <dbl> 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 196…
## $ yN <dbl> 10172.58, 10674.65, 10785.10, 10862.78, 10618.39, 11150.23, 111…
## $ yE <dbl> 24905.97, 25951.15, 26058.25, 26477.01, 26531.95, 27853.02, 282…
## $ yL <dbl> 11.62351, 12.06468, 12.17056, 12.46528, 12.61862, 13.18759, 13.…
## $ yeN <dbl> 10067.75, 10569.52, 10683.64, 10753.69, 10548.09, 11085.16, 110…
## $ yeE <dbl> 24656.13, 25701.10, 25816.16, 26212.71, 26340.46, 27669.44, 276…
## $ yeL <dbl> 11.50428, 11.95019, 12.06122, 12.34823, 12.54345, 13.11822, 12.…
## $ wN <dbl> 6416.298, 6663.320, 6824.626, 6851.878, 6671.021, 6961.681, 694…
## $ wE <dbl> 15674.05, 16146.56, 16429.88, 16634.43, 16604.58, 17317.78, 172…
## $ wL <dbl> 7.359967, 7.566384, 7.744341, 7.911294, 7.982079, 8.291087, 8.2…
## $ cN <dbl> 6391.319, 6670.016, 6701.831, 6735.842, 6632.581, 6816.278, 682…
## $ cE <dbl> 15699.36, 16283.99, 16265.62, 16508.10, 16661.12, 17127.19, 171…
## $ cL <dbl> 7.303152, 7.545419, 7.574260, 7.744930, 7.914107, 8.107155, 8.0…
## $ s <dbl> 0.6184572, 0.6367696, 0.6249025, 0.6316518, 0.6373557, 0.636226…
## $ ss <dbl> 0.5843770, 0.5895903, 0.5956326, 0.5961387, 0.6001224, 0.629262…
## $ h <dbl> 8.268754e-07, 8.771859e-07, 8.908209e-07, 9.675587e-07, 1.10300…
## $ hs <dbl> 4923476, 5344730, 5514327, 5714851, 5906716, 6100656, 7121843, …
## $ hd <dbl> 19.16178, 23.46514, 22.89060, 22.61815, 23.04961, 22.63776, 27.…
## $ gamma <dbl> 0.2701656, 0.2720713, 0.2706447, 0.2677607, 0.2664858, 0.269821…
## $ r <dbl> 0.09764459, 0.10010592, 0.09857847, 0.09914696, 0.09960384, 0.0…
## $ k <dbl> 0.09421089, 0.09579535, 0.09619113, 0.09498550, 0.09559147, 0.0…
## $ i <dbl> 0.12259662, 0.12506269, 0.12050681, 0.12045835, 0.12164961, 0.1…
The time path of the Y-weighted mean parameters:
ggplot(Ywp, aes(x=year)) +
geom_path(aes(y = yN), color = "red") +
geom_path(aes(y = yeN), color="blue") +
ggtitle("Y-weighted int'l per-capita output and spending",
subtitle = "Source: PWT 10.0") +
ylab("2017 USD") + xlab("Year") +
scale_color_manual(values = c("blue","red")) +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
theme_classic()
ggplot(Ywp, aes(x=year)) +
geom_path(aes(y = yE), color = "red") +
geom_path(aes(y = yeE), color="blue") +
ggtitle("Y-weighted int'l per-worker output and spending",
subtitle = "Source: PWT 10.0") +
ylab("2017 USD") + xlab("Year") +
scale_color_manual(values = c("blue","red")) +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
theme_classic()
ggplot(Ywp, aes(x=year)) +
geom_path(aes(y = s), color = "red") +
geom_path(aes(y = ss), color="blue") +
ggtitle("Y-weighted int'l exploitation rates: output and spending",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
scale_color_manual(values = c("blue","red")) +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
theme_classic()
ggplot(Ywp, aes(x=year, y=h, group=1)) +
geom_path() + ggtitle("Y-weighted int'l ff capital composition",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019, by=5)) +
theme_classic()
ggplot(Ywp, aes(x=year, y=hs, group=1)) +
geom_path() + ggtitle("Y-weighted int'l capital composition",
subtitle = "Source: PWT 10.0") +
ylab("$/worker") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019, by=5)) +
theme_classic()
ggplot(Ywp, aes(x=year, y=hd, group=1)) +
geom_path() + ggtitle("Y-weighted int'l delta-capital composition",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019, by=5)) +
theme_classic()
ggplot(Ywp, aes(x=year, y=gamma, group=1)) +
geom_path() + ggtitle("Y-weighted int'l output-capital ratio",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
scale_x_continuous(breaks= seq(1954,2019, by=5)) +
theme_classic()
ggplot(Ywp, aes(x=year)) +
geom_path(aes(y = r), color = "blue") +
geom_path(aes(y = k), color="red") +
geom_path(aes(y = i), color="purple") +
ggtitle("Y-weighted int'l profit, accumul, and RIR rates",
subtitle = "Source: PWT 10.0") +
ylab(" ") + xlab("Year") +
scale_color_manual(values = c("blue","red", "purple")) +
scale_x_continuous(breaks= seq(1954,2019,by=5)) +
theme_classic()
plot(Ywp$r ~ Ywp$s, type="l",
main="Y-weighted int'l profit rate vs exploitation rate",
sub="Source: PWT 10.0",
xlab="Exploitation rate",
ylab="Profit rate")
plot(Ywp$k ~ Ywp$ss, type="l",
main="Y-weighted int'l accum rate vs exploit rate[e]",
sub="Source: PWT 10.0",
xlab="Exploitation rate[e]",
ylab="Accumulation rate")
plot(Ywp$i ~ Ywp$s, type="l",
main="Y-weighted int'l RIR rate vs exploitation rate",
sub="Source: PWT 10.0",
xlab="Exploitation rate",
ylab="RIR rate")
The scatter plots here.
The N-weighted means follow. This is the perspective that highlights the challenge and potential of a global popular democracy: socialism.
Nwp <- p %>%
group_by(year) %>%
mutate(w=N/sum(N, na.rm = TRUE))
Nwp <- Nwp %>%
mutate(yN=yN*w, yE=yE*w, yL=yL*w, yeN=yeN*w, yeE=yeE*w, yeL=yeL*w, wN=wN*w,
wE=wE*w, wL=wL*w, cN=cN*w, cE=cE*w, cL=cL*w, s=s*w, ss=ss*w, h=h*w,
hs*w, hd*w, gamma=gamma*w, r=r*w, k=k*w, i=i*w) %>%
summarise_at(vars(yN, yE, yL, yeN, yeE, yeL, wN, wE, wL, cN, cE, cL, s, ss,
h, hs, hd, gamma, r, k, i), sum, na.rm = TRUE)
glimpse(Nwp)
## Rows: 66
## Columns: 22
## $ year <dbl> 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 196…
## $ yN <dbl> 4014.296, 4191.145, 4279.514, 4350.333, 4349.656, 4409.473, 435…
## $ yE <dbl> 9853.628, 10268.531, 10457.974, 10701.678, 10858.529, 11026.865…
## $ yL <dbl> 3.764165, 3.871344, 3.945270, 4.069616, 4.175563, 4.221763, 4.0…
## $ yeN <dbl> 3989.892, 4165.994, 4256.142, 4321.098, 4332.654, 4396.382, 429…
## $ yeE <dbl> 9796.199, 10206.234, 10396.760, 10622.414, 10797.958, 10974.191…
## $ yeL <dbl> 3.741494, 3.851775, 3.927681, 4.049556, 4.168381, 4.218417, 4.0…
## $ wN <dbl> 2471.734, 2550.709, 2624.904, 2660.864, 2653.358, 2657.482, 258…
## $ wE <dbl> 6026.319, 6193.549, 6350.992, 6477.980, 6557.849, 6575.620, 642…
## $ wL <dbl> 2.340608, 2.389420, 2.460028, 2.532028, 2.591077, 2.607520, 2.5…
## $ cN <dbl> 2584.046, 2678.839, 2725.922, 2768.130, 2772.728, 2736.682, 268…
## $ cE <dbl> 6389.401, 6621.480, 6717.087, 6872.436, 6980.089, 6905.373, 679…
## $ cL <dbl> 2.392250, 2.449400, 2.483449, 2.558918, 2.640505, 2.621790, 2.5…
## $ s <dbl> 0.6050154, 0.6232717, 0.6210853, 0.6221928, 0.6235734, 0.611612…
## $ ss <dbl> 0.5119976, 0.5126219, 0.5191156, 0.5219123, 0.5311537, 0.542051…
## $ h <dbl> 7.106580e-07, 7.962973e-07, 8.257974e-07, 8.945842e-07, 1.14902…
## $ hs <dbl> 4923476, 5344730, 5514327, 5714851, 5906716, 6100656, 7121843, …
## $ hd <dbl> 19.16178, 23.46514, 22.89060, 22.61815, 23.04961, 22.63776, 27.…
## $ gamma <dbl> 0.3703508, 0.3649513, 0.3673498, 0.3599820, 0.3691598, 0.368953…
## $ r <dbl> 0.1217955, 0.1221156, 0.1235053, 0.1222840, 0.1268876, 0.120641…
## $ k <dbl> 0.10808898, 0.10857749, 0.11083094, 0.10912458, 0.11467623, 0.1…
## $ i <dbl> 0.16077170, 0.15866404, 0.15805828, 0.15452526, 0.15395390, 0.1…
Huato, Julio. 2020a. “The Deeper Structures of Late Global Capitalism: Accounting Framework for Aggregate Data Analysis.” Unpublished Manuscript.
———. 2020b. “The Deeper Structures of Late Global Capitalism: Accounting Framework for Input-Output Data Analysis.” Unpublished Manuscript.
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. 1857. Grundrisse: Outlines of the Critique of Political Economy.
———. 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.
Marx (2010), p. 263.↩︎
Lenin (1917b), pp. 272-3.↩︎
Lenin (1917a), p. 45.↩︎
Lenin (1921), p. 96-7.↩︎
Particularly, Marx (1867).↩︎
The qualitative claim that modern society is capitalist, in the sense that it is ruled by capital (“self-expanding value”), that its fundamental dynamics is dictated by the inexhaustible need of capital to self expand, is so egregious that it is taken as axiomatic here. However, strictly speaking, if the concrete structures of late global capitalist society are not somehow quantifiable, then they are not qualifiable either.↩︎
“Individuals producing in a society — hence the socially determined production by individuals is of course the point of departure.” Marx (1857), p. 17. Usually, Marxist who quote this passage emphasize the “in society” clause. But at least of equal note is the active noun “individuals” used by Marx twice!↩︎
In dealing with accounting categories and missing values, this study presumes that capital, in pursuit of self expansion, tends to measure what matters to it. Clearly, what matters to capital is not necessarily what matters to working people or humans in general. But this study is primarily about characterizing global social structures and dynamics under the rule of capital.↩︎
Note that \(l\) is the average per-worker hours worked.↩︎
Note that \(\omega\) is the labor share of total income and \(c\) is the consumption share of total expenditure.↩︎
Marx (1894)↩︎