ピケティは、「ソローモデルはあまりいいモデルではない」と語っています(日経ビジネスのインタビュー)。私もまったく同感です。そこで、ピケティの r>g をソローモデルで考えてみました。以前にも「ピケティの r>g をソローモデルで考えてみた」という記事を書いていますので、第二弾になります(前回の記事はこちら)。

 ピケティは、ソローモデルの欠点として、資本をひとつしか想定しておらず、「資本の中身を分けていない(例えば、土地、住宅、工場など)」ということを挙げていますが、それ以外に意識していると思われるのは、ソローモデルでは定常状態において r=g となり、ピケティの主張する r>g が支持されない、ということかもしれません( r は資本の収益率(資本からのリターン)、g は経済成長率)。

 しかし、ソローモデルでは、定常状態では r=g となりますが、定常状態から変化するときには、r と g に差が生じます。前回の記事でそれを示しました。例えば、知識や技術の増加率 (以下 a ) や人口増加率 (以下 n ) が減少すると、r>g となります(下の図。逆に知識・技術の増加率や人口増加率が増加すると g>r になります)。
14121409













 前回の記事では、ソローモデルから導かれる方程式からこのような図を推測しましたが、ソローモデルの場合、生産関数を定めれば、r や g を明示的に示すことができます。そこで今回は、生産関数に kα というコブダグラス型の生産関数を当てはめて、r と g の変化を見てみようと思います( k は効率労働当たりの資本ストック)。

(ソローモデルの導入部については、前回の記事を参照してください。)
 ソローモデルでは、k の変化は次の式に従います。
150209 (1)
   (1)
 ドット(・)は時間微分を表しています。a は知識・技術の増加率、n は人口増加率、δ は資本消耗率、s は貯蓄率です。f(k) に kα を代入すれば、
150209 (2)
   (2)
 となります。このままでは、この微分方程式は解けないので、両辺を kα で割ります(この方法は Barro and Sala-i-Martin の Economic Growth にのっています)。
150209 (3)
   (3)
 v(t)= k(t)1-α とおくと、(3)式は、
150209 (4)


 と書き換えることができます。a+n+δ=b とおけば、
150209 (6)


 となります。この微分方程式の解は、
150209 (7)
   (4)
 です。ここで、vは v の定常値、v(0) は v の初期値です。

 ところで、定常状態では (1)式((2)式)の左辺が 0 になります。したがって、kを k の定常値とすると、
150209 (8)
   

 が成り立ちます。この式から、v の定常値 vは、
150209 (9) 
    (5)


 となります。これを(4)式に代入すれば、
150209 (10)
   (6)

 となります。
 ここでは、技術進歩や人口増加率が変化し、定常状態から移動する状況を考えたいです。そこで、b の初期値を b(0) とすると、(5)式から、v(0)=s/b(0) です。これを(6)式に代入すれば、
150209 (11)
   (7)

 となります。

 ソローモデルでは、貯蓄率 s は外生的に決まり、モデルの内部から決まりません。しかし、個人が合理的なら、効用を最大化するように貯蓄率を決定すると思われます。そこで、個人は消費を最大化するように貯蓄率を決める、と想定してみます。消費は一般的に次の式で表されます。
150209 (12)

 生産関数を代入すれば、
150209 (13)

 です。定常状態において、消費を最大化するように貯蓄率を決めたとすると、
150209 (14)
   

 を最大化するように、s を決めることになります。(5)式から kを求め、代入すれば、
150209 (15)


 です。これを最大化する s は α です(計算は省略 )。そこで、(7)式に s=α を代入すれば、
150209 (17)
   (8)

 となります。例えば、α=1/3 として、b が 4% から 8% に増加した場合、k は次の式にしたがって変化します。
150209 (18)



 資本の収益率は一般的に次の式で表されます(これは企業の利潤最大化から求まります)。
150209 (19)

 f(k) に k(t)α  を代入すれば、
150209 (20)

 v(t)= k(t)1-α  なので、
150209 (21)
   (9)

 という簡単な式で表すことができます。

 次に、経済成長率 g は次の式で表されます(この式の導出は、前回の記事を見てください)。
150209 (22)
   (10)

 v(t) の時間微分は、
150209 (23)

 となります。この関係を使えば、k(t)/k(t) は、
150209 (24)



150209 (25)



 (8)式から、v(t) を計算し、代入すれば、

