Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

北尾早霧・砂川武貴・山田知明『定量的マクロ経済学と数値計算』日本評論社

付録

本リポジトリは、北尾早霧・砂川武貴・山田知明『定量的マクロ経済学と数値計算』(日本評論社)の付録に対応するサポートコードを収録しています。


フォルダ構成

appendix/
├── Julia/
│   ├── B1_Chebyshev_polynomials/
│   │   └── how_to_interpolation_cheb.ipynb   # 付録B.1:チェビシェフ多項式近似
│   └── C1_Tauchen_approximation/
│       └── 5_Tauchen_approximation.ipynb     # 付録C.1:Tauchen 法
├── MATLAB/
│   ├── B1_Chebyshev_polynomials/
│   │   ├── how_to_interpolate_cheb.m         # チェビシェフ近似のメイン
│   │   ├── polygrid.m                        # チェビシェフ格子の生成
│   │   ├── polybas.m                         # チェビシェフ基底関数の評価
│   │   ├── cheb_demo.m                       # デモ用スクリプト
│   │   └── f.m                               # 近似対象の関数
│   ├── B2_Optimization/
│   │   ├── bisection.m                       # 二分法
│   │   ├── gss.m                             # 黄金分割探索法
│   │   └── newton.m                          # ニュートン法
│   └── C1_Tauchen_approximation/
│       ├── tauchen.m                         # Tauchen 法の実装
│       ├── tauchen_demo.m                    # Tauchen 法のデモ
│       ├── tauchen_simulation.m              # Tauchen 近似後のシミュレーション
│       └── Rouwenhorst.m                     # Rouwenhorst 法の実装
└── Python/
    ├── B1_Chebyshev_polynomials/
    │   └── how_to_interpolation_cheb.ipynb
    └── C1_Tauchen_approximation/
        └── 5_Tauchen_approximation.ipynb

各言語のコードについて

Julia & MATLAB & Python

  • 各節の番号に対応したフォルダにコードが格納されています。
  • 付録 B2(最適化アルゴリズム)については Julia・Python のコードはなく、MATLAB のみの収録です。

Notebook・コードの内容

how_to_interpolation_cheb.ipynb ― 付録 B.1:チェビシェフ多項式近似

チェビシェフ多項式を用いた関数近似の手法を解説します。等間隔グリッドと比較してリンギング(Runge 現象)を抑制できる点が特徴です。第4章の TI・Chebyshev コードの基礎となる知識を提供します。

  • チェビシェフ格子(コサイン格子、$T$ のゼロ点)の生成と $[-1, 1]$ への変数変換
  • $n$ 次チェビシェフ多項式 $T_n(x)$ の漸化式による評価
  • チェビシェフ係数の最小二乗推定と近似誤差の確認
  • 次数 $n$ を変えたときの近似精度の変化をプロット(高次多項式での精度向上を確認)
  • 通常の多項式近似(等間隔グリッド)とのRunge 現象の比較

B2_Optimization ― 付録 B.2:最適化アルゴリズム(MATLAB のみ)

数値最適化・求根の基礎的なアルゴリズムを実装したスクリプト群です。

bisection.m ― 二分法:関数のゼロ点を区間を半分ずつ縮小することで探索します。収束は遅いが確実性が高く、初期値の設定が容易です。

gss.m ― 黄金分割探索法(Golden Section Search):単峰性の関数の最大値(最小値)を区間を黄金比で縮小しながら探索します。微分を必要としない効率的な方法です。

newton.m ― ニュートン法:関数のゼロ点を接線の x 切片で繰り返し近似します。収束が二次的で高速ですが、良い初期値が必要です。

5_Tauchen_approximation.ipynb ― 付録 C.1:Tauchen 法

AR(1) 過程 $\log z' = \rho \log z + \varepsilon$($\varepsilon \sim N(0, \sigma^2)$)を有限個の離散状態を持つマルコフ連鎖に近似する Tauchen (1986) 法を実装します。第5章・第7章など、確率的なショックを扱うすべての章で使用される中心的な手法です。

  • グリッドの設定:$[-m\sigma_z, m\sigma_z]$ を $N$ 等分(標準的には $m = 3$
  • 正規分布の CDF を使った各グリッド間の遷移確率の計算
  • 近似の精度:$N$ が大きいほど連続分布に近づくことをシミュレーションで確認
  • Rouwenhorst 法(Rouwenhorst.m):永続性 $\rho$ が高い AR(1) 過程での代替的な離散化手法。Tauchen 法より $\rho \to 1$ の場合に精度が高いとされる
  • 離散化後のマルコフ連鎖のシミュレーションと、元の連続 AR(1) 過程との分布の比較

注意

  • Juliaではいくつかのパッケージを利用しています(PlotsLinearAlgebraDistributions 等)。もし実行できない場合はREPLで]を押したのち、add パッケージ名を実行してインストールしてください。
  • 付録B.1の MATLAB 版では文字コードが UTF-8 のため、Windowsで日本語が正しく表示されない場合があります。how_to_interpolate_cheb_utf8.m がその対応版です。

セットアップ

Julia と Jupyter Notebook のインストール・環境設定については、インストールと環境構築のガイド を参照してください。

About

Appendix (付録)用のコード

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages