標準化偏回帰係数 関連の補強キーワード。 クリックで該当箇所へ:
🍰 まずはやさしく
共通の物差しで測る道具です。
違う単位の影響力を比べるために使います。
勉強時間と睡眠時間のどちらが成績に効くか比べます。
この章では結論を短くまとめます。
標準化偏回帰係数(standardized β)は、 重回帰の「異なる単位の変数を同じ物差しで比較」するための係数です。 論文で「β = +0.929 ***」のように示されます。
計算方法:
あるいは数式変換:通常の偏回帰係数 $\beta_j$ に、$\sigma_{x_j} / \sigma_y$ を掛けても得られます。
解釈:「説明変数 $x_j$ を1標準偏差動かすと、 目的変数 y は何標準偏差動くか」。 単位を打ち消したので、 全変数の影響度を絶対値で比較できます。
例:47都道府県の死亡率モデル
標準化前の生の係数 β(高齢化率) = 0.62(%あたり ‰)、 β(保健医療費) = -0.0001(円あたり ‰)。 単位が違いすぎて比較不能。
標準化後:β*(高齢化率) = +0.929 ***、 β*(保健医療費) = -0.042 n.s.。 高齢化率の影響が圧倒的に大きいと一目で分かる。
絶対値の範囲:通常 0〜1。 多重共線性が強いと1超もあり得る(解釈に注意)。
注意:標準化しても因果関係は分かりません。 影響の大きさを「比較」するだけで、 因果の証明ではない点は通常の β と同じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 基本パターン import pandas as pd import numpy as np from scipy import stats import matplotlib.pyplot as plt import seaborn as sns # データ読み込み(header=1 なので列名は日本語) df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1) df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy() for _c in df.columns[3:]: df[_c] = pd.to_numeric(df[_c], errors='coerce') # 基本統計量 print(df.describe().iloc[:, :5]) # 可視化 # 費目の正式な列名は「◯◯費(二人以上の世帯)」(「食料費」だけでは存在しない) cols = ['食料費(二人以上の世帯)', '教育費(二人以上の世帯)', '住居費(二人以上の世帯)'] sns.pairplot(df[cols].dropna()) plt.show() |
このページの上にある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、 効果量 |
🍰 まずはやさしく
データの分析で使う用語です。
論文などで影響の大きさを示すために使います。
都道府県のデータ分析で活用します。
このページでは定義から注意点までを学びます。
論文中に 「標準化偏回帰係数」として登場する用語。
標準化偏回帰係数 とは:全変数を平均0・分散1に揃えてからの回帰係数。単位の違う変数同士で「影響の大きさ」を比較可能。
本ページでは「standardized beta」を扱う。 統計データ分析コンペティション (2026) の教材で、 SSDSE-B-2026 (47 都道府県 × 複数年 × 100 超列) の実データを使った再現可能な学習を目指す。
「standardized beta」は統計・データサイエンスの体系における重要概念のひとつ。 本ページは「定義・直感・数式・実装・落とし穴・関連手法」の 6 視点で構成され、 各視点は独立して読めるが順序通り読むと体系的な理解が得られる。
🍰 まずはやさしく
単位の壁を取り払うイメージです。
どの変数が一番重要かを見極めるために使います。
スマホの利用時間と歩数を同じ基準で比べます。
ここでは直感的な仕組みを解説します。
標準化βは「x も y も標準化(平均 0・分散 1)した上での回帰係数」。 単位の異なる変数の影響力を比較できる。 SSDSE-B-2026 で L3221 を A1101・A1303 で予測すると、 標準化βは A1101=0.82、 A1303=-0.49 のように比較可能になる。
標準化β(標準偏回帰係数) は「回帰」カテゴリの中核概念。 初めて触れる読者は、 まずこの「🎨 直感」セクションだけ通読し、 必要になった時点で「📐 数式」「🐍 Python」「⚠️ 落とし穴」へ戻る読み方が定着しやすいです。
標準化偏回帰係数(β)は「異なる単位の説明変数の影響を直接比較する」ための標準化処理。 単回帰直線・標準化図・多重共線性の 3 枚で、 β の解釈と注意点を整理する。



