Skip to content

Commit

Permalink
[bug] Fix obvious bugs across all lectures (#95)
Browse files Browse the repository at this point in the history
* update solow

* complex and trig

* fix bugs

* update bugs

* update bug
  • Loading branch information
HumphreyYang authored Oct 10, 2024
1 parent e9f502a commit 6964bf3
Show file tree
Hide file tree
Showing 28 changed files with 750 additions and 102 deletions.
5 changes: 5 additions & 0 deletions lectures/ar1_processes.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ kernelspec:
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (11, 5) # 设置默认图像大小
import matplotlib as mpl
FONTPATH = "fonts/SourceHanSerifSC-SemiBold.otf"
mpl.font_manager.fontManager.addfont(FONTPATH)
plt.rcParams['font.family'] = ['Source Han Serif SC']
```

## AR(1) 模型
Expand Down
16 changes: 16 additions & 0 deletions lectures/cagan_adaptive.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,14 +182,18 @@ $$
我们因此解决了我们模型所决定的两个关键内生时间序列,即预期通货膨胀率序列 $\pi^*$ 和实际通货膨胀率序列 $\pi$。
知道了这些,我们就可以从方程 {eq}`eq:eqfiscth1` 快速计算出相关的价格水平对数序列 $p$。
让我们填补这一步骤的细节。
既然我们现在知道了 $\mu$,计算 $m$ 就很容易了。
因此,注意到我们可以将方程
$$
m_{t+1} = m_t + \mu_t , \quad t = 0, 1, \ldots, T
$$
表示为矩阵方程
$$
\begin{bmatrix}
1 & 0 & 0 & \cdots & 0 & 0 \cr
Expand Down Expand Up @@ -217,12 +221,16 @@ m_t = m_0 + \sum_{s=0}^{t-1} \mu_s, \quad t =1, \ldots, T+1
$$ (eq:mcum_ad)
方程 {eq}`eq:mcum_ad` 表明,时间 $t$ 的货币供应对数等于初始货币供应对数 $m_0$ 加上 $0$ 到 $t$ 时间之间货币增长率的累积。
然后我们可以从方程 {eq}`eq:eqfiscth1` 计算每个 $t$ 的 $p_t$。
我们可以为 $p$ 写一个紧凑的公式
$$
p = m + \alpha \hat \pi^*
$$
其中
$$
\hat \pi^* = \begin{bmatrix} \pi_0^* \cr
\pi_1^* \cr
Expand All @@ -231,15 +239,19 @@ $$
\pi_{T}^*
\end{bmatrix},
$$
这只是去掉最后一个元素的 $\pi^*$。
## 预测误差
我们的计算将验证
$$
\hat \pi^* \neq \pi,
$$
因此通常
$$
\pi_t^* \neq \pi_t, \quad t = 0, 1, \ldots , T
$$ (eq:notre)
Expand All @@ -249,6 +261,7 @@ $$ (eq:notre)
在讲座 {doc}`价格水平的货币主义理论 <cagan_ree>` 中,我们研究了用"完美预见"或"理性预期"假设替代假设 {eq}`eq:adaptexpn` 的模型版本。
但现在,让我们深入并用适应性预期版本的模型进行一些计算。
像往常一样,我们将从导入一些 Python 模块开始。
Expand Down Expand Up @@ -382,9 +395,11 @@ print(λ - α*(1-λ))
现在我们来看一些实验。
### 实验1
我们将研究一种情况,其中货币供应量的增长率从t=0到t=T_1时为$\mu_0$,然后在t=T_1时永久下降到$\mu^*$。
因此,设$T_1 \in (0, T)$。
所以当$\mu_0 > \mu^*$时,我们假设
$$
Expand All @@ -395,6 +410,7 @@ $$
$$
注意,我们在这个讲座{doc}`货币主义价格水平理论<cagan_ree>`中的理性预期版本模型中研究了完全相同的实验。
因此,通过比较这两个讲座的结果,我们可以了解假设适应性预期(如我们在这里所做的)而不是理性预期(如我们在另一个讲座中所假设的)的后果。
```{code-cell} ipython3
Expand Down
43 changes: 28 additions & 15 deletions lectures/cagan_ree.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,11 @@ import numpy as np
from collections import namedtuple
import matplotlib.pyplot as plt
plt.rcParams['figure.dpi'] = 200
import matplotlib as mpl
FONTPATH = "fonts/SourceHanSerifSC-SemiBold.otf"
mpl.font_manager.fontManager.addfont(FONTPATH)
plt.rcParams['font.family'] = ['Source Han Serif SC']
```
首先,我们将参数存储在一个`namedtuple`中:
Expand Down Expand Up @@ -369,7 +374,7 @@ $$ (eq:pfiscaltheory2)
是 $p_{T_1}$ 还是 $m_{T_1}$?
如果我们坚持认为货币供应 $m_{T_1}$ 锁定在从过去继承的 $m_{T_1}^1$ 值,那么公式 {eq}`eq:pformula2` 意味着价格水平在时间 $T_1$ 向下跳跃,以与
$\pi_{T_1}$ 的向下跳跃一致
$\pi_{T_1}$ 的向下跳跃一致.
关于货币供应水平的另一个假设是,作为"通货膨胀稳定"的一部分,
政府根据以下公式重置 $m_{T_1}$:
Expand Down Expand Up @@ -502,11 +507,11 @@ plot_configs = [
{'data': [(T_seq, π_seq_2)], 'ylabel': r'$\pi$'},
{'data': [(T_seq, m_seq_2_regime1 - p_seq_2_regime1)],
'ylabel': r'$m - p$'},
{'data': [(T_seq, m_seq_2_regime1, 'Smooth $m_{T_1}$'),
(T_seq, m_seq_2_regime2, 'Jumpy $m_{T_1}$')],
{'data': [(T_seq, m_seq_2_regime1, '平滑的 $m_{T_1}$'),
(T_seq, m_seq_2_regime2, '非平滑的 $m_{T_1}$')],
'ylabel': r'$m$'},
{'data': [(T_seq, p_seq_2_regime1, 'Smooth $p_{T_1}$'),
(T_seq, p_seq_2_regime2, 'Jumpy $p_{T_1}$')],
{'data': [(T_seq, p_seq_2_regime1, '平滑的 $p_{T_1}$'),
(T_seq, p_seq_2_regime2, '非平滑的 $p_{T_1}$')],
'ylabel': r'$p$'}
]
Expand All @@ -527,14 +532,20 @@ def experiment_plot(plot_configs, ax):
experiment_plot(plot_configs, ax)
```
我们邀请您将这些图表与上面实验1中分析的预期稳定化的相应图表进行比较。
请注意,第二个面板中的通货膨胀图现在与顶部面板中的货币增长图完全相同,以及现在在第三个面板中描绘的实际余额的对数在时间$T_1$时向上跳跃。
底部两个面板绘制了在$m_{T_1}$可能调整的两种方式下的$m$和$p$,以满足在$T_1$时$m - p$的向上跳跃的要求。
* 橙色线让$m_{T_1}$向上跳跃,以确保对数价格水平$p_{T_1}$不会下降。
* 蓝色线让$p_{T_1}$下降,同时阻止货币供应量跳跃。
以下是一种解释政府在橙色线政策实施时所做的事情的方法。
政府通过印钞来资助支出,利用从货币供应增长率永久性下降带来的实际余额需求增加中获得的"速度红利"。
接下来的代码生成一个多面板图,包括实验1和实验2的结果。
这使我们能够评估理解$\mu_t$在$t=T_1$时的突然永久性下降是完全预期的(如实验1中)还是完全未预期的(如实验2中)的重要性。
```{code-cell} ipython3
Expand All @@ -545,16 +556,16 @@ fig, ax = plt.subplots(5, figsize=(5, 12))
plot_configs = [
{'data': [(T_seq[:-1], μ_seq_2)], 'ylabel': r'$\mu$'},
{'data': [(T_seq, π_seq_2, 'Unforeseen'),
(T_seq, π_seq_1, 'Foreseen')], 'ylabel': r'$p$'},
{'data': [(T_seq, m_seq_2_regime1 - p_seq_2_regime1, 'Unforeseen'),
(T_seq, m_seq_1 - p_seq_1, 'Foreseen')], 'ylabel': r'$m - p$'},
{'data': [(T_seq, m_seq_2_regime1, 'Unforeseen (Smooth $m_{T_1}$)'),
(T_seq, m_seq_2_regime2, 'Unforeseen ($m_{T_1}$ jumps)'),
(T_seq, m_seq_1, 'Foreseen')], 'ylabel': r'$m$'},
{'data': [(T_seq, p_seq_2_regime1, 'Unforeseen (Smooth $m_{T_1}$)'),
(T_seq, p_seq_2_regime2, 'Unforeseen ($m_{T_1}$ jumps)'),
(T_seq, p_seq_1, 'Foreseen')], 'ylabel': r'$p$'}
{'data': [(T_seq, π_seq_2, '不可预见的'),
(T_seq, π_seq_1, '可预见的')], 'ylabel': r'$p$'},
{'data': [(T_seq, m_seq_2_regime1 - p_seq_2_regime1, '不可预见的'),
(T_seq, m_seq_1 - p_seq_1, '可预见的')], 'ylabel': r'$m - p$'},
{'data': [(T_seq, m_seq_2_regime1, '不可预见的 (平滑的 $m_{T_1}$)'),
(T_seq, m_seq_2_regime2, '不可预见的 ($m_{T_1}$ 跳变)'),
(T_seq, m_seq_1, '可预见的')], 'ylabel': r'$m$'},
{'data': [(T_seq, p_seq_2_regime1, '不可预见的 (平滑的 $m_{T_1}$)'),
(T_seq, p_seq_2_regime2, '不可预见的 ($m_{T_1}$ 跳变)'),
(T_seq, p_seq_1, '可预见的')], 'ylabel': r'$p$'}
]
experiment_plot(plot_configs, ax)
Expand Down Expand Up @@ -600,5 +611,7 @@ plot_sequences(sequences, (r'$\mu$', r'$\pi$',
## 续篇
另一篇讲座 {doc}`带有适应性预期的价格水平货币主义理论 <cagan_adaptive>` 描述了凯根模型的"适应性预期"版本。
这个版本的动态变得更加复杂,代数运算也更加繁琐。
如今,在中央银行家和为他们提供建议的经济学家中,该模型的"理性预期"版本更受欢迎。
13 changes: 11 additions & 2 deletions lectures/cobweb.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ kernelspec:
```{code-cell} ipython3
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
FONTPATH = "fonts/SourceHanSerifSC-SemiBold.otf"
mpl.font_manager.fontManager.addfont(FONTPATH)
plt.rcParams['font.family'] = ['Source Han Serif SC']
```

## 历史
Expand Down Expand Up @@ -334,8 +339,8 @@ def ts_plot_price(model, # 市场模型
ts_plot_price(m, 4, ts_length=15)
```

我们看到一个循环已经形成,而且这个循环是持续的。
(您可以通过绘制更长时间范围的图表来确认这一点。)
我们看到一个循环已经形成,而且这个循环是持续的。(您可以通过绘制更长时间范围的图表来确认这一点。)

这个循环是"稳定的",意味着从大多数起始条件开始,价格都会收敛到这个循环。
例如,

Expand All @@ -347,9 +352,13 @@ ts_plot_price(m, 10, ts_length=15)
## 适应性预期

朴素预期相当简单,也在我们发现的周期中起着重要的驱动作用。

如果预期以不同的方式形成会怎样?

接下来我们考虑适应性预期。

这指的是生产者对下一期价格的预期形成是基于他们上一次猜测和当前现货价格的加权平均。

也就是说,

```{math}
Expand Down
5 changes: 5 additions & 0 deletions lectures/commod_price.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
from scipy.optimize import brentq
from scipy.stats import beta
import matplotlib as mpl
FONTPATH = "fonts/SourceHanSerifSC-SemiBold.otf"
mpl.font_manager.fontManager.addfont(FONTPATH)
plt.rcParams['font.family'] = ['Source Han Serif SC']
```

## 数据
Expand Down
Loading

1 comment on commit 6964bf3

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.