@@ -13,6 +13,8 @@ kernelspec:
13131414# Equalizing Difference Model
151516+## Overview
17+1618This lecture presents a model of the college-high-school wage gap in which the
1719"time to build" a college graduate plays a key role.
1820@@ -26,13 +28,25 @@ The idea behind this condition is that lifetime earnings have to adjust to make
26282729It is just one instance of an "equalizing difference" theory of relative wage rates, a class of theories dating back at least to Adam Smith's **Wealth of Nations** {cite}`smith2010wealth`.
283031+For most of this lecture, the only mathematical tools that we'll use are from linear algebra, in particular, matrix multiplication and matrix inversion.
32+33+However, at the very end of the lecture, we'll use calculus just in case readers want to see how computing partial derivatives could let us present some findings more concisely.
34+35+(And doing that will let us show off how good Python is at doing calculus!)
36+37+But if you don't know calculus, our tools from linear algebra are certainly enough.
38+2939As usual, we'll start by importing some Python modules.
30403141```{code-cell} ipython3
3242import numpy as np
3343import matplotlib.pyplot as plt
3444```
354546+## The indifference condition
47+48+The key idea is that the initial college wage premium has to adjust to make a representative worker indifferent between going to college and not going to college.
49+3650Let
37513852* $R > 1$ be the gross rate of return on a one-period bond
@@ -119,6 +133,8 @@ $$
119133w_0^h A_h = \phi w_0^h A_c - D .
120134$$ (eq:equalize)
121135136+This is the "indifference condition" that is at the heart of the model.
137+122138Solving equation {eq}`eq:equalize` for the college wage premium $\phi$ we obtain
123139124140$$
@@ -139,7 +155,7 @@ But first we'll describe a possible alternative interpretation of our model.
139155140156141157142-## A tweaked model: workers and entrepreneurs
158+## Reinterpreting the model: workers and entrepreneurs
143159144160145161We can add a parameter and reinterpret variables to get a model of entrepreneurs versus workers.
@@ -308,7 +324,7 @@ plt.show()
308324```
309325310326311-**Entrepreneur-worker interpretation**
327+## Entrepreneur-worker interpretation
312328313329Now let's adopt the entrepreneur-worker interpretation of our model.
314330@@ -335,6 +351,158 @@ plt.show()
335351336352Does the graph make sense to you?
337353354+355+356+## An application of calculus
357+358+So far, we have used only linear algebra and it has been a good enough tool for us to figure out how our model works.
359+360+However, someone who knows calculus might ask "Instead of plotting those graphs, why didn't you just take partial derivatives?"
361+362+We'll briefly do just that, yes, the questioner is correct and that partial derivatives are indeed a good tool for discovering the "comparative statics" properities of our model.
363+364+A reader who doesn't know calculus could read no further and feel confident that applying linear algebra has taught us the main properties of the model.
365+366+But for a reader interested in how we can get Python to do all the hard work involved in computing partial derivatives, we'll say a few things about that now.
367+368+We'll use the Python module 'sympy' to compute partial derivatives of $\phi$ with respect to the parameters that determine it.
369+370+Let's import key functions from sympy.
371+372+```{code-cell} ipython3
373+from sympy import Symbol, Lambda, symbols
374+```
375+376+Define symbols
377+378+```{code-cell} ipython3
379+γ_h, γ_c, w_h0, D = symbols('\gamma_h, \gamma_h_c, w_0^h, D', real=True)
380+R, T = Symbol('R', real=True), Symbol('T', integer=True)
381+```
382+383+Define function $A_h$
384+385+```{code-cell} ipython3
386+A_h = Lambda((γ_h, R, T), (1 - (γ_h/R)**(T+1)) / (1 - γ_h/R))
387+A_h
388+```
389+390+Define function $A_c$
391+338392```{code-cell} ipython3
393+A_c = Lambda((γ_c, R, T), (1 - (γ_c/R)**(T-3)) / (1 - γ_c/R) * (γ_c/R)**4)
394+A_c
395+```
396+397+Now, define $\phi$
339398399+```{code-cell} ipython3
400+ϕ = Lambda((D, γ_h, γ_c, R, T, w_h0), A_h(γ_h, R, T)/A_c(γ_c, R, T) + D/(w_h0*A_c(γ_c, R, T)))
340401```
402+403+```{code-cell} ipython3
404+ϕ
405+```
406+407+We begin by setting default parameter values.
408+409+```{code-cell} ipython3
410+R_value = 1.05
411+T_value = 40
412+γ_h_value, γ_c_value = 1.01, 1.01
413+w_h0_value = 1
414+D_value = 10
415+```
416+417+Now let's compute $\frac{\partial \phi}{\partial D}$ and then evaluate it at the default values
418+419+```{code-cell} ipython3
420+ϕ_D = ϕ(D, γ_h, γ_c, R, T, w_h0).diff(D)
421+ϕ_D
422+```
423+424+```{code-cell} ipython3
425+# Numerical value at default parameters
426+ϕ_D_func = Lambda((D, γ_h, γ_c, R, T, w_h0), ϕ_D)
427+ϕ_D_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)
428+```
429+430+Thus, as with our graph above, we find that raising $R$ increases the initial college wage premium $\phi$.
431+432++++
433+434+Compute $\frac{\partial \phi}{\partial T}$ and evaluate it a default parameters
435+436+```{code-cell} ipython3
437+ϕ_T = ϕ(D, γ_h, γ_c, R, T, w_h0).diff(T)
438+ϕ_T
439+```
440+441+```{code-cell} ipython3
442+# Numerical value at default parameters
443+ϕ_T_func = Lambda((D, γ_h, γ_c, R, T, w_h0), ϕ_T)
444+ϕ_T_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)
445+```
446+447+We find that raising $T$ decreases the initial college wage premium $\phi$.
448+449+This is because college graduates now have longer career lengths to "pay off" the time and other costs they paid to go to college
450+451++++
452+453+Let's compute $\frac{\partial \phi}{\partial γ_h}$ and evaluate it at default parameters.
454+455+```{code-cell} ipython3
456+ϕ_γ_h = ϕ(D, γ_h, γ_c, R, T, w_h0).diff(γ_h)
457+ϕ_γ_h
458+```
459+460+```{code-cell} ipython3
461+# Numerical value at default parameters
462+ϕ_γ_h_func = Lambda((D, γ_h, γ_c, R, T, w_h0), ϕ_γ_h)
463+ϕ_γ_h_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)
464+```
465+466+We find that raising $\gamma_h$ increases the initial college wage premium $\phi$, as we did with our graphical analysis earlier
467+468++++
469+470+Compute $\frac{\partial \phi}{\partial γ_c}$ and evaluate it numerically at default parameter values
471+472+```{code-cell} ipython3
473+ϕ_γ_c = ϕ(D, γ_h, γ_c, R, T, w_h0).diff(γ_c)
474+ϕ_γ_c
475+```
476+477+```{code-cell} ipython3
478+# Numerical value at default parameters
479+ϕ_γ_c_func = Lambda((D, γ_h, γ_c, R, T, w_h0), ϕ_γ_c)
480+ϕ_γ_c_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)
481+```
482+483+We find that raising $\gamma_c$ decreases the initial college wage premium $\phi$, as we did with our graphical analysis earlier
484+485++++
486+487+Let's compute $\frac{\partial \phi}{\partial R}$ and evaluate it numerically at default parameter values
488+489+```{code-cell} ipython3
490+ϕ_R = ϕ(D, γ_h, γ_c, R, T, w_h0).diff(R)
491+ϕ_R
492+```
493+494+```{code-cell} ipython3
495+# Numerical value at default parameters
496+ϕ_R_func = Lambda((D, γ_h, γ_c, R, T, w_h0), ϕ_R)
497+ϕ_R_func(D_value, γ_h_value, γ_c_value, R_value, T_value, w_h0_value)
498+```
499+500++++ {"tags": []}
501+502+We find that raising the gross interest rate $R$ increases the initial college wage premium $\phi$, as we did with our graphical analysis earlier
503+504+505+506+```{code-cell} ipython3
507+508+```