「尺度水準」を取り巻く中核キーワード群です。 検索やインデックス作成で参照する際の手がかりにしてください。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になります。
この増補は、尺度水準を「用語の暗記」ではなく、実データで使い、数式を言葉に戻し、結果の限界まで説明するための補講である。使用データは data/raw/SSDSE-B-2026.csv の実測値であり、合成データは使わない。
本ページに登場する主要キーワード 10 件。 クリックで該当セクションへ。
🍰 まずはやさしく
データの情報のレベルのことです。
使える計算方法を決めるために使います。
身長や血液型などの違いに似ています。
4つの段階について詳しく読みましょう。
最も忙しい読者のために、 まず結論だけまとめます。 詳細は以下のセクションへ:
🍰 まずはやさしく
計算のルールを決めるための道具です。
間違った分析をしないために使います。
アンケートの点数を平均してよいか考えます。
どんな場面でこの考え方が必要か読みましょう。
「アンケートの 5 段階評価を平均してよいか?」 「都道府県コードを足し算してよいか?」 — 全ての統計手法は適用可能な尺度水準が決まっています。 これを無視すると無意味な結果が出ます。
このページの読み方:まず 30秒結論 と 直感 を読み、 必要に応じて 数式 や 計算例、 落とし穴 に進んでください。
統計・データ解析コンペで尺度水準が出てくる場面は、探索的分析、特徴量設計、モデル構築、検証、説明資料のどこかに必ずある。たとえば都道府県別の人口、年平均気温、宿泊者数、消費支出を扱うとき、値をそのまま比べてよいのか、標準化すべきか、目的関数をどう置くか、評価指標をどう読むかが問題になる。
| 観点 | 確認する問い | 誤ると起きること |
| 入力 | 列名・単位・年度は何か | 別年度や別単位を混ぜて結論が崩れる |
| 変換 | 標準化・活性化・尺度分類は妥当か | 数値は出るが意味が薄い |
| 評価 | 誤差・順位・係数をどう読むか | 精度だけを見て限界を落とす |
| 報告 | 何を意味しないかを書いたか | 因果や一般化を言い過ぎる |
あなたは 尺度水準 (Scale of Measurement) の用語ページを読んでいる。 統計分析・機械学習の最初の関門。 データの尺度を間違えると、 平均値の解釈・モデル選択・前処理がすべて崩れる。 SSDSE-B-2026 の 112 列を題材に、 「都道府県名 = 名義」「年度 = 順序(または間隔)」「気温 = 間隔」「人口 = 比例」と仕分けることで、 ML パイプラインの最上流の意思決定が見えてくる。
🍰 まずはやさしく
計算できる範囲を決めるピラミッドです。
データの扱い方を直感的に知るために使います。
人口や気温などのデータの違いに似ています。
段階が上がると何ができるようになるか読みましょう。
尺度水準を直感で捉えるには、表計算の一列だけを見るのではなく、値がどの手順で判断に変わるかを見る。SSDSE-B-2026では、北海道、東京都、沖縄県のように人口規模、気候、観光、消費が大きく違う地域が同じ表に並ぶ。ここで同じ処理を機械的に当てると、規模の効果と構造の効果が混ざる。
| 都道府県 | 総人口 A1101 | 年平均気温 B4101 | 消費支出 L3221 |
| 北海道 | 5,092,000 | 11.0 | 296,888 |
| 東京都 | 14,086,000 | 17.6 | 341,320 |
| 沖縄県 | 1,468,000 | 23.8 | 251,222 |
尺度水準は「許される操作」のピラミッド。 下から積み上げ、 上の尺度は下の操作も全部使える:
| 水準 | 許される操作 | 代表値 | 例 | SSDSE 例 |
|---|---|---|---|---|
| 4. 比例 (Ratio) | =, ≠, <, >, +, −, ×, ÷ | 平均、 幾何平均、 調和平均 | 身長、 人口、 出生数 | A1101 (総人口)、 A4101 (出生数) |
| 3. 間隔 (Interval) | =, ≠, <, >, +, − | 平均、 中央値、 最頻値 | 温度℃、 西暦 | B4101 (年平均気温)、 年度 |
| 2. 順序 (Ordinal) | =, ≠, <, > | 中央値、 最頻値 | 満足度、 順位、 学歴 | (SSDSE には少ない) |
| 1. 名義 (Nominal) | =, ≠ | 最頻値のみ | 性別、 血液型、 ID | Code (R01000…)、 Prefecture (北海道…) |
🍰 まずはやさしく
データの性質を分ける定義のことです。
数学的に正しい処理を選ぶために使います。
スマホのデータなどをどう変換するか似ています。
それぞれの尺度で許される操作を読みましょう。
尺度水準は 許される変換群 $T$ で定義される(Stevens 1946):
| 尺度 | 許される変換 | 意味 |
|---|---|---|
| 名義 | $T(x) = $ 任意の 1 対 1 関数 | ラベル付け替えに不変 |
| 順序 | $T(x) = $ 任意の単調増加関数 | 順位だけ保てばよい |
| 間隔 | $T(x) = ax + b, \; a > 0$ | 原点と単位を変更可 |
| 比例 | $T(x) = ax, \; a > 0$ | 単位のみ変更可(原点は不変) |
平均が意味を持つ条件:$\bar{T(x)} = T(\bar{x})$ (線形変換に不変)。 これは 間隔・比例尺度のみ。
中央値が意味を持つ条件:単調変換に不変 → 順序以上で使える。
最頻値(mode):1 対 1 変換に不変 → 全尺度で使える。
右へ行くほど情報量が増える。名義は同じ/違う、順序は大小、間隔は差、比例は0と比まで意味を持つ。平均や相関を計算してよいかは、データの尺度水準に依存する。
| 記号・部品 | 言葉での意味 | 読み間違いを避けるポイント |
| x / X | 入力特徴量。SSDSEでは人口、気温、宿泊者数など | 単位が違う列を同じ重みで読まない |
| y | 説明したい値。ここでは消費支出や人口増減など | 予測対象と説明変数を混同しない |
| パラメータ | データから決める重みや境界 | 大きいほど重要とは限らない |
| 損失・誤差 | 予測と実測のずれ | 小さいほどよいが、過学習も見る |
| 制約・前提 | 使ってよい解の範囲や仮定 | 現実の制約を落とすと使えない結論になる |
このコードでやること:SSDSE-B-2026の列を尺度水準の例として取り出し、都道府県名(名義)、高齢化率順位(順序)、平均気温(間隔)、総人口(比例)で許される要約を分けて計算する。
入力例:data/raw/SSDSE-B-2026.csv から2023年の47都道府県を抽出し、Prefecture は文字列、A1101 などの統計列は数値に変換する。
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd raw = pd.read_csv("data/raw/SSDSE-B-2026.csv", encoding="cp932") df = raw.iloc[1:].copy() df = df[df["SSDSE-B-2026"].astype(str) == "2023"].copy() for col in ["A1101", "A1303", "B4101", "L3221"]: df[col] = pd.to_numeric(df[col], errors="coerce") df["aging_rate"] = df["A1303"] / df["A1101"] * 100 print("nominal categories", df["Prefecture"].nunique()) print(df[["Prefecture", "aging_rate"]].sort_values("aging_rate", ascending=False).head()) print("temperature mean/min/max", df["B4101"].mean(), df["B4101"].min(), df["B4101"].max()) print("population mean/median", df["A1101"].mean(), df["A1101"].median()) |
実行結果:
結果の読み方:都道府県名の平均は意味を持たないが、人口の平均は意味を持つ。気温は差は読めるが「20度は10度の2倍暑い」とは読めない。
| 列コード | 意味 | 尺度 | 許される代表値 | 不適切な操作 |
|---|---|---|---|---|
| SSDSE-B-2026 | 年度 (2014-2023) | 間隔 | 平均 / 中央値 / 最頻値 | 比(× ÷) |
| Code | 地域コード (R01000…) | 名義 | 最頻値のみ | 平均、 中央値 |
| Prefecture | 都道府県名 | 名義 | 最頻値のみ | 並べ替え以外 |
| A1101 | 総人口 | 比例 | 全て(幾何平均含む) | (なし) |
| A1303 | 65 歳以上人口 | 比例 | 全て | (なし) |
| A4103 | 合計特殊出生率 | 比例 | 全て | (なし) |
| B4101 | 年平均気温℃ | 間隔 | 平均 / 中央値 | 比 (× ÷) |
| E1101 | 幼稚園数 | 比例 | 全て(離散だが比例) | (なし) |
気温の比 (沖縄 23.8 / 北海道 11.0 = 2.16 倍) は気温が間隔尺度のため無意味。 「沖縄は北海道より 約 13 度高い」と差で語るのが正しい。 一方、 人口比 (東京 14,086,000 / 鳥取 537,000 = 26.2 倍) は比例尺度のため有意義。 同じ計算でも尺度で意味が変わる。
SSDSE-B-2026 にも含まれる典型例(血液型カテゴリ、 満足度評価、 気温℃、 収入)を題材に、 4 つの尺度(名義/順序/間隔/比例)で使用可能な代表値を整理する。
| 尺度 | 例 | 代表値 |
|---|---|---|
| 名義 | 血液型 | 最頻値 |
| 順序 | 満足度 1-5 | +中央値 |
| 間隔 | 気温 [℃] | +算術平均 |
| 比例 | 収入 | +幾何平均 |
1 2 3 | scales = {'名義':1, '順序':2, '間隔':3, '比例':4} for k, v in scales.items(): print(f"{k}: 階層 {v}") |
💬 手計算 (Step 1) と Python 出力が完全一致。
最小再現コード。 SSDSE-B のような実データを前提に、 4〜8 行で動く例です:
1 2 3 4 5 6 | import pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=1) # 日本語の列名で読む(2 行目を見出しにする) # 比例尺度(数値)には平均・標準偏差が意味あり print(df['合計特殊出生率'].describe()) # 名義尺度の都道府県には value_counts が適切 print(df['都道府県'].value_counts()) |
補足:ライブラリのバージョンや前処理状態によって出力は変わります。 自分の環境で動かすときは pip list でバージョンを確認し、 入力 CSV のパス・列名を実態に合わせてください。
このコードでやること:尺度ごとに許される処理を辞書化し、列を分析前に点検する簡易チェック表を作る。
入力例:同じ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 raw = pd.read_csv("data/raw/SSDSE-B-2026.csv", encoding="cp932") df = raw.iloc[1:].copy() df = df[df["SSDSE-B-2026"].astype(str) == "2023"].copy() for col in ["A1101", "A1303", "B4101"]: df[col] = pd.to_numeric(df[col], errors="coerce") df["aging_rank"] = (df["A1303"] / df["A1101"]).rank(ascending=False, method="min") scale_rules = { "Prefecture": ("nominal", ["count", "mode", "groupby"]), "aging_rank": ("ordinal", ["median", "percentile", "rank correlation"]), "B4101": ("interval", ["mean", "difference", "standardization"]), "A1101": ("ratio", ["mean", "ratio", "coefficient of variation"]), } for col, (scale, allowed) in scale_rules.items(): exists = col in df.columns print(f"{col}: {scale} -> {', '.join(allowed)} / data column: {exists}") print("inappropriate examples: Prefecture.mean(), temperature ratio") |
実行結果:
結果の読み方:尺度水準は理屈だけでなく、コードレビューのチェックリストである。列ごとに「この演算は意味を持つか」を先に決めると、後工程の誤解が減る。
🎯 このコードでやること:SSDSE-B-2026 の各列を読み込み、 型・unique 数・分布から尺度水準を簡易判定する。
📥 入力データ (SSDSE-B-2026 から抽出):
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
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
def detect_scale(s):
if s.dtype == object:
return '名義'
nuniq = s.nunique()
if nuniq <= 12 and s.dtype in ('int64', 'int32'):
# 順序か間隔かは name で判定 (例: 年度)
if s.name == 'SSDSE-B-2026':
return '間隔 (年度)'
return '順序の可能性'
# 0 が物理的に意味を持つか? 簡易ルール: 名前が温度系なら間隔
if 'B41' in s.name: # 気温系
return '間隔 (温度系)'
return '比例'
print(f'{"列":<14s} {"型":<10s} {"unique":>6s} 尺度')
for col in df.columns[:10]:
print(f'{col:<14s} {str(df[col].dtype):<10s} {df[col].nunique():>6d} '
f'{detect_scale(df[col])}') |
📤 実行すると次の出力が得られる:
💬 結果の読み方:型と unique 数・列名で 4 尺度を簡易判定。 Code/Prefecture は名義、 年度は間隔、 人口系は比例。 ML パイプラインで前処理を分岐する基盤になる。
🎯 このコードでやること:比例(A1101 人口)と間隔(B4101 気温)で平均・中央値・幾何平均の意味を比較する。
📥 入力データ (SSDSE-B-2026 から抽出):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import pandas as pd
import numpy as np
from scipy.stats import gmean, hmean
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
d = df[df['SSDSE-B-2026'] == 2023]
for col, label, scale in [('A1101', '総人口', '比例'),
('B4101', '年平均気温', '間隔'),
('A4103', '合計特殊出生率', '比例')]:
s = d[col]
print(f'--- {col} {label} ({scale}尺度) ---')
print(f' 算術平均 (mean) : {s.mean():>15,.2f}')
print(f' 中央値 (median) : {s.median():>15,.2f}')
print(f' 最頻値 (mode) : {s.mode().iloc[0]:>15,.2f}')
if (s > 0).all():
print(f' 幾何平均 (gmean) : {gmean(s):>15,.2f} '
f'{"(比例なので意味あり)" if scale == "比例" else "(間隔: 計算可だが意味不明)"}')
print(f' 調和平均 (hmean) : {hmean(s):>15,.2f}')
print(f' 最大/最小 比 : {s.max()/s.min():>15.2f} '
f'{"(比例: 意味あり)" if scale == "比例" else "(間隔: 物理的意味なし)"}') |
📤 実行すると次の出力が得られる:
💬 結果の読み方:比例尺度(人口・出生率)は幾何平均や比が意味を持つ。 間隔尺度(気温)は計算可能だが解釈が難しい(最大/最小比 2.16 は無意味)。 尺度に応じて代表値を選ぶ。
🎯 このコードでやること:sklearn の ColumnTransformer で名義は OneHot、 順序は Ordinal、 比例は StandardScaler に分岐する。
📥 入力データ (SSDSE-B-2026 から抽出):
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 | import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder, OrdinalEncoder
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
d = df[df['SSDSE-B-2026'] == 2023].copy()
# 簡易な順序変数を作成: 人口規模 (小/中/大)
d['pop_class'] = pd.cut(d['A1101'], bins=[0, 1e6, 3e6, 2e7],
labels=['小', '中', '大'])
pre = ColumnTransformer([
('nominal_onehot', OneHotEncoder(sparse_output=False),
['Prefecture']),
('ordinal_enc', OrdinalEncoder(categories=[['小', '中', '大']]),
['pop_class']),
('interval_scale', StandardScaler(),
['B4101']),
('ratio_log', StandardScaler(),
['A1101', 'A1303']),
])
X = d[['Prefecture', 'pop_class', 'B4101', 'A1101', 'A1303']]
Xt = pre.fit_transform(X)
print(f'入力 shape : {X.shape}')
print(f'変換後 shape : {Xt.shape}')
print(f'内訳: 名義47 + 順序1 + 間隔1 + 比例2 = {47+1+1+2}')
print('北海道行の変換結果(先頭 10 値):', Xt[0][:10].round(2)) |
📤 実行すると次の出力が得られる:
💬 結果の読み方:Prefecture(名義 47 種)→OneHot 47 列、 pop_class(順序)→1 列(0/1/2)、 B4101(間隔)→1 列(z-score)、 人口(比例)→2 列(z-score)。 計 51 特徴量。 尺度別エンコーディングが ML 性能を左右する。
🎯 このコードでやること:Prefecture(名義)と A4103(比例)の関連を ANOVA で、 気温(間隔)と出生率(比例)を Pearson 相関で評価する。
📥 入力データ (SSDSE-B-2026 から抽出):
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
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].copy()
# 地方ブロック (名義) を作成
def region(code):
n = int(code[1:3])
return '北東' if n<=7 else '関東' if n<=14 else '中部' if n<=23 else '近畿' if n<=30 else '中四国' if n<=39 else '九州沖縄'
d['region'] = d['Code'].apply(region)
# (1) 名義 vs 比例: 一元配置 ANOVA
groups = [d[d['region']==r]['A4103'].values for r in d['region'].unique()]
F, p = stats.f_oneway(*groups)
print(f'[名義 vs 比例] 地方ブロック別 出生率 ANOVA: F={F:.3f}, p={p:.4f}')
# (2) 間隔 vs 比例: Pearson 相関
r, p = stats.pearsonr(d['B4101'], d['A4103'])
print(f'[間隔 vs 比例] 気温 × 出生率 Pearson: r={r:.3f}, p={p:.4f}')
# (3) 比例 vs 比例: 対数変換後 Pearson
import numpy as np
r2, p2 = stats.pearsonr(np.log(d['A1101']), d['A4103'])
print(f'[比例 vs 比例] log(人口) × 出生率 Pearson: r={r2:.3f}, p={p2:.4f}') |
📤 実行すると次の出力が得られる:
💬 結果の読み方:尺度別検定: 名義 vs 比例 → ANOVA (F=18.1, p<0.001 で地方差あり)、 間隔 vs 比例 → Pearson (r=0.5, 気温高い県は出生率高め)、 比例 vs 比例 → log 変換後 Pearson (r=-0.59, 人口多い県は出生率低)。
尺度水準の核心は「その変数にどの操作が許されるか」に尽きる。ここでは (1) 操作ボタンで許される計算を体感し、(2) クイズで判定力を鍛え、(3) 尺度を下げると情報が失われる様子を実測データで可視化する。質的変数/量的変数の 2 分法を、操作の観点から 4 段階に細分するのがこのページの視点である。
変数を 1 つ選ぶと、4 つの操作のうちその尺度で許されるものだけが有効化される。グレーのボタンも押せば「なぜ無意味か」の説明が出る。気温は SSDSE-B-2026(2023 年・年平均気温 B4101)の実測値、血液型・順位・身長は架空の例である。
ランダムに出題される変数例(一般的な例・一部架空の設定)を 4 尺度に分類しよう。西暦・摂氏温度・偏差値・郵便番号・リッカート尺度など間違いやすい例ほど、即時フィードバックの解説を読む価値がある。
SSDSE-B-2026 の 2023 年・年平均気温 B4101(47 都道府県の実測値、最小 11.0℃ 北海道〜最大 23.8℃ 沖縄)を、しきい値で「低/高」の 2 値(順序尺度)に落とす。ヒストグラムが 2 本の棒に潰れ、県ごとの気温差の情報が不可逆に失われる様子を確認しよう。スライダーまたはグラフ上のドラッグ(タッチ対応)でしきい値を動かせる。
4 つの尺度は並列な 4 分類ではなく、情報量の包含階層である。比率尺度のデータはいつでも間隔・順序・名義として扱い直せる(身長 172cm → 「高い」 → 「A グループ」)が、逆方向の復元は不可能。ウィジェット③で 2 値化した気温を元の 47 個の実測値に戻せないのがまさにこれで、尺度を下げる変換は一方通行である。だから測定・記録の段階では可能な限り高い尺度で取得し、集計・報告の段階で必要に応じて落とすのが原則になる。アンケートで「年齢を 20 代/30 代…で聞く」設計は、回答負担を下げる代わりに間隔情報を最初から捨てている、という設計判断だと読める。
リッカート尺度(満足度 1〜5)を間隔扱いする慣行の是非は、「平均を取る=足し算と割り算を認める=目盛りが等間隔だと仮定する」と操作に翻訳すると論点が明確になる。「不満(1)→やや不満(2)」の心理的距離と「満足(4)→大変満足(5)」の距離が等しい保証はないため、厳密には順序尺度として中央値・順位検定で扱うのが正しい。実務で平均を報告する場合は、等間隔仮定を明記し中央値・最頻値を併記するのが防御的な作法である。同様に、順序尺度の平均(成績順位の平均など)はウィジェット①で見た通り「差が無意味なものを足している」操作であり、カテゴリコードの数値誤用(血液型 A=1, B=2… や都道府県コードの平均)は「符号の割り当てを変えると結果が変わる計算」=名義尺度で許されない演算の典型である。
| 尺度 | 代表値 | 散らばり | 2 変数の関連 | 代表的な検定 |
|---|---|---|---|---|
| 名義 | 最頻値 | カテゴリ数・多様性指数 | クロス集計・クラメールの V | χ² 検定(独立性・適合度) |
| 順序 | +中央値・四分位数 | 四分位範囲 | スピアマン順位相関・ケンドールの τ | 順位検定(Mann-Whitney U、Wilcoxon 符号順位、Kruskal-Wallis) |
| 間隔 | +算術平均 | +標準偏差・分散 | +ピアソン積率相関 | +t 検定・分散分析(ANOVA) |
| 比率 | +幾何平均・調和平均 | +変動係数(CV) | +比・弾力性の分析、対数変換後の相関 | 間隔と同じ+比率の検定 |
表の「+」は下位尺度で使えるものはすべて上位でも使えることを表す(階層性)。手法選択は「①尺度判定 → ②分布確認 → ③検定選択」の順で行い、順序データに t 検定を当てる・名義コードにピアソン相関を当てるといった尺度を飛び越えた適用を避けるのが第一関門となる。順序尺度向けのスピアマン順位相関や Mann-Whitney U 検定は、値そのものではなく順位だけを使うため、等間隔仮定なしで比較できるのが利点である。
尺度水準 を実務で扱うとき、 多くの分析者が同じところでつまずきます。 代表的な失敗パターンを先回りで押さえておくと、 後工程のトラブルを大幅に減らせます。
OrdinalEncoder、 なければ OneHotEncoder。 機械学習でも影響大。※ 上記は文献調査・現場経験で報告される頻度の高い注意点。 ドメインや手法のバージョンによって追加の落とし穴がある場合があります。
dtype=str または category 型で読み込む。OrdinalEncoder に投入すると、 モデルは順序 (A < B < AB < O) を仮定して学習し精度が落ちる。 名義は必ず OneHotEncoder または pd.get_dummies。尺度水準が変われば使える可視化が変わる。 名義は度数で、 順序は箱ひげで、 間隔・比例はヒストグラムで分布を確認するのが基本である。
読み方: 図 1 → 3 を通じて、 ヒストグラム(比例)→ 箱ひげ(順序)→ 度数/最頻値(名義)と「可視化の選択が尺度水準に依存する」ことが直感できる。
1分で答えられる確認問題。 自分で考えてから解答を開いてください。 SSDSE-B-2026 のカラムを尺度水準ごとに分類できるかが定着の指標です。
A. 原則として 中央値。 理由:
ただし実務 (アンケート分析等) では「リッカート尺度を間隔尺度とみなして平均を取る」慣習も存在する。 その場合は 仮定を明示し、 中央値も併記すると批判に強い。
尺度水準 (名義/順序/間隔/比) を中心に、 Stevens の測定論を前提として、 量的/質的・離散/連続の分類、 離散化と Box-Cox 変換による尺度変換、 SSDSE-B-2026 の県別変数の列ごとの分類、 機械学習の特徴量タイプとの対比、 ColumnTransformer による前処理パイプラインへの統合の関係を 6 方向に配置した。
尺度水準を中心に、 上に「前提となる測定論」、 右上に「並列の分類(量的/質的・離散/連続)」、 右下に「発展(連続値の離散化・順序のスコア化・Box-Cox 変換)」、 下に「応用(SSDSE-B-2026 の県別変数の列ごとの分類)」、 左下に「対比(機械学習の特徴量タイプ)」、 左上に「統合(ColumnTransformer 等の前処理パイプライン)」を配置する。
このマップから読み取るべき核心は、 「尺度水準は単なる学術ラベルではなく、 計算可能な操作の集合を決める制約系」であり、 上流(測定)と下流(前処理・モデル)の両方を縛るという点。 SSDSE-B-2026 を扱うときも、 各列の尺度を最初に確認しておけば、 後の集計・相関・回帰・可視化での選択は半ば自動的に決まる。
「尺度水準」は単独で完結する手法ではなく、 隣接領域と連携することで真価を発揮する。
「気温の摂氏」が間隔尺度(0℃ に絶対意味なし)か「身長」が比率尺度(0cm に絶対意味あり)かを意識することで、 誤った統計操作 を未然に防げる。
「尺度水準」を扱う際の手法選択は、 状況に応じて以下のフローで判断すると迷いが減る。
このフローに沿って判断することで、 「尺度水準」を中核とした適切な手法選択ができる。
OrdinalEncoder、 なければ OneHotEncoder。 機械学習でも影響大。尺度水準 は「基礎統計」分野の中で発展してきた概念・手法です。 学術的には継続的な研究で精緻化され、 実務的にはツール・ライブラリの普及で誰でも使えるようになってきました。 用語の使い方・意味は時代と分野で少しずつ変わるため、 文脈に応じた解釈が大切です。 入門書だけでなく、 標準的な教科書(例:データサイエンス・統計学の定本)や信頼できるオンライン教材も併用すると、 ぶれない理解に近づけます。
尺度水準は、定義だけを暗記しても分析では役に立たない。SSDSE-B-2026のような都道府県データでは、列の単位、年度、地域単位、欠損、外れ値、標準化の有無が結果を大きく変える。名義・順序・間隔・比例で使える計算を分けるという観点で、入力から出力までを一続きに説明できることが重要である。
確認順序は、(1) 何を入力にしたか、(2) どの変換をしたか、(3) どの数式またはAPIが動いたか、(4) 数値が何を意味するか、(5) 何を意味しないか、である。この順序を崩すと、数値は出ているのに解釈が曖昧な報告になる。
尺度水準は S. S. Stevens (1946) の分類で、名義 < 順序 < 間隔 < 比例 の 4 段階に並ぶ。この不等号は「値そのものの大小」ではなくデータが担う意味の強さの順序である。上の水準ほど、その値に対して「正しく答えられる問い」が増える。名義は同じか違うかだけ、順序はどちらが上かまで、間隔はどれだけ離れているかまで、比例は何倍かまで答えられる。
| 水準 | 答えられる問い | 許される演算 | 使える代表値 | SSDSE-B-2026 実例 |
|---|---|---|---|---|
| 名義 | 同じ?違う? | =, ≠ | 最頻値 | Prefecture(都道府県名), Code(R01000…R47000) |
| 順序 | どちらが上? | =, ≠, <, > | + 中央値, 分位点 | 人口を大きい順に付けた順位(派生値) |
| 間隔 | どれだけ離れている? | + −(差) | + 算術平均, 標準偏差 | B4101 年平均気温℃, 年度(2014–2023) |
| 比例 | 何倍? | + × ÷(比) | + 幾何平均, 変動係数 | A1101 総人口, A4103 合計特殊出生率 |
階層は「包含」の関係にある。上位の水準は下位の演算をすべて含む。だから比例尺度(総人口)には差も大小も等号もすべて使えるが、名義尺度(都道府県名)には等号しか使えない。各水準は「その水準で新しく許される演算」で特徴づけられると覚えるとよい。
各水準を分けるもう一つの見方が許容変換(値の意味を壊さない置き換え)である。名義は 1 対 1 の付け替え(A型→◯、B型→△でも情報は同じ)、順序は順位を保つ単調変換、間隔は原点と単位を変える正の一次変換 $T(x)=ax+b\,(a>0)$、比例は単位だけ変える相似変換 $T(x)=ax\,(a>0)$ まで許される。摂氏→華氏は一次変換なので気温は間隔、cm→m は相似変換なので身長は比例、という具合に「どこまで変えても意味が壊れないか」で水準が決まる。
尺度水準の誤りは、エラーを出さずにもっともらしい無意味な数値を生む点が厄介である。Python はコード(数字)の平均を平然と返すが、その値に意味があるかは尺度水準が決める。以下は現場で頻出する誤りである。
| # | 落とし穴 | なぜ誤りか | 正しい扱い |
|---|---|---|---|
| 1 | 順序尺度を間隔とみなす(リッカート平均):満足度 1〜5 を単純平均して「平均 3.4」とする | 「やや不満(2)→普通(3)」と「満足(4)→大満足(5)」の心理的間隔が等しい保証がない。目盛りは等間隔ではない | 中央値・最頻値・分位点で要約。比較は Mann–Whitney など順位検定。平均を使うなら「等間隔を仮定した近似」と明記 |
| 2 | 名義に平均:血液型を A=1,B=2,O=3,AB=4 と符号化し「平均 2.3」 | 符号の割り当てを変えれば平均も変わる。割り当て依存の数値に意味はない | 度数・最頻値・クロス集計。関連は $\chi^2$ 検定やクラメールの V |
| 3 | コード化した数値を量と誤解:都道府県コード(SSDSE の Code=R01000…R47000)を数値化し平均や回帰に投入 | コードは名義ラベル。「24 番目が平均的な県」は無意味。番号は識別のためだけの記号 | カテゴリとして扱い、必要なら One-Hot 化。番号順の大小に意味を持たせない |
| 4 | 間隔尺度で比を取る:年平均気温で「沖縄 23.8℃ は北海道 11.0℃ の 2.16 倍暖かい」 | 0℃ は水の凝固点という便宜的な原点で「温度ゼロ」ではない。絶対温度 K に直すと 296.95/284.15≒1.045 倍となり、比が原点の取り方で変わる=比に意味がない証拠 | 差で語る:「沖縄は北海道より年平均で 12.8℃ 高い」(SSDSE-B-2026 2023 実測)。比が要るなら絶対零点のある尺度(ケルビン)へ |
| 5 | 水準の判定ミス:郵便番号・電話番号・背番号など「数字に見える名義」を量として集計 | 形が数値でも演算の意味がなければ名義。逆に「離散だから名義」も誤り(人数は離散だが比例) | 離散/連続と尺度水準は独立の軸。値に差や比の意味があるかで判定する |
実データでの対比(SSDSE-B-2026, 2023 年, 47 都道府県):総人口 A1101 は東京 14,086,000 人 / 鳥取 537,000 人 = 26.2 倍 という比が意味を持つ(比例尺度・絶対零点あり)。同じ「割り算」でも、気温 B4101 の比は無意味で人口の比は有意義——演算の可否は数式ではなく尺度水準が決める、というのが本ページの核心である。
※ #1・#2 のリッカート/血液型は説明用の架空例(SSDSE-B-2026 に個票の満足度・血液型列は無い)。#3・#4 の Code・気温・人口は SSDSE-B-2026 の実測値。
「その変換で値を置き換えても結論が変わらない統計量」だけが、その水準で意味を持つ(不変な)統計量である。平均は一次変換に不変($\overline{ax+b}=a\bar{x}+b$)なので間隔以上で使え、中央値は単調変換に不変なので順序以上で使え、最頻値は 1 対 1 変換に不変なので全水準で使える。
| 水準 | 許容変換 $T$ | 意味が保たれる例 | 適切な統計量 | 適切な検定・関連指標 |
|---|---|---|---|---|
| 名義 | 任意の 1 対 1 写像 | ラベルの付け替え | 最頻値, 度数, 相対度数 | $\chi^2$ 検定, クラメールの V |
| 順序 | 任意の単調増加関数 | 順位を保つ写像 | + 中央値, 分位点, 四分位範囲 | Spearman/Kendall 順位相関, Mann–Whitney, Wilcoxon |
| 間隔 | $T(x)=ax+b,\;a>0$ | ℃↔℉, 西暦↔和暦 | + 算術平均, 標準偏差, Pearson 相関 | t 検定, 分散分析(ANOVA) |
| 比例 | $T(x)=ax,\;a>0$ | cm↔m, 人↔千人 | + 幾何平均, 調和平均, 変動係数 | 比・成長率の分析, 対数変換回帰 |
Stevens の 4 分類は明快だが、「統計手法を尺度で機械的に禁止する」運用には批判がある。統計学者 Frederic Lord(1953, "the numbers do not know where they came from")や Velleman & Wilkinson(1993)は、尺度は測定値に固定された属性ではなく分析の目的と解釈に依存すると論じた。実際、リッカート項目を合算した尺度得点は近似的に間隔として扱われることが多く、心理測定では平均や因子分析が慣行として用いられる。要点は「禁止か許可か」の二分ではなく、その演算で得た数値をどう解釈できるか/できないかを明示することにある。
実務では水準が曖昧なケースも多い。年齢は比例尺度だが「年齢層」に区切れば順序、西暦年は間隔だが「年度ラベル」として名義的に使うこともある。SSDSE-B-2026 の年度列(2014–2023)は差に意味がある間隔尺度だが、パネルデータのグループ ID として名義的に扱う場面もある——同じ列でも分析目的で水準の扱いが変わりうる。
尺度水準は前処理(エンコーディング)の設計そのものである。誤ると、モデルに存在しない順序や距離を教え込むことになる。
| 水準 | 推奨エンコーディング | 誤った扱いの害 | SSDSE 例 |
|---|---|---|---|
| 名義 | One-Hot / ターゲットエンコーディング / 埋め込み | ラベル番号を線形モデルに入れると「値が近い=似ている」と誤解させる | Prefecture → 47 次元 One-Hot |
| 順序 | Ordinal(順位を保つ整数) | One-Hot にすると順序情報を捨てる/名義化してしまう | 人口規模を大中小に区切った層(派生) |
| 間隔・比例 | 標準化 / 正規化(StandardScaler 等) | スケール差を放置すると距離・勾配ベース手法で大きい列が支配的になる | A1101 総人口, B4101 気温 |
補足:決定木・勾配ブースティング(分岐が閾値の大小で決まる)は間隔/比例の区別に鈍感で、単調変換にも頑健。一方、距離や内積を使う手法(k-NN, SVM, 線形回帰, PCA, ニューラルネット)は尺度とスケールに敏感で、標準化とエンコーディングの選択が性能を左右する。「どのアルゴリズムがどの水準を前提にするか」を押さえるのが実装の勘所である。
各水準・関連概念の個別ページへ。相対リンクで用語集内の実在ページに移動できる。