{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
" \n",
"\n",
"## **5. Pre-Industrial Economies** \n",
"### **5.1. The Solow-Malthus Model** \n",
"\n",
"Two major changes to the Solow model are needed in order to make it useful for making sense of the pre-industrial past. The first is to make labor efficiency depend on the scarcity of resources. The second is to make the rate of population and labor force growth depend on the economy's prosperity. We call the changed model that results from these changes the \"Solow-Malthus\" model.\n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### **5.1.1. Population, Resource Scarcity, and the Efficiency of Labor** \n",
"\n",
"Thus we first need to make efficiency of labor a function of available natural resources per worker. We do this by setting the rate of efficiency of labor growth $ g $ equal to the difference between the rate $ h $ at which economically useful ideas are generated, and the rate of population and labor force growth $ n $ divided by an effect-of-resource scarcity parameter $ \\gamma $, because a higher population makes natural resources per capita increasingly scarce. Therefore:\n",
"\n",
">(5.1) $ \\frac{dE/dt}{E} = \\frac{d\\ln(E)}{dt} = g = h - \\frac{n}{\\gamma} $\n",
"\n",
"Thus:\n",
"\n",
">(5.2) $ \\frac{d}{dt} \\left(\\frac{Y}{L}\\right)^* = 0 $ whenever $ h - \\frac{n}{\\gamma} = 0 $\n",
"\n",
">(5.3) $ n^{*mal} = \\gamma h $ \n",
"\n",
"is the population growth rate at which $ \\frac{d}{dt} \\left(\\frac{Y}{L}\\right)^* = 0 $\n",
"\n",
"When population is growing at the rate $ n^{*mal} $, the efficiency of labor—and thus the steady-state growth-path level of production per worker $ Y/L $—is constant. This captures the idea that even though human technology was advancing over the ten millennia before the Industrial Revolution, living standards were not because the potential benefits from technology and organization for productivity were offset by the productivity-diminishing effects of smaller farm sizes and more costly other natural resources to feed and provide for the growing population. \n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### **5.1.2. Determinants of Population and Labor Force Growth** \n",
"\n",
"We also need to make the rate of growth of the population and labor force depend on the level of prosperity $ y = Y/L $; on the \"subsistence\" standard of living for necessities $y^{sub} $; and also on the fraction $ 1/\\phi $ of production that is devoted to necessities, not conveniences and luxuries, and thus enters into reproductive and survival fitness. The higher the resources devoted to fueling reproductive and survival fitness, the faster will be the rate of population growth:\n",
"\n",
">(5.4) $ \\frac{dL/dt}{L} = \\frac{d\\ln(L)}{dt} = n = \\beta \\left( \\frac{y}{\\phi y^{sub}}-1 \\right) $\n",
"\n",
"Then for population to be growing at its Malthusian rate:\n",
"\n",
">(5.5) $ \\gamma h = \\beta \\left(\\frac{1}{\\phi}\\right) \\left( \\frac{y}{y^{sub}}- \\phi \\right) $\n",
"\n",
">(5.6) $ y^{*mal} = \\phi y^{sub} \\left( 1 + \\frac{ n^{*mal}}{\\beta}\\right) = \\phi y^{sub} \\left( 1 + \\frac{ \\gamma h}{\\beta}\\right) $\n",
"\n",
"Note that (5.4) only holds for poor populations. When populations grow rich and literate enough—and when women acquire enough social power—human societies undergo the demographic transition: women limit their pregnancies to the number of children they desire, confident that they will pretty much all survive to outlive them. Beyond a certain income level, equation (5.4) no longer holds. But it did hold up until well after the start of the Industrial Revolution.\n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### **5.1.3. The Full Malthusian Equilibrium** \n",
"\n",
"Then with (5.1) and (5.4) added to our Solow growth model to turn it into the Solow-Malthus model, we can calculate the full Malthusian equilibrium for a pre-industrial economy. We can determine the log level $ E $ of the efficiency of labor:\n",
"\n",
">(5.7) $ \\ln(E) = \\ln(H) - \\frac{\\ln(L)}{\\gamma} $\n",
"\n",
"Then since:\n",
"\n",
">(5.8) $ y^{*mal} = \\left( \\frac{s}{\\gamma h +\\delta} \\right)^\\theta E $\n",
"\n",
">(5.9) $ \\ln(\\phi) + \\ln\\left( y^{sub} \\right) + \\ln\\left(1 + \\frac{\\gamma h}{\\beta} \\right) = \\theta \\ln(s) - \\theta \\ln(\\gamma h +\\delta) + \\ln(E) $\n",
"\n",
"The population and labor force in the full Malthusian equilibrium will be:\n",
"\n",
">(5.10) $ \\ln(L_t^{*mal}) = \\gamma \\left[ \\ln(H_t) - \\ln( y^{sub}) \\right] + \\gamma \\theta \\left( \\ln(s) - \\ln(\\delta) \\right) - \\gamma \\ln(\\phi) + \\left( - \\gamma \\theta \\ln(1 + \\gamma h/\\delta) -\\gamma ln\\left(1 + \\frac{\\gamma h}{\\beta} \\right) \\right) $"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or:\n",
"\n",
">(5.11) $ L_t^{*mal} = \\left[ \\left( \\frac{H_t}{y^{sub}} \\right) \\left( \\frac{s}{\\delta} \\right)^\\theta \\left( \\frac{1}{\\phi} \\right) \\left[ \\frac{1}{(1+\\gamma h/\\delta)^\\theta} \\frac{1}{(1+\\gamma h/\\beta)} \\right] \\right]^\\gamma $ "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" \n",
"\n",
"### **5.2. Interpretation and Analysis** \n",
"\n",
"#### **5.2.1. Understanding the Malthusian Equilibrium** \n",
"\n",
"Thus to analyze the pre-industrial Malthusian economy, at least in its equilibrium configuration:\n",
"\n",
"* Start with the rate $ h $ at which new economically-useful ideas are being generated and with the responsiveness $ \\beta $ of population growth to increased prosperity.\n",
"\n",
"* From those derive the Malthusian rate of population growth: $ n^{*mal} = \\gamma h $\n",
"\n",
"* Then the Malthusian standard of living is: $ y^{*mal} = \\phi y^{sub} \\left( 1 + \\frac{ \\gamma h}{\\beta}\\right) $\n",
"\n",
"* And the Malthusian population is:$ L_t^{*mal} = \\left[ \\left( \\frac{H_t}{y^{sub}} \\right) \\left( \\frac{s}{\\delta} \\right)^\\theta \\left( \\frac{1}{\\phi} \\right) \\left[ \\frac{1}{(1+\\gamma h/\\delta)^\\theta} \\frac{1}{(1+\\gamma h/\\beta)} \\right] \\right]^\\gamma $ \n",
"\n",
"Thus at any date t, the Malthusian-equilibrium population is:\n",
"\n",
"1. the current level $ H_t $ of the valuable ideas stock divided by the (sociologically determined, by, for example western European delayed female marriage patterns, or lineage-family control of reproduction by clan heads) Malthusian-subsistence income level $ y^{sub} $ consistent with a stable population on average, times\n",
"\n",
"2. the ratio between the savings-investment rate $ s $ and the depreciation rate $ \\delta $, raised to the parameter $ \\theta $ which governs how much an increase in the capital-output ratio raises income—with a higher $ \\theta $ the rule of law, imperial peace, and a culture of thrift and invetment matter more, and can generate \"efflorescences\"—times\n",
"\n",
"3. one over the conveniences-and-luxuries parameter $ \\phi $—it drives a wedge between prosperity and subsistence as spending is diverted categories that do not affect reproduction, such as middle-class luxuries, upper-class luxuries, but also the \"luxury\" of having an upper class, and the additional conveniences of living in cities and having trade networks that can spread plagues—times\n",
"\n",
"4. two nuisance terms near zero, which depend on how much the level of population must fall below the true subsistence level at which population growth averages zero to generate the (small) average population growth rate that produces growing resource scarcity that offsets the (small) rate of growth of useful ideas. all this\n",
"\n",
"5. all raised to the power $ \\gamma $ that describes how much more important ideas are than resources in generating human income and production.\n",
"\n",
"(1) is the level of the stock of _useful ideas_ relative to the requirements for subsistence. (2) depends on how the rule of law and the rewards to thrift and entrepeneurship drive savings and investment, and thus the divisio of labor. (3) depends on how society diverts itself from nutrition and related activities that aim at boosting reproductive fitness and, instead, devotes itself to conveniences and luxuries—including the \"luxury\" of having an upper class, and all the conveniences of urban life. (4) are constant, and are small. And (5) governs how productive potential is translated into resource scarcity-generating population under Malthusian conditions.\n",
"\n",
"And recall the full Malthusian equilibrium standard of living:\n",
"\n",
">(5.12) $ y^{*mal} = \\phi y^{sub} \\left( 1 + \\frac{ \\gamma h}{\\beta}\\right) $\n",
"\n",
"The level of income is:\n",
"\n",
"1. The luxuries-and-conveniences parameter $ \\phi $, times\n",
"2. The level of subsistence $ y^{sub} $, times\n",
"3. The (small and constant) nuisance parameter $ 1 + \\gamma h/\\beta $ needed to generate average population growth $ n^{*mal} = \\gamma h $.\n",
"\n",
" \n",
"\n",
"#### **5.2.2 Implications for Understanding Pre-Industrial Civilizations** \n",
"\n",
"Production per worker and thus prosperity are thus primarily determined by (a) true subsistence, (b) the wedge between prosperity and reproductive fitness produced by spending on conveniences and luxuries that do not impact reproductive success, plus a minor contribution by (c) the wedge above subsistence needed to generate population growth consonant with the advance of knowledge and population pressure's generation of resource scarcity.\n",
"\n",
"With this model, we can investigate broader questions about the Malthusian Economy—or at least about the Malthusian model, with respect to its equilibrium:\n",
"\n",
"* How much does the system compromise productivity, both static and dynamic, to generate inequality?\n",
"* How would one rise in this world—or avoid losing status relative to your ancestors?\n",
"* How does the system react to shocks?:\n",
" * like a sudden major plague—like the Antonine plague of 165, the St. Cyprian plague of 249, or the Justinian plague of 542—that suddenly and discontinuously pushes population down sharply...\n",
" * like the rise of a civilization that carries with it norms of property and law and commerce, and thus a rise in the savings-investment rate $ s $...\n",
" * like the rise of an empire that both creates an imperial peace, and thus a rise in the savings-investment rate $ s $, and that also creates a rise in the taste for luxuries $ \\phi $ (and possibly reduces biological subsistence $ y^{sub} $...\n",
" * like the fall of an empire that destroys imperial peace, and thus a fall in the savings-investment rate $ s $, and in the taste for luxuries $ \\phi $ (and possibly raises biological subsistence $ y^{sub} $ as looting barbarians stalk the land...\n",
" * a shift in the rate of ideas growth...\n",
" * a shift in sociology that alters subsistence...\n",
"\n",
"The fall of an empire, for example, would see a sharp decline in the savings-investment share $ s $, as the imperial peace collapsed, a fall in the \"luxuries\" parameter $ \\phi $, as the taste for urbanization and the ability to maintain gross inequality declined, and possibly a rise in $ y^{sub} $, if barbarian invasions and wars significantly raised mortality from violent death.\n",
"\n",
"This model provides an adequate framework—or I at least, think it is an adequate framework—for thinking about the post-Neolithic Revolution pre-Industrial Revolution economy.\n",
"\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### **5.2.3. Dynamics: Simulations** \n",
"\n",
"\n",
"And, with respect to its dynamics, in Python:\n",
"\n",
" delong_classes.malthusian\n",
" \n",
"at:\n",
"\n",
"> \n",
"\n",
" \n",
"we can examine how the simulated model behaves dynamically.\n",
"\n",
">###### A Solow Malthus Model for Ancient Economies will be maintained at: >\n",
">###### Digression on Malthusian Convergence will be maintained at: \n",
"\n",
" \n",
"\n",
"----"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# DEFINING CLASS MALTHUSIAN\n",
"#\n",
"# kept in delong_classes\n",
"# \n",
"# in general use:\n",
"# import delong_classes\n",
"#\n",
"# m = delong_classes.malthusian\n",
"#\n",
"# .__init__ :: initialize\n",
"# .update :: calculate the next year's values\n",
"# .gen_seq :: return time series of selected variable\n",
"# .steady_state ::calculate the steady state\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline \n",
"\n",
"import numpy as np\n",
"\n",
"class malthusian:\n",
" \n",
" \"\"\"\n",
" Implements the Malthusian Model with:\n",
" \n",
" 1. population growth \n",
" n = β*(y/(ϕ ysub)-1)\n",
" \n",
" 2. growth of efficiency-of-labor \n",
" g = h-n/γ\n",
" \"\"\"\n",
" def __init__(self,\n",
" L = 1, # initial labor force\n",
" E = 1/3, # initial efficiency of labor\n",
" K = 3.0, # initial capital stock\n",
" \n",
" # determinants of n (population growth):\n",
" β = 0.025, # responsiveness of population growth to increased prosperity.\n",
" ϕ = 1, # luxuries parameter\n",
" ysub = 1, # subsistence level\n",
" \n",
" # determinants of g(efficiency-of-labor growth):\n",
" h = 0, # rate at which useful ideas are generated\n",
" γ = 2.0, # effect-of-resource scarcity parameter \n",
" \n",
" s = 0.15, # savings-investment rate\n",
" α = 0.5, # orientation-of-growth-toward-capital parameter\n",
" δ = 0.05, # deprecation rate on capital parameter\n",
" ):\n",
" self.L, self.E, self.K, self.h, self.γ, self.s, self.α, self.δ = L, E, K, h, γ, s, α, δ \n",
" self.β, self.ϕ, self.ysub = β, ϕ, ysub\n",
" \n",
" # production (or output)\n",
" self.Y = self.K**self.α*(self.E*self.L)**(1-self.α) \n",
" self.y = self.Y/self.L\n",
" \n",
" # capital-output ratio \n",
" self.κ = self.K/self.Y \n",
" \n",
" # population growth \n",
" self.n = self.β*((self.y/(self.ϕ*self.ysub)) - 1)\n",
" \n",
" # growth rate of efficiency-of-labor\n",
" self.g = self.h-self.n/self.γ\n",
" \n",
" # store initial data\n",
" self.initdata = vars(self).copy()\n",
" \n",
" def update(self):\n",
" # unpack parameters\n",
" K, s, Y, δ, L, n, E, g, α =self.K, self.s, self.Y, self.δ, self.L, self.n, self.E, self.g, self.α\n",
" β, ϕ, ysub, h, γ = self.β, self.ϕ, self.ysub, self.h, self.γ\n",
" \n",
" #update variables \n",
" K = s*Y + (1-δ)*K\n",
" L = L*np.exp(n)\n",
" E = E*np.exp(g)\n",
" Y = K**α*(E*L)**(1-α)\n",
" y = Y/L\n",
" κ = K/Y\n",
" n = β*(y/(ϕ*ysub)-1)\n",
" g = h-n/γ\n",
" \n",
" #store variables\n",
" self.K, self.s, self.Y, self.δ, self.L, self.n, self.E, self.g, self.α = K, s, Y, δ, L, n, E, g, α\n",
" self.κ, self.y = κ, y\n",
" \n",
" def gen_seq(self, t, var = 'κ', init = True, log = False):\n",
" \"Generate and return time series of selected variable. Variable is κ by default.\"\n",
" \n",
" path = []\n",
" \n",
" # initialize data \n",
" if init == True:\n",
" for para in self.initdata:\n",
" setattr(self, para, self.initdata[para])\n",
"\n",
" for i in range(t):\n",
" path.append(vars(self)[var])\n",
" self.update()\n",
" \n",
" if log == False:\n",
" return path\n",
" else:\n",
" return np.log(np.asarray(path))\n",
"\n",
" def steady_state(self, disp = True):\n",
" \"Calculate variable values in the steady state\"\n",
" #unpack parameters\n",
" s, γ, h, δ, ϕ, ysub, β, α= self.s, self.γ, self.h, self.δ, self.ϕ, self.ysub, self.β, self.α\n",
" \n",
" self.mal_κ = s/(γ*h+δ)\n",
" # malthusian rate of population growth\n",
" self.mal_n = γ*h\n",
" # malthusian standard of living\n",
" self.mal_y = ϕ*(ysub+γ*h/β)\n",
" self.mal_E = self.mal_y*((γ*h+δ)/s)**(α/(1-α))\n",
" \n",
" if display == True:\n",
" return(f'steady-state capital-output ratio κ: {self.mal_κ:.2f}')\n",
" return(f'Malthusian rate of population growth n: {self.mal_n: .2f}')\n",
" return(f'Malthusian standard of living y: {self.mal_y:.2f}')\n",
" return(f'steady-state efficiency-of-labor E: {self.mal_E:.2f}') \n",
" else: \n",
" return(self.mal_κ,self.mal_n,self.mal_y,self.mal_E)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" \n",
"\n",
"## **Lecture Notes: The Solow Growth Model** \n",
"\n",
"\n",
"\n",
"* Ask me two questions…\n",
"* Make two comments…\n",
"* Further reading…\n",
"\n",
" \n",
"\n",
"----\n",
"\n",
"weblog support: \n",
"nbViewer: < \n",
"datahub: \n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" \n",
"\n",
"----"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}