ソローモデル
基本的なセッティング
- 時間をtで表す。
- 企業は1単位存在する。
- 家計は同質的でL_t単位存在し、1単位の労働量を供給する。さらに、人は生まれた途端から皆労働する。
- 労働L_tと資本K_tを生産要素として、一般財のみを生産する経済。
- 一般財は、食べることができ、腐らず、資本として将来の生産のために投資することもできる、スーパーな財。
- 経済に存在する労働や資本は効率的に活用される。
生産関数
Y_t = F(K_t,L_t)
ただし、Y_tは生産(GDP)、K_tは資本、L_tは労働。
- Y_tは総所得とも解釈できる。
- 細かいが、生産関数は次の性質を満たす。
\partial F/\partial K_t > 0,~ \partial F/\partial L_t > 0,
\partial^2 F/\partial K_t^2 < 0, ~ \partial^2 F/\partial L_t^2 < 0
規模に関して収穫一定
- F(K_t,L_t)は規模に関して収穫一定である。
- 一次同時関数であるということもできる。
z Y_t = z F(K_t,L_t)= F(zK_t, zL_t)
を満たしている(zは実数)。
一人当たり生産
一人当たり生産をy_t\equiv Y_t/L_t、一人当たり資本ストックをk_t \equiv K_t/L_tとする。 生産関数をL_tで割ると、
\begin{aligned}
\frac{Y_t}{L_t} &= F \left( \frac{K_t}{L_t} ,\frac{L_t}{L_t} \right) \\
&= F \left( \frac{K_t}{L_t} ,1 \right) \\
y_t &= F(k_t,1) \equiv f(k_t)
\end{aligned}
労働者の行動
- 労働者は所得のうちsだけの割合を貯蓄し、残りを消費する。
- 労働者の貯蓄量は、sY_t \equiv S_t。
- 貯蓄は資金市場の供給源となる。
資金市場の均衡
- 資金市場では、労働者の貯蓄したお金が、企業の生産設備投資に回されて運用される。
- 均衡では、資金市場の需給が一致している。
\underset{(資金供給)}{S_t} = \underset{(資金需要)}{I_t}
資本蓄積
投資量は資本ストックの蓄積に用いられる。
K_{t+1} = K_{t} + I_t - \delta K_t
\delta : 資本減耗率(減価償却率)
人口成長率
- nを人口成長率とすると、次期の人口L_{t+1}は、
L_{t+1} = (1+n) L_t
ソローモデルのシステム
\begin{aligned}
Y &= F(K,L) \\
K_{t+1} &= K_t + I_t - \delta K \\
sY_t &= S_t \\
S_t &= I_t \\
L_{t+1} &= (1+n) L_t
\end{aligned}
代入を繰り返せば、次のように整理できる。
\begin{aligned}
Y &= F(K,L) \\
K_{t+1} &= K_t + sY_t - \delta K \\
L_{t+1} &= (1+n) L_t
\end{aligned}
一人当たりに変換
生産関数の規模に関する収穫一定の性質を用いれば、
\begin{aligned}
\frac{Y_t}{L_t} &= F\left(\frac{K_t}{L_t}, \frac{L_t}{L_t} \right) \\
&= F\left(k_t, 1 \right) \equiv f(k_t) \\
y_t &= f(k_t)
\end{aligned}
ただし、
y_t \equiv \frac{Y_t}{L_t}, ~ k_t \equiv \frac{K_t}{L_t}
この変形で、内生変数がY_t, K_tから、y_t, k_tに変換された。
一人当たりの資本蓄積
資本蓄積式を両辺L_tで割ると、
\begin{aligned}
\frac{K_{t+1}}{L_t} &= \frac{K_t}{L_t} + s \frac{Y_t}{L_t} - \delta \frac{K_t}{L_t} \\
\frac{K_{t+1}}{L_{t+1}} \frac{L_{t+1}}{L_t} &= k_t + s y_t - \delta k_t \\
(1+n) k_{t+1} &= k_t + s f(k_t) - \delta k_t \\
k_{t+1} &= \frac{k_t + s f(k_t) - \delta k_t}{1+n} \\
\end{aligned}
k_tの変動
\Delta k_t \equiv k_{t+1} - k_tと定義する。
\Delta k_t = \frac{s f(k_t) - (\delta + n )k_t }{1+n}
- sf(k_t) > (\delta + n) k_tならば、\Delta k_t > 0。
- sf(k_t) < (\delta + n) k_tならば、\Delta k_t < 0。
定常状態
- ソローモデルでは、k_tが内生的に変動して、定常状態に移行する。
\Delta k_t \equiv k_{t+1} - k_t = 0
であるとき、経済は定常状態にあるという。
定常状態におけるk_t=k^*は、次の等式を満たすように決まる。
sf(k^*) = (\delta + n) k^*
ソローモデルをコンピュータ上で表現したい場合、次の2つが必要。
- 一般型関数を具体的な形で特定化
- モデルの外生変数およびパラメータの値の決定
- パラメータの設定などをすることを、カリブレーションなどという。
- カリブレーションは、内生変数にターゲットを当てて、モデルから推計することもある。
関数の特定化
F(K_t, L_t) = K^{\alpha} L^{1-\alpha}
としよう。 このとき、
f(k_t) = k_t^{\alpha}
である。
解析解の確認
関数を特定化したので、この場合の解析的な解は手で解いて得ることができる。
s k^{*\alpha} = (\delta + n) k^*
をk^*について解けば、
k^{*} = \left(\frac{s}{\delta + n}\right)^{\frac{1}{1-\alpha}}
パラメータの設定
我々が用いているソローモデルでは、次のパラメータが存在している。
- \alpha:資本分配率
- \delta:資本減耗率
- n:人口成長率
- s:貯蓄率
これらをデータ等から当てはめる。
カリブレーション
- \alpha=0.33:
- \delta = 0.066:
- 内閣府データより、固定資本減耗/固定資本ストックの値を計算(1994-2022平均)
- n = 0:人口成長率
- s=0.267:貯蓄率
- 内閣府データより、1-最終消費支出/GDP(1994-2023平均)
モデルを描写する
Code
import numpy as np
import matplotlib.pyplot as plt
## パラメータを決める
alpha = 0.33
delta = 0.066
n = 0
s = 0.267
def f(k):
return k**alpha
k = np.linspace(0 , 15, 1000)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(k,s*f(k), label = r"$sf(k_t)$")
ax.plot(k,(delta + n)*k, label = r"$(\delta+n)k_t$")
ax.legend()
fig.show()
定常状態を算出
g(k) = sf(k_t) - (\delta + n)k_t = 0
を用いて、定常状態を算出
Code
import scipy.optimize as opt
def g(k):
return s*f(k)-(delta+n)*k
kstar = opt.root_scalar(g, bracket=(0.1,10)).root
k = np.linspace(0 , 15, 1000)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(k,s*f(k), label = r"$sf(k_t)$")
ax.plot(k,(delta + n)*k, label = r"$(\delta+n)k_t$")
ax.plot(kstar,s*f(kstar), "o")
ax.legend()
fig.show()
print(f"数値計算の解 : {kstar}")
print(f"解析計算の解 : {(s/(delta+n))**(1/(1-alpha))}")
数値計算の解 : 8.052326607315457
解析計算の解 : 8.05232660731546
黄金率水準
定常状態での消費を最大にするようなk^*を、資本の黄金率水準という。
- 消費は所得のうち貯蓄しなかった分
c = (1-s)f(k_t) = f(k_t) - sf(k_t)
- 定常状態では、sf(k^*)=(\delta + n)k^*なので、
c^* = f(k^*) - (\delta + n)k^*
c^*を最大にするk^*は、d c^*/ d k^* = 0を満たすk^*、つまり
f'(k^*) = \delta + n
これは、f(k_t) = k_t^{\alpha}ならば、
\alpha k^{*\alpha-1} = \delta + n
なので、
k^{*} = \left(\frac{\alpha}{\delta + n}\right)^{\frac{1}{1-\alpha}}
政策の効果
- 定常状態の式と見比べるとわかるが、s = \alphaならば黄金率水準のk^*が達成される。
- データでは、s=0.267、\alpha = 0.33なので、日本はやや過小貯蓄?
- 貯蓄を高めるような施策は受け入れられる?
現在s=0.267の定常状態にあるとして、貯蓄率sを0.33に引き上げた場合に、消費はどう動く?
- ”23%の貯蓄率上昇”というかなり強い政策。
- 政策変更で\Delta k_t>0となり、k_tが上昇していくはず。
- k_tからk_{t+1}を計算して、消費(1-s)f(k)を計算する。
- k_{t} = k_{t+1}と置き換えて、繰り返す。
- 消費の一時的な減少を受け入れなければならない。
- 場合によっては世代対立が生じる。
- 貯蓄率を上げる政策は合意が得られにくい可能性がある。
Code
import scipy.optimize as opt
k_list = []
c_list = []
s0 = 0.267
s1 = 0.33
k0 = (s0/(delta+n))**(1/(1-alpha))
def kp(k):
## 政策変更後のk_{t+1}
return (k + s1*f(k) - delta*k)/(1+n)
def c(k,s):
## 貯蓄率sのときの消費
return (1 - s)*f(k)
## 初期値のkとcを記録する。
k_list.append(k0)
c_list.append(c(k0,s0))
## 次期以降のkをcを記録する。
periods = np.arange(200)
for t in np.arange(len(periods)-1):
k1 = kp(k0)
k_list.append(k1)
c_list.append(c(k1,s1))
k0 = k1
fig = plt.figure()
ax0 = fig.add_subplot(211)
ax0.plot(periods, k_list)
ax0.set_ylabel("k")
ax1 = fig.add_subplot(212)
ax1.plot(periods, c_list)
ax1.set_ylabel("c")
fig.show()
まとめとDiscussion
- ソローモデルから数値計算の基本的な応用を概説。
- ソローモデルは関数の特定化によっては手で簡単に解ける。
- ただし、現実的な含意を導き出すためには、モデルはさらに拡張され、複雑化していく。
- 生産関数のパラメータ(\alpha)は正しいか。
- 生産関数の特定化は正しいか。
- 消費者の最適化を入れたラムゼイモデル
- 企業の投資選択を入れたモデル
- 確率的な技術革新や労働生産性の変化
- 価値関数の導入
- 複雑化したモデルと戦うためには、数値計算は大きな武器になりうる。
- 複雑で多数のパラメータを含むモデルを解くことができる。
- 定量的な含意を導くことができる。
Appendix
PWTからデータを計算すると、
- 資本分配率は0.40程度。
- 政府が支出に占める割合は無視できるのか?
- 貯蓄は本当に過小か?
- 生産技術のイノベーションや利子率の働きは?
- 何を用いてデータフィットをする?
- 資本/労働者比率は近年でほぼ停止
- 資本/(労働者*労働時間)もほぼ停止
- 資本/人口比率はまだ上昇傾向