「response variable」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「response variable」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。
これらのキーワードは「response variable の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。
🍰 まずはやさしく
予測したい結果にあたる値のことです。
分析で何を当てたいかを決めるために使います。
テストの点数を予想する場合の点数にあたります。
この章では被説明変数の呼び方や基本を学びます。
回帰モデルにおいて予測対象となる変数。 目的変数とも。
🍰 まずはやさしく
分析のスタート地点となる重要な設定です。
何を予測するかを明確にするために使います。
明日の気温を予想するときに気温のことです。
このページでは定義や実装などの視点から解説します。
「価格を予測する」「合格/不合格を判定する」「明日の気温を予想する」 — どれも被説明変数を決めるところから始まります。 PPDAC の P(Problem)の中身。
本ページでは「response variable」を扱う。 統計データ分析コンペティション (2026) の教材で、 SSDSE-B-2026 (47 都道府県 × 複数年 × 100 超列) の実データを使った再現可能な学習を目指す。
「response variable」は統計・データサイエンスの体系における重要概念のひとつ。 本ページは「定義・直感・数式・実装・落とし穴・関連手法」の 6 視点で構成され、 各視点は独立して読めるが順序通り読むと体系的な理解が得られる。
🍰 まずはやさしく
原因と結果でいうところの結果にあたる値です。
何が影響してその値になったかを探るために使います。
部活の練習量で試合の結果を予想するときの結果です。
値の種類によって分析の方法が変わることを学びます。
原因と結果の関係に例えると:
ただし「説明変数 → 被説明変数」 は 統計的予測関係であって因果ではない点に注意。 因果関係を主張するには別の枠組み(実験デザインや因果推論)が必要です。
SSDSE-B-2026 で「消費支出 (L3221) を総人口 (A1101) と高齢人口 (A1303) で予測する」と組むなら、 L3221 が被説明変数 y。 「どれを y に置くか」で分析の問いそのものが変わる: y = 人口なら「人口を決める要因は何か」、 y = 大学進学率なら「進学率を引き上げる要因は何か」。 「結果として知りたい値」を必ず y 側に置くのがコツ。
被説明変数のスケール (連続/離散/カウント/2 値) でモデルが切り替わる: 連続 → OLS、 2 値 → ロジスティック回帰、 カウント → ポアソン回帰。 SSDSE-B-2026 の「消費支出」は連続なので OLS で扱えるが、 もし「人口減少県か否か (2 値)」を y にするとロジスティック回帰になる。 y のスケールがモデル選択の第一段階。
説明変数 X と被説明変数 y は対称ではない: y = β X は「X が動いたら y はどう動くか」を答えるが、 y と X を入れ替えると別モデルになり係数も変わる。 SSDSE-B-2026 で「人口 → 消費支出」と「消費支出 → 人口」を OLS で組むと β が逆数にならず、 残差の方向も変わる。 次節以降では y の選択が結果に与える影響を 47 県データで確認する。
応答変数 $y$ とは「予測・説明したい対象そのもの」です。 分析の主役は $y$ で、 説明変数 $x$ はその $y$ を 説明する側 の脇役。 「$x$ で $y$ を説明する」 という一方向の役割分担があるからこそ、 $y$ は 被説明変数(説明される側)とも呼ばれます。
応答変数 $Y$ は「モデルが説明・予測する対象」=結果側の変数です。 下の散布図で、 横軸に 説明変数 X、 縦軸に 応答変数 Y を置きました。 スライダー(または図を直接ドラッグ/タッチ)で X の値を動かすと、 モデル $Y=f(X)$ が返す予測値がリアルタイムに変わります。 「X を入力すると Y が出てくる」— この 向き こそが応答変数の役割です。
※ 散布図の点は概念理解のための模式データ(実在の県名・SSDSE 実測値ではありません)。 回帰直線・ロジスティック曲線・係数はこの模式点から 実際に最小二乗法/勾配降下法で計算しています。 応答 $Y$ が連続なら回帰直線、 カテゴリ(0/1)なら確率曲線+しきい値、 と 応答の型がモデルそのものを決めることに注目してください。
直感(結果側・予測される変数): 応答変数は「知りたい答え」そのもの。 分析の問いは必ず「何を 予測したいか」から始まり、 その「何を」が $Y$ です。 図で X を動かすと Y が追随する — 主導権は入力側 X にあり、 $Y$ は 受け身で決まる出力 だと体感できます。 別名の 目的変数・従属変数・応答変数・outcome・target は、 分野が違うだけで指すものは同じ「結果側の変数」です。
よくある落とし穴(説明変数との取り違え・因果の向き): (1) 説明変数 X と応答変数 Y を逆に置くと、 まったく別の問いを解いてしまいます。 「価格で広さを予測」と「広さで価格を予測」は係数も残差も別物です。 (2) $Y=f(X)$ の矢印は 予測(相関)の向きであって因果の向きではありません。 図の Y が X に反応して動くのはモデル上の話で、 現実世界で X が Y を 引き起こす とは限りません。 因果を主張するには実験計画や因果推論の枠組みが別途必要です。
発展(多変量応答・GLM): 応答は 1 本とは限りません。 $Y$ が複数本ある 多変量応答(例: 身長と体重を同時に予測)では多変量回帰や SUR を使います。 また $Y$ の型が正規分布から外れる場合(二値・計数・比率など)は、 リンク関数で $Y$ の期待値と線形予測子をつなぐ 一般化線形モデル(GLM) に一般化されます。 上の「分類」モード(ロジスティック回帰)は、 応答が二値のときの GLM の代表例です。 応答の型に応じた手法は 回帰タスク・分類・ロジスティック回帰、 型そのものの見極めは 尺度水準 のページも参照。
🍰 まずはやさしく
数式で表したときに予測の対象となる変数です。
モデルを正しく作るために使います。
スマホの利用時間で成績を予測するときの成績です。
数式での書き方や誤差との関係について解説します。
被説明変数(Response Variable):回帰モデルにおいて予測対象となる変数。 目的変数とも。
同義・関連語:目的変数, 従属変数, 応答変数, dependent variable
被説明変数の型を決めると、 自然と 損失関数 も決まります。 損失は「予測値 $\hat Y$ と真値 $Y$ の差をどう罰するか」を定義する関数で、 モデル学習の 骨格 です。
| $Y$ の型 | 標準損失 | 数式 | 含意 |
|---|---|---|---|
| 連続値 | MSE(二乗誤差) | $\sum (Y - \hat Y)^2$ | 外れ値の罰大、 平均値志向 |
| 連続値 | MAE(絶対誤差) | $\sum |Y - \hat Y|$ | 中央値志向、 ロバスト |
| 連続値 | Huber | $\delta$ で滑らかな MSE/MAE 混合 | 外れ値耐性 + 微分可能 |
| 二値 | 交差エントロピー | $-\sum [Y \log \hat p + (1-Y)\log(1-\hat p)]$ | 確率出力に強い罰 |
| 不均衡分類 | focal loss | $-\sum (1-\hat p)^\gamma \log \hat p$ | 難サンプル重視 |
| 順序 | QWK / ordinal loss | 距離に応じた罰 | 「1段差」と「3段差」を区別 |
| 分位回帰 | pinball loss | $\tau$ で非対称な罰 | 中央値以外の分位推定 |
SSDSE-B-2026 から、 被説明変数として頻繁に選ばれる 10 の数値変数について、 47 都道府県分布の主要統計量を整理した実測統計量表(2023年・47都道府県):
| 変数(候補 $Y$) | 平均 | 中央値 | SD | 歪度 | 推奨変換 |
|---|---|---|---|---|---|
| 出生数 A4101 (人) | 15,474 | 9,524 | 17,155 | +2.37 | $\log$ 変換推奨 |
| 死亡数 A4200 (人) | 33,512 | 23,744 | 29,083 | +1.86 | $\log$ 変換推奨 |
| 婚姻件数 A9101 (件) | 10,101 | 5,599 | 13,061 | +2.97 | 必ず $\log$ 変換 |
| 消費支出 L3221 (円/月) | 295,856 | 300,652 | 24,144 | -0.54 | そのまま OK |
| 標準地価 C5401 (円/m²) | 54,638 | 30,900 | 64,366 | +3.94 | 必ず $\log$ 変換 |
| 着工建築物数 C3301 (件) | 10,484 | 7,384 | 9,508 | +1.84 | $\log$ 変換推奨 |
| 一般診療所数 I5102 (施設) | 2,232 | 1,369 | 2,618 | +3.14 | 必ず $\log$ 変換 |
| 延べ宿泊者数 G7101 (千人泊) | 10,636 | 5,855 | 13,677 | +3.43 | 必ず $\log$ 変換 |
| 合計特殊出生率 A4103 | 1.29 | 1.30 | 0.13 | -0.04 | そのまま OK |
| 高齢化率 (%) | 31.6 | 31.8 | 3.3 | -0.58 | そのまま OK |
歪度の絶対値が 1 を超えるものは $\log$ 変換を検討すべし。 SSDSE-B-2026 のような 都道府県集計 では、 東京都が常に右側外れ値になりがちです。
Q1. 被説明変数を 後から 変えても良いですか?
A. 探索的分析(EDA) の段階では OK。 ただし「いろいろな $Y$ を試して、 最も $R^2$ の高いものを論文に書く」 のは p-hacking に該当し、 学術的に許されません。 候補が複数あるときは、 事前に「主要分析」 と「感度分析」 を明示しておくこと。
Q2. 被説明変数の単位を変えると係数も変わりますか?
A. はい、 線形回帰では $\beta_j$ は $X_j$ と $Y$ の単位に依存します。 $Y$ を「千円」 から「万円」 に変えれば $\beta$ は 10 分の 1 に。 これを避けたいなら、 標準化済みのデータを使うか、 弾力性($\log Y$ vs $\log X$) を使う。
Q3. 被説明変数に欠損がある都道府県は除外すべき?
A. SSDSE-B-2026 で 1〜2 件の欠損ならリストワイズ削除(その都道府県を除く) で十分。 5 件以上なら、 欠損が「ランダム」 か「系統的」 かを検討する必要があります。 系統的(小規模県のみ欠損 etc.) なら結論にバイアスが入ります。
Q4. 被説明変数が 2 つあるとき、 1 つにまとめる方法は?
A. 主成分分析(PCA) や因子分析で「総合指標」 を作る方法、 ファジィ統合のように重み付き平均する方法、 など複数あります。 ただし合成指標は 解釈が難しく、 第三者に説明しづらい欠点があります。 まずは個別 $Y$ で別々に分析するのが基本。
Q5. 「予測したい」 と「説明したい」 の違いは?
A. 予測志向(Breiman の言う「アルゴリズム文化」) は $\hat Y$ の精度が目的、 ブラックボックスでも OK。 説明志向(「データモデリング文化」) は $\beta_j$ の解釈が目的、 簡素なモデルを好む。 同じ $Y$ でも目的が違えば手法も変わる。
| 記号 | 意味 |
|---|---|
| $Y$ | 被説明変数(目的変数) |
| $X_1, \dots, X_p$ | 説明変数(特徴量) |
| $\hat{Y}$ | モデルによる予測値 |
| 残差 | $Y - \hat{Y}$ |
被説明変数(Response Variable)は、 単に用語の定義を覚えるだけでは本当には理解できません。 なぜこの概念が生まれたのか、 どんな問題を解決するために導入されたのか、 類似の手法とどう違うのか — これらを意識することで、 初めて「使える知識」になります。
数式や Python コードはあくまで 道具。 道具の使い方を覚える前に、 その道具で何をしたいか(目的) を明確にすることが、 データサイエンス学習の鉄則です。
この用語は、 単独で存在するわけではなく、 多くの関連概念とネットワークを形成しています。 上の「関連用語」セクションに挙げたリンク先を1つずつ辿ると、 全体像が見えてきます。 特に:
理論を学ぶことと、 実務で使えることは別物です。 公的統計(SSDSE、 e-Stat 等)の実データで実装・実験することで、 教科書だけでは見えない罠 に気付けます。 たとえば:
これらは 被説明変数 に限った話ではなく、 データサイエンス全般に共通する作法です。 「落とし穴」セクションの内容と合わせて、 自分なりのチェックリストを作るとよいでしょう。
被説明変数 を使った分析の 正しさを担保する ためには、 以下の観点で検証するのが定番です。
| 確認する点 | 被説明変数 で何を見るか |
|---|---|
| 因果と予測の混同 | Yを予測できる ≠ Xが原因。 因果は別物。 |
| ターゲットリーク | Yから派生した特徴がXに混入 → 異常な精度。 |
| Yの分布無視 | 分布が歪んでいる場合、 log変換等を検討。 |
| 複数Yの誤集計 | 多目的予測のときは1つずつ別モデル or 多変量回帰。 |
| 再現性 | 同じデータ・同じコードで同じ結果が出るか。このページの ▶ 実行ボタンで確かめられます |
被説明変数 は分野横断で活躍する概念です。 業界別に見ると以下のような使われ方があります。
被説明変数 を実際のデータで学ぶときは、 SSDSE(教育用標準データセット、 総務省統計局)が便利です。
これらは 統計センターの SSDSE ページ から CSV で直接ダウンロードできます。 上の Python コード例で data/raw/SSDSE-B-2026.csv としているのが、 まさにこれです。
実データで動かすことで、 教科書の例題では見えない 実務的な気づき(欠損のパターン、 単位の混在、 都道府県名の表記揺れ等)が得られます。
pip install pandas numpy scikit-learn matplotlib で揃います。utf-8 ではなく shift_jis や cp932 の場合がある(古い日本の公的統計に多い)。 encoding='cp932' を試してください。%matplotlib inline、 スクリプト実行なら plt.show() を忘れずに。 日本語フォントは matplotlib 用に別途設定(japanize-matplotlib 等)が必要。$Y = f(X_1, X_2, \dots, X_p) + \varepsilon$ という回帰の基本式を、 記号を見ずに 声に出して読み上げる ことができるでしょうか。 被説明変数 を真に理解するということは、 この一行を「自分の言葉」で言い換えられるということです。
読み方の例:「われわれが予測したい値 $Y$ (= 住宅価格、 医療費、 進学率、 etc.)は、 観測できる説明変数 $X_1, X_2, \dots, X_p$ (= 広さ、 築年、 駅距離、 etc.)の関数 $f$ にしたがって決まると 仮定 する。 ただし、 現実の $Y$ は $f(X)$ ぴったりにはならず、 説明できない揺らぎ $\varepsilon$ (誤差) を含む」。
ここで重要なのは 3 つの言葉です。 第一に「予測したい値」── これが 被説明変数。 PPDAC の P(Problem) の中心であり、 分析が何のために行われるかを規定します。 第二に「関数 $f$ にしたがう」── これは線形 ($f(X) = \beta_0 + \beta_1 X$) かもしれないし、 ランダムフォレストや勾配ブースティングのような非線形かもしれない。 関数形を仮定する自由 がモデル選択の本質です。 第三に「説明できない揺らぎ $\varepsilon$」── これは観測誤差・測定誤差・モデルに含まれていない要因をひとまとめにしたもので、 $\varepsilon$ をどう仮定するか(正規分布?均一分散?独立?) が回帰理論の基礎になります。
さらに踏み込むと、 被説明変数の 尺度 によってモデルの種類が決まる ことが理解できます。 $Y$ が連続値(住宅価格、 体重)なら線形回帰や勾配ブースティング回帰。 $Y$ が二値(合否、 罹患/非罹患)ならロジスティック回帰や SVM。 $Y$ が多カテゴリ(A, B, C, D 級)なら多項ロジット。 $Y$ が順序付き(5段階評価)なら順序回帰。 $Y$ が生存時間(死亡までの日数)なら Cox 回帰。 つまり $Y$ を見れば手法が決まる という、 データサイエンスの中心原理がここにあります。
最後に、 「予測したい」 と 「説明したい」 の違いに注意。 機械学習文脈では $\hat{Y}$ の精度を最大化することが目的(予測志向)。 統計学文脈では $\beta_j$ の解釈が中心(説明志向)。 同じ $Y$ を扱っていても、 どちらを重視するかでモデルの選び方が変わります。 SSDSE-B-2026 のような 都道府県レベル集計では $n=47$ と小サンプルなので、 過剰に複雑なモデルを当てると過学習するため、 解釈可能な線形回帰 を主軸に据えるのが定石です。
被説明変数を「消費支出 (L3221)」 に固定し、 説明変数を 1 つずつ抜いたとき $R^2$ がどれだけ落ちるかで「重要度」 を測定(permutation importance の逆発想):
| 抜く変数 | $R^2$(抜き後) | $\Delta R^2$ | 解釈 |
|---|---|---|---|
| (フルモデル) | 0.309 | ― | 基準 |
| 高齢化率を除外 | 0.244 | -0.064 | 最も重要 |
| 平均気温を除外 | 0.278 | -0.031 | 中位 |
| 合計特殊出生率を除外 | 0.278 | -0.030 | 中位 |
| 大学数を除外 | 0.301 | -0.008 | 弱い |
| 標準地価を除外 | 0.304 | -0.004 | ほぼ無関与 |
「高齢化率」 が相対的に最も効きますが、 $\Delta R^2$ はいずれも小さく、 単一の支配変数は存在しません。 消費支出は多くの弱い要因の重ね合わせで決まることを示唆します。 ただしこれは 相関 であり、 高齢化が消費を直接動かすという因果ではない点に注意。
同じ SSDSE-B-2026 から、 3 つの異なる $Y$ を選んで「同じ説明変数」 でモデルを組むと、 結論がどう変わるかを実感できます。 ここでは ① 総人口(万人)、 ② 死亡数、 ③ 合計特殊出生率 を $Y$ にして、 共通の説明変数 X = {高齢化率, 消費支出(万円), 標準地価(万円/m²)} で OLS をかけたシナリオを比較します。
このコードでやること: SSDSE-B-2026 から県別の総人口(万人)を $Y$ として、 3 つの説明変数で OLS を実行する。
📥 入力データ (SSDSE-B-2026 抜粋):
1 2 3 4 5 6 7 8 9 10 11 12 13 | import pandas as pd from sklearn.linear_model import LinearRegression df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) d = df[df['SSDSE-B-2026'] == 2023].copy() d['aging'] = d['A1303'] / d['A1101'] * 100 d['consume'] = d['L3221'] / 10000 d['land'] = d['C5401'] / 10000 X = d[['aging', 'consume', 'land']] y = d['A1101'] / 10000 model = LinearRegression().fit(X, y) print(f"R^2 = {model.score(X, y):.3f}") print(dict(zip(X.columns, model.coef_.round(2).tolist()))) |
📤 実行例:
💬 $R^2 = 0.82$ は高く見えますが、 これは「地価や消費支出の大きい県は人口も多い」 という 半ば自明な相関 を反映しているだけ。 政策的洞察は乏しい。
このコードでやること: 同じ X のまま $Y$ を「死亡数」 に変えると、 係数の意味と $R^2$ が変わる。
1 2 3 4 | y = d['A4200'] model = LinearRegression().fit(X, y) print(f"R^2 = {model.score(X, y):.3f}") print(dict(zip(X.columns, model.coef_.round(1).tolist()))) |
📤 実行例:
💬 $R^2 = 0.71$。 死亡数もカウント変数で人口規模と高齢化に連動するため、 そこそこ高い説明力が出ます。 ただし①(総人口)より低いのは、 地価や消費支出との連動が総人口ほど強くないからです。
このコードでやること: 合計特殊出生率は「率」で人口規模の効果が消えるため、 モデルの感度を試す題材。
1 2 3 4 | y = d['A4103'] model = LinearRegression().fit(X, y) print(f"R^2 = {model.score(X, y):.3f}") print(dict(zip(X.columns, model.coef_.round(4).tolist()))) |
📤 実行例:
💬 $R^2 = 0.39$ と最も低い。 合計特殊出生率は「率」で人口規模の効果が消えるうえ、 出生行動は 3 変数では捉えきれない社会・経済・文化要因に支配されるから。 ここでも $Y$ の選択次第で結論の解像度がまったく違うことが分かります。
| モデル | $Y$ | $R^2$ | aging 係数 | 解釈 |
|---|---|---|---|---|
| ① | 総人口(万人) | 0.821 | −12.13 | サイズ効果支配 |
| ② | 死亡数 | 0.711 | −1109.2 | 規模・高齢化に連動 |
| ③ | 合計特殊出生率 | 0.388 | −0.0128 | 「率」で規模効果消失 |
同じ説明変数なのに $R^2$ が 0.82 → 0.71 → 0.39 と変化。 「説明力が高い = 良い」 ではなく、 「$Y$ をどう選んだか」 で説明力の 意味 が変わるのです。
被説明変数 $Y$ は単なる「予測対象」 ではなく、 分析の世界観を規定する選択 です。 何を $Y$ にするかで、 同じデータから違う物語が浮かび上がります。 SSDSE-B-2026 のような 都道府県集計では特に、 $Y$ の単位・分布・変換・尺度・倫理的含意を慎重に検討してから分析を始めましょう。
本ページで紹介した $Y$ の尺度別分類表、 変換決定表、 損失関数対応表、 再現性チェックリスト を傍らに置きながら、 自分の分析プロジェクトに当てはめてください。 関連用語の 説明変数、 線形回帰、 ロジスティック回帰、 教師あり学習 も合わせて学ぶと、 回帰分析の全体像が掴めます。
SSDSE-B-2026 (独立行政法人統計センター提供、 47都道府県 × 多数変数) から、 「標準地価」(C5401, 円/m²)を被説明変数 $Y$、 「総人口」(A1101, 万人)を説明変数 $X$ とするシンプル線形回帰で、 被説明変数の役割を体感しましょう。
| 都道府県 | 総人口 $X$ (万人) | 標準地価 $Y$ (円/m²) | 予測値 $\hat Y$ | 残差 $Y - \hat Y$ |
|---|---|---|---|---|
| 東京都 | 1,408.6 | 404,400 | 291,138 | +113,262 |
| 神奈川県 | 922.9 | 188,400 | 190,730 | -2,330 |
| 大阪府 | 876.3 | 155,200 | 181,097 | -25,897 |
| 愛知県 | 747.7 | 112,300 | 154,512 | -42,212 |
| 沖縄県 | 146.8 | 68,100 | 30,290 | +37,810 |
| 青森県 | 118.4 | 16,100 | 24,419 | -8,319 |
※実データ(2023年)。 線形回帰モデル $\hat Y = -57.6 + 206.7 \cdot X$($X$ = 総人口・万人)。 47都道府県全体で $R^2 \approx 0.81$、 RMSE $\approx 27{,}954$ 円/m²。
この表から学べることは 3 つ。 (1)「東京都」の 残差が極端に大きい(実測地価がモデル予測を約 11.3 万円/m² 上回る)── これは人口規模だけでは捉えきれない 首都圏の地価プレミアム(本社立地・商業集積) を示唆します。 (2)「神奈川県」は残差がごく小さく、 線形モデルがよく当てはまっています。 (3) 被説明変数の選び方で結論が変わる── たとえば $Y$ を「標準地価」ではなく「消費支出」「出生数」にすると、 同じ $X$ でも係数も $R^2$ も別物になります。 これが「何を予測するか」が分析の核という意味です。
| $Y$ の型 | 具体例 | 代表モデル | 評価指標 |
|---|---|---|---|
| 連続値(比例尺度) | 所得、 価格、 体重 | 線形回帰、 Ridge、 Lasso、 GBR | RMSE、 MAE、 $R^2$ |
| 連続値(区間尺度) | 気温、 IQ スコア | 同上(ただし対数変換は不可) | RMSE、 MAE |
| 二値 | 合否、 罹患/非罹患 | ロジスティック回帰、 SVM、 RF | AUC、 Accuracy、 F1 |
| 多カテゴリ(名義) | 業種、 ジャンル | 多項ロジット、 ニューラル | Macro/Micro F1 |
| 順序 | 5段階満足度 | 順序ロジット、 ordinal forest | QWK、 MAE |
| カウント | 来店数、 事故件数 | ポアソン回帰、 負の二項回帰 | Deviance |
| 時間(生存) | 死亡時間、 解約時間 | Cox 回帰、 AFT | C-index |
| 時系列 | 月次売上、 株価 | ARIMA、 状態空間、 Prophet | MAPE、 SMAPE |
この表を覚えれば、 「被説明変数を見ただけで適切な手法のショートリストが出てくる」状態になります。 分析プロジェクトの最初に必ず確認する作業です。
ターゲットリーク(target leakage、 data leakage) は、 被説明変数 $Y$ から派生した情報が、 知らず知らずのうちに説明変数 $X$ 側に混入する現象です。 検証スコアは異常に高くなりますが、 本番では大きく外す ── 機械学習プロジェクトで最も頻繁に発生し、 かつ最も発見が遅れる失敗パターンです。
sklearn.pipeline.Pipeline) により、 標準化・PCA・選択を fold 内 でのみ実行する。SSDSE-B-2026 のように、 都道府県別に「総人口」「消費支出」「出生数」「死亡数」など 複数の Y 候補 が並ぶデータでは、 どれを被説明変数にするかの設計が分析の質を決めます。 同時に複数の $Y$ を予測したい場合は、 以下の選択肢があります。
| アプローチ | 利点 | 欠点 |
|---|---|---|
| 個別モデル($Y_1$, $Y_2$ ごとに別モデル) | シンプル、 解釈容易、 デバッグ容易 | $Y$ 間の相関を活用できない |
multi-output 回帰(MultiOutputRegressor) | コードが 1 つにまとまる | 内部的には個別モデルと同じ |
| chained regression | $Y_1$ の予測を $Y_2$ の入力に使える | $Y$ 間の因果順序を仮定する必要 |
| SUR(seemingly unrelated regression) | $Y$ 間の誤差相関を考慮、 効率的 | 線形仮定、 実装が重い(statsmodels) |
| 多変量回帰(multivariate) | 多変量正規分布で同時に推定 | 解釈の難易度高い |
$Y$ を理解する上で外せない数式を 3 つ取り上げ、 直感的に読み解きます。
回帰モデルが推定しているのは、 厳密には次の 条件付き期待値 です。
$$E[Y \mid X = x] = f(x; \theta)$$
$X$ の値を固定した時の $Y$ の 平均 を予測しているということ。 「$Y$ そのもの」 を予測しているのではない点が重要。 つまり同じ $X = x$ でも、 $Y$ には散らばりがあり、 モデルはその中心を当てている。 SSDSE-B-2026 で言えば、 「高齢化率 30% の県の出生率の 平均」 を当てるのが回帰の仕事で、 「ある特定の県の出生率を当てる」 ことではありません。
$Y$ の総変動は、 モデルが説明できる部分と残差の部分に分解できます。
$$\sum_i (y_i - \bar{y})^2 = \sum_i (\hat{y}_i - \bar{y})^2 + \sum_i (y_i - \hat{y}_i)^2$$
左辺 = 全変動(SST)、 右辺第 1 項 = 説明変動(SSR)、 第 2 項 = 残差変動(SSE)。 $R^2 = \text{SSR}/\text{SST} = 1 - \text{SSE}/\text{SST}$。 $Y$ の分散が大きい(県差が大きい)ほど SSR が大きくなる余地があり、 $R^2$ も高く出やすい。 だから 異なる $Y$ で $R^2$ を直接比較するのは無意味。 同じ $Y$ で異なるモデルを比較する時のみ意味があります。
$Y$ の分布を仮定すると、 対応する尤度関数を最大化することがモデル推定になります。
$$\hat{\theta} = \arg\max_\theta \prod_{i=1}^n p(y_i \mid x_i; \theta)$$
$Y$ が正規分布なら最尤推定は OLS と一致、 $Y$ がベルヌーイならロジスティック回帰、 $Y$ がポアソンならポアソン回帰。 つまり $Y$ の分布族を選んだ瞬間、 モデルの形が決まる。 これが「$Y$ を見ずにモデルを選ぶ」 ことの危うさの数学的根拠です。
| $Y$ の分布 | 最尤推定の形 | 対応モデル | SSDSE-B での例 |
|---|---|---|---|
| 正規 $N(\mu, \sigma^2)$ | OLS | 線形回帰 | log(消費支出) |
| ベルヌーイ $\text{Ber}(p)$ | IRLS | ロジスティック回帰 | 人口増減 (0/1) |
| ポアソン $\text{Poi}(\lambda)$ | IRLS | ポアソン回帰 | 交通事故件数 |
| ガンマ $\text{Gam}(k, \theta)$ | IRLS | ガンマ回帰 | 保険金請求額 |
| ベータ $\text{Beta}(\alpha, \beta)$ | 数値最適化 | ベータ回帰 | 3次産業比率 |
| 多項 $\text{Mult}(\pi_1, ..., \pi_K)$ | IRLS | 多項ロジット | 8 地方区分 |
$Y$ の分布を仮定するということは、 データ生成過程 についての強い主張をすることに他なりません。
現場でよくある質問を 10 個まとめ、 SSDSE-B-2026 を念頭にした回答を併記します。
予測したい時点に合わせます。 「未来予測」 なら時点 t+1 を $Y$、 時点 t の特徴量から予測。 「現状把握」 なら時点 t を $Y$。 SSDSE-B-2026 は単年度集計なので、 過去の年度を結合してパネルにすると「来年の出生率」 を $Y$ にできます。 ただし 時点 t+1 の特徴量を誤って使う(リーク) ことに注意。
$Y_1, Y_2, ...$ に相関がなければ別々のモデルで OK。 相関があれば マルチタスク学習 で同時推定すると、 共通の特徴抽出が効率化。 SSDSE-B-2026 で「男性寿命」 と「女性寿命」 は強相関なので、 マルチタスクが有利。
線形モデルでは 係数と切片が単位倍数だけスケール しますが、 予測の質や $R^2$ は不変。 ただしニューラルネットや勾配ブーストでは、 学習率や初期化に影響するので「ちょうど良いスケール」 で学習させた方が安定します。 報告時は元単位に戻すこと。
単純な $\exp(\hat{y})$ は 過小予測 になります(Jensen の不等式により $E[\exp(Y)] \geq \exp(E[Y])$)。 正規誤差を仮定するなら Smearing 補正 $\hat{Y} = \exp(\hat{\mu} + \sigma^2/2)$ や Duan の Smearing 推定量を使うのが正攻法。
はい、 多くの場合そうです。 $Y$ にノイズが $\sigma_\epsilon$ 載っているなら、 どんな完璧なモデルでも RMSE は $\sigma_\epsilon$ 以下にできません(Bayes 誤差の下限)。 モデル改善で 10% の精度向上を狙うよりも、 $Y$ の計測方法を見直して「ノイズ半減」 する方が、 結果として 50% 改善することも。
運用環境で参照される $Y$ を使います。 訓練時のみ高精度なオフライン値を使い、 推論時はリアルタイム値しか得られない、 という状況は train-serve skew を生み、 本番性能が大幅劣化。 SSDSE-B-2026 のような確定統計は問題ないですが、 速報値 vs 確報値の使い分けは要注意。
「その他」 は分類器にとって ノイズの坩堝。 ドメイン知識で再分類するか、 「その他」 を独立クラスとして扱うが評価から除外、 という選択肢があります。 「その他のままで分類」 はモデルが混乱する典型例。
「1=全く満足していない 〜 5=非常に満足」 のような Likert 尺度なら順序を尊重(順序ロジット)。 ただし「1 と 2 の差」 と「4 と 5 の差」 が等しいかは怪しいので、 OLS で連続値扱いするのは 近似として許容(多くの社会調査で慣習的に行われる)。
① 明確なガイドライン、 ② 複数の作業者によるアノテーションと一致率(Cohen's κ)の計算、 ③ 困難ケースの再ラベル、 ④ サンプルの代表性確認。 ガイドラインが曖昧だと、 作業者間の解釈ブレが $Y$ のノイズとして残り、 モデルの天井を下げます(アノテーション 参照)。
$Y$ の定義変更前後のデータを混在させると 定義シフト が起こります。 変更後のみを使う、 変更前を再定義しなおす、 ダミー変数で吸収する、 いずれかが必要。 「気付かず混ぜる」 のが最悪のパターン。
県集計値を機械的に市町村に按分すると、 エコロジカル誤謬 を起こします。 別データセット(e-Stat の市町村別集計)を結合するのが正攻法。 SSDSE-B はあくまで「県という集計単位での $Y$」 であることを忘れない。
「成長率」 「改善度」 を議論したいなら対前年比、 「現在の水準」 を議論したいなら絶対値。 報告先の関心事に合わせる。 SSDSE-B-2026 では「出生率」 は絶対値、 「人口増減率」 は差分という両建てが必須。
縦軸を「ゼロ起点」 にせず狭い範囲だけ見せると、 微小な変化を大袈裟に見せられます。 統計倫理として基本ルールは「比較したい差が見えるスケールを選ぶが、 観衆を欺かない」。 SSDSE-B-2026 のような公的データの報告でも、 軸スケールの恣意性が議論を歪めることがあります(可視化倫理 参照)。
過去の結果は 過去の定義のまま参照 し、 新定義での再計算結果を併記。 「同じ $Y$ という言葉でも中身が違う」 ことを脚注で明示。 これを怠ると、 後続研究者が混乱します。
① 各案で「同じデータ・同じ説明変数」 で予備分析を実施、 ② 各案の結果を一覧化して「何が違うのか」 を可視化、 ③ ステークホルダーに見せて議論、 ④ 主案 + 補助案として複数 $Y$ を採用、 という流れ。 「最初から 1 つに絞る」 のではなく「複数案を見せて選ばせる」 のが現場流。
$Y$ を選んだら、 モデリングを始める前に 必ず以下の 12 項目を診断 します。 SSDSE-B-2026 のような公的統計でも、 ここをスキップして「とりあえず回帰」 すると後で大きな手戻りが発生します。
💡 診断レポートのテンプレート: 上記 12 項目を 1 ページにまとめた「$Y$ プロファイル」 をプロジェクト冒頭で作成。 ステークホルダーと共有すれば、 後の議論が圧倒的にスムーズになります。
このコードでやること: SSDSE-B-2026 の $Y$ を入れると 12 項目の主要な指標を自動算出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import pandas as pd from scipy import stats df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) d = df[df['SSDSE-B-2026'] == 2023] y = d['A4103'] # 合計特殊出生率を Y にする例 print(f'件数: {len(y)}, 欠損: {y.isna().sum()}') print(f'平均: {y.mean():.3f}, 中央値: {y.median():.3f}') print(f'最小: {y.min():.3f}, 最大: {y.max():.3f}') print(f'標準偏差: {y.std():.3f}') print(f'歪度: {stats.skew(y.dropna()):.3f}') print(f'尖度: {stats.kurtosis(y.dropna()):.3f}') q1, q3 = y.quantile([0.25, 0.75]) iqr = q3 - q1 outliers = ((y < q1 - 1.5*iqr) | (y > q3 + 1.5*iqr)).sum() print(f'IQR: {iqr:.3f}, 外れ値件数: {outliers}') |
📤 実行例:
💬 47 都道府県・欠損なし・歪度 −0.04 でほぼ左右対称、 外れ値 0 件。 最小は東京都 (0.99)、 最大は沖縄県 (1.60)。 「対数変換は不要、 OLS で良い」 と即座に診断できます。
本セクションでは、 被説明変数 $Y$ を選ぶ・整形する・解釈するという 3 つの局面に対応する 15 問の理解度チェック を用意しました。 各問いの後に「想定回答の要点」を畳んで提示しています(ページ上では <details> 要素で開閉)。 SSDSE-B-2026 の都道府県集計データを念頭に、 自分の言葉で答えてから確認してください。
人口は「絶対数(万人)」 で、 東京・神奈川などの大都市が常に上位に来るため、 係数は 「県の規模」 を強く反映します。 一方、 増減率は「率(%/年)」 なので大都市と地方が混在し、 係数は 「人口動態のドライバー(高齢化・転出入)」 を反映します。 単位は「万人」 vs「%」、 尺度は両者とも比例尺度ですが、 前者は サイズ効果 が支配し、 後者は 変化率 が支配します。 同じ説明変数(高齢化率など)でも係数の 意味 がまったく異なるので、 「人口を増やす施策」 と「増減率を改善する施策」 を取り違えると現場では大きな誤解になります。
連続値(年収)はモデル: LinearRegression / GradientBoostingRegressor、 損失: MSE(または log 変換後の MSE)、 評価: RMSE / MAE / $R^2$。 二値(年収 ≥ 中央値)はモデル: LogisticRegression / GradientBoostingClassifier、 損失: log-loss、 評価: AUC / Accuracy / F1 / 適合率・再現率。 二値化すると 外れ値の影響を吸収できる 反面、 順序情報(500 万円と 800 万円の差)が消える のが最大の代償。
「県別の健康政策評価」 が目的なら男女平均で十分(県という単位での効果を測りたい)。 「ジェンダー差の説明要因探索」 が目的なら男女別が必須($Y$ の異質性を保持しないとパターンが見えない)。 分散構造としては、 男性は喫煙・職業病で県差が大きく、 女性は医療アクセスで小さい傾向。 平均すると 男性の県差が薄められて 弱い相関しか出なくなる場合があります。
解釈できません。 これは典型的な 逆因果(reverse causality): 出生率が低い県ほど危機感から子育て支援を厚くしているため、 横断データでは支援費と出生率に負の相関が出ます。 因果を語るには 差の差分析 や 操作変数法 等の準実験設計が必要。
総数は東京・大阪が極端に大きく 分布が右に長いヘビーテール。 人口比は 規模効果が消えて 都道府県のリスクを比較可能。 対数変換は乗算的な構造(住みやすさが半分→犯罪 2 倍)を線形にし、 OLS の正規性仮定にも合わせやすい。 報告の現場では 人口千人あたりが標準。 統計モデリングでは log(総数) + offset(log(人口)) の ポアソン回帰 もよく使われます。
①ヒストグラム + Q-Q プロットで歪度を確認、 ②歪度 > 1 なら対数、 0.5〜1 なら平方根、 < 0.5 ならそのまま、 ③変換後の残差プロットで等分散性を再確認、 ④解釈は「対数差 ≒ % 差」 を活用、 ⑤ Box-Cox 変換 や Yeo-Johnson 変換 で λ を自動推定する手もあり。
原則として Y はスケーリングしません。 解釈性が失われるためです(「年収を z-score 0.5 だけ上げる」 と言われても直感が働かない)。 ただし 勾配ベースのニューラルネット や マルチタスク学習 では数値安定化のために標準化することはあります。 その場合は推論時に必ず逆変換して報告。
原則 Y の欠損は 補完せず、 そのサンプルを除外。 補完してしまうと「補完値で学習 → 補完値を予測」 という循環参照になり、 評価指標が嘘になります。 ただし 欠損メカニズム が MAR の場合、 マルチプル・インピュテーション(MI)で複数の Y を推定し、 結果を統合する手法(欠損メカニズム 参照)もあり。
①除外: 単純だが情報損失、 ②対数変換: 分布を整えるが解釈変化、 ③Winsorize(上下 5% を境界値で打ち切り): 形状保持だが恣意的、 ④ロバスト回帰(Huber / M-estimator): 外れ値の影響を自動的に減衰、 解釈そのまま。 SSDSE-B-2026 では東京・神奈川・大阪の 3 都府県が常に外れ値挙動を示すので、 結論を出す前に 「東京あり vs 無し」 の感度分析を必ず実施。
問題点: ① 予測値が [0, 1] を逸脱する可能性、 ② 分散が平均に依存(heteroscedasticity)、 ③ 線形外挿が無意味。 望ましいモデル: ロジット変換 + OLS、 ベータ回帰、 または 分数ロジット。 簡便には $\text{logit}(Y) = \log(Y/(1-Y))$ を取って OLS。
①過学習: 訓練データの $R^2$ で評価しているなら未知データでは性能が大幅に低下、 ②サイズ効果による疑似的高 $R^2$: 例えば「県人口」 を Y、 「県の何らかの数」 を X とすれば、 単に大きい県は何でも大きいだけで $R^2$ が機械的に上がります。 評価は必ず クロスバリデーション 後の test set で。
RMSE は誤差を 2 乗するので「大きく外したサンプル」 の影響を強く受けます。 RMSE ≫ MAE なら 少数の極端な外れサンプル が存在することの示唆。 SSDSE-B-2026 でいえば、 東京・神奈川・大阪のような「規模外れ値」 にモデルが追従できていない可能性大。
系統的バイアス(systematic bias)が存在。 モデルが過小予測で、 切片(intercept)を 0.05 だけ上げれば解消できます。 ただし背後に「最近の出生率全体の上昇」 などの時間トレンドがあるなら、 単純な切片補正ではなく 年度ダミー や パネル固定効果 を加える方が正攻法。
条件付き解釈なら可能: 「他の説明変数を一定に保った時、 教育年数 1 年増えると年収の 条件付き期待値 が 35 万円増える」。 ただし: ① 因果ではなく相関、 ② 教育年数の 分布範囲外 での外挿は無効、 ③ 交互作用や非線形を見落としているかもしれない、 ④ 自己選択(能力の高い人が長く教育を受ける)バイアスを除去していない、 という 4 点に注意。
必ずしも。 AUC は分類能の指標ですが、 確率の較正(calibration) や 意思決定の閾値 によって最終評価は変わります。 ロジスティック回帰は確率較正が良好で解釈性が高い反面、 非線形を捉えにくい。 ランダムフォレストは AUC が低くても 業務上重要な閾値域(例: 上位 10% を選ぶ)で precision が高いかもしれません。 必ず 業務 KPI に直結する評価指標(confusion matrix の特定セル、 expected value など)で再評価を。
これら 15 問にすべて自分の言葉で答えられれば、 「$Y$ をどう選び、 整え、 解釈するか」 という回帰分析の 最初の難所 はクリアです。 続きは 説明変数、 線形回帰、 ロジスティック回帰 でさらに深掘りしてください。
📝 最後に強調: $Y$ は単なる「正解ラベル」 ではなく、 「あなたが世界をどう切り取りたいか」 を示す世界観の選択です。 SSDSE-B-2026 を使った演習でも、 同じデータから「人口」 を見るか「出生率」 を見るかで、 浮かび上がる物語はまったく違います。 「データに答えを聞く」 のではなく、 「適切な $Y$ を選んで、 データに正しい問いを投げかける」 という主体性こそ、 データサイエンティストの最も重要な技能です。 本ページで学んだ 12 項目の診断プロトコル、 15 問の理解度チェック、 10 大原則を、 あなた自身の分析プロジェクトで実践してください。 これがデータサイエンスの最初の一歩です。
$Y$ を選んだら、 まず必ず可視化 します。 数値だけ眺めても分布の歪み・外れ値・群差・非線形性は見えません。 ここでは SSDSE-B-2026 を念頭に 3 種類の代表的グラフを示し、 「$Y$ を見たら何を読むか」 のチェックリストを併記します。

