講義ノート―動学マクロ経済学入門 読んでみた 3章編 〜ラムゼーモデルに税制を組み込んでみよう〜
教科書についてはこちら。
あ
ラムゼーモデルに税制を組み込んでいく。
ラムゼーモデル回とほとんど同じ。
まず、企業は変わりなく利潤を最大化する。
(今回も以下L = 1になる。例によってAも固定になる。)
考える税は(t期の消費税率)、
(t期の一括税)、
(t期の資産収益税率)の3種類。
すると代表的家計の資本ストック式は以下のようになる。
この制約の元で家計は相変わらず効用関数Uを最大化するようにを決定する。
そして、政府という主体が新たに導入される。政府は徴収した税をもとにt期にの消費を行う。
資本ストックの式は
のように修正される。
気を付けること
一括税は任意の外生変数。負の場合は政府が家計に還付金を支払うことに相当。
色々最大化
あんま変わらんのではしょりながら。
企業の利潤最大化から、
それぞれ変形してとして、
を得る。
家計はUを最大化するから例によってラグランジアンΛの微分を考える。
前回と同じという置き換えをして、ラグランジアンの微分が0になることから
上の式から
を得、下の式に代入して、
更に企業の利潤最大化から求めたをこれに代入し整理すればオイラー方程式
を得る。
とりあえず定常状態
本当に定常状態に至るのかという疑問は封印して、例によって色々定数にする。
で、定常状態ではC,Kは変化しなくなってになっているので、オイラー方程式から、
これを整理して
を得る。
資本ストック式に代入して
を得る。
重要な知見
定常状態にはが入っていない!!!
すなわち、消費税率が1%でも10%でも10000000%でも関係なく定常状態の資本ストック量、消費量が決まる。
あれ、マジ?
てか政府支出gも入ってないんで、政府がいくら消費しても定常状態が変わらないことに。ほんまかこれ。
理由を考えてみよう・・・
RでNewton法を書いてみる
あけましておめでとうございます。
あらすじ
Rのインストールには成功したが、非線形連立方程式を解くパッケージnleqslvのインストールが上手くいかなかった。
このままでは公開されているサンプルプログラムたちが動かないので、非線形連立方程式を解く部分をOctaveという別の言語*1に移植して解かせ、その出力を手動で読み込ませることによりなんとかサンプルプログラムを動作させることに成功した。
そう、全ては順調に行っているかのように見えた。
ところが
↑の方法は次のような非常に重大な欠点があった……
- 毎回毎回、サンプルプログラムがかわるごとにプログラムの一部をmatlabに移植しないといけない
- パラメータを少し変えたシミュレーションをしたいとき、移植前と元のプログラム両方を書き換えないといけない
前々回やりたくないとか言ってたけど、むしろ移植より簡単でした
「非線形連立方程式 解き方」とかでググるとこんなのが見つかる。
要約するに高校で習ったふつうのニュートン法というのは、
つまり関数を直線で近似をした上で、直線がx軸と交わるところを次の近似解としていく方法。
これが多次元になると微分のところがとなるだけであった。(行列の成分表示のつもり)
のj行目はx_iが少し増えたときのf(x)のj行目の増え方に対応するのでそれはそう。
そうするとを解けば次のxの近似解
が求まる。
これは単に線形連立方程式Ax = bを解いているだけ(AがJで、bが-f(x))なので、Rにそういう関数があったのでそれが使える。
で、行列J(ヤコビアン)は適当に数値微分で近似すればよい。
ごめんねぜんぜん厳密じゃないですが
きちんとした証明とかはわからんわ。(というよりまずググっても簡単に見つからない)
プログラム
こんなん。Octaveに解かせるより遅い。(length(X0)=60で5秒くらいかかった*2)
で、nleqslvライブラリを読み込むかわりにsource("fsolve.R")して、nleqslv関数を使っているところをfsolveに置き換えたらきちんと動いた。*3
相変わらずR言語をググりながらの見様見真似なのでなんか変なことやってるかも。
fsolve <- function(X0, fun){
n <- length(X0)
for(loop in 1:100){
#数値微分でJacobianを求める
d <- 0.0001
J <- matrix(0, nr=n, nc=n)
for(j in 1:n){
X1 <- X0
X1[j] <- X1[j] + d
Jj <- (fun(X1) - fun(X0)) / d
for(i in 1:n) J[i, j] <- Jj[i]
}
X0 <- X0 - solve(J, fun(X0))
}
return (X0)
}
めでたし?
次回からサンプルプログラムはほぼそのまま動くようになりました。
準備が長かった……教科書読むのがなかなか進まない……
参考にしたもの
- http://cse.naro.affrc.go.jp/takezawa/r-tips/r/19.html
- http://cse.naro.affrc.go.jp/takezawa/r-tips/r/20.html
- http://cse.naro.affrc.go.jp/takezawa/r-tips/r/21.html
- http://cse.naro.affrc.go.jp/takezawa/r-tips/r/31.html
- http://stat.biopapyrus.net/vector/matrix.html
- http://www.yamamo10.jp/yamamoto/lecture/2006/5E/nonlinear_equation/nonlinear_eq_html/node8.html
このあたり。
ラムゼーモデルの位相図が出たよ!(出たけどさあ……)
どうやったか
結局nleqslvが動かない問題は解決せず。
講義のページで紹介されていたOctaveというソフトをインストールして、
そっちのソフトで非線形連立方程式を解いた。
R言語とmatlab言語(?)で記法が違うので大変だった。
参考
教科書と同じ図が出ているので、これでたぶんmatlabで非線形連立方程式が解けてる、はず。
ググりながら見様見真似でやったので、動いてはいるけどたぶん書き方とかメチャクチャなはず。
プログラムとかに詳しい人いたら、正しいやり方教えて下さい。
global a global b global d global At global Kt global Kss global Css global T a = 0.3 b = 0.99 d = 0.25 At = 1.0 Kt = ((1/b+d-1)/a/At)^(1/(a-1)) function res = FCt(K) res = At*K^a - d*K end Kss = ((1/b+d-1)/a/At)^(1/(a-1)) Css = At*Kss^a - d*Kss function ret = objfun0(X, n, X0, Xss) global a global b global d global At global Kt global Kss global Css global T C = ones(n+1, 1); K = ones(n+1, 1); C(1:n) = X(1:n); C(n+1) = Xss; K(1) = X0; K(2:n+1) = X(n+1 : 2*n); ret = ones(n, 2); for t = 1:n ret(t, 1) = C(t+1)/C(t)-b*(a*At*K(t+1)^(a-1)-d+1); ret(t, 2) = K(t+1)-At*K(t)^a-(1-d)*K(t)+C(t); end end function ret = obj1(X) global Kss global Css global T ret = objfun0(X, T, Kss*2, Css); end T = 30 Xinit = ones(2*T, 1); X = fsolve(@obj1, Xinit)
これの出力をテキストファイルに保存して、以下のやり方でR言語に読み込ませた。
講義ページに書いてあったプログラムは、
rslt1 <- nleqslv(Xinit, objfun1) rslt1x <- matrix(rslt1$x, maxT, 2)
の部分を消して、
rslt1 <- scan("sim1.txt")
rslt1x <- matrix(rslt1, maxT, 2)としたら動いた。
ぐぐったもの
- https://jp.mathworks.com/help/optim/ug/fsolve.html
- https://jp.mathworks.com/help/matlab/ref/for.html
- http://cse.naro.affrc.go.jp/takezawa/r-tips/r/46.html
- http://moki-mokki.blogspot.jp/2011/05/matlab.html
- http://www.yukun.info/blog/2008/09/r-read-source-file.html
- http://www.okadajp.org/RWiki/?%E9%80%A3%E7%AB%8B%E6%96%B9%E7%A8%8B%E5%BC%8F%E3%82%92%E8%A7%A3%E3%81%8F
- https://jp.mathworks.com/help/matlab/ref/run.html
このあたり。
nleqslvというライブラリが動かない……
Rはインストールできたけど、
install.packages("nleqslv")でnleqslvをインストールしようとすると
Error in dyn.load(file, DLLpath = DLLpath, ...) :
共有ライブラリ '/home/username/R/i686-pc-linux-gnu-library/2.14/nleqslv/libs/nleqslv.so' を読み込めません:
/home/username/R/i686-pc-linux-gnu-library/2.14/nleqslv/libs/nleqslv.so: undefined symbol: IS_SCALAR
エラー: '%s' のロードに失敗しました
実行が停止されました
エラー: '%s' のロードに失敗しました
みたいなエラーを吐いて失敗する。
講義ノート―動学マクロ経済学入門 読んでみた 2章編 〜ラムゼーモデルを理解しよう〜 その2
前回導出した数式
| 式 | 意味 |
|---|---|
| 家計の来期資本ストックの式 | |
| 家計の効用関数 | |
| 企業の生産関数 | |
| 企業の利潤 | |
| 来期の資本ストックの式 |
この5つ。ここに最大化制約を加えていく。
効用関数の最大化
等式制約付きの最適化問題なのでラグランジュの未定乗数法を使う。
(に非負の条件があるので、たぶん本当は最適解であることは別途証明しないといけない?)
ラグランジアンは、
ここで
と置換することで
それぞれ整理して、
①式
②式
を得る。
利潤の最大化
各企業はを動かせるので、
の
による偏微分がゼロになる(☆)ように生産活動を行うはずである。
ここで注意すべきことは、は市場全ての資本ストックの和であり、
は市場すべての労働力の和であるが、
実はの
による偏微分もまたゼロになるということである。
これは以下のように説明できる。(この説明が教科書になかったので悩んだ。)
各企業が(☆)を満たすように生産活動を行ったとする。すると、資本または労働力どちらかに余りが生じる。
(資本のレンタルプライスが安い場合、労働力が余り、逆の場合資本が余る。)
すると、労働市場の需要と供給から、たとえば労働力が余った場合賃金が下がり、レンタルプライスが相対的に高価になる。
逆に資本が余った場合、労働力が不足となるので賃金は上がり、レンタルプライスは相対的に安価になる。
加えて、すべての企業で生産関数は同一であるため、の値は企業によらず一定*1であり、したがって
についても同様である。
すなわち、(☆)の条件が満たされるようにのほうが動くこととなる。
これを整理すると、
③式
を得る。
ラムゼーモデルの定常状態
になっているような状態をラムゼーモデルの定常状態とよぶ。
ラムゼーモデルが定常状態にあるとき、
が満たされる。
これらを解くと、
が得られる。このをそれぞれ
と記す。
初期状態が定常状態に至る様子
(定数)であるとして、オイラー方程式および資本ストックの遷移式を適当に大きい整数Tについて1期からT期まで立てて、
1期では
T期では
を満たすとすると、2T変数()2T個の連立方程式になるので解けて、作図できる。
講義ページのプログラムが動かせたらグラフ貼ってみるかも。
なんかlinuxとかをインストールしなくてはいけない模様?(わからん)
*1:具体的にはとなる
閑話 日本は財政破綻しないの?するの?
パソコンで数式書くのに疲れたので関係ない話をする。
どっちなんだろうねこれ。
この話ではそもそも議論の土台が一致していないことが多い気がする。
なのでまずその土台を確認してみるよ。
どだい
- 国債がデフォルトするのが財政破綻だよ
- 自国通貨建てなら無限の通貨発行や、財政ファイナンスがあるから破綻しようがないという主張。
- 財政ファイナンスをしても破綻だよ
- 財政ファイナンスしたら経済混乱がおきるから、デフォルトしてないと言い張っても意味ないという主張。
- 永久に借り換えができるから破綻しないよ
- 対GDP比で国債残高がいくらになろうが別にいくらでも借金できるんだから不払いに陥ることはないよという主張。
- 財政ファイナンスをしてもインフレはおきないよ
- インフレはおきないという主張。あるいはインフレは完全に制御できる。
- 財政ファイナンスをしても一切経済混乱はおきないよ
- これは言ってる人はいるのかな?三橋貴明氏の主張とかが近いのかな?
- 破綻論者は言葉の使い方がおかしい、危機感を煽るようなことばかり言ってるよ
- 言葉の使い方がおかしい人だけを取り上げる藁人形論法なので取り扱わない。
上記1, 2, 3, 4, 5のそれぞれを争点にして争う人がいるのでこの話はかみ合わないことが多い。
おもうところ
1.について。
「無限の通貨発行や、財政ファイナンスがあるからとりあえず国債は償還できる」のは正しいけど、それで経済的な混乱が起きたらあんまり意味がないので、ニートとしては言葉遊びの感がある。
財政破綻論争の文脈における「破綻」は狭義のデフォルト(不払い)という意味ではなく、
財政ファイナンス等を通して経済が大混乱することという広い意味で使われていると考えると自然。*1
(言葉の使い方が正しいか正しくないかはさて置いて)
2.について
財政ファイナンスは通貨価値を不安定にさせる「禁じ手」で、多くの国では原則禁止しているというのはよく聞く言説。自分で調べたわけではないので本当かはわからんけど。
多くの国で原則禁止しているなら、経済混乱がおきる蓋然性は高いので、
財政ファイナンスをもって実質的破綻とするという主張は一定の説得力を持つように思える。
3.について
財政ファイナンスをしないなら、さすがにこれは直観的には明らかにまずい気がする。
たとえば利払いだけで国家歳入の100倍になるくらいまで残高が膨れた状況だったら、債務増加は止められなくなる。
ここまではよくて。その後どうなるんだろう。
民間の金融資産も同額増えているはずなので、いくら金融緩和が効果なかったといっても、さすがにマネーサプライが1万倍とか10万倍とかになったらものすごいインフレが起こっているはず?
答えがわかる方はコメントでご意見下さい。
4と5について
日本はデフレなんだから財政ファイナンスをしてもインフレなんかおこるわけないだろ的な話。
あるいは、日銀が国債を引き受けまくってるんだから、すでに実質的に財政ファイナンスしていて混乱してないだろという話。
この話はあんまりよくわからない。
- デフレだから財政ファイナンスをしてもインフレがおこるわけない
何故?もう少し勉強したらわかるのかな?
いまのところ、デフレだろうが通貨価値が毀損されたらインフレにはなるのでは?(というか取引がドルとか物々交換とかになるのでは?)というふうにおもっている。
- 日銀が国債を引き受けまくってるんだから
日銀の利息収入は法律上、国庫納付金になるから、政府は利息分の納付金を受け取り、利息を払わずに済むという話。
それはわかるのだけど、償還分のお金がないときは新規に国債発行をするわけだよね。
その国債は日銀が直接引き受けるわけではないので、こっちには利息つくんじゃないの?そしたら将来的に3.のケースと同じようなことにならない?
これがニート的にはよくわからない。
【追記】
日銀保有の国債を償還するときには1年の短期国債を発行して日銀に引き受けさせる「日銀乗換」というものが行われるので、償還時に借り換えるときの利息もかからなくなる?
(市場利率の債を発行して、翌年現金で民間から償還するとあるのでかかる気がする。)
短期国債をまた別の短期国債に乗り換えることもできるのかな?
しかし日銀の対政府取引に関する基本要領というページを見ると流石にそれは主旨に反していそう。
名前を出したので
三橋氏のブログのそれっぽい主張の記事へのリンクを貼っておく。
- 財政ファイナンスというプロパガンダ用語
- 日銀引き受け分の利払いがなくなるのはわかるけど、償還費用を捻出するのに国債発行したら利息がかかるのではないかという辺りが知識不足でよくわかっていない。
- 財政破綻論のテンプレート
- 一見「破綻しないよ」と言っているように見える。けど政府の言葉の使い方がミスリーディングと言ってるだけで、「破綻しないか」には言及してないよ、みたいな記事のようにも見える。
結論
こういう類の話はすべて定性的な議論に終始しているのがよくない。定性的な議論は検証も反証も不可能に近い。
「重いもののほうが速く落ちる」みたいな単純な議論ですら数式を使わないで出来るわけがない。
なので、こういう話で説得力のある結論なんて出るわけがないと思うんだよね。
まあ、それが嫌なので知識をつけるために勉強するブログを始めたわけだが。
ごいけん
財政破綻問題に詳しい方のご意見、もしくは誤りの指摘などは常にお待ちしております。
講義ノート―動学マクロ経済学入門 読んでみた 2章編 〜ラムゼーモデルを理解しよう〜
教科書についてはこちら。
これも詳しそうなので後で見てみる。
似たようなことやってる人見つけた
餡子付゛録゛
ソフトウェアエンジニアの方らしい。エンジニアだけあってちゃんとグラフとか作ってる。
そういえば講義のページでプログラムが配布されていたし、ニートもそれをどうにか動かしてみたほうが勉強になりそう。
まあのんびりと。
ラムゼーモデルの導入
ソローモデルでは総生産のうちが常に貯蓄される(=
の割合が常に消費される)という仮定を置いたけど、
消費量は、家計が効能を最大にするように決定するという仮定を置いたモデルを考えたい。
j番目の家計は次のような予算制約をもつ。
はj番目の家計のt期初における資本ストックをあらわす。
はソローモデルと同様に資本の減耗率である。
はt期における資本のレンタルプライスをあらわす。(家計は資本
を企業に
の価格で貸し出す。)
はt期の賃金をあらわす。労働によって、家計は
の収入を得る。
はt期における消費をあらわす。
更にこの家計は効用関数
を最大化するように消費を決定する。
全ての家計が同一であるという代表的家計という考え方を用いる。
そうすると、市場全体の資本
および消費
を用いて、予算制約は
と書くことができる。
家計は全て同一であるため、の最大化は
の最大化と同値である。(tex記法の数式めっちゃ崩れる・・・直す方法調べてみて直せるなら直す)
次に企業について考える。こちらはソローモデルとほとんど同じ。
企業はコブ・ダグラス型の生産関数に基づいてt期にの生産を行う。
この際家計から資本を価格でレンタルし、労働力を
で調達し、
t期の利潤を得る。
t+1期の資本ストックは、今期の資本ストックに生産量を加え、減耗と消費を引いたものであるので、
これで必要な等式が出そろった。もう一度全てを書きなおすと、
| 家計の来期資本ストックの式 | |
| 家計の効用関数 | |
| 企業の生産関数 | |
| 企業の利潤 | |
| 来期の資本ストックの式 |
これらに、最大化による制約がかかることになる。
効用関数の最大化と利潤の最大化
その2に続く。
