本ページの深掘り箇所を一気に俯瞰するためのチップ群です。 量的変数の定義・尺度水準から、 SSDSE-B-2026 の実データ計算・Python 実装・落とし穴までを順にたどれます。
🍰 まずはやさしく
数値で測れるデータのことです。
大きさの比較や計算をするために使います。
テストの点数や身長などが例です。
この章では量的変数の基本を学びます。
数値で表され、 演算が意味を持つ変数
df.dtypes で型確認、 pd.api.types.is_numeric_dtype で判定、 df.describe() で記述統計を一括出力。🍰 まずはやさしく
データの種類の一つです。
分析の最初に型を確認するために使います。
スマホで記録する歩数などが例です。
ここでは他のデータの型との違いを読みます。
あなたは今、 量的変数 (Quantitative Variable) という、 数値で測定でき算術演算が意味を持つ変数の用語ページを見ています。 SSDSE-B-2026 の総人口 (A1101)、 出生数 (A4101)、 年平均気温 (B4101) はすべて量的変数。 質的変数 (都道府県名・性別など) との対比で理解します。
「量的変数」は データ分析の最初に触れる「変数の型」のページです。 上位概念は データの型。 対概念は 質的変数 (カテゴリ変数)、 並列概念は 順序変数。 量的変数の中はさらに 連続型 (実数値、 平均気温・面積) と 離散型 (整数値、 出生数・病院数) に分かれます。 量的変数だけが 平均 や 標準偏差 を計算できる対象 (順序変数では順位平均しか意味を持たない)。 SSDSE-B-2026 では 112 列中 100 列以上が量的変数で、 これが回帰や相関の対象となります。
🍰 まずはやさしく
数値そのものに意味があるデータです。
計算して正解が出るか確かめるために使います。
買い物で使う金額などが例です。
ここでは数値の意味の見分け方を読みます。
量的変数とは 数値が「量」として意味を持つ変数です。 SSDSE シリーズで言えば、 「総人口 (人、 SSDSE-B)」「県民所得 (千円、 SSDSE-A)」「面積 (km²、 SSDSE-D/E)」のように、 単位がついて加減乗除が意味を持つ列が量的変数です (県民所得・面積は SSDSE-B には無く A/D/E に収録)。 一方、 同じ整数でも「都道府県コード R13000 (=東京) 」は順序や倍率に意味がないため量的変数ではなく質的変数です。
見分け方は単純で、 「2 倍」「平均」「差を取る」操作に意味があるか?を問います。 「人口の平均 265 万人」は意味があるが、 「都道府県コードの平均 R23500」は無意味。 この区別ができないと、 散布図・相関・回帰のどれも誤った結論を生みます。
量的変数は「数値そのものに意味がある」変数です。 質的変数 (例: 都道府県コード R13000 = 東京) では、 数字は単なるラベルで、 加減乗除に意味がありません。 一方、 量的変数の「東京都人口 14,086,000 人」は、 「鳥取県 537,000 人の約 26 倍」と倍率を計算しても意味があり (比例尺度)、 「東京と鳥取の差 13,549,000 人」も意味を持ちます (差を計算できる尺度)。 量的変数は 4 つの尺度水準のうち上位 2 つ (間隔・比例) に該当します。
| 尺度 | 意味 | 演算 | SSDSE 例 |
|---|---|---|---|
| 名義 (質的) | ラベル分類 | = ≠ | Code R01000 (北海道) |
| 順序 (質的) | 順位 | + < > | 満足度 5 段階 |
| 間隔 (量的) | 差に意味、 ゼロは任意 | + - 平均 | B4101 平均気温 (摂氏) |
| 比例 (量的) | 差・比に意味、 真のゼロ | + - × ÷ | A1101 人口、 A4103 出生率 |
🍰 まずはやさしく
計算ができる数値の変数のことです。
平均などの統計量を出すために使います。
部活動の練習時間などが例です。
ここでは詳しい定義と使い道を読みます。
数値で表され、 演算が意味を持つ変数
英語名 Quantitative Variable。
量的変数を統計解析・機械学習で扱うとき、 次の前提を確認する:
量的変数だからこそ意味を持つ統計量:
$$ \bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i \quad \text{(平均)} $$
$$ s^2 = \frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})^2 \quad \text{(不偏分散)} $$
$$ r_{xy} = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}} \quad \text{(Pearson 相関)} $$
これらは 量的変数同士でのみ意味を持ちます。 質的変数では値の差を取ることが定義上できないため、 平均や分散は計算しない (または順位平均などで代用)。
線形変換に対する不変性 (比例尺度では y = ax、 間隔尺度では y = ax + b):
$$ \text{比例尺度}: \frac{x_1}{x_2} = \frac{a x_1}{a x_2} \quad (\text{単位変換しても比は不変}) $$
量的変数の「典型値」を 1 つの数値で表すには、 5 種類の代表値がある。 状況によって使い分けるべきだが、 実務では多くが「とりあえず平均」を選んで誤解を生んでいる。 SSDSE-B-2026 の都道府県人口を例に整理する。
最も馴染み深い「全部足して個数で割る」値。 SSDSE-B 47 都道府県の総人口平均は約 265 万人。 外れ値 (東京) の影響を強く受けるため、 単独で「典型」を語るのは危険。 適切な使い所: 正規分布に近いデータの中心位置、 全体の総量を均等に配分した場合の見積もり。
小さい順に並べた中央値。 SSDSE-B では約 155 万人 (24 番目)。 外れ値に対して頑健で、 「典型的な県の規模」を語るならこちらが適切。 適切な使い所: 右に裾を引く分布、 所得や人口など外れ値が想定される量的変数。
連続量的変数では「最も多い階級」をビン化して定義する。 SSDSE-B で 50 万幅のビンを取ると、 100-150 万人帯が最頻 (13 県)。 量的変数で最頻値を使うことは少ないが、 双峰性を捉えたい場合に有用 (例: 「都市県」と「地方県」の 2 つのモード)。
n 個の数の積の n 乗根。 比率や成長率を扱う際に算術平均より適切。 例: 「年率 3 % 成長を 10 年続けたら何倍?」を算術平均で出すと誤り。 SSDSE-B の人口で幾何平均を取ると約 183 万人で、 中央値 (約 155 万人) と平均 (約 265 万人) の間に位置する。 適切な使い所: 成長率, 比率, インデックス、 対数正規分布に従う量的変数。
n / (1/x₁ + 1/x₂ + … + 1/xₙ)。 「速度の平均」「F 値」など、 単位が逆数で意味を持つ量的変数で使う。 例: 「往復で行きが時速 40 km、 帰りが時速 60 km なら平均速度は?」の答えは 50 km/h (算術平均) ではなく 48 km/h (調和平均)。 SSDSE-B の文脈では人口密度や効率指標で使う。
これら 5 種の代表値は、 量的変数の「どの側面を強調したいか」で選ぶ。 「典型」「中央」「ピーク」「成長率」「効率」のどれを伝えたいかを明確にしてから、 対応する代表値を選定するのが正解。 「平均」を機械的に選んで「平均年収 500 万円」と発表し、 実態は中央値 380 万円・最頻値 280 万円というギャップが生じる事例は枚挙にいとまがない。
「量的変数」という現代統計学の概念は、 一朝一夕に確立したわけではない。 古代から現代までの 5 段階を辿る。
ナイル川の氾濫後の土地測量、 ハンムラビ法典の刑罰量、 月の周期 (天文観測) など、 「量」という概念は文明と共に生まれた。 ここでの量は具体的な物理量 (長さ・重さ・時間) であり、 抽象的な「量的変数」概念はまだない。
「自然という本は数学の言葉で書かれている」と述べたガリレオは、 自由落下の法則を「時間 t と距離 s の関係 s = ½gt²」として量的に記述した。 これが「量的変数同士の関数関係」の原型となる。
ガウスは天体観測の誤差を扱う中で、 量的変数の分布を扱う必要性に気付き、 最小二乗法と正規分布を体系化した。 これによって「量的変数は確率分布を持つ」という現代統計学の前提が確立した。
カール・ピアソンが相関係数 (1896) と χ² 検定 (1900) を、 R.A.フィッシャーが分散分析 (1925) と尤度法を確立。 ここで初めて「量的変数の比較・関連」を扱う統計手法群が整い、 量的変数と質的変数の境界が分析手法レベルで明確になった。
心理学者 S.S.スティーブンスが論文 "On the theory of scales of measurement" (Science, 1946) で名義・順序・間隔・比例の 4 尺度を体系化。 量的変数は「間隔尺度 ∪ 比例尺度」と定義され、 質的変数は「名義尺度 ∪ 順序尺度」となった。 この分類は現代も標準的な枠組みとして使われている。
21 世紀に入り、 機械学習の隆盛と共に「量的 vs 質的」の境界はさらに洗練された。 例えば One-Hot エンコーディング は質的を量的 (0/1 のダミー変数) に変換する技術であり、 逆に 次元削減 や クラスタリング は量的を質的 (クラスタ ID) に変換する技術。 現代では「量的か質的かは固定の属性ではなく、 分析目的に応じて変換するもの」という見方が一般化している。
「量的変数」を扱う上で、 入門者・中級者・実務家からよく寄せられる疑問を 8 つピックアップして詳細回答する。
A. ノー。 SSDSE-B-2026 の「地域コード R01100」は数値 (R を除いた整数として読める) だが、 これは識別子であり名義尺度。 差や比に意味がないため量的ではない。 同様に「電話番号」「学籍番号」「郵便番号」も数値だが量的ではない。 量的かどうかは「その数値で四則演算 (特に差) が意味を持つか」で判定する。
A. 理論的には違うが、 実務では曖昧になる。 SSDSE-B-2026 の「総人口」は理論的には整数 (人) で離散だが、 値が 100 万以上のオーダーなので実用上は連続として扱う。 一方、 「家族の人数」は離散として扱うのが自然。 目安は「取り得る値の数が標本サイズに対して 10 倍以上多ければ連続的に扱う」。
A. 状況による。 例えば「年齢」を「子供 (-14)・若者 (15-39)・中年 (40-64)・高齢 (65-)」と 4 カテゴリ化すれば解釈が楽になるが、 統計的検出力は低下する (情報損失)。 また、 カテゴリ境界の選定に恣意性が入る。 SSDSE-B-2026 で「高齢化率」を 30 % を境に 2 値化すると、 31 % と 29 % の県が別カテゴリになる不自然さが残る。 原則は「分析目的が解釈重視ならカテゴリ化 OK、 予測精度重視なら原値を維持」。
A. SSDSE-B の人口列のように右に強く歪む場合、 対数変換 (log) が第一選択。 ただし 0 を含む場合は log1p を使う。 さらに柔軟な選択肢として Box-Cox 変換 や Yeo-Johnson 変換 がある (後者は負値も扱える)。 これらは「分布を正規分布に近づける」目的で使われ、 線形回帰や t 検定の前提を満たすために有効。
A. イエス、 ただし分布が対称的な場合のみ。 SSDSE-B の人口は歪度が大きいため、 平均 ± 標準偏差で「典型範囲」を示すと誤解を生む (下限がマイナスになるなど)。 歪んだ分布では 中央値 + 四分位範囲 (IQR) または 中央値 + 5-95 パーセンタイルを併記するのが誠実。
A. ピアソン相関係数 r が 0 に近いことは「線形関係がない」のみを意味し、 「無関係」ではない。 SSDSE-B-2026 で「気温と人口」の相関を取ると r ≈ 0.12 となりほぼ「無相関」に見えるが、 これは「日本の人口は気温に直接依存しない」という当然の結果。 一方、 U 字型の非線形関係 (例: 年齢と消費支出) では r ≈ 0 でも関係はある。 必ず散布図で確認すること。
A. モデルによる。 線形回帰、 ロジスティック回帰、 SVM、 ニューラルネット、 k-NN は標準化必須。 一方、 決定木系 (Random Forest, XGBoost, LightGBM) はスケーリング不要。 SSDSE-B-2026 で「総人口」と「気温」を同じモデルに入れる場合、 前者は標準偏差 280 万、 後者は約 2°C と桁が違うため、 距離ベースのモデルでは人口が支配的になる。 標準化で「平均 0・分散 1」に揃えると平等に扱える。
A. 限定的にイエス。 欠損が完全にランダム (MCAR: Missing Completely At Random) なら平均補完で偏りなし。 ただし MCAR は希少で、 通常は「観測しにくい人ほど欠損」など系統的偏りがあるため、 平均補完は分散を過小評価する。 SSDSE-B のように公的統計で欠損が稀な場合は気にしなくて良いが、 アンケートデータでは 欠損メカニズム を分析し、 多重代入 (MICE) などを検討する。
「データを受け取ってから本格分析に入るまで」に量的変数を整える 7 ステップを示す。 SSDSE-B-2026 を例にした標準フロー。
df.dtypes で全列の型を確認。 数値であるべき列が object になっていれば、 ヘッダ行のズレ・カンマ区切り問題・特殊文字混入などを疑う。 SSDSE-B-2026 では skiprows=1 を忘れると 110 列すべて object になる。
df.describe() で量的変数の min/max/mean/std を一気に把握。 「人口列にマイナス値」「気温列に 999 という magic number」「降水量列に 0 が大量」などの異常を発見する。 SSDSE-B-2026 は公的統計で品質が高いため、 多くの異常はないが、 「降水量に 0 がない (= 全県年間降水あり)」「気温が 5-25°C の現実的範囲」などの正常性確認は重要。
df.isna().sum() で列ごとの欠損数を確認。 SSDSE-B-2026 の主要列はほぼ欠損なしだが、 マイナーな指標 (専門学校数など) は一部県で欠損があり得る。 欠損が 5 % 未満なら平均/中央値で補完、 5-20 % なら多重代入、 20 % 超なら列除外を検討。
各量的変数のヒストグラムと箱ひげ図を描く。 単峰か双峰か、 対称か歪んでいるか、 外れ値はあるかを目視で確認。 df.hist(figsize=(20,15)) で全列を一気にプロットできる。 SSDSE-B-2026 では総人口・死亡数系が右裾型、 気温・出生率が対称型と分かる。
右裾型の列は対数変換 (比例尺度のみ)、 0 を含むなら log1p。 標準化が必要なモデル (線形回帰、 SVM、 NN) を使うなら StandardScaler または RobustScaler (外れ値が多い場合)。 変換は「目的変数 (Y) と説明変数 (X) のどちらに、 どの順序で適用するか」を明確にする。
量的変数同士の相関行列を df.corr() で確認。 SSDSE-B-2026 では「総人口」「出生数」「死亡数」が r > 0.95 で強相関しており、 これらを同時に回帰モデルに入れると多重共線性で係数が不安定化する。 主成分分析 や VIF 計算で対応。
最終的なスケーリング (z-score など) を実施。 重要なのは「訓練データで fit、 テストデータで transform」のルールを守ること。 全データで fit すると 情報リーク が発生する。 適用した変換 (対数, 標準化, ダミー化) はすべて pickle で保存し、 本番運用時に再現できるようにする。
この 7 ステップを 20 分で実施できれば、 量的変数の前処理は標準的にこなせる。 SSDSE-B-2026 のような整備されたデータでは省略してよいステップもあるが、 実務データ (顧客 DB, IoT センサーなど) では全ステップが必須。 「データの品質を確認せずに分析を始めない」「変換ロジックを記録せずに本番に乗せない」を絶対のルールとして守る。
本ページで扱った「量的変数」のエッセンスを 10 個の箇条書きで再確認する。 統計検定・データサイエンティスト検定の対策にも有効。
次に学ぶべき用語: 量的変数を理解したら、 次は 質的変数、 離散と連続、 変数の尺度 をセットで押さえ、 そこから ヒストグラム・箱ひげ図・散布図 という可視化に進むのが王道。 さらに 相関係数・線形回帰 で 2 変数間の関係分析を学べば、 統計分析の基礎は固まる。
関連グループ教材: 本ページは「変数の尺度とデータ型」グループの中核。 同グループの 質的変数, カテゴリ変数, 間隔尺度, 比例尺度, 順序尺度, 名義尺度 も併読推奨。
量的変数 $X$ は実数値をとり、 加減乗除と統計量 (平均・分散) が定義可能です。 サンプル ${x_1, x_2, \ldots, x_n}$ に対する平均と分散は次のとおりです:
$$\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i,\qquad s^2 = \frac{1}{n-1}\sum_{i=1}^{n}(x_i - \bar{x})^2$$
| 記号 | 意味 | SSDSE-B-2026 での具体例 |
|---|---|---|
$X$ | 量的変数 | A1101 (人口) |
$x_i$ | 第 i 観測値 | 北海道 5,092,000 |
$n$ | サンプル数 | 47 (都道府県) |
$\bar{x}$ | 標本平均 | 約 2,645,809 (47 県平均) |
$s^2$ | 不偏分散 | 約 7.67×10¹² (人口の分散) |
量的変数は「比例尺度 (ratio)」と「間隔尺度 (interval)」に分かれます。 比例尺度は絶対 0 (例: 人口 0) を持ち、 比 (2 倍) が意味を持つ。 間隔尺度は 0 が任意 (例: 摂氏温度) で差のみ意味を持つ。 SSDSE-B-2026 の数値列はほぼ比例尺度 (人口・面積・件数)。
| 尺度 | 演算 | 代表例 | SSDSE での例 |
|---|---|---|---|
| 名義 (qual) | = ≠ のみ | 性別 / 都道府県名 | Prefecture |
| 順序 (qual) | + < > | 満足度 5 段階 | (該当列なし) |
| 間隔 (quant) | + − (差のみ) | 摂氏温度 | B4101 (年平均気温) |
| 比例 (quant) | + − × ÷ | 身長 / 重量 / 人口 | A1101, F3101, I510120 |
| 離散 (quant) | 整数のみ | 件数 / 人数 | I510120 (病院数) |
| 連続 (quant) | 任意の実数 | 時間 / 速度 | B4101 (温度) |
category 型に。 計算前に尺度を確認。log(0) で -inf。 対策: log1p (log(1+x)) を使う、 または絶対 0 を除外。分散の式 s² = Σ(x_i - x̄)² / (n-1) の各記号を SSDSE-B-2026 で言葉に翻訳します。
| 記号 | 意味 | SSDSE-B-2026 例 |
|---|---|---|
x_i | 第 i 番目の観測値 (量的変数)。 | 北海道の人口 5,092,000 (i=1) など |
n | 標本サイズ。 | n = 47 (都道府県数) |
x̄ | 標本平均。 | x̄ = 2,645,809 人 |
x_i - x̄ | 偏差 (平均からのズレ)。 | 東京: 14086000-2645809 = +11,440,191 人 |
(x_i - x̄)² | 偏差の 2 乗 (符号を消し、 大きなズレを強調)。 | 東京: ≒ 1.31 × 10^14 |
Σ(x_i - x̄)² | 偏差平方和 (Sum of Squares)。 | 47 県分の合計 ≒ 3.60 × 10^14 |
n-1 | 不偏推定の自由度 (Bessel 補正)。 | 47 - 1 = 46 |
s² | 不偏分散 (Sum of Squares ÷ 自由度)。 | s² ≒ 7.83 × 10^12、 s = 2,797,551 |
「量的変数だからこそ」できること: 各観測値から平均を引く操作 (x_i - x̄) は、 値が「数値」で「差を取れる」 (間隔尺度以上) ことが前提です。 「東京 - 北海道 = 8,994,000」は意味を持ちますが、 「東京 - 北海道」をカテゴリ変数 (色: 赤 - 青) では計算不能。 標準偏差 s = √s² も、 同じ単位 (人) で「平均からのばらつき」を表せる。 量的変数の本質は「数値演算ができる」こと。
| 統計操作 | 名義 | 順序 | 間隔 | 比例 |
|---|---|---|---|---|
| 頻度 / 最頻値 | ✓ | ✓ | ✓ | ✓ |
| 中央値 / 順位 | ✗ | ✓ | ✓ | ✓ |
| 平均 / 標準偏差 | ✗ | ✗ | ✓ | ✓ |
| 差 (x_i - x_j) | ✗ | ✗ | ✓ | ✓ |
| 比 (x_i / x_j)、 CV | ✗ | ✗ | ✗ | ✓ |
| 幾何平均 / 対数 | ✗ | ✗ | ✗ | ✓ |
| Pearson 相関 | ✗ | △ | ✓ | ✓ |
| t 検定、 ANOVA | ✗ | △ | ✓ | ✓ |
| 線形回帰 | ✗ | △ | ✓ | ✓ |
△: 「準量的」扱いで実務的に許される (リッカート尺度等)。 ✓: 数学的に正当。 ✗: 結果は計算できるが意味を持たない。 量的変数 (間隔・比例) はすべての操作が可能で、 これが「量的」と呼ぶ理由。
| 英語 | 日本語 | 説明 |
|---|---|---|
| Quantitative variable | 量的変数 | 数値で測れ、 演算可能。 |
| Categorical / Qualitative | 質的変数 | 対概念。 カテゴリで分類。 |
| Continuous variable | 連続変数 | 実数値、 ヒストグラムが滑らか。 |
| Discrete variable | 離散変数 | 整数値、 カウント。 |
| Interval scale | 間隔尺度 | 差に意味、 ゼロは任意。 |
| Ratio scale | 比例尺度 | 差・比に意味、 真のゼロ。 |
| Z-score | 標準化得点 | (x - μ) / σ。 単位除去。 |
| CV (Coefficient of Variation) | 変動係数 | SD / mean。 比例尺度限定。 |
| Skewness | 歪度 | 分布の左右非対称性。 |
| Kurtosis | 尖度 | 分布の裾の重さ。 |
| Box-Cox transform | ボックスコックス変換 | 歪み補正、 比例尺度限定。 |
| Stevens' typology | Stevens 4 尺度 | 名義/順序/間隔/比例 (1946)。 |
| 列コード | 列名 | 尺度 | タイプ |
|---|---|---|---|
| SSDSE-B-2026 | 年度 | 順序 (実質) | int (注: 数値だが質的) |
| Code | 地域コード | 名義 | 質的 |
| Prefecture | 都道府県 | 名義 | 質的 |
| A1101 | 総人口 | 比例 | 量的 (連続) |
| A1303 | 65 歳以上人口 | 比例 | 量的 (連続) |
| A4103 | 合計特殊出生率 | 比例 | 量的 (連続) |
| B4101 | 年平均気温 | 間隔 | 量的 (連続) |
| B4109 | 降水量 | 比例 | 量的 (連続) |
| E1101 | 幼稚園数 | 比例 | 量的 (離散カウント) |
| L3221 | 消費支出 | 比例 | 量的 (連続) |
SSDSE-B-2026 では、 110 列中 3 列が質的 (年度・地域コード・都道府県名)、 107 列が量的 という構成。 量的変数中、 大半は比例尺度で、 気温だけが間隔尺度。 これは「経済・人口・教育系の統計データは比例尺度に偏る」という典型例。
実務で量的変数を扱う最初の関門は「dtype が正しく数値型 (int64/float64) になっているか」の確認である。
SSDSE-B-2026 を素朴に pd.read_csv すると、 1 行目にヘッダ、 2 行目に項目和名が入っているせいで全列が object 型として読み込まれ、
平均・標準偏差などの量的演算が一切できなくなる事故が頻発する。 ここでは安全な読み込み手順と、 連続/離散の自動分類ロジックを示す。
このコードでやること:SSDSE-B-2026 を正しく読み、 各列を「質的 / 量的 (離散) / 量的 (連続)」に自動分類し、 件数を出力する。
📥 入力データ (SSDSE-B-2026 抜粋):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import pandas as pd import numpy as np df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) def classify(col): if col.dtype == 'object': return 'qualitative' n_unique = col.nunique(dropna=True) # 整数型かつユニーク値が 20 以下 → 離散量的 if pd.api.types.is_integer_dtype(col) and n_unique <= 20: return 'quantitative_discrete' return 'quantitative_continuous' result = df.apply(classify) print(result.value_counts()) print('---') print('離散の例:', result[result=='quantitative_discrete'].index.tolist()[:3]) |
📤 実行結果:
💬 SSDSE-B-2026 では 連続量的が 104 列、 質的が 3 列、 離散量的が 3 列。
「年度」のように整数だが意味的にはカテゴリ (順序尺度) に近いものが離散に紛れている点に注意。
分類器を組むとき、 年度を pd.get_dummies でダミー化するか連続値として使うかは設計判断であり、
dtype だけでは決められない。 「dtype は出発点であって終着点ではない」。
また、 量的変数を扱う際は必ず df.describe() で min/max/std を確認し、
人口列で「マイナス値」「単位違いの 1000 倍ズレ」などの異常を早期に発見すること。
SSDSE-B-2026 の人口列は最小が鳥取の 54 万、 最大が東京の 1409 万で、 比 26 倍の 右に裾を引く分布 を取る。
そのまま回帰に入れると東京 1 県の影響が支配的になるため、 対数変換 や 標準化 を検討する。
「量的変数」と一口に言っても、 実は 連続 vs 離散 という分布側の区分と、 間隔 vs 比例 という尺度側の区分が直交している。 つまり量的変数には次の 4 つの顔がある。 SSDSE-B-2026 の列名を例に整理する。
| 区分 | 特徴 | SSDSE-B-2026 の例 | 推奨集計 |
|---|---|---|---|
| 連続 × 比例 | 理論的に任意実数。 0 が「無」を意味する | 総人口 A1101, 消費支出 L3221, 降水量 B4109 | 平均, 中央値, 幾何平均, 比, 対数変換 |
| 連続 × 間隔 | 差は意味あり、 比は無意味 | 年平均気温 B4101 (°C), 偏差値, 西暦年 | 平均, 中央値, 差, 標準偏差 (比は NG) |
| 離散 × 比例 | 非負整数、 カウント | 幼稚園数 E1101, 病院数, 公務員数 | 平均, 中央値, ポアソン回帰 |
| 離散 × 間隔 | 整数、 0 が任意基準 | 年度 (2020, 2021, …), 西暦の整数年 | 差, 系列分析 (時系列扱い) |
この 2 × 2 表が頭に入っていれば、 「気温の平均は OK だが気温の比は NG」「人口は対数を取れる、 気温は対数を取ると意味が壊れる」 といった実務上の判断が即座にできる。 例えば SSDSE-B-2026 で「沖縄の気温 (23.8°C) は北海道の気温 (9.2°C) の何倍か」と聞かれたら、 答えは「比較不能」が正しい。 23.8 / 9.2 = 2.59 という計算自体はできるが、 「沖縄は北海道の 2.59 倍暖かい」とは言えない (摂氏 0 が絶対零度ではないため、 単位を華氏 °F に変えれば比が変わる)。
逆に「沖縄と北海道の年平均気温差は 12.8°C」は意味を持つ。 これは間隔尺度の核心: 差は OK、 比は NG。 一方、 人口列なら「東京 1409 万人 / 鳥取 54 万人 = 26.2 倍」は正しい比であり、 こちらは比例尺度。
この区分を無視して「比」を計算してしまうエラーは、 AI ガバナンス や アルゴリズムバイアス の議論でも頻発する。 例えば「気温が 1°C 上がると犯罪率が α 倍になる」のような線形モデルを組むとき、 気温の単位を °C と °F で変えると α が変わってしまい、 結論が不安定になる。 これを避けるには、 間隔尺度は差分のみを特徴量に使う か、 基準点を明示する (例: 1981-2010 平年比) 必要がある。
本ページで学んだ「量的変数」の理解度を、 SSDSE-B-2026 を題材にした 6 問の小テストで確認する。 各問の解答は折りたたみで隠してあるので、 まず自分で考えてから開くこと。 全問正答できれば 変数の尺度とデータ型 ページの本格演習に進める。
問 1. SSDSE-B-2026 の「年平均気温 (B4101)」は次のうちどの尺度か?
正解: (3) 間隔尺度。 摂氏温度は 0°C が「無の状態」ではない (絶対零度ではない) ため、 「20°C は 10°C の 2 倍暑い」と言えない。 差は意味を持つので間隔尺度。 ケルビン (K) なら比例尺度。
問 2. 「総人口 A1101」を pd.read_csv で読んだら dtype が object だった。 原因として最も可能性が高いのは?
正解: (4) すべて。 ただし最頻発の原因は (2)。 skiprows=1 を付ければ 1 行目の和名ヘッダがスキップされ、 数値列は正しく int64 として読まれる。
問 3. 量的変数の代表値として「平均」より「中央値」が望ましい状況は?
正解: (2)。 SSDSE-B の都道府県人口は東京が外れ値となり、 平均は約 270 万人、 中央値は約 160 万人と乖離する。 「典型的な県の規模」を語るなら中央値を使う。
問 4. 「合計特殊出生率 (A4103)」は連続か離散か?
正解: 連続。 出生率は「1.34」「1.41」など小数点を取り得る比率で、 理論的には任意の実数値を取り得る。 ただし元の集計が「年間出生児数 ÷ 女性人口」という割り算であり、 実データ上の粒度は小数点 2 桁程度。 これは「実用上は連続として扱える離散」と見ることもできる。
問 5. SSDSE-B-2026 で「都道府県名 (Prefecture)」を量的変数として直接回帰モデルに入れたら何が起きるか?
正解: そもそも文字列なので、 scikit-learn の LinearRegression はエラーを返す。 仮に名義コードを整数に置換しても、 「北海道=1, 青森=2, …」の順序に意味がないため、 回帰係数は無意味になる。 One-Hot 化が正解。
問 6. 量的変数の分布を最初に見るべき可視化は?
正解: ヒストグラム + 箱ひげ図の併用。 ヒストグラムで分布形状 (単峰/双峰/裾の長さ) を確認し、 箱ひげ図で外れ値の位置を特定する。 散布図は 2 変数の関係を見るときに使い、 単独の量的変数の分布把握には不向き。
量的変数の探索的データ分析 (EDA) で必ず作成すべき定番チャートが 3 つある。 ヒストグラム・箱ひげ図・散布図。 SSDSE-B-2026 を題材に、 それぞれの読み方と限界を整理する。
ヒストグラムは量的変数を「階級 (bin) ごとの度数」に集約し、 棒の高さで密度を表現する。 階級幅 (bin 幅) の選び方で印象が大きく変わるため、 matplotlib では bins=20 程度から始めて、 スタージェスの公式 や フリードマン・ダイアコニス則 で調整する。 SSDSE-B-2026 の総人口は右裾が極端に長く、 そのまま描くと「ほとんどの県が左端の細い棒、 東京 1 県だけが右端に孤立」という見にくいヒストグラムになる。 この場合は対数変換するか、 X 軸を plt.xscale('log') で対数軸に切り替えるとよい。
箱ひげ図は中央値 (箱内の線)・第 1 四分位 (箱下端)・第 3 四分位 (箱上端)・ひげの両端 (通常は IQR × 1.5)・外れ値 (点) を 1 つの図で表現する。 ヒストグラムが「形状」を見るのに対し、 箱ひげ図は「位置・散らばり・外れ値」を見るのに最適。 SSDSE-B-2026 の県別総人口を箱ひげ図で描くと、 東京・神奈川・大阪・愛知など大都市圏の 9 県が外れ値 (1.5×IQR 超、 上限 5,040,250 人) として点で示され、 残り 38 県は箱に収まる。 これにより「日本の都道府県人口は一部の大都市圏を例外として比較的均質」という構造が即座に分かる。
散布図は 2 つの量的変数の関係を「点群の形」で表す。 SSDSE-B-2026 で「総人口 (A1101)」を横軸、 「出生数 (A4101)」を縦軸に取ると、 右肩上がりの強い正の相関が見える (r ≈ 0.99)。 ただし東京が右上に孤立する外れ値となるため、 相関係数 を求める際は「東京を含めた値」「除いた値」を併記するのが誠実。 散布図に 回帰直線 を重ねると、 構造がさらに分かりやすい。
使用データ: SSDSE-B-2026 (出典: data/raw/SSDSE-B-2026.csv)。 使用列: A1101 (総人口、 単位: 人)。 使用行: 47 都道府県全行 (R01000 北海道 〜 R47000 沖縄県)。 量的変数 (比例尺度) の基本統計量を Step 1〜5 で展開する。
| 行コード | 都道府県 | A1101 総人口 (人) |
|---|---|---|
| R01000 | 北海道 | 5,092,000 |
| R13000 | 東京都 | 14,086,000 |
| R27000 | 大阪府 | 8,763,000 |
| … | … | … |
| R31000 | 鳥取県 | 537,000 (最小) |
| R47000 | 沖縄県 | 1,468,000 |
$n = 47$。 全 47 県を昇順に並べた結果、 最小=鳥取 537,000 人、 最大=東京 14,086,000 人。
平均 2,645,809 > 中央値 1,549,000 → 平均が右に引っ張られている (右裾の長い分布)。
💬 結果の読み方: CV ≈ 1.06 は「ばらつきが平均と同じくらい大きい」状態。 量的変数 (比例尺度) なので CV を計算できる (もし「順位」や「血液型」のような質的変数なら平均すら定義できない)。 平均 > 中央値という関係から、 ヒストグラムは右に長い裾を持ち、 東京・神奈川・大阪が極端な外れ値として効いていることが分かる。
3 つの量的変数 (総人口、 合計特殊出生率、 平均気温) の記述統計を比較します:
| 変数 | 尺度 | 平均 | 標準偏差 | CV (変動係数) |
|---|---|---|---|---|
| A1101 総人口 | 比例 | 2,645,809 人 | 2,797,551 人 | 1.057 (大) |
| A4103 合計特殊出生率 | 比例 | 1.293 | 0.133 | 0.103 (小) |
| B4101 平均気温 | 間隔 | 16.8 ℃ | 2.0 ℃ | 0.122 (中) |
変動係数 CV = SD / mean は、 単位を打ち消した相対的ばらつき指標。 比例尺度でしか意味を持たない (間隔尺度では「真のゼロ」がないため、 比を取れない)。 そのため気温 (間隔尺度) の CV は本来計算すべきでない (摂氏 vs 華氏で値が変わる)。 一方、 人口や出生率のような比例尺度では CV が有意義。 総人口の CV=1.06 が示すのは、 都道府県人口のばらつきが平均と同じくらい大きい (歪んだ分布) ということ。
相関係数: 量的変数 2 つの線形関係を測れる。 SSDSE-B-2026 の検算:
合成身長データで複数の要約値を計算する。
1 2 3 4 5 6 | import numpy as np x = np.array([158, 162, 167, 170, 172, 175, 180, 183, 175, 167]) print(f"平均: {x.mean()}") print(f"中央: {np.median(x)}") print(f"範囲: {x.max() - x.min()}") print(f"SD: {x.std(ddof=1):.2f}") |
💬 手計算 (Step 2) と Python 出力が完全一致。
SSDSE-B-2026 のような公的統計データを Python で扱う際の基本パターン:
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd import numpy as np # データ読み込み df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) print(df.shape) print(df.dtypes) print(df.describe()) # 「量的変数」の文脈で扱う場合の例: # 分野: 基礎統計 # 関連手法は同カテゴリの他用語を参照してください。 |
具体的なコードは 代表値(平均・中央値・最頻値) を参照してください。
分析結果を報告するときに含めるべき情報:
🎯 このコードでやること: SSDSE-B-2026 の人口 A1101 を量的変数として扱い、 平均・中央値・分散・標準偏差を一気に算出する。
📥 入力: data/raw/SSDSE-B-2026.csv の A1101 列 (47 都道府県)
1 2 3 4 5 6 7 8 9 | import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) d = df[df['SSDSE-B-2026'] == 2023].copy() x = d['A1101'] print('平均:', x.mean()) print('中央値:', x.median()) print('標準偏差:', x.std()) print('変動係数:', x.std() / x.mean()) |
📤 実行結果:
💬 結果の読み方: 平均 265 万 vs 中央値 155 万 → 右裾の長い分布。 変動係数 1.06 はばらつきが平均と同程度に大きい (東京と鳥取の差)。
🎯 このコードでやること: 各列が量的か質的かを自動判定し、 量的列だけ抽出して計算可能か確認する。
📥 入力: SSDSE-B-2026 の全 112 列
1 2 3 4 5 | quant_cols = df.select_dtypes(include='number').columns qual_cols = df.select_dtypes(exclude='number').columns print(f'量的変数列数: {len(quant_cols)}') print(f'質的変数列数: {len(qual_cols)}') print('質的:', list(qual_cols)) |
📤 実行結果:
💬 結果の読み方: SSDSE-B-2026 は Code (地域コード)・Prefecture (都道府県名) の 2 列 (名義尺度) を除き全列が数値型。 なお年度列は数値として検出されるが、 意味的には順序ラベルであり量的変数として扱わない点に注意。
🎯 このコードでやること: 異なるスケールの量的変数を z-score (平均 0, 分散 1) に揃え、 比較可能にする。
📥 入力: A1101 (人口) と F3101 (新規求職申込件数) ・I510120 (一般病院数)
1 2 3 4 5 | cols = ['A1101', 'F3101', 'I510120'] z = (d[cols] - d[cols].mean()) / d[cols].std() print(z.head(3).round(2)) print('z-score の平均:', z.mean().round(4).tolist()) print('z-score の標準偏差:', z.std().round(4).tolist()) |
📤 実行結果:
💬 結果の読み方: z-score により全列の平均=0, 標準偏差=1 に統一。 量的変数だからこそできる操作。 機械学習の前処理で必須。
🎯 このコードでやること: A1101 の分布形状を 2 種のグラフで観察。 量的変数の必須可視化。
📥 入力: 47 都道府県の A1101 値
1 2 3 4 5 6 7 8 9 10 11 12 | import matplotlib.pyplot as plt fig, ax = plt.subplots(1, 2, figsize=(10, 4)) ax[0].hist(d['A1101']/1e6, bins=15, color='#26A69A', edgecolor='white') ax[0].set_title('人口の分布 (百万人)') ax[0].set_xlabel('人口 (百万人)') ax[1].boxplot(d['A1101']/1e6, vert=True) ax[1].set_title('箱ひげ図') ax[1].set_ylabel('人口 (百万人)') plt.tight_layout() print('ヒストの右端に東京 (14M) が孤立、 箱ひげの上ヒゲ越えに東京・神奈川・大阪が外れ値表示') |
📤 実行結果:
💬 結果の読み方: ヒストグラムで右裾の長さ、 箱ひげで外れ値を視覚的に確認。 量的変数なら必ずこの 2 種を併用する。
🎯 このコードでやること: SSDSE-B-2026 の全列から量的変数を自動検出し (pd.api.types.is_numeric_dtype)、 主要 3 変数の記述統計を表示する。
📥 入力データ: SSDSE-B-2026 全 110 列。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) d = df[df['SSDSE-B-2026'] == 2023].copy() # 量的変数の自動検出 quant_cols = [c for c in d.columns if pd.api.types.is_numeric_dtype(d[c])] print(f'量的変数の列数: {len(quant_cols)} / 全 {len(d.columns)}') # 主要 3 変数の記述統計 print('\n=== 総人口 A1101 (比例尺度) ===') print(d['A1101'].describe()) print('\n=== 出生率 A4103 (比例尺度) ===') print(d['A4103'].describe()) print('\n=== 気温 B4101 (間隔尺度) ===') print(d['B4101'].describe()) |
📤 実行すると次の出力が得られる:
💬 結果の読み方: 112 列中 110 列が数値型として検出される (年度も整数のため含まれる点に注意)。 文字列型は「Code」「Prefecture」のみ。 人口は平均 265 万人、 標準偏差 280 万人と「ばらつきが平均並に大きい」歪み分布。 一方、 出生率は平均 1.29、 SD 0.13 で相対的にバラつきが小さい (CV ≒ 10%)。
🎯 このコードでやること: 総人口・出生率・気温の 3 変数のヒストグラムを並べて、 量的変数の分布の形 (右に歪む / 対称 / 多峰) を視覚比較する。
📥 入力データ: 上記 d の A1101, A4103, B4101 列。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import matplotlib.pyplot as plt fig, axes = plt.subplots(1, 3, figsize=(15, 4)) axes[0].hist(d['A1101'] / 1e6, bins=15, color='#1565C0', edgecolor='white') axes[0].set_title('A1101 総人口 (右に長い裾)') axes[0].set_xlabel('人口 (百万人)') axes[1].hist(d['A4103'], bins=15, color='#C2185B', edgecolor='white') axes[1].set_title('A4103 出生率 (おおむね対称)') axes[1].set_xlabel('合計特殊出生率') axes[2].hist(d['B4101'], bins=15, color='#2E7D32', edgecolor='white') axes[2].set_title('B4101 平均気温 (北海道が左外れ値)') axes[2].set_xlabel('年平均気温 (℃)') plt.tight_layout() plt.savefig('qv_histograms.png', dpi=120) print(f'歪度: 人口={d["A1101"].skew():.2f}, 出生率={d["A4103"].skew():.2f}, 気温={d["B4101"].skew():.2f}') |
📤 実行すると次の出力が得られる:
💬 結果の読み方: 歪度 (skewness) が +2.29 と大きい人口は右に長い裾 (大都市が突出)。 出生率と気温は歪度 0 付近で対称。 量的変数でも「正規分布に近い」ものと「ベキ則的」なものがあり、 適切な統計手法 (パラメトリック vs 非パラメトリック) を選ぶには分布の形を必ず確認する。
🎯 このコードでやること: SSDSE-B-2026 の主要 6 量的変数の相関行列を df.corr() で計算し、 ヒートマップで可視化する。
📥 入力データ: 6 変数 (人口、 出生数、 出生率、 死亡数、 気温、 降水量)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import matplotlib.pyplot as plt cols = ['A1101', 'A4101', 'A4103', 'A4200', 'B4101', 'B4109'] labels = ['人口', '出生数', '出生率', '死亡数', '気温', '降水量'] corr = d[cols].corr() print('相関行列:') print(corr.round(2)) fig, ax = plt.subplots(figsize=(7, 6)) im = ax.imshow(corr, cmap='RdBu_r', vmin=-1, vmax=1) ax.set_xticks(range(len(labels))) ax.set_yticks(range(len(labels))) ax.set_xticklabels(labels, rotation=30) ax.set_yticklabels(labels) for i in range(len(labels)): for j in range(len(labels)): ax.text(j, i, f'{corr.iloc[i,j]:.2f}', ha='center', va='center') plt.colorbar(im, ax=ax) plt.tight_layout() plt.savefig('qv_corr_heatmap.png', dpi=120) |
📤 実行すると次の出力が得られる:
💬 結果の読み方: 人口・出生数・死亡数の相関 ≒ 1.00 はトリビアルな関係 (人口が多ければ出生も死亡も多い)。 興味深いのは 気温と降水量 +0.37 (温暖な地域ほど年降水量が多い傾向)、 人口と出生率 -0.56 (都市化と少子化)。 これらは量的変数同士でこそ計算できる関係性。
🎯 このコードでやること: 量的変数を「連続型 (実数値)」と「離散型 (整数値、 カウント)」に自動分類し、 適切な回帰モデル (線形 vs Poisson) の候補を提案する。
📥 入力データ: SSDSE-B-2026 の 110 数値列。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import numpy as np def classify_qv(s): """量的変数を連続/離散/カウントに分類""" if not pd.api.types.is_numeric_dtype(s): return '非量的' if (s.dropna() % 1 != 0).any(): return '連続 (実数)' n_unique = s.nunique() if n_unique < 30 and s.max() < 100: return '離散 (カウント、 Poisson 候補)' return '整数 (大規模、 連続扱い可)' for col in ['A1101', 'A4103', 'E1101', 'E1301', 'B4101']: print(f'{col:<8} : {classify_qv(d[col])}') |
📤 実行すると次の出力が得られる:
💬 結果の読み方: SSDSE-B-2026 の整数変数は人口や施設数 (10^3 - 10^7 オーダー) のため、 「整数だが連続扱いが妥当」。 小数値の変数 (出生率、 気温) は連続。 Poisson 回帰が必要な「小整数カウント (0-30)」は SSDSE-B-2026 にはほぼ無い。 これは 「型 (dtype) ≠ 統計的性質」であることを示す典型例。
量的変数を扱う実務で、 最初に書くべきは「describe」と「ヒストグラム」だが、 そこから先に進む際は次の 5 種類の集計を覚えておくと判断が早くなる。 すべて SSDSE-B-2026 の人口列で例示する。
このコードでやること: 最小・第 1 四分位・中央値・第 3 四分位・最大の 5 値を出す。 箱ひげ図の数値版。
1 2 3 4 5 6 | import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) d = df[df['SSDSE-B-2026'] == 2023].copy() pop = d['A1101'].dropna() print(pop.quantile([0, 0.25, 0.5, 0.75, 1.0]).round(0)) |
📤 実行結果:
💬 中央値は約 155 万人、 最大は 1409 万人 (東京)。 第 3 四分位の 264 万人と比較しても、 東京は 外れ値 と判定される (IQR × 1.5 ルールで上限値 5,040,250 を大きく超える)。
このコードでやること: 標準偏差を平均で割って「単位に依存しないバラツキ指標」を求める。 比例尺度でのみ意味を持つ。
1 2 3 4 | cv = pop.std() / pop.mean() print(f'変動係数 = {cv:.3f}') print(f'参考: 気温の変動係数 = {d["B4101"].std()/d["B4101"].mean():.3f}') |
💬 人口の変動係数 1.06 は「平均と同程度のバラツキ」を示し、 これは 右に裾を引く分布 の典型値。 一方、 気温は変動係数 0.12 で「比較的均質」とも見えるが、 気温は間隔尺度なので変動係数を計算してはいけない。 摂氏で 0.12 だった値が華氏に変えると別の数値になり、 単位依存となるため。
このコードでやること: 分布の非対称性と尖り具合を 2 つの統計量で要約する。
1 2 3 4 | from scipy import stats print(f'歪度 (skew) = {stats.skew(pop):.3f}') print(f'尖度 (kurt) = {stats.kurtosis(pop):.3f}') |
💬 歪度 2.2 は「強い右の歪み」、 尖度 5.0 は「正規分布より尖って裾が長い」を意味する。 これは東京 1 県の影響であり、 対数変換すると歪度は 0.8 程度まで落ちる。
このコードでやること: 量的変数を「平均 0、 標準偏差 1」に揃え、 異なる単位の変数を比較可能にする。
1 2 3 4 | z = (pop - pop.mean()) / pop.std() print('東京の z 値:', z[d['Prefecture']=='東京都'].iloc[0].round(2)) print('鳥取の z 値:', z[d['Prefecture']=='鳥取県'].iloc[0].round(2)) |
💬 東京の z = 4.09 は「平均から標準偏差の 4.09 倍だけ上」で、 正規分布なら 4 シグマ事象 (確率 0.003 %)。 SSDSE-B の人口分布は正規ではないが、 「東京がいかに突出した存在か」を共通単位で表現できる点が標準化の威力。
このコードでやること: 量的変数を質的変数 (地方区分など) で層化し、 平均と件数を一気に出す。
1 2 3 4 5 6 7 | region_map = { '北海道':'北海道', '青森県':'東北', '岩手県':'東北', '宮城県':'東北', '東京都':'関東', '神奈川県':'関東', '大阪府':'近畿', '沖縄県':'沖縄' } d['region'] = d['Prefecture'].map(region_map).fillna('その他') print(d.groupby('region')['A1101'].agg(['mean','count']).round(0)) |
💬 関東・近畿の県平均は 870〜1170 万人で、 東北 (約 154 万) の 6〜8 倍。 ただし関東は東京 1409 万 + 神奈川 923 万の 2 件平均で、 ばらつきが大きい。 グループ内の std や count も併記しないと誤読を招く点に注意。
describe() で平均と中央値の乖離を必ず確認、 乖離が大きい場合は中央値 + IQR を主軸に。R01000 や年度 2023 は dtype が int / str でも本質は名義/順序尺度。 平均 R12345 (≒ 北埼玉?) は意味不明。 dtype より「比を取れるか」で量的変数か判定。A1101 は「総人口 (人)」と必ずペアで提示。 グラフ軸・表ヘッダ・口頭発表すべてに単位を併記。log(0) = -∞。 市区町村別データの出生数 (年間 0 人の村あり) を np.log すると欠損が大量発生。 np.log1p (log(1+x)) や Yeo-Johnson 変換で回避。y = ax の変換に対し相関や CV は不変だが、 共分散や分散は不変でない。 標準化 (z-score) が定石。 (約 110 字)量的変数の扱いは「数値だから安心」と思われがちだが、 実は質的変数より誤読リスクが高い場面が多い。 SSDSE-B-2026 を題材に 6 つの落とし穴を整理する。
StandardScaler で標準化したり線形回帰に投入すると、 全行同じ値なので係数が無意味になる。 必ず drop するか、 時系列パネルを扱う場合のみ「相対年」として使う。np.log(df['E1101']) で -inf が発生する。 必ず np.log1p(x) = log(1+x) を使うか、 ポアソン回帰など離散分布を仮定したモデルを選ぶ。量的変数の扱いは、 業種・分析目的によって変わる。 SSDSE-B-2026 の例だけでなく、 実務で量的変数がどう活用されるかを 4 シナリオで整理する。
SSDSE-B-2026 の A1101 (総人口) と A4103 (合計特殊出生率) は、 自治体が「人口減少対策のターゲット県」を選定する基礎データになる。 量的変数として両方を z-score 化し、 「人口減少 × 出生率低下」の 2 軸で散布図を描けば、 上位介入候補が一目で分かる。 ここで注意すべきは「人口は比例尺度・出生率は比例尺度」で両方とも対数変換可能だが、 出生率は 1.0 を切ると意味が逆転 (人口が縮む) する閾値があるため、 単純な対数変換は誤読を生みやすい。 通常は原値のまま z-score で扱う。
小売業で「店舗別売上」を量的変数として扱う際、 売上額そのままでは「都心の旗艦店」が他を圧倒し分析が歪む。 ここで使うのが 1 平米あたり売上 (= 売上 ÷ 売場面積) や 1 客あたり客単価 (= 売上 ÷ 来店客数) といった比例尺度の派生変数。 「比」を取ることが意味を持つのは、 売上・面積・客数がいずれも比例尺度 (0 が「無」を意味する) だから。 SSDSE-B-2026 で言えば「県あたり消費支出 ÷ 県あたり総人口 = 1 人あたり消費支出」がこれに該当し、 県の規模差を補正できる。
製造業では量的変数 (部品寸法・電圧・温度など) の規格との適合度を評価するため、 Cp = (USL - LSL) / (6σ) や Cpk = min((USL - μ)/(3σ), (μ - LSL)/(3σ)) といった工程能力指数を使う (USL: 上限規格、 LSL: 下限規格、 σ: 標準偏差、 μ: 平均)。 これは量的変数の「中央位置 μ」と「バラツキ σ」の両方を、 規格幅を基準に評価する仕組み。 Cp ≥ 1.33 なら工程能力十分、 1.0 未満なら不適合品の発生確率が高い。 SSDSE-B-2026 には製造データは含まれないが、 「気温の安定性」を評価したいなら同じ枠組みが流用できる。
日本の大学入試で馴染み深い「偏差値」は、 量的変数 (得点) を 平均 50・標準偏差 10 の尺度に変換した値 (t スコア)。 計算式は T = 50 + 10 × (x - μ) / σ。 これは間隔尺度であり、 「偏差値 60 は偏差値 30 の 2 倍優秀」とは言えない (差は意味ある、 比は無意味)。 SSDSE-B-2026 で言えば、 県別の「総人口の偏差値」を求めれば、 「人口面で平均的な県は偏差値 50、 東京は偏差値 90 弱、 鳥取は偏差値 42」というスケール感が得られる。 ただし元分布が著しく非対称な場合、 偏差値 90 が「上位 0.01 %」を意味しなくなる点に注意 (正規分布前提が崩れる)。
量的変数と質的変数は、 単に「数値かカテゴリか」の違いではなく、 使える演算・可視化・モデル がすべて異なる。 SSDSE-B-2026 の列を例に完全対応表を示す。
| 観点 | 量的変数 (例: A1101 総人口) | 質的変数 (例: Prefecture) |
|---|---|---|
| 基本演算 | 加減乗除すべて OK | =, ≠ のみ |
| 代表値 | 平均, 中央値, 最頻値すべて | 最頻値のみ |
| 散らばり指標 | 標準偏差, 分散, 範囲, IQR | エントロピー, ジニ係数 |
| 可視化 | ヒストグラム, 箱ひげ図, 散布図 | 棒グラフ, 円グラフ, モザイク図 |
| 2 変数の関係 | 相関係数 r, 共分散 | クロス集計, χ² 検定, Cramér V |
| 回帰モデル | 線形回帰の説明変数/目的変数に直接使用可 | One-Hot エンコード後に使用 |
| 分類モデル | 説明変数として使用 (標準化推奨) | 目的変数 (Y) の場合は分類問題そのもの |
| 変換 | 対数, 平方根, Box-Cox, 標準化 | One-Hot, Label Encoding, Target Encoding |
| 欠損補完 | 平均, 中央値, KNN, 多重代入 | 最頻値, 新カテゴリ「不明」追加 |
| 仮説検定 | t 検定, ANOVA, Wilcoxon | χ² 検定, Fisher 正確検定 |
この表が示すのは、 「量的か質的か」の判断は分析パイプライン全体に影響するという事実。 例えば SSDSE-B-2026 で「都道府県を One-Hot 化せず数値コードのまま回帰に投入」した場合、 47 県分のダミー変数 (本来必要) が 1 列に圧縮され、 北海道 (=1) と沖縄 (=47) を線形補間する意味不明なモデルになる。 これは 変数の尺度 と One-Hot エンコーディング を理解していないと気付きにくい事故である。
なお、 「順序尺度」は中間的な性質を持ち、 文脈次第で量的扱い (アンケートの 5 件法を数値で平均) と質的扱い (ノンパラメトリック検定) を使い分ける。 SSDSE-B-2026 には明示的な順序尺度は少ないが、 「年度」「市区町村の行政区分階層」などが該当する。
関連用語: 変数の尺度とデータ型, 質的変数, カテゴリ変数, 離散と連続, 間隔尺度, 比例尺度, 標準化, 対数変換, One-Hot エンコーディング, ヒストグラム, 箱ひげ図, 散布図, 相関係数, 線形回帰, t 検定, ANOVA, χ² 検定.
量的変数の本質は 数値そのものに意味があり、 四則演算・平均・ヒストグラムが使える こと。 下のデモでキャンバスをクリック / タップ (押したままドラッグで連続追加) してデータ点を足すと、 ヒストグラムと要約統計量 (平均・中央値・不偏分散・標準偏差) がリアルタイムに再計算されます。 モードを切り替えて 連続量 (身長)・離散量 (回数)・質的変数 (血液型) の違いを体感してください。
| データ数 n | — |
| 平均 (赤線) | — |
| 中央値 (緑線) | — |
| 不偏分散 (ddof=1) | — |
| 標準偏差 | — |
| 最小 〜 最大 | — |
| 最頻ビン / 最頻値 | — |
量的変数 (数量変数) とは、 観測結果が数値で表され、 その数値の 差や比に意味がある 変数のこと。 「A さんは B さんより 5cm 高い」「東京の人口は鳥取の約 26 倍」のように、 足し算・引き算・平均・分散といった計算が意味を持つ。 上のデモで連続量モードにして点を足すと、 追加した瞬間に平均や標準偏差が動くのが見える。 これが質的変数 (血液型・都道府県コード) との決定的な違いで、 質的変数モードにすると平均・分散が「✗ 定義できない」と表示される。
尺度水準: 量的変数はさらに間隔尺度 (差に意味・気温) と比例尺度 (比に意味・人口/距離) に分かれる。 詳しくは 尺度水準 と 順序尺度 を参照。 連続 vs 離散: 連続量は任意の実数値を取りうる (身長・重量・気温)、 離散量は飛び飛びの値のみ (人数・回数)。 どちらも量的変数であり平均・分散・ヒストグラムが使える点は共通。 変数変換: 人口のように右に大きく歪んだ量的変数は 対数変換で対称に近づけたり、 標準化で単位をそろえたりする。 要約の詳細は 代表値・分散・標準偏差・相関の各ページへ。 なお離散型・連続型それぞれの単独ページは本用語集には未収録のため、 本ページ内の解説を参照のこと。
量的変数(連続・離散)と質的変数・順序尺度・比例尺度との関係、 および記述統計(平均/分散/相関)・回帰モデル・標準化との接続を俯瞰する概念マップ。
数値で表され四則演算が意味を持つ変数。 SSDSE-B-2026 の総人口・出生数・年平均気温などが典型。 質的変数 (都道府県コード・年号) と区別し、 平均・分散・相関などの統計操作が可能。
「量的変数」は単独で完結する手法ではなく、 隣接領域と連携することで真価を発揮する。
SSDSE-B-2026 を題材にした 量的変数 の活用は、 上流 (取得・整形) と下流 (解釈・可視化) を含めて初めて完結する。
具体的なブリッジ例: 総人口 (連続型) と婚姻件数 (離散型) は両方が量的変数だが、 前者は対数変換で歪度を緩和してから線形回帰に投入する、 後者はポアソン分布を仮定して GLM (一般化線形モデル) に投入する、 という選択が変わる。 また質的変数 (例: 47 都道府県名) をワンホット符号化することで「量的変数化」して回帰モデルに投入する橋渡しもあり、 ここで量・質の境界は分析設計次第で動くことを意識すると、 単純な分類ではなく「測定対象 × 分析手法」の組み合わせで考えられるようになる。
「量的変数」を実際の課題に当てはめるとき、 状況別に何を選ぶかを 3 段階で判定する。
SSDSE-B-2026 の総人口 A1101 は比率尺度で、 「A 県の人口は B 県の 2 倍」と言える。 一方、 都道府県コードは見た目数値でも質的変数なので、 平均や 2 倍は意味を持たない。
本ページの前半では「測った値そのもの (水準)」としての量的変数を扱った。 ここでは一歩進めて、 量的変数から四則演算で作られる派生変数 — 差・変化率・比・変動係数 — に注目する。 これらも量的変数だが、 分布形状・尺度としての性質・相関の意味が元の変数とはまるで違う。 SSDSE-B-2026 の実測値だけを使って確認する。
SSDSE-B-2026 は 2012〜2023 年の時系列パネルなので、 同じ列 A1101 (総人口) から「2023 年の水準」と「2012→2023 年の変化率」という 2 つの量的変数を作れる。 実測すると: 東京都は 13,234,000 人 (2012) → 14,086,000 人 (2023) で +6.44 %、 秋田県は 1,063,000 人 → 914,000 人で −14.02 %、 沖縄県は +4.04 %。 11 年間で人口が増えた都道府県は 47 中わずか 7 で、 変化率の最大は東京都 (+6.44 %)、 最小は秋田県 (−14.02 %) だった。
面白いのは分布形状の違いで、 2023 年の人口水準の歪度は 2.29 (東京が引っ張る強い右裾) なのに対し、 変化率の歪度は 0.68 とかなり対称に近づく。 つまり「差 (変化率) を取る」という演算そのものが、 規模の効果を打ち消して分布を穏やかにする一種の変換になっている。 水準では外れ値だった東京も、 変化率では +6.44 % という「端だが極端ではない」値に収まる。 どちらを分析対象に選ぶかで、 見える景色も適切な手法も変わる — これが「派生変数も独立した量的変数として設計する」という視点である。
量的変数の相関で最も踏みやすい罠は、 外れ値でも非線形でもなく、 第三の量 (規模) が生む見かけの相関である。 SSDSE-B-2026 (2023 年、 47 都道府県) で実測すると:
生の値どうしの r = 0.895 を見て「病院が多い県ほど子どもが生まれる」と読むのは誤りで、 人口で割った途端に相関はほぼ消える (r = 0.032)。 生の値の強い相関は「人口が多い県は何でも多い」という規模効果の反映にすぎない。 都道府県データのカウント列 (○○数) はほぼすべて人口と r > 0.9 で相関するため、 カウント × カウントの相関は原則そのままでは解釈しない。 人口あたりに直すか、 擬似相関 の枠組みで人口を交絡として統制してから解釈する。 逆に、 比率どうしの相関では分母を共有すること自体が新たな見かけの相関を生み得る (Pearson が 1897 年に指摘した比率相関の問題) ので、 「割ったから安心」でもない点に注意。
単位の違う量的変数どうしで「どちらがばらついているか」を比べたいとき、 標準偏差 ÷ 平均で定義される 変動係数 (CV) を使う。 SSDSE-B-2026 (2023 年) の実測では、 総人口 A1101 は平均 2,645,809 人・標準偏差 2,797,551 人で CV = 105.7 %、 年平均気温 B4101 は平均 16.80 ℃・標準偏差 2.05 ℃で CV = 12.2 %。 「人口のばらつきは気温の約 9 倍」と言いたくなる。
しかしここに尺度水準の罠がある。 摂氏温度は間隔尺度でゼロ点が任意なので、 同じ気温をケルビンに直す (+273.15) と平均だけが大きくなり、 CV は 0.71 % まで激減する。 ばらつきの実態 (標準偏差 2.05 度) は何も変わっていないのに、 CV は単位の取り方で 12.2 % にも 0.71 %にもなる — つまり CV は真のゼロを持つ比例尺度でのみ意味を持つ。 人口 (0 人 = 無) の CV 105.7 % は正当だが、 摂氏気温の CV を報告するのは誤用である。 「平均で割る」「比を取る」系の指標 (CV、 変化率、 対数変換) を使う前に、 必ずその変数が比例尺度かを確認する習慣が、 派生変数設計の最後の砦になる。 なお、 2023 年の気温の範囲は最低 11.0 ℃ (北海道) 〜最高 23.8 ℃ (沖縄県) で、 この「差 12.8 度」は間隔尺度でも堂々と意味を持つ。