→ 単回帰(単位依存)、 標準化(比較可能化)、 多重共線性(β の限界)。 この 3 段階で β の使いどころと注意点が明確になる。
→ すべて即答できれば、 重回帰モデルの結果を β で適切に解釈できる基礎力は十分。
標準化偏回帰係数 β は「説明変数間の影響度を相対比較できる」唯一の指標として広く使われるが、 使い方を誤ると 誤った政策提言や因果推定につながる。 SSDSE-B-2026 を使う場面で典型的に外しやすい仮定をまとめる。
β は線形重回帰モデルでのみ意味を持つ。 説明変数と目的変数の関係が U 字や対数関数なら、 β は実質的に「平均的な傾き」しか示さず、 非線形な感度を捉えられない。 SSDSE-B で「A1101(総人口)→ L3221(消費支出)」のように非線形を疑う場合、 log 変換や多項式回帰、 GAM を検討する。
β は「標準偏差 1 単位の変化」が前提なので、 0/1 ダミー変数 (例: 都市 vs 地方) に対しては解釈が「0.5 sd 変化したときの効果」のような 不自然な単位になる。 ダミー変数は非標準化 b と「カテゴリ間平均差」で報告するほうが安全。
VIF > 10 のような強い共線性下では、 β の符号が不安定 (今回 +0.7、 次は −0.3 など) になる。 影響度を比較するには、 まず VIF を確認し、 共線関係を除去 (主成分回帰、 Ridge 回帰、 変数選択) するのが先。 SSDSE-B では「人口・世帯数・税収」が強く共線するため要注意。
β が大きい = 「重要な原因」とは限らない。 観察データの相関に過ぎず、 交絡変数を統制しなければ因果として解釈不能。 政策提言は別途 DID/IV/RCT で検証する。
n=47 (都道府県) では β の標準誤差が大きく、 95%CI が広い。 「β=0.42 [95%CI: 0.05, 0.79]」のように 信頼区間を必ず併記する。 報告値だけで「強い影響」と書くのは過剰主張。
sklearn.preprocessing.StandardScaler で全変数を平均 0・分散 1 に標準化。 連続変数のみ対象、 ダミー変数は別途扱う。statsmodels.outliers_influence.variance_inflation_factor) し、 VIF > 10 の列は除去または合成。statsmodels.api.OLS(y_std, X_std).fit() で標準化したデータに重回帰を当てはめ、 β の推定値・p 値・95%CI を取得。🍰 まずはやさしく
計算で導き出す正確なルールです。
数値として正しく定義するために使います。
部活の記録を平均とばらつきで揃えて考えます。
ここでは数式を使った定義を読み解きます。
やさしい説明で掴んだ感覚を、ここで 標準化β(標準偏回帰係数) の定義式に対応づけます。下の式は左辺 $\beta^{*}_j$ が何で決まるかを右辺で書き下したもので、分数(割り算)、β(回帰係数) が現れます。それぞれの記号が何の量を指すのかは、次の「🔬 数式を言葉で読み解く」で 1 つずつ確かめてください。
上の数式を眺めるだけでは身につかないので、 各記号がどんな役割を担っているかを言葉で押さえます。 「数式を音読する習慣」がつくと、 論文や教科書を読むスピードが体感で 2 倍ほど上がります。
出生数 (A4101) を目的変数として、 総人口 (A1101)・高齢化率 (A1303/A1101)・転入者数 (A5101)・年平均気温 (B4101)・標準地価 (C5401) の 5 説明変数を標準化してから OLS 推定し、 標準化偏回帰係数を比較する完全再現例(SSDSE-B-2026, 2023 年, 47 都道府県)。
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 | import pandas as pd import numpy as np import statsmodels.api as sm from sklearn.preprocessing import StandardScaler df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) d = df[df['SSDSE-B-2026'] == 2023].copy() d['高齢化率'] = d['A1303'] / d['A1101'] X_raw = d[['A1101', '高齢化率', 'A5101', 'B4101', 'C5401']].dropna() y_raw = d.loc[X_raw.index, 'A4101'] # X と同じ行だけ残して添字を揃える # 全変数を z 標準化 scaler = StandardScaler() X_std = pd.DataFrame(scaler.fit_transform(X_raw), columns=X_raw.columns, index=X_raw.index) y_std = (y_raw - y_raw.mean()) / y_raw.std(ddof=0) # StandardScaler と同じ n 分母 # 切片を入れない(標準化後は 0) model = sm.OLS(y_std, sm.add_constant(X_std)).fit() print(model.summary()) # 標準化β を比較しやすい形に print('\n標準化偏回帰係数:') for var, beta in zip(X_raw.columns, model.params[1:]): print(f' {var:18} β = {beta:+.3f}') |
| 項目 | 値 | 参考 | 解釈 |
|---|---|---|---|
| 変数 | 標準化β | 解釈 | |
| 総人口 (A1101) | +0.978 | 1SD 増→出生数は 0.98SD 増 | 支配的(正) |
| 標準地価 (C5401) | +0.062 | 地価の高い県ほどわずかに出生数多 | 弱(n.s.) |
| 転入者数 (A5101) | -0.060 | 総人口と共線的で符号が不安定 | 弱・不安定 |
| 年平均気温 (B4101) | +0.049 | 温暖な県ほどわずかに出生数多(有意) | 弱(有意) |
| 高齢化率 (A1303/A1101) | -0.018 | 高齢な県ほどわずかに出生数少 | ほぼ無 |
👉 値は SSDSE-B-2026 (2023) の実測値(n=47, R²=0.995)。 総人口 (A1101) がほぼ単独で出生数を説明する。 転入者数 (A5101) は総人口と強く共線 (VIF≈35) するため β' が小さく符号も不安定。 同じ手順で他都道府県・他変数にも適用可能。
数式だけでは「実感」が湧きにくいので、 実データ data/raw/SSDSE-B-2026.csv(47 都道府県 × 16 年)で 1 度手計算してみると理解が定着します。
SSDSE-B-2026 (2023) で L3221=β0 + β1×A1101 + β2×A1303 を当てる。 sx(A1101)=2,797,551、 sx(A1303)=693,839、 sy(L3221)=24,144 程度。 標準化β1 ≈ 0.82、 β2 ≈ -0.49 が得られる(実行値)。 これにより 2 変数の相対重要度を比較できる。
| 都道府県 | A1101 総人口 | A1303 65 歳以上 | L3221 消費支出 |
|---|---|---|---|
| 東京都 | 14,086,000 | 3,205,000 | 341,320 |
| 神奈川県 | 9,229,000 | 2,390,000 | 306,565 |
| 大阪府 | 8,763,000 | 2,424,000 | 271,246 |
| 愛知県 | 7,477,000 | 1,923,000 | 300,221 |
| 埼玉県 | 7,331,000 | 2,012,000 | 344,092 |
| 千葉県 | 6,257,000 | 1,756,000 | 306,943 |
上記は SSDSE-B-2026 (2023) からの抜粋。 手計算で確認した値が、 後述の Python 実装で得る値と一致することを確認すると、 「数式とコードの対応関係」がクリアに見えるようになります。
合成データで β* = β·(σ_x/σ_y) を計算する。
1 2 3 4 5 | b = 1.892 sx = 1.924 sy = 3.674 b_std = b * sx / sy print(f"β*: {b_std:.3f}") |
💬 手計算 (Step 2) 0.991 と Python 出力が完全一致。
SSDSE-B-2026(2023 年・47 都道府県、encoding='cp932', skiprows=[1])で、 消費支出 L3221(円/月)を 総人口 A1101(人)・年平均気温 B4101(℃)・住宅地平均価格 C5401(円/m²)の 3 変数で重回帰した実測値が初期状態です。 左の非標準化係数 b は単位が「円/人」「円/℃」「円/(円/m²)」とバラバラで、 棒の長さを比べても何の意味もないのに対し、 右の標準化 β は「説明変数が 1SD 動いたとき y が何 SD 動くか」という共通の物差しで比較できます。 各行の SD ゲージをドラッグすると、 b を固定したまま β = b × (Sx / Sy) の関係で β だけが伸び縮みする様子を体感できます。
⚠️ SD ゲージは「思考実験」:初期値(×1.00)は 2023 年 47 都道府県の実測 SD と、 Python(statsmodels/numpy)で推定した実測 b・β です。 ゲージを動かして SD を仮想的に変える部分は 「もし x の散らばりがもっと大きい/小さい母集団だったら」という思考実験です。 現実のデータで SD が変われば b の推定値自体も変わるため、 「b 固定で Sx だけ動く」状況は変換式 β = b·(Sx/Sy) の構造を見せるための教材上の単純化です。
初期状態の b を見ると、 年平均気温の b = −3,697 円/℃ が圧倒的に「大きく」見え、 総人口の b = +0.00106 円/人 はほぼゼロに見えます。 しかし β で比べると 気温 −0.314、 住宅地価格 +0.277、 総人口 +0.123 となり、 3 変数とも同じ土俵の中程度の影響だと分かります。 b の見かけの大小は「1 人」と「1℃」という刻みの粗さの違いを反映しているだけで、 変数の重要度ではありません。 β は「その変数として標準的な変化(1SD)が起きたとき、 y はどれだけ(y の SD 単位で)動くか」を測るので、 単位の刻みに騙されずに済みます。 姉妹ページ「回帰係数」では逆方向から、 単位を切り替えると b はスケールするが β は不動であることを SSDSE 実測値で確認できます。
偏相関係数は「他の説明変数の影響を取り除いた後の x と y の相関」で、 β と並ぶ古典的な相対重要度指標です(β が「傾き」ベースなのに対し偏相関は「相関」ベース。 単回帰では両者は一致します)。 さらに優勢分析(dominance analysis)は、 説明変数のすべての部分集合にわたる R² の増分を平均して各変数の寄与を配分する手法で、 多重共線性があっても安定した重要度分解を与えます(Shapley 値による R² 分解と同系統で、 機械学習の SHAP の線形回帰版に相当)。 β のランキングが共線性で揺れるときは、 優勢分析・ΔR²・標準化済み Ridge 係数を突き合わせて頑健性を確認するのが実務的です。 モデル全体の枠組みは「重回帰」を参照してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | from sklearn.linear_model import LinearRegression, Ridge, Lasso from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline # パイプラインで一気通貫 pipe = Pipeline([('scaler', StandardScaler()), ('lr', LinearRegression())]) pipe.fit(X_raw, y_raw) print('標準化β(LinearRegression):', pipe.named_steps['lr'].coef_) # Ridge で多重共線性下の安定 β ridge_pipe = Pipeline([('scaler', StandardScaler()), ('rdg', Ridge(alpha=1.0))]) ridge_pipe.fit(X_raw, y_raw) print('Ridge β:', ridge_pipe.named_steps['rdg'].coef_) # Lasso で sparse な β lasso_pipe = Pipeline([('scaler', StandardScaler()), ('lso', Lasso(alpha=0.1, max_iter=10000))]) lasso_pipe.fit(X_raw, y_raw) print('Lasso β:', lasso_pipe.named_steps['lso'].coef_) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from scipy import stats import numpy as np # β の解析的標準誤差(教育用) X_std = (X_raw - X_raw.mean()) / X_raw.std(ddof=1) y_std = (y_raw - y_raw.mean()) / y_raw.std(ddof=1) X_mat = np.column_stack([np.ones(len(X_std)), X_std]) # OLS 推定 betas = np.linalg.lstsq(X_mat, y_std, rcond=None)[0] resid = y_std - X_mat @ betas sigma2 = (resid @ resid) / (len(y_std) - X_mat.shape[1]) cov = sigma2 * np.linalg.inv(X_mat.T @ X_mat) se = np.sqrt(np.diag(cov)) t = betas / se p = 2 * (1 - stats.t.cdf(np.abs(t), df=len(y_std) - X_mat.shape[1])) for name, b, s, tt, pv in zip(['Intercept'] + list(X_raw.columns), betas, se, t, p): print(f'{name:20} β={b:+.3f}, SE={s:.3f}, t={tt:+.2f}, p={pv:.4f}') |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # Ridge α を最適化して β の安定性を見る import optuna from sklearn.linear_model import Ridge from sklearn.model_selection import cross_val_score def objective(trial): alpha = trial.suggest_float('alpha', 1e-4, 1e3, log=True) pipe = Pipeline([('s', StandardScaler()), ('m', Ridge(alpha=alpha))]) return -cross_val_score(pipe, X_raw, y_raw, cv=5, scoring='neg_root_mean_squared_error').mean() study = optuna.create_study(sampler=optuna.samplers.TPESampler(seed=0), direction='minimize') study.optimize(objective, n_trials=40) best_alpha = study.best_params['alpha'] print(f'Best α = {best_alpha:.3f}') # 最適 α での β pipe = Pipeline([('s', StandardScaler()), ('m', Ridge(alpha=best_alpha))]) pipe.fit(X_raw, y_raw) for name, b in zip(X_raw.columns, pipe.named_steps['m'].coef_): print(f' {name:18} β={b:+.3f}') |
| ライブラリ / 関数 | 用途 |
|---|---|
statsmodels.OLS | 標準的な係数+検定+R² |
sklearn.preprocessing.StandardScaler | z 標準化 |
sklearn.linear_model.LinearRegression | 係数のみ |
statsmodels.stats.outliers_influence.variance_inflation_factor | VIF |
yellowbrick | 係数の可視化 |
公的統計(SSDSE-B-2026)を題材に、 最小限の Python コードで 標準化β(標準偏回帰係数) を動作させます。 まずはこのまま実行してみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # 標準化β(標準偏回帰係数) を SSDSE-B-2026 で実行する最小コード import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df = df[df['SSDSE-B-2026'] == 2023] # 2023 年のみ抽出 print(df.shape) # (47, 112) print(df[['Prefecture','A1101','A1303','L3221']].head()) from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LinearRegression import numpy as np X = df[['A1101','A1303']].astype(float).values y = df['L3221'].astype(float).values Xs = StandardScaler().fit_transform(X) ys = (y - y.mean()) / y.std(ddof=0) lr = LinearRegression().fit(Xs, ys) for c, b in zip(['A1101','A1303'], lr.coef_): print(f'標準化β({c})={b:.3f}') |
▶ 実行 を押せばこのページの中でそのまま動きます(ライブラリもデータも同梱済みで、 準備は要りません)。 手元の Python に移して動かすときは pip install matplotlib numpy pandas scikit-learn scipy seaborn statsmodels が必要です。 読んでいるデータは data/raw/SSDSE-B-2026.csv。 日本語を含むので encoding='cp932' の指定を落とさないでください。
標準化β(標準偏回帰係数) を使うとき、 SSDSE-B-2026 の A1101(総人口)・L3221(消費支出)・A1303(65 歳以上人口)の重回帰で「βは因果効果」と誤読したり、 ダミー変数まで標準化して解釈不能になる失敗が頻発します。 標本依存性 (xの標準偏差が母集団で変わるとβも動く) も含め、 「比較指標であって母数推定ではない」を出発点に据えると罠は減ります。
標準化偏回帰係数(標準化β)を一言でいうと 「全変数を平均 0・分散 1 に揃えてから回した回帰の傾き」です。 標準化(z スコア化)は各変数を「その変数の標準偏差 1 個ぶん」を新しい物差しの 1 目盛りに取り替える操作なので、 標準化βは 「説明変数を 1 標準偏差だけ動かしたとき、 目的変数が何標準偏差動くか」という応答量になります。 円・℃・人・円/m² といった元の単位が消えるため、 意味の違う変数どうしでも「効きの大きさ」を同じ土俵で並べられます。
この変換式は「なぜ b の見かけの大小が重要度と無関係か」を説明します。 b は「x が1 単位(=1 円、 1℃)動いたときの y の変化」なので、 単位の刻みが細かい変数ほど b は小さく、 粗い変数ほど大きく見えるだけです。 β はその刻みを「その変数にとって標準的な変化量(1SD)」に統一するので、 刻みの粗さに惑わされません。
消費支出 L3221(二人以上世帯・円/月)を、 スケールの異なる 3 つの強度変数 — 年平均気温 B4101(℃)・住宅地標準価格 C5401(円/m²)・高齢化率(A1303/A1101)— で重回帰した実測値です(全変数を標準化して OLS、 VIF はいずれも 2.4 未満で共線性は軽微)。 総人口のような規模変数を外したので、 標準化βが 1 変数に支配されず横並びで比較できます。
| 説明変数(単位) | 標準化β | p 値 | VIF | 読み |
|---|---|---|---|---|
| 年平均気温 B4101(℃) | −0.446 | 0.004 | 1.26 | 最も強い(負・有意) |
| 高齢化率(A1303/A1101) | −0.416 | 0.044 | 2.35 | 同程度(負・有意) |
| 住宅地標準価格 C5401(円/m²) | +0.127 | 0.494 | 2.01 | 弱・n.s. |
R²=0.269。 元の b は「円/℃」「円/m²」「円/(比率)」と単位がバラバラで棒の長さを比べても無意味ですが、 β に直すと「気温と高齢化率が同程度に効き、 地価はほぼ効かない」と一目で読めます。 温暖・高齢な県ほど二人以上世帯の消費支出がやや低い傾向、 という相関的な読み(因果ではない)です。
標準化βは便利ですが、 「|β| が大きい変数ほど重要」という素朴な読みは何通りもの理由で崩れます。 既存の「⚠️ 落とし穴」セクションと重複しないより踏み込んだ論点を、 SSDSE-B-2026 の実測を交えて整理します。
標準化βは「相対重要度を測る古典的指標」の一つに過ぎません。 隣接する概念と突き合わせると、 β の位置づけと限界がはっきりします。
説明変数が 1 つだけの単回帰では、 標準化βは相関係数 $r$ と数値まで完全一致します($\beta^{*}=b\cdot S_x/S_y = r$)。 上の SSDSE 実測でも、 単回帰の標準化βは 気温 −0.230、 地価 +0.310、 高齢化率 −0.306 で、 それぞれ y との相関係数と小数第 3 位まで一致しました。 つまり単回帰の標準化βは相関、 重回帰の標準化βは「相関を他変数で補正したもの」と捉えると理解が繋がります。
重回帰の標準化βと偏相関係数(他の説明変数の影響を除いた x と y の相関)は、 符号が必ず一致し、 大きさも近い値になります(ただし一致はしません。 β は「傾き」ベース、 偏相関は「相関」ベースで、 分母が異なる)。 実測では 気温の β=−0.446 に対し偏相関 −0.422、 地価の β=+0.127 に対し偏相関 +0.105 と、 符号一致・近接を確認できます。 どちらも「他変数を統制した効き」を測る指標で、 β が傾きの単位なし版、 偏相関がその相関版という関係です(※用語ページ partial-correlation は準備中のためテキストで補足)。
|β| のランキングは共線性で揺れるため、 より頑健な相対重要度として LMG(Lindeman-Merenda-Gold)や 優勢分析(dominance analysis)があります。 これらは説明変数のあらゆる部分集合にわたる R² の増分(ΔR²)を平均し、 各変数へ寄与を配分する手法で、 SHAP と同じShapley 値の枠組みに立ちます(LMG は線形回帰版の Shapley 分解)。 R の relaimpo、 Python の dominance-analysis で計算でき、 全寄与の和が R² に一致するため「モデルの説明力を変数間で山分けした」と解釈できます。 β のランキングが不安定なときは、 LMG・ΔR²・標準化済み Ridge 係数を突き合わせて頑健性を確認します。
正則化回帰(Lasso・Ridge)は係数の大きさにペナルティを課すため、 変数のスケールに敏感です。 したがって Ridge/Lasso を使う前に標準化は事実上必須で、 得られる係数はそのまま標準化β系の量になります。 Ridge は共線変数の β を 0 方向へ縮めて安定化し(|β|>1 の暴走を抑える)、 Lasso は不要変数の β を厳密に 0 にして変数選択も同時に行います。 α(罰則強度)を上げるほど β は縮みますが、 相対的な重要度の順位は保たれることが多く、 共線性の強い変数群ほど縮小の恩恵が大きくなります。
標準化βは、 単回帰では相関係数 $r$ に一致することから分かるとおり、 効果量(単位に依存しない効きの大きさ)の一種です。 慣習的な目安として |β| ≈ 0.1 で小、 0.3 で中、 0.5 以上で大とされることがありますが、 これは分野・データ依存の粗い目安に過ぎません。 小標本(SSDSE の n=47 など)では β の標準誤差が大きく信頼区間が広いため、 点推定だけで「効果が大/小」と断じず、 95%CI とサンプルサイズを必ず併記するのが効果量報告の作法です。
encoding='cp932', skiprows=[1])の実測値です。
標準化β(標準化偏回帰係数)は「単位を揃えた重回帰の傾き」。 周辺地図は 標準化(z 変換) → OLS / 重回帰 → β'=β·(SD_x/SD_y) という変換式 → 多重共線性・VIF・寄与度比較 という流れで広がる。 機械学習で言う permutation importance / SHAP は β を補完する非線形版の重要度として隣接している。
🌐 統計・データサイエンス › 関連・回帰 › 回帰 › 標準化偏回帰係数(単位に依存しない回帰係数)
中心に 標準化偏回帰係数 を置き、 そこから 回帰係数・標準化・重回帰・OLS・正規化・PCA など 計 8 個の用語へ、 前提・兄弟・発展形といった関係を矢印で結んでいます。 線がどちら向きかを見れば、 先に読むべき用語とあとから読む用語が分かります。 ノードはドラッグで動かせ、 ホイールでズーム、 クリックでその用語のページへ遷移します。
大きな円が小さな円を包含する Circle Packing 図。 「標準化偏回帰係数」は緑色でハイライト。
長方形を入れ子に分割した Treemap 図。 各分野の規模感を面積で比較。 「標準化偏回帰係数」は緑色でハイライト。
| マップ | 分かること | こんな時に見る |
|---|---|---|
| 🔗 関係マップ | 手法間の横の関係(前提→発展→応用) | 「次に何を学べばよい?」 学習順序の判断 |
| ⭕ 包含マップ | 分類体系の入れ子構造(上位⊃下位) | 「この手法はどんなジャンルに属する?」 |
| 🌳 ツリーマップ | 分野の規模比較(面積=ボリューム) | 「データサイエンス全体の俯瞰像」 |
💡 3 つの図は同じ位置関係を別の角度から描いています。 関係マップは 標準化偏回帰係数 の隣に何が並ぶかを、 包含マップとツリーマップは 統計・データサイエンス → 回帰 → 標準化偏回帰係数 という入れ子の位置を示します。 「回帰には他に何があったか」を思い出したいときは包含マップを、 「次に何を読むか」を決めたいときは関係マップを開いてください。
標準化偏回帰係数 β* = β · (SD_x / SD_y) は重回帰の係数を「単位フリー」にして変数間の相対的影響度を比較できるようにする変換。 SSDSE-B-2026 で L3221 (消費支出) を「A1101 (総人口) + A1303 (65 歳以上人口) + A1301 (年少人口)」で説明する重回帰で、 各説明変数の影響の大小を絶対比較できる。 |β*| が大きい変数ほど目的変数への寄与が大きい。
非標準化 β は「単位変化あたりの y 変化」(解釈しやすい)、 標準化 β* は「1 SD 変化あたりの y SD 変化」(変数間比較できる)。 SSDSE 分析では両方を報告するのが標準。
標準化偏回帰係数 (β) は「説明変数の重要度比較」に使われるが、 変数のスケール・多重共線性・カテゴリ変数の有無で使い分けが必要。 以下に典型シナリオと推奨重要度指標を示す。
| シナリオ | 重視する観点 | 推奨重要度指標 |
|---|---|---|
| 連続変数のみ / 線形回帰 | 単位非依存・係数の直接比較 | 標準化 β (z-score 後の OLS) |
| 多重共線性が強い (VIF > 10) | 係数推定の不安定化を回避 | Ridge / Lasso β + 部分相関 |
| カテゴリ変数が混在 | ダミー変数の解釈に注意 | 標準化なし係数 + パーシャル R² |
| 非線形関係 / 木モデル | 不純度低減・予測寄与 | Gini 重要度 / Permutation Importance |
| 個別予測の説明が必要 | 局所的寄与・解釈可能性 | SHAP 値 / LIME |
| 変数の追加効果を測りたい | 逐次寄与・R² の増分 | ΔR² / 階層回帰 |
(x − mean)/sd で標準化してから OLS、 切片 ≈ 0 になることを確認