β収束(経済成長論)周辺の重要語:
🍰 まずはやさしく
格差が縮まる様子を測る道具です。
地域ごとの差が消えるかを知るために使います。
部活で初心者が先輩に追いつく様子に似ています。
まずは結論と使い方の基本を読みましょう。
この用語は、 統計データ解析・データサイエンスの世界で重要な概念の1つです。 ジャストインタイム型学習では、 必要なときに参照し、 関連概念と合わせて学ぶことで定着を図ります。
この用語の基本的な意味、 数学的定義、 直感的理解について、 上記の3つの概念マップを通じて、 関連する用語と一緒に把握しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import pandas as pd, numpy as np import matplotlib.pyplot as plt import statsmodels.formula.api as smf # SSDSE-B-2026 を読み込み(skiprows=[1] で日本語行を捨て英語コードを列名に。L3221=消費支出(二人以上の世帯)) df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df.columns = [c.strip() for c in df.columns] # 水準変数:消費支出(二人以上の世帯)を生活水準の代理にする col = 'L3221' y0 = df[df['SSDSE-B-2026'] == 2012].set_index('Prefecture')[col].astype(float) yT = df[df['SSDSE-B-2026'] == 2023].set_index('Prefecture')[col].astype(float) T = 2023 - 2012 x = np.log(y0) # 横軸:初期水準(log) g = (np.log(yT) - np.log(y0)) / T # 縦軸:年平均成長率 d = pd.DataFrame({'x': x, 'g': g}).dropna() # 散布図+回帰直線(右下がり = beta 収束) m = smf.ols('g ~ x', data=d).fit() plt.scatter(d['x'], d['g']) plt.plot(d['x'], m.params['Intercept'] + m.params['x'] * d['x'], 'r-') plt.xlabel('log(初期消費支出 2012)'); plt.ylabel('年平均成長率'); plt.show() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import pandas as pd, numpy as np import statsmodels.formula.api as smf df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df.columns = [c.strip() for c in df.columns] col = 'L3221' def beta_sigma(df, col, y_start=2012, y_end=2023): """beta 収束(傾き)と sigma 収束(分散の推移)を一度に返す。""" a = df[df['SSDSE-B-2026'] == y_start].set_index('Prefecture')[col].astype(float) b = df[df['SSDSE-B-2026'] == y_end].set_index('Prefecture')[col].astype(float) T = y_end - y_start d = pd.DataFrame({'log_y0': np.log(a), 'growth': (np.log(b) - np.log(a)) / T}).dropna() m = smf.ols('growth ~ log_y0', data=d).fit() beta = m.params['log_y0'] # beta<0 なら収束 sigma0, sigmaT = np.log(a).std(), np.log(b).std() # sigma 収束の判定材料 return beta, m.pvalues['log_y0'], sigma0, sigmaT beta, pval, s0, sT = beta_sigma(df, col) print(f'beta(傾き)={beta:.4f} p={pval:.3f}') print(f'sigma(2012)={s0:.3f} -> sigma(2023)={sT:.3f} ' + ('sigma収束あり' if sT < s0 else 'sigma収束なし')) |
このページの上にある3つの概念マップ(関係マップ、 包含マップ、 ツリーマップ)でこの概念の位置づけが視覚的に分かります。 関連手法を辿って学習を進めましょう。
統計データ活用コンペティションのSSDSE-B-2026データは、 47都道府県の社会経済データ。 この概念を使って以下のような分析ができます:
| 機能 | Python (pandas) | Python (scipy) |
|---|---|---|
| 要約統計 | df.describe() | stats.describe() |
| 平均 | df.mean() | np.mean() |
| 標準偏差 | df.std() | np.std() |
| 相関 | df.corr() | stats.pearsonr() |
| t検定 | — | stats.ttest_ind() |
| 回帰 | — | stats.linregress() |
| 分布フィッティング | — | stats.norm.fit() |
この概念は、 他の多くの統計概念と密接に関連しています。 ジャストインタイム型学習では、 必要に応じて関連用語へジャンプしながら全体像を構築します。
| グループ | 主要概念 |
|---|---|
| 記述統計 | 平均、 中央値、 最頻値、 分散、 標準偏差、 共分散、 相関係数 |
| 可視化 | ヒストグラム、 散布図、 箱ひげ図、 ヒートマップ |
| 推測統計 | 標本平均、 標準誤差、 信頼区間、 p値、 有意水準 |
| 確率分布 | 正規分布、 t分布、 χ²分布、 F分布、 二項分布 |
| 仮説検定 | t検定、 F検定、 χ²検定、 ノンパラ検定 |
| 回帰 | 単回帰、 重回帰、 OLS、 Ridge、 LASSO |
| 分類 | ロジスティック回帰、 決定木、 SVM、 k-NN |
| 教師なし学習 | クラスタリング、 PCA、 因子分析 |
| 時系列 | ARIMA、 VAR、 指数平滑法、 自己相関 |
| 因果推論 | DiD、 IV、 傾向スコア、 交絡変数 |
| 前処理 | 標準化、 正規化、 欠損値処理、 多重共線性対策 |
| 評価 | R²、 残差、 CV、 RMSE、 効果量 |
🍰 まずはやさしく
データの格差に注目する考え方です。
地域や国の差がどう変わるかを分析します。
都道府県ごとの生活レベルの差で考えます。
この用語が分析の中でどう使われるかを見ます。
論文中に 「β収束・σ収束」として登場する用語。
β収束・σ収束 とは:地域・国家間格差が時間とともに縮小するかを測る。β収束=出発水準と成長率の負の関係、σ収束=分散の縮小。
本ページでは「beta convergence」を扱う。 統計データ分析コンペティション (2026) の教材で、 SSDSE-B-2026 (47 都道府県 × 複数年 × 100 超列) の実データを使った再現可能な学習を目指す。
「beta convergence」は統計・データサイエンスの体系における重要概念のひとつ。 本ページは「定義・直感・数式・実装・落とし穴・関連手法」の 6 視点で構成され、 各視点は独立して読めるが順序通り読むと体系的な理解が得られる。
🍰 まずはやさしく
後から来た人が追い越すイメージです。
低いところからどれだけ伸びるかを確認します。
テストの点数が低い人が急成長する例です。
直感的にどのような仕組みかについて読みます。
β収束は「初期に貧しい地域ほど成長率が高く、 やがて先進地域に追いつく」現象。 SSDSE-B-2026 の都道府県別の消費支出(二人以上の世帯、 L3221)を見ると、 2019 年に低かった県(沖縄・大分)は 2023 年にかけて伸び率が高く、 2019 年に最も高水準だった石川の伸び率はマイナス、 という関係が実際に観察され(2019→2023 の回帰で傾き ≈ -0.096)、 β 収束の証拠となる。
🍰 まずはやさしく
計算で格差を証明する方法です。
正しく収束しているかを数字で出します。
スマホの利用時間の伸び率を計算する例です。
数式を使って定義を詳しく読み解きましょう。
β収束 の核心は「初期所得 log(y_{i,0}) を説明変数、 成長率 (log(y_{i,T}) − log(y_{i,0}))/T を被説明変数」とした横断回帰の傾き β。 β < 0(負の係数)が出れば、 初期所得が低い県ほど成長率が高い = 収束していることを意味します。 SSDSE-B-2026 の実在列(消費支出(二人以上の世帯)など)で 2012→2023 を回帰すると、 都道府県間の格差が縮まっているかを定量化できます(SSDSE-B に県民所得・県内総生産は収録されていないため生活水準の代理列を使う)。
上の数式に出てくる各記号が何を表すかを、 言葉で翻訳します。 1 つずつ自分の言葉で言い換えられるようになると、 論文や教科書のスピードが一気に上がります。
| 記号 | 意味(言葉での説明) |
|---|---|
| $y_{i,0}$ | 地域 $i$ の初期所得・支出 |
| $y_{i,T}$ | $T$ 期後の所得・支出 |
| $\beta$ | 収束速度パラメータ — 正なら β 収束あり |
| $\alpha$ | 定数項(共通の成長率に対応) |
| $\varepsilon_i$ | 地域固有の撹乱項 |
SSDSE-B-2026 は年度列(2012〜2023)を持つパネルなので、 SSDSE 単体で「水準 → 成長率」の収束分析が完結する。 県内総生産・県民所得は SSDSE-B に収録されていないため、 ここでは実在列の「消費支出(二人以上の世帯)」を生活水準の代理とし、 2012 年(初期水準)と 2023 年(終期水準)を取り出して古典的な Barro 回帰でβ収束を検定する。 下のコードは同梱の data/raw/SSDSE-B-2026.csv でそのまま動き、 実測で 傾き ≈ -0.032(p ≈ 0.01、 R² ≈ 0.14) という有意な負の係数=β収束が得られる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import numpy as np import pandas as pd import statsmodels.formula.api as smf # SSDSE-B-2026(skiprows=[1] で英語コードを列名に。SSDSE-B-2026 列=年度 2012〜2023) df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df.columns = [c.strip() for c in df.columns] # 水準変数:消費支出(二人以上の世帯)を所得・生活水準の代理とする col = 'L3221' y0 = df[df['SSDSE-B-2026'] == 2012].set_index('Prefecture')[col].astype(float) # 初期水準 yT = df[df['SSDSE-B-2026'] == 2023].set_index('Prefecture')[col].astype(float) # 終期水準 T = 2023 - 2012 # 観測期間 11 年 reg = pd.DataFrame({'log_y0': np.log(y0)}) reg['growth'] = (np.log(yT) - np.log(y0)) / T # 年平均成長率 reg = reg.dropna() # Barro 回帰:成長率 = alpha + beta * log(初期水準) + e m = smf.ols('growth ~ log_y0', data=reg).fit() print(m.summary()) b = m.params['log_y0'] # 回帰の傾き(< 0 なら beta 収束) lam = -np.log(1 + b * T) / T # 収束速度 lambda print(f'傾き = {b:.4f} (負なら収束)') print(f'収束速度 lambda = {lam:.4f} /年, 半減期 = {np.log(2) / lam:.1f} 年') |
数式だけでは「分かった気になる」だけで終わりがち。 ここで SSDSE-B-2026(教育用標準データセット — 47 都道府県 × 100+ 指標、 2012-2023 年度)の実値を当てはめて、 β収束 の挙動を電卓的に追体験します。
SSDSE-B-2026 は 統計センターの SSDSE 配布ページ から CSV を直接ダウンロードできます。 本サイトでは data/raw/SSDSE-B-2026.csv に配置している前提でコードを書いています。
合成データで初期所得と成長率の関係から β 収束係数を推定する。
| 地域 | log y0 | 成長率 g |
|---|---|---|
| A | 2.0 | 5.0 |
| B | 3.0 | 4.0 |
| C | 4.0 | 3.5 |
| D | 5.0 | 2.5 |
| E | 6.0 | 2.0 |
1 2 3 4 5 6 | import numpy as np x = np.array([2.0, 3.0, 4.0, 5.0, 6.0]) y = np.array([5.0, 4.0, 3.5, 2.5, 2.0]) xm, ym = x.mean(), y.mean() beta = ((x-xm)*(y-ym)).sum() / ((x-xm)**2).sum() print(f"β = {beta:.3f}") |
💬 手計算 (Step 3) -0.75 と Python 出力が完全一致。 β<0 → 貧困地域がキャッチアップ。
1 2 3 | import statsmodels.formula.api as smf m = smf.ols('growth ~ log_y0', data=df).fit(cov_type='HC3') print(m.summary()) |
まず環境をそろえます。 必要なライブラリを入れ、 matplotlib の日本語フォント(Hiragino Sans)を設定し、 SSDSE を encoding='cp932' で読み込んで shape・head()・describe() を確認します。 この後の分析では、 2012 年の水準が低い県ほどその後の成長率が高いか(β 収束)を回帰で確かめるので、 header=1 で日本語列名を使い、 12 年ぶん 564 行すべてを読み込んでいます。 β 収束は「初期値 → 成長率」の回帰の傾きが負かどうかで判定するため、 複数年度が必要です。 エンコーディングを指定し忘れると UnicodeDecodeError で止まるのが最初の関門なので、 ここだけは丸暗記して構いません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # β収束 を SSDSE-B-2026 で確かめる最小コード import pandas as pd import numpy as np # 1) SSDSE-B-2026 を読み込み(skiprows=[1] で日本語行を捨て英語コードを列名に採用) df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) print('shape:', df.shape) # (564, 112) — 47 都道府県 × 12 年度(2012-2023) # 2) 初期年(2012)と終期年(2023)の消費支出(L3221)を取り出す col = 'L3221' # 消費支出(二人以上の世帯) y0 = df[df['SSDSE-B-2026'] == 2012].set_index('Prefecture')[col].astype(float) yT = df[df['SSDSE-B-2026'] == 2023].set_index('Prefecture')[col].astype(float) T = 2023 - 2012 # 3) 横断回帰の材料:初期水準(log) と 年平均成長率 x = np.log(y0) g = (np.log(yT) - np.log(y0)) / T xm, gm = x.mean(), g.mean() # 4) β収束 の本処理:傾き = Σ(x-x̄)(g-ḡ) / Σ(x-x̄)² beta = ((x - xm) * (g - gm)).sum() / ((x - xm) ** 2).sum() print('---- β収束 結果 ----') print('傾き β =', round(beta, 4), '(負なら収束)') # 実測 ≈ -0.032 print('σ(2012) =', round(x.std(), 3), '/ σ(2023) =', round(np.log(yT).std(), 3)) |
うまく動かないときは ①data/raw/SSDSE-B-2026.csv のパス、 ②encoding='cp932'(SSDSE-B は Shift_JIS 系)、 ③1 行目に英数字コード、 2 行目に日本語列名が入る構造なので、 英語コード(例: L3221=消費支出)を列名に使うには skiprows=[1](2 行目だけ除去)が必要、 の 3 点を確認してください。
β収束の直感は「後ろからスタートしたランナーほど速く走り、 先頭に追いつく」というキャッチアップ効果です。 資本の限界生産性逓減(Solow モデル)の下では、 水準が低い地域ほど成長の余地が大きい。 ここでは (1) SSDSE-B-2026 の実測データ(消費支出 L3221、 2012→2023、 47 都道府県)の散布図と、 (2) β 係数を自分で動かせる仮想シミュレーションの 2 つで、 この直感を手で確かめます。
点にマウスを重ねる(スマホはタップ)と県名と実測値が表示されます。 横軸は 2012 年の消費支出(二人以上の世帯、 L3221)の対数、 縦軸は 2012→2023 の年平均成長率 $(\ln y_{2023} - \ln y_{2012})/11$。 右下がりの回帰直線=β収束です。
読み方:β̂ < 0 が有意なので「2012 年に消費支出が低かった県ほどその後の伸びが大きい」=β収束あり。 半減期 17.6 年は「平均的な県と定常状態の距離が半分になるまで約 18 年」という意味です。 ところが同じデータで σ(県間ばらつき)は 0.077→0.084 と拡大しています。 つまりβ収束があっても σ収束(格差そのものの縮小)は起きていない——各県に固有ショックが加わり続ければ、 個々のキャッチアップと分布の広がりは両立するのです。 これが「β収束 ≠ σ収束」の実例であり、 β<0 だけを見て「格差は縮小した」と結論する Galton 的な平均回帰の誤謬(測定誤差や一時的ショックだけでも負の傾きは出る)への最大の防御は、 σ の推移を必ず併記することです。
※ここから下は実測ではなく仮想の 6 地域による思考実験です。 β係数スライダーを動かすと、 初期水準が異なる 6 地域の水準 $\ln y$ が毎年 $\Delta \ln y_i = \beta(\ln y_i - \ln y^*) + \text{ショック}$ で更新される軌道を描きます。 β < 0 なら共通の定常状態 $y^*$ へ収束(格差縮小)、 β > 0 なら発散、 β = 0 なら格差は固定されたまま。 ショックスライダーを上げると「β < 0 なのに σ が下げ止まる」=β収束とσ収束の乖離をこの目で確認できます。
観察ポイント:①β = -0.06 前後では軌道が滑らかに束ねられていく(理論半減期 ≈ ln2/(-ln(1+β)) ≈ 11 年)。 ②β を正にすると初期のわずかな差が指数的に拡大する=発散。 ③β < 0 のままショックを大きくすると、 個々の地域は中心へ引き寄せられ続けるのに σ(画面下の推移)はある水準で下げ止まる——実測データで見た「β収束あり・σ収束なし」はまさにこの状態です。
本ページの推定はすべて単回帰(回帰分析)で、 傾きの読み方は回帰係数の一般論そのものです。 発展として、 ①σ収束(各年の横断分散の推移。 本ページ内の実値計算コードで β と同時に算出可能)、 ②条件付きβ収束(人口構造・産業構成などの統制変数を加え、 「各地域が自分自身の定常状態に収束するか」を問う。 SSDSE-B-2026 は 2012-2023 のパネルデータなので固定効果推定に拡張できる)、 ③空間的自己相関(隣県同士の成長率は独立でないため OLS の標準誤差が過小評価される。 Moran's I による診断と空間計量モデルが対処法)の 3 方向があります。 まずは散布図で 2012→2023 以外の期間に変えて、 β̂ がどれほど動くか(頑健性)を試すのが良い演習です。
| 前提条件 | 確認方法 | 対処法 |
|---|---|---|
| 十分な観測期間 (10 年以上) | サンプル年数確認 | パネル化で観測数増加 |
| 構造変化がない | Chow テスト、 break テスト | 期間分割、 ダミー変数 |
| 回帰モデルの関数形が正しい | 残差プロット、 RESET 検定 | 対数変換、 非線形モデル |
| 外れ値が分析を支配しない | ロバスト回帰、 影響度分析 | 外れ値除外、 ロバスト推定量 |
| 独立性 (空間的非依存) | Moran's I 統計量 | 空間計量経済モデル |
| 誤解 | 正しい理解 |
|---|---|
| 「β<0 = 必ず格差縮小」 | β収束は必要条件、 σ収束 (分散縮小) は別。 両者は独立に確認 |
| 「回帰収束効果が一意」 | 統制変数で結果は変わる (絶対 vs 条件付き) |
| 「収束は永続する」 | 構造変化やショックで収束が止まる/逆転することがある |
| 「Galton fallacy は無視可」 | 回帰平均効果で見かけ上の収束が出る場合あり。 慎重解釈必要 |
| 「世界全体で収束」 | クラブ収束の存在 (高所得国群と低所得国群で別々の定常状態) |
都道府県別県民所得 (e-Stat「県民経済計算」1990-2020 年。 SSDSE-B には未収録の外部データ) を用いた先行研究型の β収束分析では、 絶対β収束は弱い負の係数 (β ≈ -0.005、 t 値 -2.1) を示すことが多く、 統計的有意ですが収束速度は遅いと評価されます。 半減期は約 30 年程度で、 「格差は徐々に縮小しているが、 政策介入なしでは大きな変化は望めない」という解釈になります。
| 分析 | β係数 | 解釈 |
|---|---|---|
| 絶対β収束 | -0.005 | 弱い収束、 半減期約 30 年 |
| 条件付きβ収束 (人口統制) | -0.012 | 人口統制でやや強い収束 |
| 条件付きβ収束 (人口 + 産業構造) | -0.020 | 産業特性差を統制すると更に強い |
| σ収束 (年次 SD 変化) | わずか減少 | 所得分散は緩やかに縮小 |
| 期間分割 (1990s vs 2000s) | 時期で変化 | バブル崩壊後に収束加速 |
このケーススタディは「日本国内の地域間所得格差は閉じつつあるが、 そのスピードは緩慢である」という政策含意を導きます。 地方創生施策の効果評価などに直接活用できる枠組みです。
β収束推定は statsmodels で簡単に実装できます。 以下は上のケーススタディと同じ、 先行研究型(e-Stat 県民経済計算 1990-2020。 SSDSE-B には未収録の外部データ)の絶対β収束推定の流れです。
pandas.read_csv で e-Stat 県民経済計算の CSV を読み込みstatsmodels.OLS で成長率 ~ log(初期所得) を回帰これにより、 公的データから現実的な経済成長論の知見が直接導出できます。 学習者は数値の意味を理論と照らし合わせて深く理解できるようになります。
これらの発展は β収束分析の精度を高め、 政策評価により有用な知見を提供できます。 経済学・地域科学を専門にする場合、 これらのトピックの理解は事実上の必須となっています。
β収束は Robert Solow の新古典派成長モデルから理論的に導出されます。 Solow モデルでは、 資本のレベル k が定常状態 k* に近づくほど成長率が逓減するため、 初期資本が低い経済ほど成長率が高くなります。 この理論予測を実証するのが β収束の研究目的です。
具体的には、 Solow モデルの線形化から以下の収束方程式が得られます。
$$ \frac{1}{T}\ln\frac{y_{i,T}}{y_{i,0}} = \alpha - \beta \ln y_{i,0} + \varepsilon_i $$
ここで、 y_{i,t} は地域 i の時点 t での所得、 T は分析期間、 β が収束パラメータです。 β>0 ならば「初期所得が低いほど成長率が高い」という Solow 予測と整合します。 推定された β から、 収束速度 λ = -ln(1 - β·T)/T を計算でき、 これは「定常状態までの距離が毎期どれだけ縮むか」を表します。
典型的な実証研究では、 国際比較で λ ≈ 2-3% (Mankiw-Romer-Weil 1992)、 地域内では λ ≈ 5-10% (Barro-Sala-i-Martin 1992) という値が報告されています。 これは「定常状態からの乖離が毎年 2-10% ずつ縮む」という意味で、 半減期は約 7-35 年に相当します。
β収束分析は 1990 年代以降世界中で実施されており、 地域・期間・統制変数によって結果が大きく異なります。 以下に主要な実証研究結果をまとめます。
| 研究 | 対象 | β値 (絶対) | 半減期 | 主な含意 |
|---|---|---|---|---|
| Barro-Sala-i-Martin (1992) | 米国州 (1880-1988) | -0.02 | 35 年 | 米国州間で安定的収束 |
| Mankiw-Romer-Weil (1992) | 98 ヶ国 (1960-1985) | 非有意 | - | 絶対β収束は世界全体では否定 |
| Sala-i-Martin (1996) | OECD (1950-1990) | -0.02 | 35 年 | OECD 内では収束 |
| 日本: 都道府県 (Shioji) | 47 県 (1950-1990) | -0.03 | 25 年 | 日本の地域収束は速かった |
| EU 地域 (NUTS-2) | 200+ 地域 (1980-2010) | -0.015 | 45 年 | EU 統合政策の効果議論 |
| 中国省レベル | 31 省 (1978-2010) | 時期で変動 | - | 改革開放期と異なるダイナミクス |
📤 この国際的なエビデンスから「同質的なグループ (OECD、 米国州、 日本県) では収束、 異質的グループ (世界全体) では非収束」というクラブ収束仮説が支持されます。 制度・技術へのアクセスが収束の鍵となっています。
β収束分析は地域開発政策の評価にも応用されます。 例えば「地方創生交付金の効果」「特定地域への投資効果」を評価する際、 介入前後で β の変化を観察することで政策効果を定量化できます。
これらの分析を組み合わせることで、 政策決定者は実証データに基づいた地域政策の設計が可能になります。 SSDSE のような公的データセットは、 こうした分析の基盤として極めて有用です。
β収束の有意性検定では、 単純な OLS の t 検定だけでなく、 様々な統計的検定が必要になります。 以下に主要な検定とその使い分けをまとめます。
| 検定 | 目的 | 帰無仮説 | 解釈 |
|---|---|---|---|
| t 検定 (係数の有意性) | β=0 か否か | H0: β=0 | p<0.05 で収束を支持 |
| F 検定 (条件付き β収束) | 統制変数の集合的有意性 | H0: 全係数=0 | p<0.05 で統制変数の重要性 |
| Chow テスト | 構造変化の有無 | H0: β が期間で不変 | 構造変化の検出 |
| Hansen テスト | 空間的自己相関の有無 | H0: 空間的独立 | 空間モデル必要性 |
| Hadri テスト | パネルの定常性 | H0: 全パネル定常 | 非定常パネルの存在 |
| Phillips-Sul log t | クラブ収束 | H0: 全地域収束 | クラブ識別 |
📤 検定の組み合わせで「収束の存在」「収束のタイプ」「収束クラブの構造」を段階的に明らかにできます。 単一の検定結果だけで結論を下すのは危険で、 複数手法の triangulation が推奨されます。
マクロレベルの β収束を、 ミクロレベルの企業・家計の意思決定から導出する研究も進んでいます。 これは「マクロ収束はミクロ的に何が起きているのか」を明らかにする深い学術問題です。
これらの仮説は相互に排他的ではなく、 実際には複数のメカニズムが同時に働いていると考えられます。 実証研究では、 これらを識別するために instrumental variable approach や DID などの因果推論手法と組み合わせて分析が行われます。
β収束分析は、 経済成長論を中心に多くの関連分野と接続しています。 学際的に学ぶことで理解が深まります。
| 関連分野 | テーマ | 主要手法 |
|---|---|---|
| 経済成長論 | Solow モデル、 内生的成長理論 | 回帰分析、 校正 |
| 地域経済学 | 地域格差、 都市・農村格差 | 空間計量経済モデル |
| 開発経済学 | 国際格差、 貧困削減 | パネル分析、 RCT |
| 公共経済学 | 財政政策、 再分配 | DID、 IV |
| 国際経済学 | 貿易・FDI と成長 | 重力モデル |
| 所得分配論 | 格差の動学 | 分布動態分析 |
📤 β収束はこれらの分野の交差点に位置し、 マクロ経済学・統計学・空間分析を統合的に扱う格好の練習材料となります。
β収束分析は学術研究だけでなく、 実務でも重要な価値があります。 以下のような現場で活用されています。
これらの実務では、 単純な β係数だけでなく、 半減期や政策含意の解釈が重要になります。 アカデミックな分析を実務に翻訳できる人材が、 政策コンサルティングや国際開発の現場で高く評価されます。
収束概念の歴史を辿ると、 経済成長論の発展史と密接に結びついています。 主要な節目を理解することで、 現代の研究が何を引き継いでいるかが見えてきます。
このように β収束分析は約 30 年の歴史を持つ研究領域であり、 経済学の中でも実証分析が活発な分野の一つです。 学習者は古典的研究 (Solow、 Barro-Sala-i-Martin) と最新の発展を併せて学ぶことで、 体系的な理解が得られます。
世界銀行のデータベース (World Development Indicators) を用いた近年の研究では、 1980-2020 年の世界全体で見ると β絶対収束は弱いものの存在することが確認されています。 ただし、 サブグループ別に見るとパターンが大きく異なります。
| グループ | 収束 (β絶対) | 主な要因 |
|---|---|---|
| 全世界 (160+ ヶ国) | 弱く負 | 中国・インドなどの高成長 |
| OECD (38 ヶ国) | 強く負 | 技術伝播、 制度同調 |
| EU 27 ヶ国 | 中程度に負 | 構造基金、 統合効果 |
| サブサハラアフリカ | ほぼゼロ or 正 | 制度・紛争・気候の影響 |
| 東アジア | 負 | 急速な工業化・教育投資 |
| ラテンアメリカ | 弱く負 (期間で変動) | マクロ的不安定性 |
📤 これらのエビデンスから、 収束パターンは「制度の質」「政策の継続性」「外的ショック」に強く依存することが分かります。 単純な「全世界で収束する」というナイーブな見解は支持されません。
β収束分析は成熟した分野ですが、 まだ多くの研究機会があります。 以下に有望な研究方向を示します。
これらの新しい研究機会は、 若手研究者にとって魅力的なキャリアパスを提供します。 統計分析の基礎と経済学の知識を組み合わせた人材が求められています。
β収束分析には、 1990 年代から繰り返し批判が提起されており、 これらに対する反論を学ぶことで分析の本質的限界を理解できます。
| 主要批判 | 論点 | 主流の反論 |
|---|---|---|
| Galton fallacy | β<0 は単なる回帰平均効果 | σ収束も同時に確認、 パネルで対処 |
| 内生性問題 | 初期所得が成長率と内生的 | IV、 GMM 推定で対応 |
| 不均一分散 | 標準誤差が信頼不能 | 頑健標準誤差、 ブートストラップ |
| 構造変化の無視 | 長期間で β が変化 | サンプル分割、 時変パラメータモデル |
| 単一定常状態の仮定 | 多重均衡の可能性 | 条件付きβ収束、 クラブ収束 |
| 空間的依存の無視 | 隣接地域の影響 | 空間計量経済モデル |
📤 これらの批判はそれぞれ正当な問題提起であり、 主流の対応も洗練されてきました。 現代的な β収束分析では、 これらの批判に応えた頑健な分析が求められます。
最先端の研究では、 機械学習・因果推論・テキスト解析などの新しい手法が β収束分析に取り入れられています。 これらは伝統的手法を補完し、 新しい知見を生み出しています。
これらのフロンティア研究は、 経済学・統計学・データサイエンス・物理学などの学際的協働を必要とします。 多様な分野のスキルセットを持つ研究者にとって、 非常にやりがいのある研究領域となっています。
β収束分析の結果を学術論文や政策レポートにまとめる際、 以下の要素を含めると読み手に理解しやすい構成になります。
レポート全体を通じて、 数学的厳密性と読み手の理解しやすさのバランスを取ることが重要です。 査読論文では前者、 政策レポートでは後者を重視するなど、 読者層に応じた書き分けが必要になります。
独学で β収束分析を学習する場合、 以下のオンラインリソースが有用です。 順を追って学習することで効率的に習得できます。
これらのリソースを組み合わせて学習すれば、 大学院レベルの分析が独学で可能になります。 公開されているデータと実装例を使い、 自分の手で分析を再現することが最も効果的な学習方法です。
β収束分析の Python 実装は、 statsmodels と pandas の組み合わせで簡潔に書けます。 以下のような典型コードフローを覚えておくと、 様々な分析に応用可能です。
pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])reg['log_y0'] = np.log(y2012['L3221'])reg['growth'] = (np.log(y2023['L3221']) - np.log(y2012['L3221'])) / 11model = sm.OLS(reg['growth'], sm.add_constant(reg['log_y0'])).fit()print(model.summary()) で係数・標準誤差・p 値・R²を一括表示model_robust = model.get_robustcov_results('HC3')sns.regplot(x='log_y0', y='growth', data=reg) で可視化これらの基本コードを身につけたら、 統制変数の追加、 サブサンプル分析、 IV 推定、 GMM 推定などへ発展していけます。 statsmodels と linearmodels (Pythonライブラリ) の習得が β収束分析の Python ベースの実装力を大きく高めてくれます。
β収束分析は、 単なる統計手法ではなく、 「経済の長期的ダイナミクスを理解する」という経済学の根本問題に直接答えるツールです。 Solow モデルから始まり、 内生的成長理論、 制度経済学、 開発経済学などの広範な理論と実証研究を結びつける接続点になっています。
本記事を通じて、 β収束の理論的基礎、 実証手法、 政策応用、 批判と反論、 そして発展トピックまでの体系的な理解が得られたはずです。 ここからさらに深く学ぶには、 自分自身でデータを分析し、 結果を解釈し、 他者に説明するという実践を繰り返すことが何よりも重要です。 SSDSE-B-2026 や Penn World Table を活用すれば、 すぐに分析を始められます。
β収束分析は経済学・統計学・地域科学の交差点に位置し、 実証マクロ経済学の中核的なテーマの一つです。 ノーベル経済学賞受賞者の研究との関連も深く、 例えば Robert Solow (1987 年受賞)、 Paul Romer (2018 年受賞) などの理論的貢献が β収束分析の基盤となっています。 また、 実証研究の発展には Robert Barro、 Xavier Sala-i-Martin の貢献が大きく、 1990 年代以降の数千の論文がこれらの初期研究を起点に展開されています。
β収束分析は、 経済学を学ぶ全ての人にとって、 理論と実証の接続を経験できる絶好の教材です。 数式・データ・統計手法・政策含意・批判的議論などのスキルを総合的に磨くことができます。 学習者の皆さんは、 ぜひこのテーマを起点に、 経済学・統計学・データサイエンスへの深い理解を築いていってください。 そして、 自身の研究や実務において、 厳密かつ誠実なデータ分析を通じて、 社会に貢献できる人材を目指してほしいと願っています。 特に日本のように、 都道府県間の経済格差・人口減少・地方創生といった現実的課題に直面している社会では、 β収束分析の知見が政策設計に直接活かされる場面が数多くあります。 公的データを使い、 適切な手法を選び、 結果を率直に解釈し、 政策提言まで結びつけるという一連のスキルは、 統計学を学ぶ価値を最も実感できる体験となるはずです。 そして、 そうした分析を継続的に行い、 社会に発信していくことで、 自身も成長しつつ、 社会全体のエビデンスに基づく意思決定文化を育てていくことができます。 これこそが、 統計家・経済学者・データサイエンティストの本来の社会的使命です。 一人ひとりの分析が積み重なって、 社会の理解と選択の質を底上げしていきます。 その小さくも確実な一歩を、 ぜひ β収束分析から始めてみてください。 そこから広がる学びの楽しさと、 社会への貢献の喜びが、 きっとあなたの将来を豊かにしてくれるはずです。 統計分析が社会を変える、 その実感を体験してください。
「初期所得が高いほど成長率が低い」というβ収束の検定式は、 ノイズだけのデータでも統計的に有意な負の係数を生む。 これは Galton が身長で観察した「平均回帰」と同じ統計的アーチファクト。 本物の経済学的収束を主張するにはσ収束(横断分布の分散縮小)を併せて確認し、 さらに測定誤差の分散がノイズに対して小さいことを示す必要がある。 Friedman, Quah らがこの問題を厳しく指摘してきた。
隣接する都道府県は経済構造が似ており、 成長率も空間的に相関する。 通常の OLS は誤差項が独立と仮定するので、 標準誤差が過小評価され t 統計量が膨らむ。 PySAL や spreg で空間ラグモデル(SAR)や空間誤差モデル(SEM)を当てはめ、 Moran's I で残差の空間自己相関を診断する。 都道府県・市町村レベルの収束分析では事実上必須。
「すべての地域が同じ定常状態に向かう」は強い仮定。 実際には「先進地域クラブ」「中位地域クラブ」「停滞地域クラブ」のように複数の収束先がある可能性が高い(Quah の bimodal distribution)。 Phillips-Sul のクラブ収束検定や、 finite mixture モデルでクラブを推定する。 SSDSE では「東京・神奈川・大阪・愛知」と「人口減少地方」が別クラブを形成しているように見える。
初期所得 y_0 に測定誤差があると、 説明変数の分散が膨らみ係数が原点に向かってバイアス(減衰バイアス、 attenuation bias)する。 これは「収束が見えにくくなる」方向のバイアス。 操作変数法(IV)で対処するのが正攻法だが、 良い IV が見つかりにくい。 別の年の所得を IV にする、 もしくは MIMIC モデルで潜在変数として扱う。
国際比較では「全期間データが取れる国」だけを残すと、 政情不安定な低所得国(崩壊・分裂)が除外され、 残るのは安定して成長した国だけ。 結果として「収束した」と見える事象が、 単なるサンプル選択の産物の可能性がある。 47 都道府県分析では消滅自治体がないので問題にならないが、 国際比較や市町村合併データでは注意。
複数年のパネルデータでβ収束を推定するとき、 単純な OLS は各都道府県の「固有の定常状態」を無視する。 固定効果(FE)パネル推定(linearmodels の PanelOLS)や、 GMM 推定(Arellano-Bond、 Blundell-Bond)を使う。 これらは初期所得の内生性(過去の所得が誤差項と相関する Nickell bias)を補正する。 単純な Barro 回帰は「点推定の方向感」を見るに留め、 数値の解釈は慎重に。
β収束 を SSDSE-B-2026 の 47 都道府県データで分析する際に頻発する落とし穴を整理します。 σ収束との混同、 Galton 誤謬(平均回帰の見せかけ)、 短期間(2-3 年)での誤った収束判定など。 経済成長論の代表的な解析手法だけに、 誤用すると政策提言の根拠を歪めるリスクがあります。
β収束のイメージは「後ろからスタートしたランナーほど速く走る」ですが、 なぜそうなるのかを一段深く押さえると誤用を防げます。 新古典派(Solow)成長モデルでは資本の限界生産性が逓減するため、 資本・所得の水準が低い地域ほど 1 単位の投資が生む成長が大きく、 やがて共通の定常状態 $y^*$ に近づきます。 初期水準 $\ln y_0$ が低いほど成長率が高い(=散布図が右下がり)——これが「β収束あり」の見た目です。
前の「⚠️ 落とし穴」セクションを補い、 特に誤った政策結論に直結しやすい論点を掘り下げます。 いずれも実測データや検証で確かめられる具体的な話です。
初期値でソートして成長率を見ると、 純粋な測定誤差やランダムな一時ショックだけでも右下がりの傾き(見かけのβ収束)が出ます。 これは回帰直線が本質的に持つ平均への回帰(今年たまたま高かった県は来年平均に戻りやすい)で、 Francis Galton の身長研究に由来する古典的な錯覚です。 「$\beta<0$ だから格差が縮んだ」と即断するのは危険。 防御は (a) σ収束を併記する、 (b) 測定誤差による減衰バイアスを意識する、 (c) 初期値を別データ・別期間で測り直す、 の 3 点です。
σ収束の有無は始点・終点の選び方に強く依存します。 実測(L3221 の $\ln y$ 標準偏差)で確かめると:
| 年 | 2012 | 2019 | 2022 | 2023 |
|---|---|---|---|---|
| σ(log 標準偏差) | 0.077 | 0.094 | 0.067 | 0.084 |
2012 を始点にとると σ は 0.077→0.084 と拡大(σ収束なし)ですが、 2019 を始点にとると 0.094→0.084 と縮小(σ収束あり)。 同様に β も 2012→2023 で $-0.032$、 2019→2023 で $-0.096$ と大きさが変わります(いずれも実測、 有意な負)。 σ は単調ではなく 2019 前後にピーク・2022 に急縮というジグザグを描くため、 単一の始点・終点だけで「収束した/しない」を語らず、 複数期間で頑健性を確認してください。
説明変数である初期水準 $\ln y_0$ に測定誤差が混じると、 傾きは 0 方向へ引っ張られる減衰バイアスが生じます。 さらに $\ln y_0$ は誤差項と相関しやすく(過去の一時ショックが初期値と成長率の両方に効く)、 パネルで固定効果を入れるとNickell バイアスが出ます。 対処は操作変数(IV)、 期首を数年平均でならす、 動学パネル GMM(Arellano-Bond)など。 単純 Barro 回帰は「方向感」までと割り切ります。
絶対β収束が見えなくても、 産業構造や人口動態などの交絡を統制すると条件付きβ収束が現れることがあります(逆も然り)。 これは「どの定常状態を仮定するか」を統制変数が決めるため。 統制変数は理論的根拠のあるものに限り、 むやみに投入して符号を追うデータマイニング的な回帰は見せかけの関係を招きます。
各地域の $\ln y$ が非定常(単位根を持つ)なら、 定常状態への収束という前提そのものが崩れ、 横断回帰の傾きは意味を失います。 パネル単位根検定(Im-Pesaran-Shin など)で定常性を確認し、 系列相関にも注意します。 見せかけの回帰(spurious regression)を避けるための基本チェックです。
都道府県データは隣接県同士で成長率が似る空間的自己相関を持ち、 OLS の独立性仮定が破れて標準誤差が過小評価されます(=有意に見えすぎる)。 Moran's I で診断し、 空間ラグ/空間誤差モデル(PySAL)で対処します。 47 県という小標本では、 この過小評価が「β有意」の結論を脆くします。
β収束の基本を押さえたら、 以下の方向へ広げると分析が一段深くなります。 各項目は SSDSE-B-2026 のパネル構造(2012-2023)で実際に試せます。
| 発展テーマ | 何を足すか / 一言メモ |
|---|---|
| 絶対 vs 条件付きβ収束 | 統制変数の有無を切り替え、 定常状態が共通か個別かを問う。 本ページ「隣接手法」に条件付き版の実測コードあり |
| σ収束 | 各年の 分散・標準偏差の推移を追う。 β と必ず併走報告。 ジニ係数・ローレンツ曲線で格差指標を補完 |
| 成長回帰(Barro 回帰) | $g_i=\alpha-\beta\ln y_{i,0}+X_i\gamma$。 重回帰で統制変数を拡張し収束速度 λ・半減期を算出 |
| クラブ収束 | 高水準群・低水準群が別々の定常状態へ。 Phillips-Sul の log t 検定、 分布動学(Quah)で多峰化を検出 |
| 空間計量 | Moran's I → 空間ラグ/空間誤差モデル。 隣県の波及を明示的にモデル化 |
| パネル・動学推定 | パネルデータで 固定効果/変量効果、 内生性には Arellano-Bond GMM |
| 平均回帰との関係 | Galton の平均回帰は「見かけのβ収束」の源。 σ収束・IV・測定誤差補正で本物と区別 |
β収束の理解を支える用語ページへのリンク集です(いずれも本サイト内に実在)。 概念を横につないで学ぶと定着が早まります。
補足:Solow 成長モデル・σ収束・条件付きβ収束・クラブ収束・空間計量(PySAL)・Moran's I・Phillips-Sul 検定・Arellano-Bond GMM は本サイトに独立ページが無いため、 テキストとして示しています。
β収束 (β-convergence) は新古典派成長理論の Solow-Swan モデルから派生した実証指標で、 「初期所得 ln Y₀ が低い地域ほど成長率 (ln Y_T − ln Y_0)/T が高い」という負の回帰係数 β < 0 で経済の収束を判定する。 47 都道府県の県民所得や OECD 国別 GDP のパネルで頻出。 周辺概念は (a) 上位の成長会計・新古典派モデル、 (b) 並列のσ収束 (所得分散の縮小)・クラブ収束 (多重均衡)・分布動態的収束 (Quah)、 (c) 前段のパネルデータ・対数変換・初期値依存性、 (d) 推定手法のOLS・固定効果モデル・ベイズ階層モデル、 (e) 落とし穴のGalton fallacy (平均回帰との混同)・測定誤差バイアス・omitted variable bias に分かれる。 以下で図解と関係マップで体系を可視化する。
β収束 (β-convergence) は経済成長論における重要概念で、 「初期所得が低い地域ほど成長率が高い」という負の相関を 横軸: 初期所得 × 縦軸: 成長率の散布図で確認します。 負の傾き (β<0) が出れば収束しているという解釈です。
図: 散布図+回帰直線の読み方の例(SSDSE-B-2026: 総人口×一般診療所数、 2023 年、 r=0.972)。 β収束分析ではこれと同じ形式で横軸に log 初期水準、 縦軸に成長率をとり、 右下がり(負の傾き)なら収束のサイン。
図: 単回帰直線と 95% 信頼区間の例(SSDSE-B-2026)。 β収束分析ではこの回帰直線の傾きにあたる係数が負なら収束、 正なら発散。
図: 相関の強さが異なる 4 つの散布図例(SSDSE-B-2026、 2023 年)。 β収束の検定も本質は「初期水準と成長率の負の相関」が有意かどうかの確認である。
| 概念 | 定義 | 指標 | 解釈 |
|---|---|---|---|
| β収束 (絶対) | 初期低所得 → 高成長 | 回帰係数 β<0 | 全地域が同じ定常状態へ収束 |
| β収束 (条件付き) | 地域特性統制後の収束 | 統制変数追加後の β<0 | 各地域の固有定常状態へ収束 |
| σ収束 | 所得分散が時間的に縮小 | 標準偏差の時間変化 | 所得格差そのものが縮小 |
| クラブ収束 | 特定グループ内のみで収束 | グループ別 β 推定 | 多重均衡の存在 |
| 分布動態的収束 | 分布形状の時間変化 | Quah のマルコフ遷移行列 | 長期定常分布の形状 |
📤 β収束は必要条件、 σ収束は十分条件と捉えるとよい。 β<0 でもσ収束しない例 (例: 大きなショックで分散拡大) もあるため、 両方確認することが推奨される。
β収束・σ収束 がデータサイエンスの体系の中でどこに位置するかを、 3つの異なる視点で可視化します。 同じ情報でも見方を変えると気付きが変わります。
🌐 統計・データサイエンス › 関連・回帰 › 回帰 › β収束・σ収束 (β/σ Convergence) — 経済成長の収束を回帰で検証する指標
中心に β収束・σ収束 を置き、 そこから 重回帰・最小二乗法・単回帰・Ridge回帰 計 4 個の用語へ、 前提・兄弟・発展形といった関係を矢印で結んでいます。 線がどちら向きかを見れば、 先に読むべき用語とあとから読む用語が分かります。 ノードはドラッグで動かせ、 ホイールでズーム、 クリックでその用語のページへ遷移します。
大きな円が小さな円を包含する Circle Packing 図。 「β収束・σ収束」は緑色でハイライト。
長方形を入れ子に分割した Treemap 図。 各分野の規模感を面積で比較。 「β収束・σ収束」は緑色でハイライト。
| マップ | 分かること | こんな時に見る |
|---|---|---|
| 🔗 関係マップ | 手法間の横の関係(前提→発展→応用) | 「次に何を学べばよい?」 学習順序の判断 |
| ⭕ 包含マップ | 分類体系の入れ子構造(上位⊃下位) | 「この手法はどんなジャンルに属する?」 |
| 🌳 ツリーマップ | 分野の規模比較(面積=ボリューム) | 「データサイエンス全体の俯瞰像」 |
💡 3 つの図は同じ位置関係を別の角度から描いています。 関係マップは β収束・σ収束 (β/σ Convergence) の隣に何が並ぶかを、 包含マップとツリーマップは 統計・データサイエンス → 回帰 → β収束・σ収束 (β/σ Convergence) という入れ子の位置を示します。 「回帰には他に何があったか」を思い出したいときは包含マップを、 「次に何を読むか」を決めたいときは関係マップを開いてください。
β 収束は「初期所得が低い地域ほど成長率が高く、 やがて先進地域に追いつく」仮説の回帰検定で、 σ 収束は地域間分散の縮小傾向で、 マクロ経済学の地域分析の中核。
SSDSE-B-2026 で 47 都道府県の消費支出を 2012→2023 で計算すると傾き ≈ -0.032 (収束速度 λ≈0.039、 半減期約 18 年) が得られ、 「地方は東京に何年で追いつくか」という政策的問いに数値で答えられる。
「beta convergence」を含む手法選択は、 データの性質・分析目的・運用制約の 3 軸で決まる。 以下に典型シナリオと対応する手法の組合せを示す。
| シナリオ | 重視する観点 | 候補手法 |
|---|---|---|
| データが大規模 (n が多い、 高次元) | 計算コスト / メモリ / 並列化が必要 | σ収束 等 |
| 外れ値が多い / ノイズあり | 頑健性 / 外れ値除去 / 中央値ベース | 条件付きβ収束 等 |
| 解釈性を重視する | 線形 / 木構造 / ルールベース | 空間計量 等 |
| 予測精度を最優先する | アンサンブル / ハイパラ調整 / 交差検証 | パネルデータ分析 等 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # ── この抜粋で使うデータを用意します(β 収束の回帰用データ)── # 起点 2012 年・終点 2023 年の消費支出(L3221)から # log_y0 = log(起点値)、log_y1 = log(終点値)、growth = 年平均成長率 # を作る。あわせて条件付き収束の説明変数も足す。 import numpy as np import pandas as pd import statsmodels.formula.api as smf _raw = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) _y0 = _raw[_raw['SSDSE-B-2026'] == 2012].set_index('Prefecture') _y1 = _raw[_raw['SSDSE-B-2026'] == 2023].set_index('Prefecture') T = 2023 - 2012 df = pd.DataFrame({ 'log_y0': np.log(_y0['L3221']), 'log_y1': np.log(_y1['L3221']), 'A1101': _y1['A1101'], 'A1303': _y1['A1303'], 'G7101': _y1['G7101'], }) df['growth'] = (df['log_y1'] - df['log_y0']) / T df['log_pop'] = np.log(df['A1101']) # 総人口 df['log_hotel'] = np.log(df['G7101']) # 延べ宿泊者数 df['old_share'] = df['A1303'] / df['A1101'] # 高齢化率(高齢人口/総人口) m_cond = smf.ols('growth ~ log_y0 + log_pop + log_hotel + old_share', data=df).fit() print(m_cond.summary()) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import numpy as np import pandas as pd # ── 収束回帰に使うパネルを SSDSE-B-2026 から作る ── _d = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df_panel = pd.DataFrame({ 'pref': _d['Prefecture'], 'year': _d['SSDSE-B-2026'], 'log_y': np.log(_d['L3221'].astype(float)), # 消費支出の対数 'log_pop': np.log(_d['A1101'].astype(float)), # 総人口の対数 }).sort_values(['pref', 'year']) df_panel['L1_log_y'] = df_panel.groupby('pref')['log_y'].shift(1) # 1 期ラグ df_panel = df_panel.dropna() import linearmodels.panel as lm panel = df_panel.set_index(['pref', 'year']) mod = lm.PanelOLS.from_formula( 'log_y ~ 1 + L1_log_y + log_pop + EntityEffects', data=panel) res = mod.fit(cov_type='clustered', cluster_entity=True) print(res) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # ── この抜粋で使うデータを用意します(β 収束の回帰用データ)── # 起点 2012 年・終点 2023 年の消費支出(L3221)から # log_y0 = log(起点値)、log_y1 = log(終点値)、growth = 年平均成長率 # を作る。あわせて条件付き収束の説明変数も足す。 import numpy as np import pandas as pd import statsmodels.formula.api as smf _raw = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) _y0 = _raw[_raw['SSDSE-B-2026'] == 2012].set_index('Prefecture') _y1 = _raw[_raw['SSDSE-B-2026'] == 2023].set_index('Prefecture') T = 2023 - 2012 df = pd.DataFrame({ 'log_y0': np.log(_y0['L3221']), 'log_y1': np.log(_y1['L3221']), 'A1101': _y1['A1101'], 'A1303': _y1['A1303'], 'G7101': _y1['G7101'], }) df['growth'] = (df['log_y1'] - df['log_y0']) / T # 各年の log 所得の標準偏差をプロット(実分析では年次データ必須) sigma_0 = df['log_y0'].std() sigma_1 = df['log_y1'].std() print(f'σ(t=0) = {sigma_0:.3f}') print(f'σ(t=T) = {sigma_1:.3f}') print('σ収束は{}見られる'.format('' if sigma_1 < sigma_0 else 'ほとんど')) |
1 2 3 4 | # linearmodels には組込み GMM が無いので、 R の plm/pgmm 経由、 もしくは # 手書きの差分 GMM(statsmodels.sandbox.regression.gmm.IVGMM)を使う from statsmodels.sandbox.regression.gmm import IVGMM # ※ 専門的になるので詳細は省略 |
1 2 3 4 5 6 7 8 9 | import libpysal from spreg import ML_Lag, ML_Error, OLS as spOLS # 隣接行列(要 GeoDataFrame) W = libpysal.weights.Queen.from_dataframe(gdf) W.transform = 'r' # OLS と空間ラグの比較 ols = spOLS(y, X, w=W, spat_diag=True) slag = ML_Lag(y, X, w=W) print(ols.summary); print(slag.summary) |
1 2 3 | from esda.moran import Moran mi = Moran(res.resid, W) print(f"Moran's I = {mi.I:.3f}, p = {mi.p_sim:.4f}") |
1 2 3 4 5 6 7 8 9 10 | import numpy as np np.random.seed(0) # 実行のたびに同じ結果が出るようにする rng = np.random.RandomState(0) betas = [] for _ in range(2000): idx = rng.choice(len(df), len(df), replace=True) m_b = smf.ols('growth ~ log_y0', data=df.iloc[idx]).fit() betas.append(-np.log(1 + m_b.params['log_y0']*T)/T) print(f'β 95%CI = [{np.percentile(betas,2.5):.4f}, ' f'{np.percentile(betas,97.5):.4f}]') |