読み方: ① 全体の傾向(線形 or 曲線 or 無関係)、 ② 散らばりの大きさ(誤差の規模)、 ③ 外れ値(孤立した点)、 ④ 部分群構造(クラスタが見えないか)。 SSDSE-B-2026 で例えば $Y=$「人口」、 $X=$「消費支出」 を散布図で描くと、 ほぼ y = ax のような強い線形+東京・神奈川の外れ値群が見えます。 ここから「対数変換すべきか」「外れ値を別カテゴリにすべきか」 を判断します。

読み方: ① 中心(平均・中央値の位置)、 ② 広がり(標準偏差)、 ③ 形状(左右対称か、 右に裾を引くか)、 ④ 多峰性(クラスタの存在)。 SSDSE-B-2026 で「消費支出」 のヒストを描くと、 右に大きく裾を引く分布になります。 ここで 対数変換 を採用すれば、 ほぼ正規分布に近くなり、 OLS の前提に合致します。

読み方: ① 中央値の高低、 ② 箱の高さ(IQR = 群内ばらつき)、 ③ ひげの長さ(裾の伸び)、 ④ 外れ値(箱の外の点)。 SSDSE-B-2026 で例えば 47 都道府県を「8 地方区分」 でグループ化し、 $Y=$「消費支出」 を箱ひげで比較すると、 関東 vs 沖縄 vs 東北で群差と分散の不均一が一目で分かります。
💡 原則: $Y$ を選んだら 必ず 散布図・ヒスト・箱ひげの 3 種類を描いてから次に進む。 「すぐ回帰式を立てる」 のは初学者がやりがちな失敗で、 分布形状と外れ値の存在を見落とすと、 後段のすべての分析が崩れます。
| 業界 | 代表的な $Y$ | 尺度 | よく使うモデル | 注意点 |
|---|---|---|---|---|
| 小売・EC | 購買金額、 購買有無、 離脱確率 | 連続 / 二値 / 確率 | GBM、 ロジスティック | ゼロ過剰(買わない人が大半) |
| 金融 | デフォルト確率、 リターン | 二値 / 連続 | ロジスティック、 ARIMA | クラス不均衡、 構造変化 |
| 医療 | 罹患有無、 生存時間、 検査値 | 二値 / 生存 / 連続 | Cox、 ロジスティック | 右側打ち切り、 倫理審査 |
| 公共政策 | 出生率、 失業率、 寿命 | 連続(率) | 線形、 ベータ回帰 | 集計バイアス、 因果性 |
| 製造 | 不良率、 寿命、 強度 | 二値 / 連続 | Weibull、 SPC | 外乱要因、 系統誤差 |
| 教育 | テスト得点、 卒業率 | 連続 / 率 | マルチレベル | 階層構造(学校>生徒) |
同じ「予測する」 という言葉でも、 業界によって $Y$ の 性質と運用の制約 がまったく違うことが分かります。
| 尺度 | 例 | 分布チェック | 変換候補 | 評価指標 |
|---|---|---|---|---|
| 比例尺度(金額・人数) | 年収、 消費支出、 人口 | ヒスト、 Q-Q プロット | log、 Box-Cox | RMSE、 MAE、 MAPE |
| 間隔尺度(温度・偏差値) | 気温、 IQ | ヒスト | 通常なし | RMSE、 MAE |
| 順序尺度(評定) | 星評価、 等級 | 棒グラフ | 順序保持変換 | QWK、 Spearman |
| 名義尺度(種類) | 病名、 商品種別 | 棒グラフ、 頻度表 | One-hot | F1、 AUC、 Accuracy |
| 二値(あり / なし) | 購買、 罹患 | 頻度表、 不均衡確認 | SMOTE、 重み付け | AUC、 Precision/Recall |
| 計数(件数) | 事故件数、 来店回数 | ヒスト、 分散/平均比 | log + offset | deviance、 Pearson $\chi^2$ |
| 比率(割合) | 3次産業比率、 投票率 | ヒスト([0,1] 内) | logit、 arcsin√ | RMSE、 Beta 尤度 |
| 生存時間 | 寿命、 退職までの時間 | KM 曲線 | log + 打ち切り | C-index、 Brier |
$Y$ の尺度を見極めることが、 適切なモデル選定の出発点です。
| $Y$ の性質 | 推奨損失 | 理論的根拠 | SSDSE-B での例 |
|---|---|---|---|
| 正規誤差を仮定可能 | MSE(二乗誤差) | 最尤推定 = OLS | log(消費支出) |
| 外れ値が多い | MAE、 Huber | ロバスト性 | 人口(東京除外せず) |
| 二値 | log-loss | Bernoulli 尤度 | 人口増 vs 減 |
| 多クラス | categorical cross-entropy | Categorical 尤度 | 8 地方区分の予測 |
| 計数 | Poisson deviance | Poisson 尤度 | 交通事故件数 |
| 分位点(中央値・90% 点) | Pinball loss | 分位点回帰 | 年収の上位 10% 線 |
| 順序 | Cumulative link | 順序ロジット | 満足度評価 |
$Y$ の性質と損失関数は 密接に対応 しており、 ミスマッチは深刻な性能低下を招きます。
SSDSE-B-2026 から「婚姻件数 x(千件)」→「出生数 y(千人)」の単回帰モデル ŷ = 2.320 + 1.302·x を、 3 都道府県(沖縄 6.316, 愛知 31.759, 東京 71.774 千件)に当てはめ、 予測値と残差を計算する。
1 2 3 4 5 6 7 | import numpy as np # SSDSE-B-2026(2023): 沖縄/愛知/東京 婚姻件数(千件) と 出生数(千人) x = np.array([6.316, 31.759, 71.774]) y_obs = np.array([12.549, 48.402, 86.348]) yhat = 2.320 + 1.302*x e = y_obs - yhat print(f"残差: {e.round(3)}") print(f"平均残差: {e.mean():.3f}") |
💬 手計算 (Step 2) と Python 出力が完全一致。 沖縄・愛知は正残差(実測 > 予測 = 婚姻件数の割に出生が多い)だが、 東京は大きな負残差(実測 < 予測 = 婚姻件数の割に出生が少ない)── 晩婚・晩産により婚姻から出生への転化が弱いことを示唆する。
SSDSE-B-2026 などの実データを使った最小コード(10行):
1 2 3 4 5 6 7 8 9 10 | import pandas as pd from sklearn.linear_model import LinearRegression df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) d = df[df['SSDSE-B-2026'] == 2023] Y = d['L3221'] # 被説明変数: 消費支出 X = d[['A1101', 'A1303', 'B4101', 'C5401']] # 説明変数(4列) m = LinearRegression().fit(X, Y) print('被説明変数:', 'L3221 (消費支出)') print('R^2:', round(m.score(X, Y), 3)) print('係数:', dict(zip(X.columns, m.coef_.round(3).tolist()))) |
※ data/raw/SSDSE-B-2026.csv は e-Stat SSDSE から取得した実データを想定。
同じ説明変数セットでも、 被説明変数を変えるだけで $R^2$ も主要係数も激変する ── これを実データで体感する 20 行コード:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import pandas as pd from sklearn.linear_model import LinearRegression 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['aging'] = d['A1303'] / d['A1101'] * 100 # 高齢化率(%) # 被説明変数の候補を 3 つ用意(連続値) y_candidates = ['A4101', 'A4200', 'L3221'] # 出生数・死亡数・消費支出 # 説明変数(共通) X_cols = ['aging', 'A1101', 'C5401'] # 高齢化率・総人口・標準地価 for y_col in y_candidates: X = d[X_cols].values y = d[y_col].values X_std = StandardScaler().fit_transform(X) m = LinearRegression().fit(X_std, y) print(f'=== Y = {y_col} ===') print(f' R^2 = {m.score(X_std, y):.3f}') for name, coef in zip(X_cols, m.coef_): print(f' {name:6s}: {coef:+.1f}') |
この結果を見ると、 出生数・死亡数は 総人口の規模効果 が支配的で $R^2 \approx 0.99$、 高齢化率の符号も出生数では負・死亡数では正と反転します。 一方、 世帯あたりの消費支出は規模効果が消えて $R^2 = 0.12$ まで落ちます。 つまり同じ説明変数でも $Y$ ごとに構造がまったく違う ── これが被説明変数選択の重みです。
「自治体の幸福度を予測したい」と言われたら、 何を被説明変数にしますか? 「1人当たり県民所得」?「自殺率の逆数」?「アンケートの主観的幸福度」? ── どれを選ぶかは 分析者の価値観 を反映し、 結論を大きく左右します。 これは技術論ではなく 分析倫理 の問題です。
同様に、 「教育効果を測りたい」 → $Y$ は学力テスト点数? 大学進学率? 生涯年収? 主観的満足度? ── どれを選ぶかで「教育」の意味自体が変わります。 被説明変数の選択は、 何を価値あるものとみなすかの宣言 です。 SSDSE-B-2026 のような公的統計を使うときは、 「なぜこの $Y$ なのか」を必ず方法論セクションで明文化しましょう。
プロキシ変数(proxy)の問題も避けられません。 「教育の質」を直接測れないので「教員一人当たり生徒数」を代理に使う ── これは「より少ない生徒に手厚く教える方が質が高い」という 暗黙の前提 を含みます。 もしオンライン教育では成り立たないかもしれない。 被説明変数を選んだ瞬間に、 われわれは「世界の見方」を 1 つ選んでいます。
被説明変数 $Y$ を そのまま 使うことが最良とは限りません。 分布が極度に歪んでいる、 ゼロ近傍が多い、 上下限が決まっている ── これらの場合、 適切な変換でモデル性能と解釈性が大きく改善します。
| 変換 | 適用条件 | 効果 | 注意点 |
|---|---|---|---|
| $\log Y$ | $Y > 0$、 右裾長い | 正規化、 弾力性解釈 | $Y=0$ で発散 |
| $\log(Y+1)$ | カウント、 ゼロ含む | ゼロ対応 | +1 の妥当性 |
| Box-Cox | $Y > 0$、 正規化したい | $\lambda$ を最尤推定 | $\lambda$ の解釈 |
| Yeo-Johnson | 負値も OK | 汎用 | 同上 |
| logit $\log(Y/(1-Y))$ | $Y \in (0,1)$ 比率 | 無制限の実数に拡張 | 境界 0,1 で発散 |
| rank(順位) | 外れ値を抑えたい | ロバスト | 情報損失 |
| 標準化 | 他指標との比較 | 単位フリー | 解釈に逆変換要 |
SSDSE-B-2026 で「標準地価 (C5401)」を $Y$ とすると、 東京都が極端な右側外れ値になり線形回帰の残差正規性を壊します。 $\log$ 変換すると東京を含めた 47 都道府県が「正規分布に近い」形になり、 OLS の前提を満たせるようになります。 ただし $\log Y$ のモデル係数は「$X$ が 1 単位増えると $Y$ が 何 % 増える」 という弾力性解釈になる点を必ず明記する。
被説明変数の選択 → 分布診断 → 変換 → モデル比較 → 評価 までを一気通貫で実装する 60 行コード:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | import pandas as pd import numpy as np from sklearn.linear_model import LinearRegression, Ridge, Lasso from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor from sklearn.model_selection import LeaveOneOut, cross_val_score from sklearn.preprocessing import StandardScaler from scipy import stats # ---------- 1. データ読み込み ---------- df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) d = df[df['SSDSE-B-2026'] == 2023].copy() d['aging'] = d['A1303'] / d['A1101'] * 100 pref_names = d['Prefecture'].values # ---------- 2. 被説明変数 候補と説明変数 ---------- Y_NAME = 'C5401' # 標準地価(円/m^2) X_COLS = ['aging', 'A1101', 'L3221', 'E6102', 'G7101'] y = d[Y_NAME].values X = d[X_COLS].values # ---------- 3. 分布診断 ---------- print(f'=== {Y_NAME} 分布診断 ===') print(f' n={len(y)}, mean={y.mean():.1f}, sd={y.std():.1f}') print(f' 歪度={stats.skew(y):+.2f}, 尖度={stats.kurtosis(y):+.2f}') if abs(stats.skew(y)) > 1.0: print(' → 歪度大、 log 変換を検討') y_log = np.log(y) print(f' log後 歪度={stats.skew(y_log):+.2f}') # ---------- 4. 標準化 ---------- X_std = StandardScaler().fit_transform(X) # ---------- 5. モデル比較(LOOCV) ---------- models = { 'OLS': LinearRegression(), 'Ridge': Ridge(alpha=1.0), 'Lasso': Lasso(alpha=0.1), 'RF': RandomForestRegressor(n_estimators=100, random_state=42), 'GBR': GradientBoostingRegressor(n_estimators=100, random_state=42), } loo = LeaveOneOut() print(f'\n=== モデル比較(LOOCV, n={len(y)})===') for name, m in models.items(): scores = cross_val_score(m, X_std, y, cv=loo, scoring='neg_mean_squared_error') rmse = np.sqrt(-scores.mean()) print(f' {name:6s}: RMSE = {rmse:.1f} 円/m^2') # ---------- 6. 主モデル fit と残差分析 ---------- m = LinearRegression().fit(X_std, y) y_hat = m.predict(X_std) residuals = y - y_hat print(f'\n=== 残差分析 ===') print(f' 最大正残差: {pref_names[residuals.argmax()]} = {residuals.max():+.0f}') print(f' 最大負残差: {pref_names[residuals.argmin()]} = {residuals.min():+.0f}') print(f' R² = {m.score(X_std, y):.3f}') # ---------- 7. 係数の解釈 ---------- print(f'\n=== 標準化係数 ===') for name, coef in zip(X_COLS, m.coef_): print(f' {name:10s}: {coef:+.0f} 円/m^2 / 1SD増加') |
このコードを「data/raw/SSDSE-B-2026.csv」 を配置した状態で実行すれば、 被説明変数選択 → 診断 → モデル選択 → 解釈 まで一気に完了します。 ぜひ $Y$ を別の変数に置き換え て同じ手順を踏んでみてください。 同じ説明変数セットでも、 $Y$ ごとに全く違う物語が浮かび上がります。
都道府県の 医療費 を被説明変数にしたい ── と言われたとき、 候補は複数あります:
どれを選ぶかは 研究目的 次第。 「高齢化が医療費を押し上げるか」 を問いたいなら (b)。 「医療費が経済を圧迫しているか」 を問いたいなら (c)。 「政策効果を見たい」 なら (d)。 同じ「医療費」 という言葉が指す $Y$ は 5 通りあり、 その選択が結論を決める。
論文では必ず「本研究では医療費を $Y_i = $ 都道府県 $i$ の 1 人当たり国民医療費(千円)と定義する」 のような厳密な操作的定義を冒頭に置きましょう。 これがないと第三者が再現できず、 査読でリジェクトされます。
二値分類の被説明変数 $Y \in \{0, 1\}$ では、 連続値と異なる注意点が多数あります。
「合格率 5%」 のような不均衡 $Y$ では、 全件「不合格」 と予測しても accuracy = 95% になる。 評価指標は accuracy ではなく F1, AUC, PR-AUC を使う。 学習も class_weight や SMOTE で調整。
ロジスティック回帰で出る $\hat p$ を $Y = 1$ と判定する閾値(デフォルト 0.5) は、 ビジネス文脈で変えるべき。 「偽陽性のコスト」 と「偽陰性のコスト」 が違うときは、 コスト最小化で閾値を選ぶ。
RandomForest や GBM は「確率」 を出すが、 これが 本物の確率(calibrated probability) である保証はない。 Platt scaling や isotonic regression で較正する。
SSDSE-B-2026 には二値 $Y$ は直接ないが、 「人口減少県/増加県」 のように連続値を 2 値化することは可能。 「人口増加率 > 0」 なら 1、 でなければ 0、 で 47 都道府県を 2 クラスに分け、 ロジスティック回帰で分析できる。
SSDSE-E-2026(時系列版) を使うと、 各都道府県の経年変化を $Y$ にできます。 たとえば「2010〜2024 の各都道府県の 1 人当たり県民所得」。 ここで注意すべき罠:
時系列 $Y$ は 独立データ用の手法をそのまま使ってはいけない のが鉄則。 標準誤差・$p$ 値が嘘になります。
「ある月に来店した顧客数」「保険請求の件数」「論文の被引用数」 のように、 ゼロが極端に多い被説明変数 をどう扱うか? ポアソン回帰や負の二項回帰では、 「過剰なゼロ」 が説明できず残差にパターンが残ります。
SSDSE-B-2026 の中だと、 「特定産業の従業者数」 でゼロが多い変数があります(小規模県には特定産業がない)。 このような $Y$ をそのまま線形回帰すると、 ゼロの集中で残差正規性が破れます。
標準損失(MSE, クロスエントロピー) だけが選択肢ではありません。 ビジネス文脈で「過小予測」 と「過大予測」 のコストが違うときは、 非対称損失を設計します。
| 業務 | $Y$ | 過小予測のコスト | 過大予測のコスト | 推奨損失 |
|---|---|---|---|---|
| 在庫管理 | 需要 | 機会損失(高) | 在庫コスト(低) | quantile loss (上分位) |
| 医療検査 | 罹患 | 見逃し(致命的) | 追加検査(小) | recall 優先 (閾値低) |
| 融資審査 | 延滞 | 貸し倒れ(大) | 機会損失(小) | precision 優先 (閾値高) |
| 価格予測 | 住宅価格 | 機会損失(中) | 過大評価訴訟(大) | quantile loss (下分位) |
| 電力需要 | 需要量 | 停電(致命的) | 発電コスト(中) | 非対称 MSE |
損失関数は ビジネス意思決定の数値化 です。 標準損失を漫然と使うと「現場の感覚と合わない」 モデルになります。
内生性(endogeneity) は、 被説明変数 $Y$ と説明変数 $X$ が一方向ではなく 互いに影響 し合う状況です。 たとえば 「医療費 $Y$」 と 「高齢化率 $X$」 を回帰すると正の係数が出ます。 だがこれは 「高齢化が医療費を押し上げる」 とも 「医療費の充実した地域に高齢者が集まる」 とも読めます。 純粋な因果効果を推定するには、 別の枠組みが必要です。
回帰モデルから出る $\beta$ を「効果」と呼ぶときは、 内生性が処理されているかを必ず点検しましょう。 SSDSE のような観察データでは、 因果と相関の区別は方法論で担保するしかありません。
被説明変数を「標準地価 (C5401)」に固定し、 説明変数を 5 つ(総人口・高齢化率・消費支出・大学数・延べ宿泊者数)に固定して、 モデルの種類だけ 変えたときの結果比較表(2023年・標準化 X, LOOCV, seed=42):
| モデル | $R^2$ | LOOCV RMSE (円/m²) | 解釈容易性 | 過学習リスク |
|---|---|---|---|---|
| 線形回帰(OLS) | 0.89 | 37,682 | ★★★★★ | 低 |
| Ridge 回帰 | 0.89 | 35,907 | ★★★★ | 低 |
| Lasso 回帰 | 0.89 | 37,682 | ★★★★★ (特徴量選択) | 低 |
| RandomForest | 0.95 | 41,358 | ★★ (feature importance のみ) | 中($n=47$ では危険) |
| 勾配ブースティング | 1.00 | 39,719 | ★ (SHAP 必須) | 高 |
教訓:$n=47$ のような 小サンプル では、 訓練 $R^2$ が高くても汎化性能は不明。 単純な OLS と Ridge を主軸に据え、 LOOCV(leave-one-out)で慎重に確認すべし。 「Y のために大型モデルを使う」 のは n が数百以上 あってからの話。
機械学習の公平性問題の 根本原因 の多くは、 被説明変数 $Y$ の選び方に潜んでいます。 たとえば:
これらは 「データバイアスは $Y$ の定義から始まる」 という洞察を示しています。 公平な AI を作りたいなら、 まず $Y$ の選択を倫理委員会レベルで議論する必要があります。 SSDSE-B-2026 のような公的統計でも、 「進学率」 を $Y$ にするか「進学者数」 を $Y$ にするかで、 都市偏重か地方包摂かの軸が変わります。
複数の指標を統合した「合成指標」 を $Y$ にする手法。 例:HDI(人間開発指数) は所得・教育・寿命の合成。 利点は包括性、 欠点は 重み付けの恣意性。
「もし $X$ が違っていたら $Y$ はどうなっていたか」 の値。 因果推論の中核で、 RCT・IV・PSM などで推定される。 観察データの $Y$ そのものではない点が重要。
生存時間分析で「観測終了時点で生存している人の死亡時間」 は不明 ── これが 打ち切り(censoring)。 普通の回帰では扱えず、 Cox 回帰や AFT モデルが必要。
直接観測できない $Y$(幸福度、 ブランド愛着、 学習効率)。 構造方程式モデル(SEM) や項目反応理論(IRT) で潜在変数として扱う。
複数のタスクを同時に学習。 ニューラルネットの中間層を共有することで、 1つの $Y$ の予測が他の $Y$ の予測を補強する。 医療画像で「腫瘍検出 + 良悪性分類」 を同時にやるなど。
「被説明変数 / 説明変数」 という用語の対は、 19 世紀末の Francis Galton(1822-1911) の遺伝研究にさかのぼります。 親子の身長関係を調べる際、 「親の身長で子の身長を 説明する」モデルを構築し、 「説明する側」と「説明される側」を明確に分けました。 これが後に regression(回帰)という名前を得ます。 「平均回帰(regression to the mean)」 はこの分析から生まれた用語です。
20 世紀に入ると、 R.A. Fisher(1890-1962) が実験計画法の中で「dependent variable(従属変数)」と「independent variable(独立変数)」 の言葉を確立しました。 「dependent」 は実験者がコントロールできない(観測する)側、 「independent」 はコントロールできる(介入する)側。 つまり 因果的な含意 がこの用語対には元々あったのです。
機械学習が台頭する 1990 年代以降、 「target variable」「response variable」「outcome」「label」 といった呼び名が並立し、 同じものを指す用語が 10 通り以上 あるという混乱した状態が続いています。 SSDSE 教材や Kaggle のドキュメントを読むときは、 「ああ、 これは被説明変数のことだ」 と頭の中で翻訳しながら読む癖をつけると効率的です。
| 分野 | 日本語 | 英語 | 出典・使用例 |
|---|---|---|---|
| 統計学(古典) | 従属変数 | dependent variable | Fisher 系教科書 |
| 統計学(現代) | 応答変数 | response variable | McCullagh & Nelder(GLM) |
| 計量経済学 | 被説明変数 | explained variable, regressand | Wooldridge, Greene |
| 機械学習(教師あり) | 目的変数 / ラベル / ターゲット | target, label, y | scikit-learn, Kaggle |
| 医学・疫学 | アウトカム | outcome | 臨床試験プロトコル |
| 実験計画 | 特性値 | characteristic, response | タグチメソッド |
| 心理学・教育 | 基準変数 | criterion variable | 行動・教育測定 |
| 時系列 | 予測対象 | forecasting target | Hyndman 系教科書 |
論文を読む際は 用語の違い を意識すると同じ概念が見えてきます。 SSDSE 公式資料は「目的変数」を採用、 e-Stat の解説は「被説明変数」を採用、 と提供元で呼び名が変わるので注意。
SSDSE-B-2026 だけでも 100 以上の数値変数があります。 「どれを被説明変数にすべきか」 を決めるための実務的ステップ:
この 8 ステップを最初の 1 時間で実施すれば、 そのあとの分析はぐっと安定します。 SSDSE-B-2026 のような小サンプルでは特に、 $Y$ の選択ミスが致命的になります。
論文・レポートで被説明変数を扱うとき、 第三者が同じ結果を得られるよう以下を必ず明示:
疫学・因果推論で使われる手法。 被説明変数 $Y$ の 平均処置効果 を 機械学習 と組み合わせて推定。 SuperLearner + targeting step で、 二重ロバスト性を持つ。
Chernozhukov らによる手法。 $Y$ を予測するモデルと、 処置 $D$ を予測するモデルを別々に ML で fit し、 直交化することで因果効果を推定。 高次元・複雑データに強い。
$Y$ の予測値だけでなく、 正規化されたカバレッジ保証付き予測区間 を出す手法。 任意のモデルに後付け可能。 LightGBM や XGBoost と組み合わせて、 確率較正された出力を得る。
Wager & Athey による手法。 ランダムフォレストの拡張で、 個別処置効果(CATE = $E[Y_1 - Y_0 \mid X]$) を推定。 「誰に効く介入か」 を細かく見られる。
VAE のような潜在変数モデルでは、 観測される $Y$ の背後にある「潜在 $Z$」 を推論。 「観測 $Y$」 と「真の $Y^*$」 の区別が重要な場面で使う。
「$X$ が増えると $Y$ がどう変わるか」 は線形とは限りません。 たとえば「高齢化率 $X$」 と「1 人当たり医療費 $Y$」 の関係を見ると、 $X$ が 30% を超えてから加速度的に $Y$ が上がる S 字曲線になることがあります。 これを 線形回帰でフィット すると、 低齢化県を過大予測・高齢化県を過小予測する 系統誤差 が出ます。
「線形でいいか、 非線形が必要か」 は 残差プロット を見れば一目で分かります。 残差 vs $\hat Y$ にパターンがあれば非線形。 ランダムなら線形で OK。
ベイズ統計では、 被説明変数 $Y$ は 確率分布 として扱われます。 「$Y$ の点推定」 ではなく「$Y$ の事後分布 $p(Y \mid X, D)$」 が出力。 これは:
PyMC や Stan で実装可能。 機械学習ライブラリでも numpyro が高速。 ベイズの基本式は $p(\theta \mid Y) \propto p(Y \mid \theta) \cdot p(\theta)$。
SSDSE のほかにも、 被説明変数の型別に学習用ベンチマークが充実しています。
| データセット | $Y$ の型 | $Y$ の内容 | 用途 |
|---|---|---|---|
| Boston Housing | 連続 | 住宅価格中央値 | 回帰入門(倫理的問題で非推奨) |
| California Housing | 連続 | 住宅価格中央値 | Boston の代替 |
| Iris | 3 クラス | アヤメ種 | 多クラス分類入門 |
| Titanic | 二値 | 生存/死亡 | 二値分類入門、 Kaggle 名物 |
| MNIST | 10 クラス | 手書き数字 0-9 | CNN 入門 |
| IMDb Reviews | 二値(テキスト) | レビュー好意度 | NLP 二値分類 |
| Adult / Census Income | 二値 | 年収 50K 超/以下 | 公平性研究の定番 |
| COMPAS | 二値 | 再犯リスク | アルゴリズムバイアス研究 |
| Air Quality (UCI) | 連続(時系列) | PM2.5 濃度 | 時系列回帰 |
| SSDSE-B-2026 | 多種 | 都道府県統計 | 日本語環境での標準 |
本ページでは SSDSE-B-2026 を主軸にしていますが、 同じコードのロジックは Boston / California / Adult 等にも応用可能です。 「$Y$ が変わってもパイプラインは変わらない」 ── これが scikit-learn の設計哲学です。
$Y$ を選ぶという作業は、 一見「データの中から目的変数を 1 列指差すだけ」 に見えますが、 実際の現場ではそこに至るまでに何週間も議論を要する ことが珍しくありません。 ここでは 8 つの実務シナリオを通じて、 「なぜ $Y$ の設計が難しいのか」「どう判断すべきか」 を物語形式で深掘りします。
サブスクリプション型サービスの分析依頼で「ユーザーの離脱を予測してほしい」 と言われた。 一見シンプルですが、 「離脱」 とは何か。 ① 「最終ログインから 30 日経過」 なのか、 ② 「契約解除ボタンを押した」 なのか、 ③ 「次回課金日に決済が失敗した」 なのか。 それぞれで $Y$ の意味が違い、 対応する打ち手も違います。 ① はユーザー行動の希薄化、 ② は明示的な意思決定、 ③ は決済システムの問題。 どれを $Y$ にするかを ステークホルダー全員で合意する までモデルは作るべきではありません。 SSDSE-B-2026 のような公的統計でも、 「人口減少」 を「自然減」 と取るか「社会減」 と取るかで、 打つべき政策が異なります。
EC サイトの「日次売上」 を $Y$ にする時、 売上 = (来訪者数) × (CVR) × (客単価) という積み上げ構造を持ちます。 $Y$ そのものを予測するか、 3 要素をそれぞれ予測して掛け合わせるか。 前者はモデルが単純で運用しやすいが、 「なぜ売上が下がったか」 の説明力は弱い。 後者は分解的洞察を得られるが、 モデルが 3 つになり運用負担が増えます。 $Y$ を「最終 KPI」 にするか「中間メトリクス」 にするか という判断は、 モデリングの根本設計を変えます。
SSDSE-B-2026 は 47 都道府県 × 数十指標 という集計データ。 ここで $Y$ を「都道府県別の人口」 にすると、 サンプルサイズは 47 で、 観測単位は「県」。 同じ目的でも「市町村別」 にすれば n=1,700 オーダーになり、 観測単位は「市町村」。 さらに「個人レベルのアンケート」 ならば n=数万、 観測単位は「個人」。 観測単位が変わると、 同じ「人口」 という言葉でも $Y$ の意味と分析手法が変わります(エコロジカル誤謬 参照)。
金融機関で「与信判断モデル」 を作る時、 $Y$ を「過去にデフォルトしたか」 にすると、 過去の貸出方針のバイアスを引き継ぎます。 「特定の属性の人に貸さなかった」 ことで「デフォルトデータ自体が偏る」 という選抜効果(selection bias)が発生。 $Y$ を「申し込んで承認された人のデフォルト」 にすると、 承認されなかった人のデフォルト傾向 は永遠にデータに現れません。 こうした $Y$ の 因果的・倫理的構造 を理解しないと、 機械学習モデルは過去の不公平を再生産します(アルゴリズムバイアス 参照)。
製造業で「製品品質スコア」 を $Y$ にする場合、 そのスコアはしばしば 人間の検査員 がつけたもの。 検査員によってスコアが違う、 同じ検査員でも疲労で違う、 という主観性が $Y$ に紛れ込んでいます。 これを「客観的測定値(光学検査の輝度差など)」 に置き換えれば $Y$ の信頼性は上がるが、 「人が見て不良と判断するもの」 を捉え切れないかもしれません。 $Y$ の 測定方法そのもの が分析対象になることが多いのです。
医療で「特定疾患の有無」 を $Y$ にする時、 ICD-10 の診断コードを使うと 階層構造 が問題になります。 「I21(急性心筋梗塞)」 と「I20(狭心症)」 は親カテゴリ I20-I25(虚血性心疾患) で同じ。 $Y$ をどのレベル(コード単位 / 親カテゴリ / 大分類)で取るかで、 イベント数と分析の粒度が変わります。 細かすぎるとサンプル不足で過学習、 粗すぎると医学的洞察が薄れる。 ここでも $Y$ の粒度設計 が分析の質を決めます。
アンケートで「ユーザー満足度(1-5)」 を $Y$ にしたが、 そもそも 回答してくれた人 は「非常に満足」 か「非常に不満」 の両極端が多く、 「普通」 のサイレントマジョリティは答えてくれない。 これは典型的な 無回答バイアス。 $Y$ の分布が U 字型になり、 平均値 3.0 を見ても「中立的」 と解釈できないのです。 $Y$ を解析する前に、 $Y$ がどう生成されたか(誰がいつどう答えたか)を理解する必要があります。
教育分野で「テスト得点」 を $Y$ にする時、 同じ学校の生徒は 独立観測ではない(同じ先生・教室の影響を共有)。 これを無視して通常の OLS をかけると、 標準誤差が過小評価され、 「効果あり」 と誤判定する確率が上がります。 SSDSE-B-2026 の県別データも同様で、 「同じ地方の県は独立観測ではない」 という見方もできます。 こうした構造には マルチレベルモデル や GEE が必要。
💡 8 ケースから学ぶ教訓: $Y$ の選択は「データを眺めて 1 列指す」 作業ではなく、 業務理解・倫理・測定論・統計的構造 を総動員する設計作業です。 「とりあえず適当な列を $Y$ にして回す」 とプロジェクトは早晩破綻します。
これまでの節で個別に触れた罠を、 応答変数 $Y$ に固有の視点 で 8 類型に整理します。 分析着手前にこの 8 つを $Y$ について一通り自問するのが実務の定石です。
落とし穴 (1) を実データで確認します。 右歪みの強い 4 変数について、 変換前 と $\log$ 変換後 の歪度を実測しました(skew は pandas 既定=バイアス補正 Fisher-Pearson)。
| 候補 $Y$ | 歪度(生値) | 歪度($\log$ 後) | 判定 |
|---|---|---|---|
| 標準地価 C5401 (円/m²) | +3.94 | +1.29 | 大幅改善だが残歪み(東京都が極端値) |
| 延べ宿泊者数 G7101 (千人泊) | +3.43 | +0.72 | ほぼ対称化、 変換有効 |
| 一般診療所数 I5102 (施設) | +3.14 | +1.00 | 境界域まで低減 |
| 出生数 A4101 (人) | +2.37 | +0.83 | 対称化、 変換有効 |
教訓は 2 つ。 (a) $\log$ は右歪みを強力に縮めますが、 標準地価は変換後もなお +1.29 と歪みが残る ── 東京都という単独の極端値は 1 回の対数化では吸収しきれず、 感度分析(東京あり/なし)が要ります。 (b) 変換後に係数を解釈するときは「対数差 ≒ %差(弾力性)」 に読み替える必要があり、 元単位に戻す際は Smearing 補正(Jensen 不等式による過小予測の修正)を忘れないこと。
応答 $Y$ の型は、 単に手法を選ぶだけでなく 誤差分布の仮定 を決めます。 正規誤差の 線形回帰 を、 誤差分布とリンク関数で一般化したのが 一般化線形モデル(GLM)。 「$Y$ の期待値 $E[Y]$ を線形予測子 $\eta=X\beta$ に リンク関数 $g$ で繋ぐ」 ($g(E[Y])=\eta$) という一枚岩の枠組みで、 応答の型ごとの手法が統一的に理解できます。
| $Y$ の型 | 誤差分布 | リンク関数 | 代表手法 |
|---|---|---|---|
| 連続(正規) | 正規 | 恒等 $g(\mu)=\mu$ | 線形回帰 / 重回帰 |
| 2 値 | ベルヌーイ | ロジット $\log\frac{\mu}{1-\mu}$ | ロジスティック回帰 |
| カウント | ポアソン | 対数 $\log\mu$ | ポアソン回帰 / 負の二項回帰(専用ページ未整備) |
| 正の連続(右歪み) | ガンマ | 対数 / 逆数 | ガンマ回帰 |
| 比率 [0,1] | ベータ | ロジット | ベータ回帰 |
| 分位点(中央値以外) | —(損失で規定) | — | 分位点回帰 |
さらに発展的な応答の扱い:
被説明変数 (response variable) を中心に、 統計モデル上の役割(回帰モデル・別名「目的変数/従属変数」)、 学術/実務/公的統計それぞれでの使われ方を 6 方向に配置した。 SSDSE-B-2026 の「人口」「消費支出」など何を Y に置くかで分析の出発点が決まる関係を俯瞰できる。
応答変数 $Y$ を中心に、 上に「学問領域」(統計学・機械学習・因果推論で呼び名が変わる)、 右上に「型」(連続・二値・カテゴリ・順序・計数・時系列・生存)、 右下に「学術研究」(線形モデル・GLM・GLMM・Cox 回帰)、 下に「実務応用」(売上予測・離反予測・需要予測)、 左下に「公的統計の活用」(SSDSE-B-2026 の県別人口・消費・医療費を $Y$ にする例)、 左上に「設計上の注意」(目的妥当性・倫理・測定論)が並ぶ。
SSDSE-B-2026 の県別データを $Y$ にする場合、 「公的統計の活用」と「実務応用」の交点に立つことになる。 たとえば $Y = $ 県別の消費支出なら、 高齢化率・気温・標準地価を $X$ に置き、 線形回帰 + 残差プロットで一次近似、 ベイズ階層モデルで地域差を吸収する、 という縦の動線が想定される。
「応答変数」は単独で完結する手法ではなく、 隣接領域と連携することで真価を発揮する。
「消費支出を予測する」「がんを再発するか予測する」など、 分析の出発点となる「知りたい量」 が応答変数であり、 研究の方向性そのものを規定する。
「被説明変数(目的変数)」を分析設計で決めるとき、 変数の型と分析目的で判定する。
被説明変数の選び方で分析全体が決まる。 SSDSE-B-2026 で「消費支出」を Y にすれば回帰、 「人口増加 (Yes/No)」にすれば分類になる。 まず Y の分布を ヒストグラム で描いてから手法を決める。