所得水準の代理指標として「消費支出(万円/月)」を用い、保健医療費との散布図を作成した。47都道府県全て(欠損除く46)にラベルを付け、地域ブロック別色分けで地理的パターンも確認できる。
📌 この散布図の読み方
- このグラフは
- 横軸(x)と縦軸(y)に2変数を取り、各都道府県(または自治体)を点で描いたグラフ。
- 読み方
- 点の並びに右上がりの傾向があれば正の相関、右下がりなら負の相関。点が直線に近いほど相関が強い。
- なぜそう解釈できるか
- 回帰直線(赤線など)の傾きが回帰係数に対応する。直線から大きく外れた点が外れ値で、特異な地域を示す。
Pearson相関の結果
消費支出と保健医療費の相関係数は r = 0.605(p < 0.001)。中〜強程度の有意な正の相関が確認された。所得水準が高い都道府県ほど保健医療への支出も高い傾向がある。これはヘルスケア需要の所得弾力性が正であることと整合的。
DS LEARNING POINT 2
Pearson相関とその解釈:所得弾力性の視点
消費支出と保健医療費の正の相関(r=0.605)は、「健康は正常財(Normal Good)である」ことを示唆する。所得が増えると健康への支出も増える。経済学では保健医療需要の所得弾力性が正であることは古典的な発見だが、地域間でそのパターンを可視化することで、格差の存在が明らかになる。
from scipy import stats
# Pearson相関係数と有意性検定
x = df['消費支出_万'].values
y = df['保健医療費(二人以上の世帯)'].values / 1000
r, p = stats.pearsonr(x, y)
print(f"r = {r:.3f}, p = {p:.4e}")
# 効果量の解釈(Cohen 1988)
# r=0.1(小), 0.3(中), 0.5(大)
if abs(r) >= 0.5:
effect = "大(Large effect)"
elif abs(r) >= 0.3:
effect = "中(Medium effect)"
elif abs(r) >= 0.1:
effect = "小(Small effect)"
print(f"効果量: {effect}")
# → r=0.605 は「大きな効果量」に分類される
6地域ブロック間で保健医療費に有意な差があるかどうかを、ノンパラメトリック検定であるKruskal-Wallis検定で確認した。箱ひげ図で分布の形状と外れ値を同時に可視化する。
Kruskal-Wallis検定の結果
H = 5.06, p = 0.409。6地域ブロック間に統計的に有意な差は認められなかった(p > 0.05)。ただし関東・中部は中央値が高く、九州・沖縄・北海道東北は低い傾向が見られた。サンプルサイズ(最小n=7)が小さく検出力が限定的であることに注意が必要。
DS LEARNING POINT 2(補足)
Kruskal-Wallis検定:ノンパラメトリック多群比較
一元配置分散分析(ANOVA)は正規分布を仮定するが、都道府県データはしばしば非正規分布となる。KW検定は「各群の中央値が等しい」という帰無仮説を検定するノンパラメトリック版ANOVA。n=47を6地域に分けると各群7〜9と小さくなるため、検出力が低くなることに注意。
from scipy.stats import kruskal
# 地域ごとのデータ抽出
groups = [df[df['region'] == r]['保健医療費'].dropna().values
for r in region_order]
groups = [g for g in groups if len(g) > 0]
kw_stat, kw_p = kruskal(*groups)
print(f"Kruskal-Wallis: H = {kw_stat:.3f}, p = {kw_p:.4f}")
# 有意なら事後検定(Dunn's test)を実施
# pip install scikit-posthocs
# import scikit_posthocs as sp
# dunn_result = sp.posthoc_dunn(df, val_col='保健医療費', group_col='region')
4つの説明変数を投入したOLS重回帰分析を実施した。変数間の単位が異なるため全変数をZスコア(平均0・標準偏差1)に標準化し、標準化偏回帰係数(β)で各変数の相対的重要度を比較できるようにした。
保健医療費* = β₁×消費支出* + β₂×教養娯楽費* + β₃×高齢化率* + β₄×光熱水道費* + ε
(* はZスコア標準化済み変数。β は標準化偏回帰係数)
📌 この回帰係数プロットの読み方
- このグラフは
- 重回帰分析の各説明変数の係数(影響の強さと向き)をバーや点で表したグラフ。
- 読み方
- 右(プラス方向)に伸びるバーは「この変数が増えると目的変数も増える」正の影響。左(マイナス方向)は逆。
- なぜそう解釈できるか
- エラーバー(誤差棒)が0をまたいでいない変数が統計的に有意(p < 0.05)。バーが長いほど影響が大きい。
| 説明変数 |
標準化β |
95%CI 下限 |
95%CI 上限 |
p値 |
有意性 |
| 消費支出(万円/月) |
+0.298 |
−0.110 |
+0.707 |
0.148 |
n.s. |
| 教養娯楽費(千円/月) |
+0.318 |
−0.104 |
+0.740 |
0.135 |
n.s. |
| 高齢化率(%) |
−0.223 |
−0.508 |
+0.063 |
0.123 |
n.s. |
| 光熱・水道費(千円/月) |
−0.061 |
−0.327 |
+0.205 |
0.646 |
n.s. |
| モデル全体(F検定) |
F = 10.49, p < 0.001 |
R² = 0.506 |
重回帰の結果の解釈
モデル全体(F検定: p < 0.001)は有意であり、4変数で保健医療費の分散の約51%(R²=0.506)を説明できる。一方、個々の係数は単変量では有意(消費支出との r=0.605, p<0.001)だったが、多重共線性の存在により重回帰では個別変数のp値が上昇している。VIFの確認が必要。
多重共線性への注意
消費支出・教養娯楽費・光熱水道費はいずれも世帯消費支出の内訳であり、相互に強く相関している(多重共線性)。個々の係数のt検定は有意でなくても、モデル全体のF検定は有意になるのはこのため。Ridge回帰やPCRによる対処が有効。
DS LEARNING POINT 3
標準化偏回帰係数の解釈:変数の相対重要度の比較
通常の偏回帰係数は変数の単位に依存するため、「消費支出1万円増加」と「高齢化率1%増加」の効果を直接比較できない。標準化偏回帰係数(β)は全変数をZスコアに変換してから推定するため、単位が統一され、直接比較が可能になる。
import statsmodels.api as sm
# 標準化(Zスコア変換)
for col in X_vars + [y_col]:
df[col + '_z'] = (df[col] - df[col].mean()) / df[col].std()
# 標準化済み変数でOLS回帰
X_std = sm.add_constant(df[[v + '_z' for v in X_vars]])
y_std = df[y_col + '_z']
result = sm.OLS(y_std, X_std).fit()
# 標準化偏回帰係数 β
beta = result.params[1:] # 定数項除く
print("標準化偏回帰係数 β:")
for var, b in zip(X_vars, beta):
print(f" {var}: β = {b:+.4f}")
# β の絶対値が大きいほど相対的影響が強い
# β > 0: 正の影響(増えると目的変数も増える)
# β < 0: 負の影響(増えると目的変数は減る)
本分析は2018年度コンペ高校生の部の入賞作品として見事に完成している。ただし学術研究として批判的に読むと、6つの根本的な制約がある。以下では「何が不十分か・なぜ不十分か・どう改善できるか」を分析手順に沿って整理する。
① 説明変数の多重共線性:設計段階の問題
何が不十分か
4つの説明変数のうち3つ(消費支出・教養娯楽費・光熱水道費)は、いずれも「二人以上の世帯の月次消費支出」の内訳または合計であり、同一家計の財布から出る金額である。部分と全体を同じ回帰モデルに投入している状態であり、多重共線性は設計上必然的に生じる。
なぜ不十分か(技術的理由)
多重共線性が強い場合、個々の回帰係数の推定値は不安定になり(VIF > 10 で推定不能に近い)、標準誤差が膨らんでp値が上昇する。実際に本分析でも「単変量ではp<0.001だった消費支出が、重回帰ではp=0.148」になっており、多重共線性の影響がはっきり現れている。モデル全体のF検定は有意なのに個別係数がすべて非有意、という矛盾した見かけはこのためである。VIFの数値が提示されていないため、どの程度深刻かを読者が判断できない。
発展の方向
(a)VIFを計算して多重共線性の深刻さを定量化する。(b)説明変数を「消費支出のみ」に絞った単回帰と比較し、4変数投入の追加説明力を明示する。(c)多重共線性に頑健なRidge回帰(L2正則化)または主成分回帰(PCR)に置き換える。
DS LEARNING POINT A
VIF計算とRidge回帰:多重共線性への対処
VIF(分散拡大係数)は各説明変数を他の変数で回帰したときのR²から計算する。VIF > 5 で警戒、VIF > 10 で深刻とされる。Ridge回帰はL2ペナルティで係数を縮小し、多重共線性下でも安定した推定を得る。
import numpy as np
from statsmodels.stats.outliers_influence import variance_inflation_factor
from sklearn.linear_model import RidgeCV
from sklearn.preprocessing import StandardScaler
# ① VIF の計算
X_mat = df[X_vars].dropna().values
vif_data = {v: variance_inflation_factor(X_mat, i)
for i, v in enumerate(X_vars)}
print("VIF:")
for v, vif in vif_data.items():
flag = " ← 要注意" if vif > 5 else ""
print(f" {v}: {vif:.2f}{flag}")
# ② Ridge 回帰(交差検証でα自動選択)
scaler = StandardScaler()
X_s = scaler.fit_transform(df[X_vars].dropna())
y_s = (df[y_col].dropna() - df[y_col].mean()) / df[y_col].std()
ridge = RidgeCV(alphas=np.logspace(-3, 3, 50), cv=5)
ridge.fit(X_s, y_s)
print(f"\nRidge α = {ridge.alpha_:.4f}")
print("Ridge 標準化係数 β:")
for v, b in zip(X_vars, ridge.coef_):
print(f" {v}: β = {b:+.4f}")
# OLS との係数比較 → Ridge は VIF が高い変数ほど係数が縮小される
② 代理変数の構成概念妥当性:測定の問題
何が不十分か
タイトルに「スポーツ活動・体力」とあるが、分析中にスポーツ変数も体力変数も1つも登場しない。教養娯楽費は「スポーツ・余暇支出の代理」と説明しているが、旅行・映画・書籍・コンサート等の非スポーツ支出が大半を占める可能性が高い。また光熱水道費を「活動量の代理」とする理論的根拠は薄く、北日本の光熱費が高い主因は気候(暖房費)であってスポーツ活動量ではない。
なぜ不十分か(技術的理由)
代理変数の妥当性(構成概念妥当性: Construct Validity)とは、「その変数が本当に測りたい概念を測れているか」という問題である。構成概念妥当性が低い代理変数は、たとえ統計的に有意な係数が得られても、解釈が困難になる。特に光熱水道費と活動量の相関を支持する先行研究が引用されておらず、測定誤差(アテニュエーションバイアス)の方向と大きさも不明のままである。
発展の方向
(a)総務省「社会生活基本調査」の都道府県別スポーツ行動者率(実際にスポーツをした人の割合)を使用する。(b)スポーツ庁「体力・運動能力調査」の都道府県別得点(新体力テスト合計点)を説明変数または目的変数に加える。(c)教養娯楽費を使う場合は、その内訳(スポーツ用品費・スポーツ施設入場料等)を別途推計し代理精度を評価する。
③ 目的変数「保健医療費」の概念的曖昧さ:測定の問題
何が不十分か
「保健医療費(月次支出)」を「健康状態の代理」として使っているが、この変数は「健康への投資額(医薬品・通院費の支出)」であり、「健康状態の高さ」と「疾病負担の大きさ」の両方が支出を増やす方向に働く。概念的に方向が定まっていない目的変数を使っている。
なぜ不十分か(技術的理由)
健康経済学では医療支出は「需要側(罹患率・重症度)× 供給側(医療機関アクセス・価格)」で決まる複合指標である。医療機関密度が高い都市部では支出が高くても、それは「不健康だから高い」ではなく「アクセスしやすいから消費が多い」かもしれない。このような内生性がある変数を健康状態の代理に使うと、推定した因果の方向が逆になるリスクがある。
発展の方向
より直接的な健康アウトカム指標への置き換えを検討する。SSDSE-Bに含まれる候補:(a)年齢調整死亡率(高いほど不健康、と方向が明確)、(b)男女別平均寿命・健康寿命。いずれも保健医療費より概念的に解釈しやすく、「スポーツ→寿命」という政策仮説の検証に直結する。
④ 横断データと逆因果:因果推論の問題
何が不十分か
2023年1時点の断面データのみを使用しており、変数間の「方向のある因果関係」を識別できない。「スポーツ(余暇支出)が多い地域ほど保健医療費も高い」という正の相関(β=+0.318)は、「スポーツが健康支出を増やす」とも「豊かな地域はスポーツも健康支出も多い(共通原因による偽相関)」とも解釈できる。
なぜ不十分か(技術的理由)
交絡変数(この場合は所得水準など)が存在するとき、横断データでは相関の背後にある構造を区別できない。教養娯楽費と保健医療費がともに消費支出と強く相関していれば、「教養娯楽費→保健医療費」の係数は消費支出の影響を部分的に吸収したものにすぎない可能性がある。これは「虚偽の関係(Spurious Relationship)」問題である。
発展の方向
SSDSE-Bは複数年分が公開されており、都道府県×年のパネルデータを構築できる。固定効果モデル(FE推定)を使えば、各都道府県固有の不変な特徴(地理・文化・所得水準等)を除去した上で、時間変化による因果効果を推定できる。
DS LEARNING POINT B
固定効果モデル:横断データから時系列パネルへ
固定効果(FE)推定は、各都道府県の平均値を引く「within変換」によって観察されない個体間異質性を除去する。「裕福な都道府県はスポーツも医療費も多い」という交絡が消え、「同じ都道府県でスポーツ支出が増えたとき医療費はどう変わったか」を推定できる。
import linearmodels as lm # pip install linearmodels
# SSDSE-B を複数年縦結合してパネル化(例: 2019, 2021, 2023年)
# df_panel に (都道府県コード, 年) のマルチインデックスを設定
df_panel = df_panel.set_index(['都道府県コード', '年'])
# 固定効果モデル(都道府県固定効果)
model = lm.PanelOLS.from_formula(
'保健医療費_log ~ 教養娯楽費_log + 高齢化率 + EntityEffects',
data=df_panel
)
result = model.fit(cov_type='clustered', cluster_entity=True)
print(result.summary)
# EntityEffects: 都道府県ごとの切片を個別推定 → 観察不能な個体差を除去
# TimeEffects を追加すると年固定効果も同時に除去できる
# 解釈:「同じ都道府県内の年次変動」に基づく推定になる
⑤ 空間的自己相関:OLSの前提違反
何が不十分か
都道府県データは「地理的に近い都道府県ほど値が似る(空間的自己相関)」傾向がある。例えば東北6県の保健医療費は互いに似た値をとりやすい。OLS回帰は「誤差項が互いに独立」という仮定を置いているが、空間的自己相関があるとこの仮定が崩れ、係数の標準誤差が過小推定され、p値が見かけ上小さく(有意に)なりやすい(偽陽性リスク)。Moran's I検定が実施されていない。
なぜ不十分か(技術的理由)
空間的自己相関の存在は「実効サンプルサイズ」をn=47よりも小さくする。隣接する都道府県の誤差が相関していれば、独立した47観測ではなく実質10〜20程度の独立情報しかない可能性がある。この場合、r=0.605のp値計算(自由度45を仮定)は楽観的すぎる。Moran's Iで正の空間的自己相関が確認されれば、OLSの推定量は不偏だが標準誤差が信頼できない。
発展の方向
(a)Moran's I検定でOLS残差の空間的自己相関を確認する。(b)有意な空間相関が確認された場合、空間ラグモデル(SLM)または空間誤差モデル(SEM)に移行する。どちらを選ぶかはLagrange Multiplier検定で判断できる。
DS LEARNING POINT C
Moran's I検定:空間的自己相関の定量化
Moran's Iは−1(完全な負の空間相関)から+1(完全な正の空間相関)の値をとる。都道府県の隣接関係を重み行列Wで定義し、OLS残差の空間パターンを検定する。pysal / libpysal で実装できる。
import libpysal
from esda.moran import Moran
import geopandas as gpd
# 都道府県ポリゴン(国土数値情報等)を読み込み
gdf = gpd.read_file("japan_pref.gpkg")
gdf = gdf.merge(df[['都道府県', '保健医療費']], on='都道府県')
# 隣接関係の重み行列(Queen接続: 辺または頂点で接する都道府県を隣接とみなす)
w = libpysal.weights.Queen.from_dataframe(gdf)
w.transform = 'r' # 行和標準化
# OLS 残差に対して Moran's I 検定
residuals = ols_result.resid.values
moran = Moran(residuals, w)
print(f"Moran's I = {moran.I:.4f}, p = {moran.p_sim:.4f}")
# p < 0.05 → 空間的自己相関が有意 → 空間回帰モデルへ移行を検討
# p ≥ 0.05 → OLS の誤差独立仮定は支持される(安心して解釈できる)
⑥ Kruskal-Wallis検定の検出力不足:検定設計の問題
何が不十分か
6地域ブロックに47都道府県を分けると1群7〜9件になる。この条件でKruskal-Wallis検定を行い「p=0.409 → 有意差なし」と結論しているが、1群n=7〜9では中程度の効果量(η²≈0.10)も検出できないほど検出力が低い。「差がない」と「差を検出できなかった」を区別できていない。
なぜ不十分か(技術的理由)
検出力(Power = 1 − β)とは「真に差があるときに帰無仮説を棄却できる確率」である。n=47を6群に分けると、効果量η²=0.10(中程度)の差を検出する検出力は0.3を下回ると推定され、「有意でない」はほとんど情報を持たない。有意水準α=0.05・検出力0.80を確保するには、中程度の効果量で1群あたり約25件(6群で150件)が必要であり、47都道府県では構造的に不可能な要求水準である。
発展の方向
(a)6地域ブロックを「東日本 vs 西日本」の2群にまとめ、Mann-Whitney U検定で比較するとサンプルサイズが改善する(n≈23 vs 24)。(b)検定の前に事前検出力分析(a priori power analysis)を実施し、「このサンプルサイズで検出可能な最小効果量」を明示する。(c)地域差の不在を主張したいのであれば、等価性検定(Two One-Sided Tests, TOST)またはベイズ因子(BF₁₀ < 1/3)を使う方が論理的に一貫する。
6つの問題の整理
| 問題 | 種類 | 主な影響 | 修正難易度 |
| ① 多重共線性 | 設計 | 個別係数が信頼できない | 低(VIF確認+Ridge) |
| ② 代理変数の構成概念妥当性 | 測定 | タイトルと分析が乖離 | 中(別データ要) |
| ③ 目的変数の曖昧さ | 測定 | 解釈の方向が定まらない | 低(SSDSE-B内で代替可) |
| ④ 横断データ・逆因果 | 因果推論 | 政策含意が導けない | 中(複数年SSDSE-B利用) |
| ⑤ 空間的自己相関 | 前提違反 | p値が過小推定される | 中(libpysal導入) |
| ⑥ 地域比較の検出力不足 | 検定設計 | 「差なし」結論が無意味 | 低(群数を減らす) |
⚠️ よくある誤解と注意点
統計分析の解釈で初心者がやりがちな勘違いをまとめます。特に「相関と因果の混同」「p値の過信」は研究現場でもよく起きる落とし穴です。本文を読む前にも、読んだ後にも、目を通してみてください。
❌ 「相関がある=因果関係がある」ではない
疑似相関(spurious correlation)とは、見かけ上は関係があるように見えるが、実際は無関係、または第三の変数(交絡変数)が両方に影響しているだけの現象です。
古典例: アイスクリームの売上 と 水難事故件数 は強く相関するが、片方が他方を引き起こしているわけではない。両者とも「夏の暑さ」という第三の変数に引きずられているだけ。
論文を読むときの心構え: 「○○と△△に強い相関が見られた」だけで終わっている主張は、本当に因果関係があるのか、それとも第三の変数(人口・所得・地理など)が共通要因として効いているだけではないかを必ず疑ってください。
❌ 「p値が小さい=重要な発見」ではない
p値が小さい(例えば p < 0.001)ことは「統計的に偶然とは考えにくい」という意味であって、「実用的に大きな効果がある」という意味ではありません。
例: 巨大なサンプルサイズ(n=100,000)では、相関係数 r=0.02 でも p < 0.001 になります。しかし r=0.02 は実用上ほぼ無視できる関係です。
正しい読み方: p値と効果量(係数の大きさ、相関係数の値)の両方をセットで判断してください。p値だけで「重要な発見」と結論づけるのは誤りです。
❌ 「回帰係数が大きい=重要な変数」ではない
回帰係数の絶対値は、説明変数の単位に強く依存します。「年収(万円)」と「失業率(%)」の係数を直接比較しても意味がありません。
正しい比較方法: (1) 標準化係数(各変数を平均0・分散1に変換した上での係数)を使う、(2) 限界効果(変数を1標準偏差動かしたときのyの変化)で比較する。
また、係数の大きさが「因果関係の強さ」を意味するわけでもありません。あくまで「相関的な関連の強さ」です。
❌ 「外れ値を除外すれば正しい結果」ではない
外れ値(極端な値)を「目障りだから」「結果が綺麗にならないから」という理由で除外するのは分析の改ざんに近い行為です。
外れ値が示すもの: 本当に重要な情報(東京の超高密度、北海道の超低密度など)であることが多い。外れ値を取り除くと「日本全体の傾向」を見誤る原因になります。
正しい対処: (1) 外れ値の出現要因を調査する(なぜ東京だけ突出するのか)、(2) ノンパラメトリック手法(Spearman相関・Kruskal-Wallis)を使う、(3) 外れ値を含む結果と除外した結果の両方を提示し、解釈を読者に委ねる。
❌ 「サンプルサイズが大きい=信頼できる」ではない
サンプルサイズ(n)が大きいと統計的検定の検出力は上がりますが、それは「偶然による誤差を減らす効果」にすぎません。
nが大きくても解消されない問題:
・選択バイアス(標本が偏っている)
・測定誤差(変数の定義が曖昧)
・欠損値のパターン(欠損がランダムでない)
・交絡変数の見落とし
例: 1万人にWeb調査して「ネット利用と幸福度は強く相関」と言っても、そもそも回答者がネットユーザー寄りに偏っているため、母集団全体の結論にはなりません。
❌ 「複雑なモデル=より良い分析」ではない
ランダムフォレスト・ニューラルネット・複雑な階層モデルなど、高度な手法を使えば「良い分析」と感じがちですが、必ずしもそうではありません。
過学習(overfitting)の罠: モデルが複雑すぎると、訓練データの偶然のパターンまで学習してしまい、新しいデータでは予測精度が落ちます。
シンプルさの価値: 重回帰分析や相関分析は「結果が解釈しやすい」「再現性が高い」という大きな利点があります。複雑な手法はシンプルな手法で答えが出ない時の最後の手段です。
❌ 「多重共線性は気にしなくていい」ではない
多重共線性とは、説明変数同士の相関が極めて強い状態のこと。これを放置すると、回帰係数の符号や大きさが入れ替わる異常事態が起こります。
典型例: 「総人口」と「労働力人口」を同時に投入すると、両者の相関が r=0.99 になり、係数推定が極端に不安定になります。「総人口は正だが、労働力人口は負」のような解釈不能な結果になりがちです。
診断と対処:
・VIF(分散拡大係数)を計算し、VIF > 10 の変数を確認
・相関行列で |r| > 0.8 のペアをチェック
・対処法:一方を除外、合成変数(PCA)に変換、Ridge回帰で安定化
❌ 「R²が高い=良いモデル」ではない
決定係数 R² はモデルの「当てはまりの良さ」を示しますが、R² が高くてもモデルが正しいとは限りません。
R² が高くなる罠:
・説明変数を増やせば R² は自動的に上がる(無関係な変数を追加してもR²は下がらない)
・時系列データでは、共通のトレンド(時間とともに増加)があるだけで R² が 0.9 を超える
・サンプルサイズが小さいとR²が過大評価される
代替指標: 調整済み R²(変数の数でペナルティ)、AIC・BIC(モデル選択基準)を併用してください。予測力の真の評価には交差検証(cross-validation)でテストデータの R² を見ること。
❌ 「ステップワイズで選んだ変数は重要」ではない
ステップワイズ法(バックワード・フォワード選択)は便利ですが、p値ベースの変数選択は再現性に問題があると批判されています。
問題点:
・同じデータでも実行順序によって最終モデルが変わる
・p値を繰り返し見ることで「偶然に有意な変数」を拾ってしまう(p-hacking)
・係数の標準誤差が過小評価され、信頼区間が嘘っぽくなる
より良い方法:
・事前に変数を理論で絞る(先行研究から候補を選ぶ)
・LASSO回帰(自動かつ統計的に正当化された変数選択)を使う
・交差検証で AIC/BIC 最小モデルを選ぶ
❌ 「線形回帰なら線形関係を前提にすべき」
重回帰分析は線形関係を前提とします。実際の関係が非線形なのに線形モデルで分析すると、本当の関係を見逃します。
非線形の例:
・U字型関係: 失業率と物価上昇率(フィリップス曲線)
・逓減効果: 所得と幸福度(年収 800万円までは強い正の効果、それ以上は飽和)
・閾値効果: 高齢化率と医療費(ある水準を超えると急激に上がる)
診断と対処:
・残差プロットで残差が0周辺に均等に分布しているか確認
・変数の対数変換・二乗項追加で非線形性を取り込む
・どうしても線形では捉えられないなら、機械学習(RF・GBM)を併用する
❌ 「データに当てはまった=予測に使える」ではない
「過去のデータでフィットしたから将来も予測できる」と思うのは危険です。
過学習(overfitting)の例: 47都道府県のデータに10個の説明変数を投入すれば、ほぼ完璧にフィットします(自由度がほぼゼロ)。でもそのモデルを新しい年度に適用すると、予測精度はほぼランダム並みに落ちることがあります。
正しい予測力の評価:
・データを訓練用 70%とテスト用 30%に分割し、テスト用での予測精度を見る
・k分割交差検証(k-fold CV)で予測の安定性を確認
・「説明変数の数 ≪ サンプルサイズ」のバランスを意識(目安:n > 10 × 変数数)