150209 (26)



150209 (27)



 分子は v(t) から α/b を引いたものに等しいです。したがって、
150209 (28)

   (11)

 これを(10)式に代入すれば、g(t) は、
150209 (29)



 となります。少し変形すれば、
150209 (30)



150209 (31)

   (12)

 という簡単なかたちで表すことができます。
 (9)式と(12)式を比べると、どちらにも - δの項があるので、r と g の差に δ は影響を与えない、ということがわかります。そこで、ここでは r と g の差を見たいので、δ を無視することにします。 δ=0 とすれば、r と g はそれぞれ、
150209 (32)
   (13)

150209 (33)

   (14)

 
 となります。(8)式、(13)式、(14)式を使い、パラメーターを決めれば、いろいろな条件での r と g の変化を知ることができます。(以下、α(=s)=1/3 としています。また、それぞれの図は maxima で描いています。プログラムは末尾。)

(1) t=0 の時点で、b (知識・技術の増加率や人口増加率)が 4% から 8% に増加した場合
14021001


















 g>r となります。ポイントは、r はゆっくりと変化するのに対して、g は最初の時点で不連続に変化する(これは(10)式のかたちからわかります。これについては前回の記事)、ということです。そのために g のほうが速く変化します。これは他の条件でも同じですし、ラムゼイモデルでも同じです(ラムゼイモデルの資本の動学方程式は、ソローモデルと同じです)。

(2) t=0 の時点で、b (知識・技術の増加率や人口増加率)が 8% から 4% に低下した場合
14021002



 















(3) t=0 で、それまで 4% だったb が 8% に増加し、80年後 ( t=80 ) に、8% から 4% に戻った場合
14021003


















 b (知識・技術の増加率と人口増加率)が増加するときは、g>r となり、b が減少するときは、r>g になる、ということがわかります。
 つまり、ソローモデルでは、定常状態では r=g となりますが、定常状態から変化するとき(あるいは、定常状態が変化するとき)には、r と g は異なった変化をするので(g のほうが速く変化する)、r と g にギャップが生じるのです。この結論は、ラムゼイモデルにも当てはまります。ラムゼイモデルでは、定常状態でも r>g となりますが、定常状態から移るときには、その差は一定ではなくなる。

(4)ラムゼイモデルモドキ
 前に書いたように、ソローモデルでは貯蓄率 s が内生的に決まりません。個人の主観的時間割引率を考慮し、それにもとづく将来までの効用最大化の条件をソローモデルに組み込み、そのような欠点を修正したものがラムゼイモデルです。
 
 しかし、ラムゼイモデルでは、ソローモデルのようにそれぞれの変数を明示的に導出できません(通常、資本の動学(上の(1)式)と消費の動学を線形近似して導 出します。離散時間モデルに変えれば r と g の「変化」は示せます。こちら)。
 そこで、ここでは貯蓄率はやはり外生的に一定の値に固定されているとし(つまり、s=α )、主観的時間割引率の影響だけが導入されたとします。ラムゼイモデルの場合、定常状態における r は、
r=ρ+θg
 となります(例えばマンキューの記事。拙訳はこちら)。ここで、ρ は主観的割引率、g は知識・技術の増加率(上の a )、θ は効用関数の湾曲度(異時点間代替率の逆数)です。対数型効用関数の場合、θ=1 です。θ=1の場合、r は
r=ρ+g
 となります。

 そこで、定常状態でr が ρ の分だけ高くなる(つまり、r=ρ+g)、という条件だけを、上のソローモデルに導入してみます(貯蓄率はそのまま s=α で一定とします。 ただし、これは正確にラムゼイモデルを再現したものではありません。消費の動学方程式を無視しています)。

(4a) t=0 で b (知識・技術の増加率や人口増加率)が 4% から 8% に増加し、80年後 ( t=80 )に 4% に戻った場合 (ρ=3%)

14021004


















 b(知識・技術の増加率と人口増加率)が増加したときには、r と g のギャップが縮まり、b が減少したときには、そのギャップが広がる、ということがわかります。


(4b) b=2% という状態で、t=0 に b=4% に増加し、50年後 ( t=50 ) にさらに b=6% に増加し、100年後 ( t=100 ) に b=2% に戻った場合
14021005


















 やはり、b(知識・技術の増加率と人口増加率)が増加しているときは、r と g のギャップが縮まり、b が減少したときは、そのギャップが広がる、ということがわかります。(以下のプログラムのパラメーターをいろいろ変えれば、違った条件での変化を見ることができます。)

 ピケティが挙げている図は以下のとおり(似ているかな?)。
piketty10_9












(山形浩生氏のピケティサポートページから)

 以上のモデル(ソローモデル、ラムゼイモデル)は個人の「格差」を想定していないモデルです。したがって、これらのモデルから、個人の格差がなくても r>g は生じる、ということが示されます。ここからどのようなインプリケーションを引き出すかは人によって異なるでしょう(例えば、r>g は「自然な状態」なので、それを変えるような政策をとるべきではない、とか。私はこういう議論に組しませんが)。いっぽう、格差が定常状態になっているのなら、政策や対策を議論するときに、格差を想定していないモデルで考えるのは適切ではないかもしれません(日本の消費税擁護論のほとんどは、そういうモデルになっていませんか?)。

(1)
v(t):=(a/b)+(a/c-a/b)*exp(-(1-a)*b*t);
r(t):= if t<0 then c else a/v(t);
g(t):= if t<0 then c else b-a*b*(v(t)-a/b)/v(t);
[a:1/3,b:0.08,c:0.04];
plot2d([r(t),g(t)],[t,-20,100],[y,0,0.12],
[legend, "r", "g"],[xlabel, "t"]);

(2)
v(t):=(a/b)+(a/c-a/b)*exp(-(1-a)*b*t);
r(t):= if t<0 then c else a/v(t);
g(t):= if t<0 then c else b-a*b*(v(t)-a/b)/v(t);
[a:1/3,b:0.04,c:0.08];
plot2d([r(t),g(t)],[t,-20,100],[y,0,0.12],
[legend, "r", "g"],[xlabel, "t"]);


(3)
v1(t):=(a/b)+(a/c-a/b)*exp(-(1-a)*b*t);
v2(t):=(a/c)+(a/d-a/c)*exp(-(1-a)*c*(t-t1));
r(t):= if t<0 then c elseif t>t1 then a/v2(t) else a/v1(t);
g(t):= if t<0 then c elseif t>t1 then c-a*c*(v2(t)-a/c)/v2(t)
 else b-a*b*(v1(t)-a/b)/v1(t);
[a:1/3,b:0.08,c:0.04,t1:80,d:r(t1)];
plot2d([r(t),g(t)],[t,-50,160],[y,0,0.12],
[legend, "r", "g"],[xlabel, "t"]);


(4a)
v1(t):=(a/b)+(a/c-a/b)*exp(-(1-a)*b*t);
v2(t):=(a/c)+(a/d-a/c)*exp(-(1-a)*c*(t-t1));
r(t):= if t<0 then c+rho elseif t>t1 then rho+a/v2(t) else rho+a/v1(t);
g(t):= if t<0 then c elseif t>t1 then c-a*c*(v2(t)-a/c)/v2(t) else
 b-a*b*(v1(t)-a/b)/v1(t);
[a:1/3,b:0.08,c:0.04,rho:0.03,t1:80,d:r(t1)-rho];
plot2d([r(t),g(t)],[t,-50,160],[y,0,0.12],
[legend, "r", "g"],[xlabel, "t"]);

(4b)
v1(t):=(a/c)+(a/b-a/c)*exp(-(1-a)*c*t);         
v2(t):=(a/d)+(a/c2-a/d)*exp(-(1-a)*d*(t-t1));    
v3(t):=(a/b)+(a/d2-a/b)*exp(-(1-a)*b*(t-t2));     
r(t):= if t<0 then b+rho elseif t>t2 then rho+a/v3(t) elseif t>t1 then rho+a/v2(t) else rho+a/v1(t);
g(t):= if t<0 then b elseif t>t2 then b-a*b*(v3(t)-a/b)/v3(t) elseif t>t1
 then d-a*d*(v2(t)-a/d)/v2(t) else c-a*c*(v1(t)-a/c)/v1(t);
[a:1/3,b:0.02,c:0.04,d:0.06,rho:0.03,t1:50,t2:100,c2:r(t1)-rho,d2:r(t2)-rho];
plot2d([r(t),g(t)],[t,-50,180],[y,0,0.12],
[legend, "r", "g"],[xlabel, "t"]);