🕌

Qiita記事"Python × 公開経済データで学ぶ マクロ経済学 入門(5):マクロ経済指標から見るデフレギャップの時系列的分析(200

に公開

概要(要約)

この記事は「Python × 公開経済データで学ぶマクロ経済学」シリーズの第5回で、CPI(消費者物価指数)を使ってインフレ率を計算・比較する実務的な手順を示しています。World Bank(wbdata)を使ったデータ取得例、CPI から自分でインフレ率を計算する方法、World Bank が提供する既製のインフレ率との比較プロットなどを丁寧に解説しています(投稿日:2025-08-17)。(Qiita)

この記事の流れ(ポイント)

  • 公開データの取得:wbdata を使い、各種マクロ指標(GDP、消費、投資、CPI 等)を年次で取得する例を示しています。(Qiita)
  • 指標の選び方:記事内で "FP.CPI.TOTL.ZG"(World Bank が算出した年次インフレ率)と、"FP.CPI.TOTL"CPI の水準)の違いを説明し、学習目的なら CPI 水準を取って自分で pct_change() でインフレ率を計算することを推奨しています。(Qiita)
  • インフレ率の算出コード:pct_change() によるパーセンテージ変化でインフレ率(%)を計算する関数例を示しています。(Qiita)
  • 可視化:World Bank の報告(FP.CPI.TOTL.ZG)と自前計算(CPI から算出)を同じグラフで比較表示するプロット例を提示しています。(Qiita)

重要コードの中身(読み替えとポイント)

  1. データ取得関数(記事中の例)

    • get_gdp_and_related_data(country_code, start_year, end_year) のような関数で wbdata.get_dataframe(...) を用い、年次(freq="Y")で複数指標をループ取得して結合しています。取得後は dateYear に変換して集約しています。この記事のコード例そのものが手順の雛形です。(Qiita)
  2. インフレ率の“算出方法”

    • 数式は記事に明記されています:

      \text{インフレ率}_t = \frac{\text{CPI}_t - \text{CPI}_{t-1}}{\text{CPI}_{t-1}} \times 100

      実装では df["CPI"].pct_change() * 100 を使う例が示されています。(Qiita)

  3. World Bank の既成データ vs. 自前計算

    • FP.CPI.TOTL.ZG は World Bank が算出した年次のインフレ率(そのまま使える)で、FP.CPI.TOTL は CPI レベル(基準年=2010 など)なので、学習目的や比較のためには CPI を取って自分で率を計算する方が学びになります(記事中でその差と使い分けを説明)。(Qiita)
  4. 比較プロットの実装例

    • plot_inflation_comparison(df) の例で、World Bank ReportedInflation_Rate)と Calculated from CPICalculated_Inflation)を重ねて描くコードが示され、視覚的に差を見る方法を教えています。(Qiita)

「2000年以前 / 2001年以降」に分ける件

記事の流れ・会話ログの中で、ユーザ(記事内のやり取り)から「2000年以前と2001年以降に分けて、各時期で各国の CPI の平均とインフレ率の平均を計算して pandas DataFrame で出力する関数を書いてほしい」という要望が出ており、記事(会話)ではその実装へ進む意図が確認されています。つまり期間分割→各国ごとの平均値算出→DataFrame 出力という要件は記事内で明確に提示されています。(Qiita)

実務上の注意点(記事からの指摘+補足)

  • データ欠損(NaN)処理:年によってデータが欠ける国があるため、平均や pct_change() を取る前に dropna()/補間 or 条件付き集計を考える必要があります。(記事は欠損の例示よりは手順に重点がありますが、実運用では必須の処理です。)(Qiita)
  • 頻度の違い(月次 vs 年次):記事は年次データ(freq="Y")を前提に書かれていますが、月次データが利用可能なら季節調整や月次→年次変換の扱いに注意が必要です。(Qiita)
  • CPI の基準年:World Bank の CPI(FP.CPI.TOTL)は基準年を持つ指数(記事に「基準年 = 2010」などの注記あり)なので、絶対値の解釈と年次変化(率)の解釈を分けて扱います。(Qiita)
  • 報告値と計算値の差:World Bank が出す FP.CPI.TOTL.ZG(報告インフレ率)と、CPI から自分で計算したインフレ率は集計方法や欠損処理の差で一致しないことがあり、比較時は差の原因を確認すること。(Qiita)

改良案・拡張案(実務で役立つ提案)

  • 国ごとに年次被覆が異なるので、対象期間(2000 年以前・以降)で利用可能な年数が充分かどうかをチェックしてから平均を取る。
  • 平均を出す際は単純平均だけでなく、**加重平均(人口等で重み付け)**を検討すると比較がより意味あるものになる。
  • 変化の統計的有意性を見たい場合は、t 検定やブートストラップで 2000 年以前と以降の差を検定する。
  • 可視化は期間ごとの箱ひげ図やヒートマップ(国×期間)にすると比較がわかりやすい。

まとめ・次のアクション(私からの提案)

記事は「データ取得 → CPI の水準をとる → 自前でインフレ率を計算 → World Bank の報告と比較」という学習に適したワークフローを提示しています。もしよければ、次のどちらかをすぐに作ります(どちらも Colab / Databricks で動くように書けます):

  1. (実装)2000 年以前 / 2001 年以降で分け、各国ごとに CPI の平均と(CPI から計算した)インフレ率の平均を返す pandas.DataFrame を出力する関数。欠損処理・最低必要年数のチェック込み。
  2. 上の関数を使って生成した結果を可視化するノートブック形式のサンプル(比較プロット・箱ひげ図・ヒートマップ)。

どちらを先に出しましょうか?要望がなければ(1)をそのまま作ってコード付きで提示します。

Discussion