📚 さらに学ぶための資料
📚 さらに学ぶための資料
順序尺度 をさらに深く学ぶための代表的リソース:
公的データ :e-Stat(政府統計の総合窓口) 、 SSDSE(教育用標準データセット) 、 RESAS(地域経済分析システム)
教科書(日本語) :「データ解析のための統計モデリング入門」「統計学入門」「Python ではじめる機械学習」など、 入門〜中級書が豊富
教科書(英語) :『The Elements of Statistical Learning』『Pattern Recognition and Machine Learning』『Deep Learning』など標準テキスト
オンライン講座 :Coursera、 edX、 Kaggle Learn、 統計検定の公式問題集
論文 :Google Scholar / arXiv で Ordinal Scale を検索 → 引用数の多い基礎論文から
コミュニティ :Kaggle、 SIGNATE、 Cross Validated(Stack Exchange)、 日本統計学会
🎓 学習達成度の自己チェック
次の問いに自分の言葉で答えられるか、 試してみてください:
順序尺度 を、 30秒で他人に説明できますか?
この概念が 使える場面 と 使えない場面 を例で挙げられますか?
上の数式の 各記号の意味 を口頭で説明できますか?
「落とし穴」セクションで挙げた失敗パターンを、 自分の言葉で言い換えられますか?
Python コードを少し変えて、 別のデータや条件で動かしてみましたか?
関連用語との 違い を1つ以上指摘できますか?
この概念を使った分析結果を、 レポートに正しい形式で書けそうですか?
7問中5問以上「はい」と答えられれば、 この用語は 使えるレベル で理解できています。 残りは関連用語を学ぶ中で自然に補完されます。
🧪 深掘り:Stevens の歴史と尺度水準論争
尺度水準(Levels of Measurement)の概念は、 心理学者 Stanley S. Stevens が 1946 年に Science 誌に発表した論文 "On the Theory of Scales of Measurement" で体系化されました。 Stevens は心理物理学(音の大きさや明るさの主観的尺度)を研究する中で、 「測定とは何か」という根源的問いに対し、 許容される変換 という観点から数値の意味を分類しました。 名義(permutation 不変)、 順序(monotonic 不変)、 間隔(affine 不変)、 比例(multiplicative 不変)という階層は、 群論 (変換群)の言葉で記述できる美しい構造を持ちます。
しかし Stevens の枠組みは万能ではありません。 統計学者 Frederic Lord は 1953 年に有名な反論 "On the Statistical Treatment of Football Numbers" を書き、 「フットボール選手の背番号(純粋に名義尺度)を平均しても、 統計的検定としては妥当な結果が出る」ことを示しました。 つまり、 数値の数学的性質 と 適用する統計手法の妥当性 は別問題だ、という主張です。 この論争は今も完全には決着しておらず、 心理測定学では Item Response Theory (IRT)など、 順序データを潜在的な連続変数として扱う高度なモデルが発展しました。
現代の実務では、 「リッカート尺度の合計点を平均する」のは、 5項目以上の合算なら近似的に正当化される という Norman (2010) の研究結果が広く引用されます(中心極限定理により合計値は近似正規)。 ただし単一項目の 5 段階評価を平均するのは推奨されません。 順序尺度を扱う際の判断基準は「項目数」「サンプル数」「結果の解釈可能性」の 3 つです。
🧪 深掘り:順序データの実務的扱い
① 度数分布と積み上げ棒グラフ
順序尺度の最も正直な可視化は 度数分布表 または 積み上げ棒グラフ (特に Diverging Stacked Bar Chart )です。 たとえば「自治体の施策満足度」を 5 段階で集計した場合、 単に平均 3.7 と書くより、 「とても不満 5%/不満 12%/普通 30%/満足 38%/とても満足 15%」と分布を示すほうが情報量が圧倒的に多い。
② 順序ロジスティック回帰(Proportional Odds Model)
順序尺度を目的変数として回帰したい場合、 通常の線形回帰や多項ロジスティック回帰では情報を失います。 順序ロジスティック回帰 (Ordinal Logistic Regression、 比例オッズモデル)は、 順序情報を保ったまま説明変数の効果を推定できます。 Python では statsmodels の OrderedModel や、 R の MASS::polr() が標準実装です。 SSDSE-B-2026 の都道府県データで「延べ宿泊者数 (G7101)」を 5 階級に切って、 「総人口 (A1101) や標準地価 (C5401)」で説明する練習が定番。
③ ノンパラ検定(Mann-Whitney / Kruskal-Wallis)
2 群比較なら Mann-Whitney U 検定 (Wilcoxon 順位和検定)、 3 群以上なら Kruskal-Wallis 検定 。 これらは順位に基づくため、 順序尺度に対して妥当な検定です。 t 検定や ANOVA に比べて検出力は約 95%(正規分布下)と十分高く、 「順序データなら迷わず順位検定」が安全な選択。
④ Spearman vs Kendall:どちらを選ぶ?
2 変数の関連性を順位ベースで測る場合、 Spearman の ρ と Kendall の τ が選択肢です。 Spearman は計算が速く、 直感的(順位を Pearson 相関にかけたもの)。 Kendall は小標本で安定し、 同順位(タイ)の扱いが明示的(τ-b バリアント)。 サンプル数 n < 30 や同順位が多い場合は Kendall、 そうでなければ Spearman が標準。
🧪 深掘り:SSDSE-B-2026 で順序化を体験
SSDSE-B-2026 は都道府県レベル・複数年(2012〜2023年度)の統計データセットで、 もとは比例尺度(総人口、 消費支出、 標準地価 等)ですが、 これを 順序尺度に変換 して扱う場面は実務で頻出します。 たとえば「人口規模 5 階級」「高齢化率 5 階級」のようなビン分割は、 政策評価や地域類型化の常套手段です。
下記コードは、 SSDSE-B-2026 の 2023 年度・47 都道府県の総人口 (A1101) を 5 階級に切り、 これを順序尺度として扱う実例です。 階級ラベル「小規模/中規模/大規模/巨大/超巨大」は順序を持ちますが、 階級境界(100万→200万→400万→800万人)は意図的に対数スケールで設定しているため、 等間隔ではありません — まさに順序尺度の典型例。
📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行)
都道府県 A1101(総人口) A1303(65歳以上人口)
北海道 5,092,000 1,681,000
東京都 14,086,000 3,205,000
沖縄県 1,468,000 350,000
…(全 47 行)
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 import pandas as pd
import numpy as np
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
df = df [ df [ 'SSDSE-B-2026' ] == 2023 ] . copy () # 2023年度の47都道府県
# 総人口 (A1101) を5階級の順序尺度に変換(境界は100万→200万→400万→800万人)
bins = [ 0 , 1_000_000 , 2_000_000 , 4_000_000 , 8_000_000 , np . inf ]
labels = [ '小規模' , '中規模' , '大規模' , '巨大' , '超巨大' ]
df [ '人口階級' ] = pd . cut ( df [ 'A1101' ], bins = bins , labels = labels , ordered = True )
print ( df [ '人口階級' ] . value_counts () . sort_index ()) # 10, 21, 7, 6, 3 県
# 階級と高齢化率(高齢人口 A1303 ÷ 総人口 A1101)の Spearman 順位相関
from scipy.stats import spearmanr
df [ '高齢化率' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100
rho , pv = spearmanr ( df [ '人口階級' ] . cat . codes , df [ '高齢化率' ])
print ( f 'Spearman ρ = { rho : .3f } , p = { pv : .6f } ' ) # ρ = -0.631, p = 0.000002
📤 実行例(実測)
人口階級
小規模 10
中規模 21
大規模 7
巨大 6
超巨大 3
Name: count, dtype: int64
Spearman ρ = -0.631, p = 0.000002
実行結果:人口階級の度数は小規模から順に 10・21・7・6・3 県、 人口階級 × 高齢化率の Spearman ρ = -0.631(p = 0.000002)。 人口階級が大きいほど高齢化率は低くなる傾向(負の相関)が実測できます。 これは 順序尺度同士の相関 の典型例で、 ピアソン相関を使うべきではない場面。 Spearman を選んだ理由は、 「人口階級」が間隔尺度ではなく順序尺度だからです。
追加例:教育達成度を順位化
SSDSE-B-2026 には「大学数 (E6102)」「高等学校生徒数 (E4501)」が含まれます(進学率や所得の列はありません)。 これらを人口あたりに直して 47 都道府県でランク付けし(rank())、 順位そのものを順序尺度として扱う分析が定番。 「標準地価ランクと消費支出ランクの相関」「ランク差の都道府県別差異」など、 ランキング・ベースの議論は順序尺度の世界です。
🧪 深掘り:項目反応理論 (IRT) と順序尺度
教育測定や心理測定では、 順序尺度の集合(テスト問題、 アンケート項目)から 潜在的な連続変数 (学力、 性格特性)を推定する 項目反応理論 (Item Response Theory; IRT)が用いられます。 2 値項目(正解/不正解)には Rasch モデル、 多値順序項目には Partial Credit Model や Graded Response Model が定番。 これらは順序尺度の弱点(等間隔仮定の欠如)を、 潜在変数モデルで解決するアプローチです。
TOEIC や PISA、 教員採用試験の難易度調整は IRT が支えています。 順序尺度を「単なるラベル」ではなく「潜在変数の観測」として扱うパラダイム転換が、 過去 50 年の心理測定学の進展でした。 SSDSE-B-2026 のような社会統計でも、 「複数の順序指標を統合して総合指標を作る」場面で IRT の発想が活きます。
モデル 特徴 適用例
Rasch モデル 2値項目/1パラメータ/能力θと困難度bのみ 教育テスト、 PISA
2PLモデル 識別力aを追加。 項目ごとの判別性を表現 TOEIC、 SAT
Partial Credit 多値順序項目/段階間スコアを推定 論述採点、 部分点
Graded Response リッカート型項目/カテゴリ閾値を推定 アンケート、 性格検査
🧪 深掘り:可視化と報告の実例
順序尺度を 正しく可視化 するには、 5 つの定番パターンを使い分けます:
積み上げ棒グラフ(割合) :項目別の分布比較に最適。 ggplot2 の position="fill"
Diverging stacked bar :中立を中央に置き、 肯定と否定を左右に展開。 リッカートの定番
箱ひげ図 :中央値・IQR を強調。 ただし離散値が少ないと使いにくい
バイオリンプロット :分布の形が見える。 多群比較に強い
ヒートマップ :(項目 × カテゴリ) の度数を色で表現。 大規模アンケートで有効
レポートで報告すべき最低限の情報は「(1) 度数分布または積み上げ棒、 (2) 中央値と IQR、 (3) サンプル数 n、 (4) 欠損/無回答の割合、 (5) 順序尺度であることの明記」。 これらを揃えれば、 査読者やレビュアーから「平均はダメ」と指摘される心配はありません。
逆に NG パターンは「平均だけ報告」「ピアソン相関だけ報告」「ANOVA で群間差検定」「3 段階以下のリッカートを連続扱い」など。 これらは現代の統計教育では明確に「やめなさい」と教えられます。
🧪 深掘り:実務 Q&A 集
Q. 5段階評価の平均が 3.7 と出た。 これをそのまま報告して問題ない?
A. 単一項目なら推奨されません。 中央値と IQR、 度数分布を併記してください。 「合計点」(複数項目の合算)なら 5 項目以上なら近似的に許容(Norman, 2010)。 報告書には「順序尺度を便宜的に間隔として扱った」と注記すれば査読でも通ります。
Q. リッカート 5段階を中央 3 点で「中立」と扱ってよい?
A. はい。 ただし「中立」が「無回答」「不明」と区別できているか、 質問設計の段階で確認すべき。 中央が「どちらでもない」「わからない」など曖昧な場合、 7 段階か 4 段階(強制選択)に変更する手もあります。
Q. 順序尺度を機械学習の特徴量にするとき、 one-hot か label encoding か?
A. 木ベース(XGBoost、 LightGBM)なら label encoding で十分。 線形モデル(ロジスティック回帰、 SVM)なら順序情報を活かすため、 そのまま整数値で投入するか、 順序保存型エンコーディング(target encoding に近い)が有効。 単純な one-hot は順序情報を捨てるので原則 NG。
Q. SSDSE-B-2026 の数値変数を順序尺度に変換する場合、 階級数はいくつが適切?
A. 一般に 4〜7 階級が読みやすい。 階級境界は等度数(quantile)、 等間隔(cut)、 対数間隔のいずれか。 都道府県の人口のように対数正規分布する変数は対数間隔が直感に合います。
Q. 順序尺度の信頼性係数(Cronbach の α)は使える?
A. 厳密にはピアソン相関に基づくので NG。 代わりに ordinal alpha (polychoric correlation を使う変種)や McDonald の ω を推奨。 R の psych パッケージで実装可能。
🧪 深掘り:機械学習における順序尺度
機械学習で順序尺度を扱う場合、 「目的変数として扱う」「特徴量として扱う」の 2 つの観点があります。 それぞれに固有の難しさと解法があります。
① 目的変数としての順序尺度
「顧客満足度 5 段階を予測したい」「がんステージを予測したい」など、 順序ラベルを予測するタスクは 順序回帰 (Ordinal Regression)と呼ばれます。 単純な多クラス分類(softmax)では順序情報を捨ててしまうため、 専用の手法が必要です:
Proportional Odds Model :閾値モデル。 統計学では古典的手法。 statsmodels / R::MASS::polr
Frank & Hall 法 :K-1 個の二値分類問題に分解。 任意の分類器(XGBoost 等)と組み合わせ可能
Ordinal Cross-Entropy :ニューラルネット用の損失関数。 隣接クラスの誤分類ペナルティを近距離は小、 遠距離は大に
CORAL (Cao, Mirjalili, Raschka, 2020):rank-consistent な深層順序回帰。 一致した順序を保証
Earth Mover's Distance Loss :予測分布と真分布の Wasserstein 距離を最小化
② 特徴量としての順序尺度
特徴量側に順序尺度がある場合、 以下の選択肢があります:
Integer encoding :順序を整数として直接投入(線形モデル、 ニューラルネット、 木モデルすべてに有効)
Ordinal encoding :scikit-learn の OrdinalEncoder でカテゴリ順序を指定
One-hot encoding :順序情報を捨てるが、 ノンパラ的な柔軟性を持つ。 木モデルでは差が出にくい
Target encoding :目的変数の平均で置換。 順序とは独立だが情報量が大
Thermometer encoding :順序を 1-hot の累積パターンで表現。 ニューラルネットで有効
経験則:勾配ブースティング系(XGBoost、 LightGBM、 CatBoost)なら integer encoding で十分。 線形モデルなら ordinal encoding + 多項式特徴、 またはダミー変数化(参照カテゴリを指定)。 ニューラルネットなら埋め込み(embedding)層が万能。
🧪 深掘り:SSDSE-B-2026 を使った実践課題
SSDSE-B-2026 は都道府県レベル・複数年の統計データセットで、 47 都道府県の集計や順位化に最適です。 以下、 段階別の課題例:
課題 A:人口階級の作成と分布確認
「総人口 (A1101)」を 5 階級(100万・200万・400万・800万人)で区切り、 2023 年度の 47 都道府県の度数を集計。 階級ラベルは順序尺度として pd.Categorical(..., ordered=True) で定義。 棒グラフで都道府県別の人口階級分布を可視化し、 「都市部に集中する人口」のパターンを観察します。
課題 B:高齢化率の四分位による地域分類
高齢人口 (A1303) ÷ 総人口 (A1101) で高齢化率を計算して Q1〜Q4 の 4 階級に切り、 「若年地域/やや若い/やや高齢/高齢地域」とラベル付け。 各階級の中央値・IQR を算出し、 都道府県地図(matplotlib + GeoJSON)にプロット。 順序尺度として東日本・西日本の地域パターンを比較します。
課題 C:複数指標の順位相関行列
「人口階級」「高齢化率階級」「消費支出 (L3221) 階級」「標準地価 (C5401) 階級」など複数の順序化変数を作り、 Spearman 相関行列を作成。 heatmap で可視化し、 「総人口と標準地価は正の相関(2023年度実測で ρ = 0.667)」「高齢化率と標準地価は強い負の相関(同 ρ = -0.790)」など、 都道府県レベルの構造を抽出します。 scipy.stats.spearmanr ではなく pandas.DataFrame.corr(method='spearman') が便利。
課題 D:順序ロジスティック回帰で施策効果を推定
「人口階級」(5 段階)を目的変数、 「消費支出 (L3221)」「合計特殊出生率 (A4103)」「標準地価 (C5401)」を説明変数として、 statsmodels の OrderedModel で比例オッズモデルを推定。 各説明変数の係数の符号から、 どの指標が人口階級の高さと結びついているかを定量化。
課題 E:Kruskal-Wallis 検定で地域差を検出
8 地方区分(北海道、 東北、 関東、 中部、 近畿、 中国、 四国、 九州・沖縄)の「順位化した延べ宿泊者数 (G7101)」に差があるか、 Kruskal-Wallis 検定で検証。 ANOVA を使うべきでない理由(順位データである、 各地方のサンプル数が小さい、 正規性が怪しい)を考察。
🧪 深掘り:研究論文での順序尺度の扱い
学術論文では、 順序尺度の扱いに以下の慣習があります(査読を通すために必要):
尺度水準を必ず明記 :「The dependent variable is measured on a 5-point Likert scale (ordinal)」のように、 順序尺度であることを method 節で宣言
記述統計は中央値 + IQR、 または度数分布 :「Median = 4, IQR = [3, 5]」「Distribution: 1 (5%), 2 (12%), ...」
群間比較は Mann-Whitney U / Kruskal-Wallis :t 検定や ANOVA を使った場合、 「順序データに対する近似」「リッカートの合計点として」と注記
関連性は Spearman の ρ または Kendall の τ :ピアソンを使った場合、 「便宜的に」と注記
多重比較補正 :複数の検定を行う場合、 Bonferroni or BH 法で補正
効果量(effect size) :Cohen's d ではなく、 順序データ用の Cliff's δ や rank-biserial correlation を報告
欠損データの扱い :「無回答」「該当なし」を中立 3 とみなすかリスト除去するか、 method 節で明示
特に「効果量」は最近の論文では必須項目。 「p < .001」だけでは不十分で、 「Cliff's δ = .35」のような順序データ用の効果量指標を報告するのが標準です。 Cliff's δ は -1 から +1 の値を取り、 群間で順位がどれだけ偏っているかを表します。
🧪 深掘り:境界事例と判断フローチャート
「これは順序尺度か、 それとも間隔尺度か?」と迷う境界事例があります:
事例 判定 理由
5段階リッカート 順序尺度 段階間の心理的距離が等しいとは限らない
7段階リッカート(合計点) 準間隔尺度 5項目以上の合算なら中心極限定理で近似正規(Norman 2010)
摂氏温度 間隔尺度 差は意味あるが、 0℃は便宜的(絶対零点ではない)
絶対温度(ケルビン) 比例尺度 0K が絶対零点(物理的に意味あり)
学年(小1〜中3) 順序尺度 順番はあるが「中2 と中3 の学力差」と「小1 と小2 の学力差」は等しくない
年齢 比例尺度 0歳は意味(絶対零点)、 加減乗除すべて意味あり
年齢階級(20代、 30代…) 順序尺度 階級ラベル間の幅は等しいが、 ラベル自体は順序情報のみ持つ
IQ スコア 準間隔尺度 正規化スコアなので近似的に間隔扱い、 厳密には順序
震度 順序尺度 震度 3 と 4 の物理差と、 6 と 7 の差は桁レベルで違う
マグニチュード 間隔尺度(対数) M5 と M6 でエネルギーは 32 倍、 等比ではなく対数だが「差」には物理的意味
判断フロー :(1) 順序があるか? → NO ⇒ 名義尺度。 (2) 差に意味があるか? → NO ⇒ 順序尺度。 (3) 0 が絶対零点か? → NO ⇒ 間隔尺度、 YES ⇒ 比例尺度。 これを 1 分で判断できるようになれば、 統計手法の選択を 9 割正しくできるようになります。
🧪 深掘り:Cliff's δ と Wilcoxon の数式詳説
順序尺度の効果量として最も推奨されるのが Cliff's δ 。 2 群 X, Y の各要素ペアを比較し、 X > Y の割合から X < Y の割合を引いた値:
$$\delta = \frac{\#(x_i > y_j) - \#(x_i < y_j)}{n_x \cdot n_y}$$
δ は -1(完全に X < Y)から +1(完全に X > Y)の範囲。 |δ| の解釈は、 0.147 で小、 0.33 で中、 0.474 で大(Romano et al. 2006)。 Mann-Whitney U 統計量との関係は U = (n_x · n_y · (1 + δ)) / 2。
Wilcoxon 順位和検定の検定統計量 W は、 群 X の要素の順位の合計:
$$W = \sum_{i=1}^{n_x} R(x_i)$$
ここで $R(x_i)$ は全 $n_x + n_y$ 個の値を 1 つにまとめてソートしたときの $x_i$ の順位。 帰無仮説(2 群が同一分布)の下で W は近似的に正規分布に従い、 平均 $\mu_W = n_x(n_x+n_y+1)/2$、 分散 $\sigma_W^2 = n_x n_y (n_x+n_y+1)/12$。 これで標準化して z 検定を行います。
タイ(同順位)がある場合は、 タイ補正項を分散に加える必要があります。 scipy の scipy.stats.mannwhitneyu(alternative='two-sided', method='asymptotic') は自動で補正してくれます。
🧪 深掘り:Kendall の τ の幾何学的解釈
Kendall の τ は、 2 変数のペア (X_i, Y_i) と (X_j, Y_j) を「協和的(concordant)」「不協和的(discordant)」に分類し、 その比率で計算します:
$$\tau = \frac{C - D}{\binom{n}{2}} = \frac{2(C - D)}{n(n-1)}$$
$C$ は協和ペア数($X_i < X_j$ かつ $Y_i < Y_j$、 または逆)、 $D$ は不協和ペア数(一方が大で他方が小)。 全ペア数は $\binom{n}{2}$。 タイがある場合は分母を補正した τ-b、 τ-c が使われます。
幾何学的には、 τ は「2 つの順位列がどれだけ似ているか」を、 隣接交換(バブルソートに必要な交換回数)で測る指標。 完全一致なら τ = 1、 完全逆順なら τ = -1。 Spearman の ρ よりも「順序ペアの一致」という直感に近い解釈ができます。
小標本(n < 30)では Kendall のほうが Spearman より安定し、 正規近似の精度も高い。 ただし計算量は $O(n^2)$ で、 大規模データには Spearman($O(n \log n)$)のほうが適しています。
🧪 深掘り:教育・行政データでの応用パターン
順序尺度は公的統計・教育評価で頻出します。 代表的なパターン:
パターン 1:自治体の住民満足度調査
全国市区町村で実施される住民満足度調査では、 「医療」「教育」「防災」「子育て」など各分野を 5 段階で評価。 報告書では中央値と度数分布、 時系列推移(前年比)を見るのが定番。 SSDSE-B-2026 には満足度の列は無いため、 この種の分析では内閣府世論調査など別の公的データと組み合わせて都道府県別の中央値マップ化を行うのが実装課題になります。
パターン 2:教育達成度の段階評価
学力テストの「観点別評価(A/B/C)」「ルーブリック評価(4/3/2/1)」「PISA 習熟度レベル(1〜6)」はすべて順序尺度。 SSDSE-B-2026 には学力や所得の列は無いものの、 「人口あたり高等学校生徒数 (E4501÷A1101) のランクと消費支出 (L3221) ランクの Spearman 相関」のような順位ベース分析なら実在列でそのまま実行可能です。
パターン 3:行政の格付け制度
「日本健康会議の都道府県別取り組み度(A〜D)」「環境省の自治体エコ度ランキング」「総務省の財政力指数階級」など、 行政が定める格付けは順序尺度の典型。 これらは年度別に変動するので、 順位変化の追跡(Kendall の τ で前年と今年の順位一致度を測る)が分析の定石です。
パターン 4:医療・公衆衛生の階層化
「がんステージ I-IV」「介護度 1-5」「フレイル度(健常/プレフレイル/フレイル)」など、 医療では順序尺度が日常的に使われます。 治療効果の評価には Wilcoxon 符号付順位検定(対応のある順序データ用)が標準。 SSDSE-B-2026 の実在列から「人口10万人あたり一般病院数 (I510120÷A1101)」を計算して順位化し、 県別アクセス公平性を議論する分析が可能。
パターン 5:マーケティングのカスタマージャーニー
「認知 → 興味 → 検討 → 購買 → 推奨」のような段階モデルは順序尺度。 NPS(Net Promoter Score)は元データが 0-10 の 11 段階で、 これを「批判者/中立/推奨者」の 3 階級に集約します。 この集約自体が「順序情報を粗くする」操作で、 情報損失を伴うので注意が必要です。
🧪 深掘り:R / Python の実装比較
分析手法 Python R
中央値 np.median(x) / pd.Series.median()median(x)
四分位 pd.Series.quantile([.25,.5,.75])quantile(x, c(.25,.5,.75))
Spearman 相関 scipy.stats.spearmanr(x, y)cor(x, y, method="spearman")
Kendall の τ scipy.stats.kendalltau(x, y)cor(x, y, method="kendall")
Mann-Whitney U scipy.stats.mannwhitneyu(x, y)wilcox.test(x, y)
Kruskal-Wallis scipy.stats.kruskal(*groups)kruskal.test(x ~ g)
順序ロジスティック statsmodels.miscmodels.ordinal_model.OrderedModelMASS::polr(y ~ x, data, Hess=TRUE)
Cliff's δ 自作 or scikit-posthocs effsize::cliff.delta(x, y)
IRT モデル py-irt / mirt-pythonmirt::mirt(data, model)
注意点:R では順序尺度を ordered factor として明示的に定義することで、 多くの関数(polr、 glm など)が自動的に対応します。 Python では pd.Categorical(values, ordered=True) で同等の機能を実現。 順序を明示しないと、 アルファベット順や辞書順で並んでしまうので注意。
🧪 深掘り:比例オッズ仮定の検証と限界
順序ロジスティック回帰(比例オッズモデル)の中心的仮定は 比例オッズ仮定 。 すなわち、 「説明変数の効果が、 累積カテゴリの切れ目(カットポイント)によらず一定」という仮定です。 数式で書くと:
$$\log\frac{P(Y \le k)}{P(Y > k)} = \alpha_k + \beta \cdot x \quad (k = 1, 2, \dots, K-1)$$
ここで重要なのは、 説明変数の係数 $\beta$ が $k$ に依存しないこと。 言い換えると「説明変数 $x$ が 1 単位増えたとき、 『1 段階上に上がる確率』と『3 段階上に上がる確率』のオッズ比が同じ」という強い仮定です。
この仮定が満たされないことは実務では頻繁にあります。 たとえば「教育達成度」を予測するとき、 「年齢」の効果は「義務教育修了 → 高校卒業」の閾値と「大学院修了 → 博士」の閾値で異なる可能性が高い。 こうした場合の対処法:
Brant 検定 :比例オッズ仮定を検定。 棄却されたら仮定違反
部分比例オッズモデル :仮定が満たされない変数のみ、 閾値ごとに異なる係数を推定
多項ロジスティック回帰 :順序情報を捨てるが、 制約なしで自由に推定
連続比モデル (continuation ratio model):「段階を 1 つ上に進むか否か」の連続条件付きオッズを推定
隣接カテゴリモデル (adjacent category model):隣り合うカテゴリ間のオッズを個別に推定
SSDSE-B-2026 の都道府県データで「人口階級」を予測する場合、 まず比例オッズ仮定を Brant 検定で確認し、 棄却されたら部分比例オッズに切り替える、というのが現代の標準手順です。
🧪 深掘り:単調変換と尺度の同型性
順序尺度の数学的な定義は「単調変換に対して不変な情報のみ持つ尺度 」と表現できます。 ここで単調変換とは、 任意の狭義単調増加関数 $f: \mathbb{R} \to \mathbb{R}$ による変換 $x \mapsto f(x)$。 たとえば $f(x) = 2x+3$、 $f(x) = e^x$、 $f(x) = \log x$($x > 0$)はすべて単調変換。
順序尺度では「中央値」「四分位」「Spearman 順位相関」「Mann-Whitney U」が単調変換不変 — つまり $x$ で計算した値と $f(x)$ で計算した値が同じ。 これらは順序尺度の許容統計量(permissible statistics)です。
一方、 「平均」「標準偏差」「ピアソン相関」は単調変換不変ではありません。 たとえば $\{1, 2, 4\}$ の平均は $2.33$、 $\log_2$ をかけた $\{0, 1, 2\}$ の平均は $1.0$。 順序は同じだが平均は変わる → 平均は順序尺度の許容統計量ではない、 という結論。
この「不変性」の観点は 測定理論 (Measurement Theory; Krantz et al. 1971-1990)として体系化されています。 各尺度は変換群(transformation group)で特徴付けられ、 名義は対称群(全置換)、 順序は単調増加関数群、 間隔はアフィン群、 比例はスケール群 — という美しい階層構造を成します。
尺度 許容変換 許容統計量
名義 任意の置換 (1-1 onto) 最頻値、 度数、 連関係数 (Cramér's V)
順序 狭義単調増加関数 $f$ 中央値、 四分位、 Spearman ρ、 Kendall τ
間隔 アフィン変換 $ax+b$($a>0$) 平均、 標準偏差、 Pearson r、 線形回帰
比例 スケール変換 $ax$($a>0$) 変動係数、 幾何平均、 対数変換
🧪 深掘り:SSDSE と日本の公的統計における順序データ
SSDSE-B-2026 は数値変数中心ですが、 これを 順序尺度化 する操作は実務で頻出します。 日本の代表的な順序統計データ:
世帯収入階級 (厚生労働省 国民生活基礎調査):100万円未満/100〜200万/…/1000万円以上の 11 階級
住宅・土地統計調査の建築時期 :1950 年以前/51-60/…/2020 年以降 の階級
地震被害ランク (内閣府):軽微/半壊/全壊/全焼 などの順序
高齢者の自立度 (介護保険):自立/要支援 1-2/要介護 1-5 の階層
都道府県の財政力指数階級 (総務省):0.4 未満/0.4-0.6/0.6-0.8/0.8-1.0/1.0 以上
国民生活に関する世論調査の満足度 (内閣府):満足/まあ満足/やや不満/不満 の 4 段階
大学進学率の都道府県順位 :47 段階の順位そのものが順序尺度
気象庁の警報階級 :注意報/警報/特別警報
これらをデータ解析する際、 「平均値で報告」「ピアソン相関で関連を見る」のは厳密には誤り。 「分布で見せる/中央値・四分位で要約/Spearman で関連を測る/Kruskal-Wallis で群間差を検定」のセットを徹底するのが、 公的統計を正しく扱うリテラシーです。
SSDSE-B-2026 では「総人口 (A1101)」「延べ宿泊者数 (G7101)」「標準地価 (C5401)」などの数値を都道府県別ランキングにして順序尺度化する課題が定番。 順位そのものが順序情報を持つので、 順位データの相関分析や差分分析が学習素材として最適です。
🧪 深掘り:30 個のよくある誤用パターン
順序尺度に関する 30 個の典型的な誤用パターン。 該当するものがあれば再検討してください:
単一項目のリッカートを平均値で報告
順序データに t 検定を適用
順序データに ANOVA を適用
順序データにピアソン相関を適用
順序ロジスティックで比例オッズ仮定を未検証
順序データに k-means クラスタリング(ユークリッド距離)
順序データにラベル間距離を意味として解釈
5段階リッカートの「中立3」を欠損と混同
順位データを multi-class softmax で学習
順序尺度を整数で投入、 さらに二乗項を追加(意味不明)
カテゴリの順序を CSV のアルファベット順で決定(ラベル誤配置)
4 段階を「2 段階 + 2 段階」に強引に縮約(情報損失)
順序データの正規性を Shapiro-Wilk で検定(無意味)
順序データに対するブートストラップで平均の CI を計算
NPS の 11 段階を等間隔と仮定して回帰
順序データに対する Cohen's d を効果量として報告
段階間心理距離を等間隔と暗黙に仮定
順序尺度を間隔尺度として PCA に投入
順序尺度に対する確率密度推定(カーネル密度)の誤適用
「とても満足 5 点」を「100 点満点換算で 100 点」と表現
順序尺度の係数解釈で「1 単位増加で…」(単位が定義されない)
順序データの欠損を mean imputation
順序データの外れ値を ±2σ で定義
順序データの線形回帰を実施し残差プロットで仮定確認なし
段階別頻度を全項目で同一バーグラフにし、 順序情報を消す
Cronbach's α でリッカート尺度の信頼性を評価(順序版を使うべき)
順序データの相関を 3D 散布図で可視化(重なって見えない)
順序尺度の予測精度を MSE で評価(隣接段階誤差と遠距離誤差を同視)
SHAP 値解析で順序特徴量を連続変数扱い(解釈が不安定)
業界レポートで「平均満足度 4.2 点」のみ報告(分布なし)
これらすべてを意識すれば、 順序尺度を扱う際の事故は劇的に減らせます。 「迷ったらノンパラ/中央値/順位相関」を覚えておけば 8 割は対応できます。
🧪 深掘り:可視化のチートシート(Python コード集)
順序尺度の可視化に使える Python コードを 5 パターン用意。 すべて SSDSE-B-2026 を想定。
① 度数分布(積み上げ棒グラフ)
📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行)
都道府県 A1101(総人口)
北海道 5,092,000
東京都 14,086,000
沖縄県 1,468,000
…(全 47 行)
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12 import matplotlib.pyplot as plt
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年度の47都道府県
kaikyu = pd . qcut ( df [ 'A1101' ], q = 5 , labels = [ 'Q1' , 'Q2' , 'Q3' , 'Q4' , 'Q5' ]) # 総人口の五分位
counts = kaikyu . value_counts ( normalize = True ) . sort_index ()
ax = counts . plot ( kind = 'bar' , color = 'steelblue' )
ax . set_ylabel ( '割合' )
ax . set_title ( '都道府県の人口階級(総人口 A1101 の五分位)分布' )
plt . tight_layout ()
plt . savefig ( 'plot1.png' , dpi = 120 )
② Diverging stacked bar(リッカート風)
📋 コピー 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 # ── この抜粋で使うデータを用意します ──
# SSDSE-B-2026 に「満足度」「人数」の列は無い。順序尺度の見せ方(ダイバージング
# 積み上げ棒)を示すための<架空の>アンケート集計を、ここで作る。
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
_rng = np . random . default_rng ( 0 )
_cities = [ 'A市' , 'B市' , 'C市' , 'D市' , 'E市' ]
df = pd . DataFrame ([
{ '市区町村' : c , '満足度' : s , '人数' : int ( n )}
for c in _cities
for s , n in zip ([ 1 , 2 , 3 , 4 , 5 ], _rng . integers ( 10 , 60 , size = 5 ))
])
print ( df . head ())
# 5 段階満足度を pivot 表に
pivot = df . groupby ([ '市区町村' , '満足度' ])[ '人数' ] . sum () . unstack () . fillna ( 0 )
pivot = pivot . div ( pivot . sum ( axis = 1 ), axis = 0 ) # 行方向で割合化
# 中立を中央、不満を左、満足を右に
neg = - pivot [[ 1 , 2 ]] . sum ( axis = 1 )
pos = pivot [[ 4 , 5 ]] . sum ( axis = 1 )
neut = pivot [ 3 ]
fig , ax = plt . subplots ( figsize = ( 8 , 6 ))
ax . barh ( pivot . index , neg , color = 'salmon' , label = '不満' )
ax . barh ( pivot . index , neut , left = neg , color = 'lightgray' , label = '中立' )
ax . barh ( pivot . index , pos , left = neg + neut , color = 'steelblue' , label = '満足' )
ax . axvline ( 0 , color = 'black' , linewidth = 0.8 )
ax . legend ()
plt . tight_layout ()
📤 実行例(実測)
市区町村 満足度 人数
0 A市 1 52
1 A市 2 41
2 A市 3 35
3 A市 4 23
4 A市 5 25
③ 箱ひげ図 + ストリッププロット
📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行)
都道府県 A1101(総人口) A1303(65歳以上人口)
北海道 5,092,000 1,681,000
東京都 14,086,000 3,205,000
沖縄県 1,468,000 350,000
…(全 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
26
27
28
29
30
31
32
33
34 # ── この抜粋で使うデータを用意します(SSDSE-B の 47 都道府県・最新年度)──
import pandas as pd
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
df = df [ df [ 'SSDSE-B-2026' ] == df [ 'SSDSE-B-2026' ] . max ()] . copy () # 最新年度の 47 行
df [ '高齢化率' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100
# 「地方」は SSDSE に無い列なので、都道府県名から 8 地方区分を作る
_BLOCKS = {
'北海道' : [ '北海道' ],
'東北' : [ '青森県' , '岩手県' , '宮城県' , '秋田県' , '山形県' , '福島県' ],
'関東' : [ '茨城県' , '栃木県' , '群馬県' , '埼玉県' , '千葉県' , '東京都' , '神奈川県' ],
'中部' : [ '新潟県' , '富山県' , '石川県' , '福井県' , '山梨県' , '長野県' ,
'岐阜県' , '静岡県' , '愛知県' ],
'近畿' : [ '三重県' , '滋賀県' , '京都府' , '大阪府' , '兵庫県' , '奈良県' , '和歌山県' ],
'中国' : [ '鳥取県' , '島根県' , '岡山県' , '広島県' , '山口県' ],
'四国' : [ '徳島県' , '香川県' , '愛媛県' , '高知県' ],
'九州・沖縄' : [ '福岡県' , '佐賀県' , '長崎県' , '熊本県' , '大分県' , '宮崎県' ,
'鹿児島県' , '沖縄県' ],
}
_R = { p : g for g , ps in _BLOCKS . items () for p in ps }
df [ '地方' ] = df [ 'Prefecture' ] . map ( _R )
df [ '人口階級' ] = pd . qcut ( df [ 'A1101' ], q = 5 ,
labels = [ '超小規模' , '小規模' , '中規模' , '大規模' , '超大規模' ])
df [ '人口階級_数値' ] = df [ '人口階級' ] . cat . codes + 1
import seaborn as sns
# 地方(Prefecture 列から作成した8地方区分)別の人口階級(人口階級_数値 = cat.codes + 1)の分布
fig , ax = plt . subplots ( figsize = ( 10 , 6 ))
sns . boxplot ( data = df , x = '地方' , y = '人口階級_数値' , ax = ax , color = 'lightblue' )
sns . stripplot ( data = df , x = '地方' , y = '人口階級_数値' , ax = ax , color = 'black' , alpha = 0.5 , size = 4 )
ax . set_ylabel ( '人口階級(1=超小規模, 5=超大規模)' )
plt . xticks ( rotation = 20 )
plt . tight_layout ()
④ Spearman 相関 heatmap
📋 コピー # 実在列: A1101=総人口, L3221=消費支出, C5401=標準地価, A4103=合計特殊出生率
df [ '高齢化率' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100
numeric_cols = [ 'A1101' , '高齢化率' , 'L3221' , 'C5401' , 'A4103' ]
df_ranked = df [ numeric_cols ] . rank ()
corr = df_ranked . corr ( method = 'spearman' )
fig , ax = plt . subplots ( figsize = ( 7 , 6 ))
sns . heatmap ( corr , annot = True , cmap = 'RdBu_r' , center = 0 , vmin =- 1 , vmax = 1 , ax = ax )
ax . set_title ( '都道府県統計の Spearman 順位相関' )
plt . tight_layout ()
⑤ 順位散布図
📋 コピー fig , ax = plt . subplots ( figsize = ( 8 , 8 ))
df [ '人口_順位' ] = df [ 'A1101' ] . rank () # 総人口
df [ '地価_順位' ] = df [ 'C5401' ] . rank () # 標準地価
ax . scatter ( df [ '人口_順位' ], df [ '地価_順位' ], alpha = 0.7 , s = 80 )
for _ , row in df . iterrows ():
ax . annotate ( row [ 'Prefecture' ], ( row [ '人口_順位' ], row [ '地価_順位' ]), fontsize = 8 )
ax . plot ([ 0 , 47 ], [ 0 , 47 ], 'k--' , alpha = 0.5 ) # 完全一致線
ax . set_xlabel ( '総人口の都道府県順位' )
ax . set_ylabel ( '標準地価の都道府県順位' )
plt . tight_layout ()
これらの可視化は、 順序尺度の特徴(離散・順序情報・等間隔ではない)を最大限活かす設計になっています。 「散布図に点が重なって読めない」「ヒストグラムが階段状で見にくい」といった順序データ特有の問題は、 ジッターや透明度、 横軸を順位化することで解決できます。
🧪 深掘り:教科書・論文・コミュニティのおすすめ
📘 教科書(日本語)
「統計学入門」(東京大学出版会) — Stevens の尺度水準を最初に学ぶ古典
「データ分析の力 因果関係に迫る思考法」(光文社新書) — 順序データの因果推論で具体例豊富
「Rによる多変量解析入門」(オーム社) — 順序ロジスティック回帰の章が手厚い
「心理統計学の基礎」(有斐閣) — リッカート尺度の扱いを心理学の文脈で詳述
📕 教科書(英語)
Agresti, A. Analysis of Ordinal Categorical Data (Wiley, 2010) — 順序データ統計の決定版
Gelman, A. & Hill, J. Data Analysis Using Regression and Multilevel/Hierarchical Models — 順序回帰の Bayes 拡張
Hastie, T. et al. The Elements of Statistical Learning — 機械学習における順序データ
📄 重要論文
Stevens, S.S. (1946) "On the Theory of Scales of Measurement", Science , 103(2684): 677-680. — 尺度水準論の出発点
Lord, F.M. (1953) "On the Statistical Treatment of Football Numbers", American Psychologist , 8: 750-751. — Stevens 批判
Norman, G. (2010) "Likert scales, levels of measurement and the 'laws' of statistics", Advances in Health Sciences Education , 15: 625-632. — 実務指針
McCullagh, P. (1980) "Regression Models for Ordinal Data", JRSSB , 42(2): 109-142. — 比例オッズモデルの原典
Cao, W. et al. (2020) "Rank Consistent Ordinal Regression for Neural Networks with Application to Age Estimation", Pattern Recognition Letters , 140: 325-331. — 深層学習での順序回帰
💻 ライブラリ・ツール
scipy.stats:mannwhitneyu, kruskal, spearmanr, kendalltau, wilcoxon
statsmodels.miscmodels.ordinal_model.OrderedModel:順序ロジスティック
scikit-learn:OrdinalEncoder, KBinsDiscretizer(順序化)
scikit-posthocs:Mann-Whitney 多重比較、 Cliff's δ
mord(Mathieu Blondel):scikit-learn 互換の順序回帰
coral-pytorch:rank-consistent 深層順序回帰
R::MASS::polr, R::ordinal::clm:R の標準実装
R::brms:Bayes ベースの順序回帰(cumulative family)
🧪 深掘り:データドリブン意思決定における順序尺度
EBPM(証拠に基づく政策立案)や DX(デジタル変革)の文脈で、 順序尺度はしばしば「優先度ランキング」「リスクレベル」「成熟度モデル」として現れます。 これらは経営判断や政策決定に直結するため、 正しい扱いが重要です。
① 優先度マトリクス(インパクト × 実現可能性)
プロジェクト管理で頻出する「インパクト:高/中/低」「実現可能性:高/中/低」のマトリクス。 これは 2 つの順序尺度の組合せで、 縦軸と横軸の積を取る誘惑に駆られますが、 「高 × 高 = 9 点、 中 × 中 = 4 点」のような算術は意味を持たない(順序尺度の乗算は未定義)。 正しいアプローチは「マトリクスの 9 つのセルそれぞれに別の優先度(順序ラベル)を割り当てる」こと。
② リスクヒートマップ(5 × 5 マトリクス)
「発生確率 1-5」「影響度 1-5」のマトリクスで 25 セルを色分けするリスク管理手法。 これも順序尺度同士の組合せで、 「確率 × 影響 = リスクスコア」と算術するのは厳密には誤りですが、 実務では「ヒートマップで視覚化」「セル別のラベル定義」で運用されます。
③ DX 成熟度モデル(CMMI 風)
組織の DX 成熟度を「Initial → Managed → Defined → Quantitatively Managed → Optimizing」の 5 段階で評価。 各段階に到達するには前段階の要件を満たす必要があるため、 純粋な順序尺度です。 SSDSE-B-2026 のような自治体データでも、 「自治体 DX 推進度(5 段階)」のような指標が政府から公表されています。
④ KPI のグレード化(A/B/C/D 評価)
企業の業績評価でしばしば使われる A/B/C/D 評価。 これは順序尺度ですが、 ボーナス計算で「A=100%, B=80%, C=60%, D=40%」のような数値化が行われることもあります。 この変換が「妥当な間隔尺度化」か「便宜的なラベル付け」かは、 企業の評価体系の哲学に依存します。
⑤ 投票・選好データ
「1位、 2位、 3位…」のランキング投票(Borda 投票、 IRV 等)は完全な順序尺度。 投票結果の集計には Kendall の τ(候補者間の順位一致度)、 Spearman のフットルール(順位差の絶対値の和)など、 順序データ専用の指標があります。 都道府県のランキング集計や、 マーケティングのブランド選好調査でも同じ手法が使えます。
🧪 深掘り:学習チェックリスト(30 項目)
順序尺度を「使えるレベル」で理解できているか、 30 項目で自己診断してみましょう。
名義/順序/間隔/比例 の 4 尺度を例つきで説明できる
Stevens (1946) の論文タイトルが言える
順序尺度の「許容される変換」を 1 つ挙げられる
順序尺度に対する「許容統計量」を 5 個挙げられる
順序尺度に対する「禁忌統計量」を 3 個挙げられる
5 段階リッカートを「平均値で報告」が望ましくない理由を説明できる
Norman (2010) の主張をワンセンテンスで要約できる
中央値と平均値の違いを順序尺度の文脈で説明できる
四分位範囲(IQR)の計算方法を手で実行できる
Spearman の ρ と Kendall の τ の使い分けを説明できる
Mann-Whitney U 検定の帰無仮説を述べられる
Kruskal-Wallis 検定が「3 群以上の中央値比較」だと言える
Wilcoxon 符号付順位検定が「対応のあるノンパラ」だと知っている
Cliff's δ の解釈基準(小・中・大)を言える
順序ロジスティック回帰の比例オッズ仮定を説明できる
Brant 検定の目的を言える
部分比例オッズモデルの利点を述べられる
連続比モデルと隣接カテゴリモデルの違いを説明できる
項目反応理論(IRT)の基本アイデアを述べられる
Rasch モデルと 2PL モデルの違いを言える
Partial Credit Model が順序データに対応していると知っている
Diverging stacked bar の使い所を説明できる
順序データに対する箱ひげ図の長所と短所を述べられる
SSDSE-B-2026 を順序尺度化する具体例を挙げられる
順序データを ML 特徴量にする 3 つの方法を挙げられる
CORAL(深層順序回帰)のアイデアを 1 行で説明できる
ordinal alpha と Cronbach's α の違いを説明できる
順序尺度を K-means で分析してはいけない理由を言える
順序データの欠損補完で「中央値補完」が定石である理由を述べられる
「順序尺度はノンパラに帰着させる」が原則だと理解している
25 項目以上「説明できる」と感じられれば、 順序尺度に関しては 専門家レベル 。 15-24 項目は「実務で使えるレベル」、 10-14 項目は「教科書を 1 周した後の状態」、 9 項目以下は「もう少し学習を」というあたりです。
🧪 深掘り:実装ワークフロー — SSDSE-B-2026 を順序データとして使い倒す 8 ステップ
SSDSE-B-2026 を題材に「数値変数の順序化 → 記述統計 → 検定 → モデリング → 報告」までの一連の流れを 8 ステップで実装します。
Step 1 — データ読み込み
📥 入力例(SSDSE-B-2026 全体:564 行 × 112 列 = 47 都道府県 × 2012〜2023 年)
年度 地域コード 都道府県 A1101(総人口) A1303(65歳以上人口) A4101(出生数) …
2023 R01000 北海道 5,092,000 1,681,000 24,430 …
2023 R13000 東京都 14,086,000 3,205,000 86,348 …
2023 R47000 沖縄県 1,468,000 350,000 12,549 …
…(残り 112 列は住宅・家計・教育・医療など)
📋 コピー 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 ] . copy () # 2023年度の47都道府県
print ( df . shape , df . columns . tolist ()[: 10 ])
📤 実行例(実測)
(47, 112) ['SSDSE-B-2026', 'Code', 'Prefecture', 'A1101', 'A110101', 'A110102', 'A1102', 'A110201', 'A110202', 'A1301']
Step 2 — 数値変数の順序化(量的 → 順序)
📋 コピー df [ '高齢化率' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100 # 高齢人口 ÷ 総人口
df [ '人口階級' ] = pd . qcut ( df [ 'A1101' ], q = 5 ,
labels = [ '1_超小規模' , '2_小規模' , '3_中規模' , '4_大規模' , '5_超大規模' ])
df [ '高齢化階級' ] = pd . qcut ( df [ '高齢化率' ], q = 4 ,
labels = [ '1_若年' , '2_やや若い' , '3_やや高齢' , '4_高齢' ])
Step 3 — 度数分布の確認
📋 コピー for col in [ '人口階級' , '高齢化階級' ]:
print ( col )
print ( df [ col ] . value_counts () . sort_index ())
print ()
📤 実行例(実測)
人口階級
人口階級
1_超小規模 10
2_小規模 9
3_中規模 9
4_大規模 9
5_超大規模 10
Name: count, dtype: int64
高齢化階級
高齢化階級
1_若年 12
2_やや若い 12
3_やや高齢 11
4_高齢 12
Name: count, dtype: int64
Step 4 — 中央値・四分位の計算
📋 コピー # A1101=総人口, A4103=合計特殊出生率(高齢化率は Step 2 で作成済み)
for col in [ 'A1101' , '高齢化率' , 'A4103' ]:
print ( col , '中央値:' , df [ col ] . median (),
'IQR:' , df [ col ] . quantile ( 0.75 ) - df [ col ] . quantile ( 0.25 ))
📤 実行例(実測)
A1101 中央値: 1549000.0 IQR: 1602500.0
高齢化率 中央値: 31.78391959798995 IQR: 3.9658715728653746
A4103 中央値: 1.3 IQR: 0.17499999999999982
Step 5 — Spearman 順位相関
📋 コピー from scipy.stats import spearmanr
rho , pval = spearmanr ( df [ '人口階級' ] . cat . codes , df [ '高齢化階級' ] . cat . codes )
print ( f '人口階級 ⇔ 高齢化階級: ρ= { rho : .3f } , p= { pval : .4f } ' )
📤 実行例(実測)
人口階級 ⇔ 高齢化階級: ρ=-0.679, p=0.0000
Step 6 — Mann-Whitney U 検定(東日本 vs 西日本)
📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行)
都道府県 A1101(総人口) A1303(65歳以上人口)
北海道 5,092,000 1,681,000
東京都 14,086,000 3,205,000
沖縄県 1,468,000 350,000
…(全 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
26
27
28
29
30
31
32 # ── この抜粋で使うデータを用意します(SSDSE-B の 47 都道府県・最新年度)──
import pandas as pd
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
df = df [ df [ 'SSDSE-B-2026' ] == df [ 'SSDSE-B-2026' ] . max ()] . copy () # 最新年度の 47 行
df [ '高齢化率' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100
# 「地方」は SSDSE に無い列なので、都道府県名から 8 地方区分を作る
_BLOCKS = {
'北海道' : [ '北海道' ],
'東北' : [ '青森県' , '岩手県' , '宮城県' , '秋田県' , '山形県' , '福島県' ],
'関東' : [ '茨城県' , '栃木県' , '群馬県' , '埼玉県' , '千葉県' , '東京都' , '神奈川県' ],
'中部' : [ '新潟県' , '富山県' , '石川県' , '福井県' , '山梨県' , '長野県' ,
'岐阜県' , '静岡県' , '愛知県' ],
'近畿' : [ '三重県' , '滋賀県' , '京都府' , '大阪府' , '兵庫県' , '奈良県' , '和歌山県' ],
'中国' : [ '鳥取県' , '島根県' , '岡山県' , '広島県' , '山口県' ],
'四国' : [ '徳島県' , '香川県' , '愛媛県' , '高知県' ],
'九州・沖縄' : [ '福岡県' , '佐賀県' , '長崎県' , '熊本県' , '大分県' , '宮崎県' ,
'鹿児島県' , '沖縄県' ],
}
_R = { p : g for g , ps in _BLOCKS . items () for p in ps }
df [ '地方' ] = df [ 'Prefecture' ] . map ( _R )
df [ '人口階級' ] = pd . qcut ( df [ 'A1101' ], q = 5 ,
labels = [ '超小規模' , '小規模' , '中規模' , '大規模' , '超大規模' ])
df [ '人口階級_数値' ] = df [ '人口階級' ] . cat . codes + 1
from scipy.stats import mannwhitneyu
# 地方 列は Prefecture 列から8地方区分を対応付けて事前に作成しておく
east = df [ df [ '地方' ] . isin ([ '北海道' , '東北' , '関東' ])][ '人口階級' ] . cat . codes
west = df [ df [ '地方' ] . isin ([ '近畿' , '中国' , '四国' , '九州・沖縄' ])][ '人口階級' ] . cat . codes
stat , p = mannwhitneyu ( east , west , alternative = 'two-sided' )
print ( f 'U= { stat } , p= { p : .4f } ' )
📤 実行例(実測)
U=238.0, p=0.0317
Step 7 — 順序ロジスティック回帰
📋 コピー from statsmodels.miscmodels.ordinal_model import OrderedModel
# L3221=消費支出, A4103=合計特殊出生率, C5401=標準地価
X = df [[ 'L3221' , 'A4103' , 'C5401' ]]
y = df [ '人口階級' ] . cat . codes
model = OrderedModel ( y , X , distr = 'logit' ) . fit ( method = 'bfgs' )
print ( model . summary ())
📤 実行例(実測)
Current function value: 1.155791
Iterations: 39
Function evaluations: 84
Gradient evaluations: 72
OrderedModel Results
==============================================================================
Dep. Variable: y Log-Likelihood: -54.322
Model: OrderedModel AIC: 122.6
Method: Maximum Likelihood BIC: 135.6
Date: Sun, 16 Aug 2026
Time: 18:29:26
No. Observati
…(以下略)
Step 8 — レポート用の集計表とグラフ
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12 import os
os . makedirs ( 'reports' , exist_ok = True ) # 保存先が無いと to_csv は失敗する
summary = df . groupby ( '人口階級' , observed = True ) . agg (
n = ( 'A1101' , 'size' ),
高齢化率中央値 = ( '高齢化率' , 'median' ),
高齢化率IQR = ( '高齢化率' , lambda x : x . quantile ( 0.75 ) - x . quantile ( 0.25 )),
消費支出中央値 = ( 'L3221' , 'median' ), # L3221=消費支出
) . round ( 2 )
print ( summary )
summary . to_csv ( 'reports/ordinal_summary.csv' , encoding = 'utf-8-sig' )
📤 実行例(実測)
n 高齢化率中央値 高齢化率IQR 消費支出中央値
人口階級
超小規模 10 33.76 3.31 281745.0
小規模 9 34.22 1.31 298536.0
中規模 9 32.30 2.53 300973.0
大規模 9 30.62 1.10 307817.0
超大規模 10 27.86 3.30 303608.5
このワークフローを写経して回せば、 順序尺度を実データで扱う実務スキルが身につきます。 SSDSE-B-2026 以外の公的統計(e-Stat の任意 CSV)でも同じパターンで応用可能です。 重要なのは 「数値変数を順序化したら平均ではなく中央値・四分位で記述、 ピアソンではなく Spearman で関連、 t 検定ではなく Mann-Whitney で群間差」 という一貫したルールを守ること。
🧪 深掘り:30 のシーンで使い分けるフローチャート
「目の前のデータが順序尺度のとき、 どの手法を選ぶか」を 30 シーンで整理:
シーン 推奨手法
1 群の代表値を 1 つ表示 中央値
1 群のばらつきを表示 IQR、 度数分布
2 群の中央値を比較 Mann-Whitney U 検定
3 群以上の中央値を比較 Kruskal-Wallis 検定
対応のある 2 群の比較 Wilcoxon 符号付順位検定
2 変数の関連を見る(大規模) Spearman ρ
2 変数の関連を見る(小標本) Kendall τ
2 変数の関連で同順位多 Kendall τ-b
目的変数が順序、 説明変数が連続 順序ロジスティック回帰
比例オッズ仮定が違反 部分比例オッズ、 多項ロジスティック
複数項目から潜在変数を推定 Graded Response IRT
クラスタリングしたい Gower 距離 + 階層クラスタリング
予測モデル(順序ターゲット) XGBoost + ordinal regression head
深層学習で年齢推定 CORAL(Rank-Consistent)
アンケート信頼性評価 ordinal alpha(polychoric base)
効果量を報告 Cliff's δ または rank-biserial
サンプルサイズ計算 G*Power のノンパラ枠
可視化(単一項目) 積み上げ棒(割合)
可視化(複数項目) Diverging stacked bar
可視化(多群比較) バイオリン or ストリップ
欠損補完 中央値補完 or KNN(順序保持)
外れ値検出 IQR × 1.5 ルール
時系列の傾向 Mann-Kendall trend test
二群比較で同順位多発 Brunner-Munzel 検定
非劣性検定(順序) Hodges-Lehmann 推定量 + CI
特徴量重要度(順序) Permutation Importance(spearman)
SHAP 解析 整数 encoding + SHAP(依存性プロット)
交絡調整 層化解析、 順序層別ロジスティック
因果推論 傾向スコア + 順序 outcome 用 IPW
レポートで「平均」が必要 必ず「便宜的」「順序尺度のため」注記
この一覧を「順序尺度の万能チートシート」として手元に置いておけば、 9 割の場面で手法選択に迷わなくなります。
🧪 深掘り:順序尺度の歴史的トピックと現代的展開
順序尺度は 1946 年の Stevens 論文を起点とする 80 年の歴史を持ちますが、 現代に至るまで議論と発展が続いています。
1946 :Stevens の論文発表、 4 つの尺度水準を提案
1953 :Lord の反論(football numbers)、 統計手法と尺度水準の独立性を主張
1971-1990 :Krantz, Luce, Suppes, Tversky による Foundations of Measurement (3 巻)、 測定理論の公理化
1980 :McCullagh の比例オッズモデル論文(JRSSB)、 順序回帰の標準化
1985-現在 :Rasch / IRT モデルの教育・心理測定での普及
2010 :Norman の論文、 リッカート尺度の平均処理を擁護
2020-現在 :CORAL、 Earth Mover's Loss など深層学習における順序回帰の急速な発展
近年 :因果推論との接合、 順序データに対する Doubly Robust 推定、 Sensitivity Analysis
SSDSE-B-2026 のような公的統計データで順序尺度を扱う場面では、 「Stevens の伝統的枠組み」と「Norman 的柔軟性」の両方を理解し、 ケースバイケースで判断するスキルが求められます。 学術論文では Stevens の厳密性、 実務報告では Norman の柔軟性、 が大まかな使い分けの目安です。
🧪 深掘り:実プロジェクトでの判断記録テンプレート
順序尺度を扱う実プロジェクトでは、 以下のテンプレに従って意思決定を記録すると後で再現可能です:
【データ説明】 変数名:[ ]、 段階数:[ ]、 ラベル:[ ]、 出典:[ SSDSE-B-2026 等 ]
【尺度水準の判定】 順序尺度/間隔尺度/その他(理由:[ ])
【記述統計の選択】 中央値・四分位(推奨)/平均(理由:[ ])
【関連性指標】 Spearman ρ/Kendall τ/その他(理由:[ ])
【群間比較手法】 Mann-Whitney/Kruskal-Wallis/Wilcoxon/その他
【回帰モデル】 順序ロジスティック(比例オッズ仮定確認済 [ ✓ / × ])/部分比例オッズ/多項ロジスティック
【効果量】 Cliff's δ = [ ]、 解釈:[ 小/中/大 ]
【欠損処理】 除外/中央値補完/IRT による補完
【可視化】 積み上げ棒/Diverging stacked/箱ひげ/ヒートマップ
【報告で注記すべき事項】 「順序尺度のため、 平均ではなく中央値で報告」「Spearman 相関は順序尺度であるため」など
このテンプレートを Notion や Confluence に貼り付け、 プロジェクト開始時に必ず埋める運用にすれば、 「順序尺度を扱う場面で間違える」リスクを大幅に減らせます。
この用語の全体像を学ぶには、 横断的な教材で文脈を掴むのが効率的です:
🧭 順序尺度の可視化と運用フローの補強
順序尺度は「順位は意味があるが間隔は等しくない」変数であり、 ヒストグラム・箱ひげ図・散布図のいずれを描く時も、 階級の幅・中央値・順位相関のような「順序に依存する指標」だけを使う点が重要である。 ここでは SSDSE-B-2026 の2023年度・47都道府県 (総人口 A1101 × 出生数 A4101) を描いた共有図3枚を素材に、 「人口のしきい値で県を区切る=連続量を順序カテゴリに落とす」操作が図の読み方をどう変えるかを確認し、 3つの実務指針で順序尺度の扱い方を整理する。 すべて 中央値 ・スピアマン相関 ・ケンドール τ など「順位ベース」の手法に寄せて読み解く。
🖼 図1: 総人口 × 出生数の散布図 (scatter_basic.png)
図は SSDSE-B-2026 (2023年度) の総人口 (百万人) × 出生数 (千人) の散布図で、 人口200万人以上の県が赤枠で強調されている。 「200万人以上か否か」という区切りは、 連続量を粗い順序カテゴリに落とす操作そのもの。 順序化した変数を「数値そのもの」として最小二乗回帰にかけるのは禁忌で、 スピアマン相関 か ケンドール τ で関係性を測る。
🖼 図2: 出生数のヒストグラム (hist_basic.png)
図は出生数 (千人) の分布を全47県 (青) と人口200万人以上の県 (赤) で重ねたヒストグラム。 ビン境界をどこに引くかで見え方が大きく変わるのは、 連続量を順序ビンに切る操作に共通する問題。 等度数分位 (quintile) で切ると各ビンの件数が揃い、 中央値 や パーセンタイル と整合する。
🖼 図3: 群別の箱ひげ図 (box_multigroup.png)
図は出生数 (千人) を「全47県/人口200万人以上の選択標本/IPW 重み付き」の3群で比べた箱ひげ図。 群ごとの分布は中央値と箱 (IQR) で読むのが基本で、 順序カテゴリ (Q1〜Q5) 別の比較でも同じ読み方が使える。 群間差は ANOVA ではなく クラスカル・ウォリス検定 で評価するのが標準。
🛠 実務指針 1: 順序を保ったエンコーディング
🛠 実務指針 2: 中心値・分散・比較検定の選択
順序尺度の代表値は 中央値 、 ばらつきは 四分位範囲 (IQR) で示す。 平均 や 標準偏差 は「間隔の等しさ」を前提とするため不可。 2 群比較は t検定 ではなく マン・ホイットニー U検定 、 3 群以上は ANOVA ではなく クラスカル・ウォリス検定 を選ぶ。 相関は ピアソン相関 を避け、 スピアマン ・ケンドール τ で計算する。 SSDSE-B-2026 の人口階級 (Q1〜Q5) × 消費支出 (L3221) のような組合せでは、 順位ベースの ρ・τ とピアソン r が食い違うことがあるため、 順序尺度側は必ず ρ・τ で評価する(例: 2023年度の総人口 × 消費支出は Spearman ρ = 0.404)。
🛠 実務指針 3: 可視化と集計テーブルの作法
順序尺度の集計表は Q1 → Q5 の順に並べ、 各セルに「中央値、 IQR、 サンプル数」を併記する。 棒グラフ は順序を色相 (青→赤) ではなく 段階的明度 (淡→濃) で表現すると、 順序情報が色覚多様性のあるユーザーにも伝わる。 ヒートマップ では行・列とも順序を保ったまま並べ、 並べ替えクラスタリング (階層クラスタリング ) のように「順序を破壊する並び替え」は避ける。 SSDSE-B-2026 の47県を高齢化率 (A1303÷A1101) で Q1〜Q5 に分けた表では、 各 Q が9〜10県ずつに分かれる。 中央値が段階に沿って単調に変化していれば、 順序尺度の「単調性」が保たれた良い例と言える(段階差が等間隔である保証はない点に注意)。
🧪 拡張ケーススタディ: SSDSE-B-2026 高齢化率順序ビンの全数解析
順序尺度の感覚を磨くには、 抽象的な定義を眺めるよりも、 実データを用いて「間隔を仮定しないこと」が結果にどう跳ね返るかを体験するのが近道である。 ここでは SSDSE-B-2026 の2023年度・47都道府県を対象に、 高齢化率 (A1303÷A1101) を五分位 (Q1=最も若年層が多い9〜10県/Q5=最も高齢層が多い9〜10県) に分け、 各 Q が示す経済指標・人口動態指標の特徴を順位ベースで集計する。 高齢化率の値そのものは比例尺度であるが、 五分位ビンに切った瞬間に 順序尺度 に変換され、 演算の方法が一変する。 たとえば Q1 と Q2 の境界値と、 Q4 と Q5 の境界値の差は同じ「1段階」だが、 実際の高齢化率のギャップは段階ごとに異なりうる。 順序尺度の上では「Q1 → Q2 → Q3 → Q4 → Q5」と等間隔に見えても、 実値では非線形である。 この乖離を意識せずに線形回帰や平均値を取ると、 中央値とは大きく異なる「歪んだ代表値」が算出される。
Q ごとの集計では、 若年層の多い Q1 群から高齢層の多い Q5 群へ進むにつれて、 経済・人口指標の 中央値 が単調に変化する傾向が観察されることが多い。 こうした順序ビン間の関連は スピアマン相関 で測り、 ピアソン相関 と食い違う場合がある。 スピアマン相関は順位のみを使うため、 高齢化率が極端な県のような外れ値の影響を受けにくい。 順序尺度の解析では、 こうした「外れ値耐性」が嬉しい特性となる場面が多い(2023年度の実測では高齢化率 × 標準地価 (C5401) の Spearman ρ = -0.790)。
さらに、 順序ビン同士の群間差は クラスカル・ウォリス検定 で評価し、 有意なら事後検定として ダン検定 (Dunn's test) を Bonferroni 補正で実施して全ペアを比較する。 一般に、 順序ビンを5段階に細かく分けすぎると、 隣接ビン同士の差が小さくなって統計的検出力が落ちるという、 順序ビン化の典型的な落とし穴がある。 実務的には Q1 vs Q5 や Q1 vs Q3 vs Q5 の三分位比較に集約する方が、 検出力と解釈性のバランスが取れる。
📊 順序尺度を扱うときの 7 つのチェックリスト
境界値の妥当性確認 : 五分位や三分位の境界が「業務知識上の意味」と一致するかを必ず点検する。 機械的な等度数分割は統計的には均等だが、 業務的には「Q3 の中で2つに割るべき」というケースが頻繁にある。
中央値・IQR の併記 : 順序ビンごとの集計表には、 平均ではなく 中央値 と 四分位範囲 を載せる。 平均値の併記は誤読を招くため避ける。
順位相関の利用 : 2変数の関連は スピアマン相関 か ケンドール τ で測る。 ピアソン相関は順序尺度には不適切。
順位ベース検定の選択 : 群間比較は マン・ホイットニー U検定 (2群)、 クラスカル・ウォリス検定 (3群以上) を選ぶ。 t検定や ANOVA は順序尺度には不可。
monotone constraints の活用 : 順序を保ったまま機械学習に投入するには、 勾配ブースティング (LightGBM/XGBoost) の monotone_constraints パラメータで ±1 を指定する。
可視化の段階的明度 : 棒グラフ・ヒートマップでは順序を 段階的明度 で表現し、 順序情報がカラーマップから読み取れるようにする。 色相環では順序が伝わらない。
サンプル数の併記 : 順序ビンごとのサンプル数を必ず表に併記する。 「Q4 は3県しかない」ような場合、 中央値の信頼性が低いことを読み手に明示できる。
🧠 理解度チェック (練習問題)
Q1. 順序尺度の代表値として最も適切なのは、 平均・中央値・最頻値・分散のうちどれか?
A1. 中央値 。 平均・分散は「間隔の等しさ」を前提とするため不可。 最頻値は順序情報を活かしきれない。
Q2. 順序尺度の2変数間の関連を測る指標として、 ピアソン相関・スピアマン相関・ケンドール τ・コサイン類似度のうちどれが標準か?
A2. スピアマン相関 と ケンドール τ 。 両者は順位ベースで計算するため、 順序尺度の前提と整合する。 ピアソン相関は間隔尺度・比例尺度向け。
Q3. 順序尺度を機械学習モデルに投入する際、 一般的な one-hot encoding を使うとどんな問題が起きるか?
A3. 順序情報が破壊される。 Q1 と Q5 が同じ「カテゴリ間距離」として扱われるため、 「Q1 から Q5 へ進むほど目的変数が増える」という単調性をモデルが学習できなくなる。 ordinal encoding + monotone_constraints を使うのが正解。
Q4. 3群以上の順序ビン間で「中央値が等しいかどうか」を検定したい。 どの検定を使うべきか?
A4. クラスカル・ウォリス検定 。 これは ANOVA のノンパラメトリック版で、 順序尺度の3群以上比較に適している。 有意差があれば、 事後検定として ダン検定 (Bonferroni 補正付き) で群ごとのペア比較を行う。
Q5. 順序ビンを5段階に分けたが、 隣接ビン同士で有意差が出ない。 どうすべきか?
A5. ビンを粗くする (5段階 → 3段階)。 隣接ビン同士の差が小さく検出力が落ちている可能性が高い。 Q1 vs Q3 vs Q5 の三分位比較に切り替えると、 群間差が明確になりやすい。
🌏 ドメイン別の順序尺度の例と注意点
順序尺度は分野ごとに「自然な順序」を持つ変数として現れる。 たとえば医療分野では、 痛みのスケール (NRS: 0〜10) や癌のステージ (I/II/III/IV)、 重症度分類 (軽症/中等症/重症/最重症) などが代表例である。 これらは「数値そのもの」ではなく順位を持つカテゴリとして扱う必要があり、 平均値を取って「ステージ 2.7」と言っても意味をなさない。 中央値で「ステージ III が中央」と表現するか、 最頻値で「ステージ II が最も多い」と表現するのが正しい。 教育分野では、 成績評価 (S/A/B/C/D/F や5段階評定) が典型的な順序尺度で、 偏差値と区別して扱う必要がある。 偏差値は連続量だが、 5段階評定は順序尺度であり、 「A=4点、 B=3点」と数値化して平均を取るのは厳密には誤用である。 ただし実務上は「GPA」のように数値化して平均を取る習慣もあり、 これは順序尺度を擬似的に間隔尺度として扱う妥協的な運用と言える。 マーケティング分野では、 顧客満足度 (とても不満/不満/普通/満足/とても満足) の5段階リッカート尺度が代表例で、 集計時は「満足」以上を取った割合 (Top 2 Box) で表現するか、 中央値で代表させる方法が標準である。
人事・組織分野では、 役職階層 (一般/主任/係長/課長/部長/役員) が順序尺度として現れる。 これも「課長 3 名と係長 5 名で役職を平均」というのは意味をなさず、 中央値で「中央が係長」と表現する。 給与は比例尺度なので別の指標として扱い、 役職と給与の関係は スピアマン相関 で測るのが標準。 ピアソン相関では役職コードの「数字」に依存してしまい、 「役職 4 (課長) が役職 2 (主任) の倍」という解釈になりかねない。 これは順序尺度を間隔尺度として誤用する典型例である。 不動産分野では、 立地ランク (S/A/B/C) や築年数カテゴリ (新築/築浅/築古) が順序尺度。 賃料は比例尺度として別に扱い、 立地ランクと賃料の関係は順位相関で測る。 環境・気象分野では、 雲量階級 (0〜10 oktas) や警報レベル (注意報/警報/特別警報) が順序尺度。 注意報を1点、 警報を2点として平均を取るのは不可で、 警報以上が発令された日数の割合で代表させる方が適切である。
SSDSE-B-2026 のような公的統計でも、 高齢化率 (A1303÷A1101) を五分位に切ったり、 総人口 (A1101) を三分位に切ったりすると、 比例尺度を順序尺度に変換できる。 この変換は「外れ値の影響を抑えたい」「線形性が成り立たない関係を頑健に評価したい」「サブグループ比較したい」といった目的で多用される。 ただし、 ビン化することで情報量が失われるため、 連続量のまま扱える場面ではビン化しない方が情報量を保てる。 ビン化は「順序尺度に変換することで得られる頑健性」と「失われる情報量」のトレードオフを意識して使う技術である。 たとえば、 SSDSE-B-2026 の高齢化率 (連続量、 A1303÷A1101) を Q1〜Q5 にビン化すると、 47県の高齢化率の細かい差異 (例: Q3 内部での違い) は集計時に潰されるが、 全体の傾向 (高齢化率が高いほど標準地価が低い: 2023年度実測で Spearman ρ = -0.790) は外れ値に頑健に検出できる。
🔢 順序尺度の数値演算: 可能なこと・不可能なこと
順序尺度に対して「やってよい演算」と「やってはいけない演算」を明確に区別することが、 順序尺度を正しく扱う出発点である。 まず 大小比較 (Q1 < Q2 < Q3) は順序尺度の本質であり、 当然許される。 順位付け (rank) も可能で、 同順位 (タイ) があれば平均順位を割り当てる慣習がある。 中央値 、 パーセンタイル 、 四分位 、 最頻値 は順序尺度の代表値として有効で、 サブグループ集計や時系列推移の表現にも使える。 一方、 加算・減算 (Q2 - Q1 と Q5 - Q4 が同じ意味かどうか) は順序尺度では保証されない。 高齢化率を五分位にビン化した場合、 Q1→Q2 の境界差と Q4→Q5 の境界差は一般に等しくないため、 「Q2 - Q1 = Q5 - Q4 = 1段階」と言っても、 実際の高齢化率の差は異なる。 掛け算・割り算 も同様に意味をなさない。 「Q4 は Q2 の2倍」とは言えない。 平均・標準偏差 も避ける。 平均は加算を含むため、 順序尺度では意味が定まらない。 標準偏差はばらつきの指標としては魅力的だが、 平均からの偏差を二乗して足すという演算が順序尺度では正当化できない。 ばらつきは IQR (四分位範囲) で代用する。
🧪 順序ロジスティック回帰 (Ordinal Logistic Regression) の使いどころ
順序尺度を目的変数とする回帰分析を行う場合、 通常の 線形回帰 や ロジスティック回帰 は不適切であり、 順序ロジスティック回帰 (proportional odds model、 比例オッズモデル) を用いる。 これは「目的変数の順序を保持しながら、 説明変数が順位を上げる方向にどれだけ寄与するか」をオッズ比で表現するモデルで、 R の MASS::polr や Python の statsmodels.miscmodels.ordinal_model.OrderedModel で実装できる。 SSDSE-B-2026 の例で言えば、 「人口階級 (Q1〜Q5) を目的変数として、 消費支出 (L3221)・合計特殊出生率 (A4103)・高齢化率 (A1303÷A1101) を説明変数とした順序ロジスティック回帰」を組むと、 「消費支出が1単位増えると、 人口階級が1段階上昇するオッズが何倍になるか」を推定できる。 通常のロジスティック回帰では Q1 vs Q5 のような「両端の二値比較」しかできないが、 順序ロジスティック回帰では「Q1 vs Q2,3,4,5」「Q1,2 vs Q3,4,5」「Q1,2,3 vs Q4,5」「Q1,2,3,4 vs Q5」という4つの累積オッズを同時にモデル化する。 これにより、 中間ビンの情報も活用できる。
順序ロジスティック回帰には 比例オッズ仮定 (proportional odds assumption) という前提があり、 「説明変数の効果が、 どの累積閾値でも一定」という強い仮定を置く。 この仮定が成り立たない場合は、 部分比例オッズモデル (partial proportional odds model) や 多項ロジスティック回帰 に切り替える。 比例オッズ仮定を検定するには、 Brant 検定や尤度比検定を使う。 SSDSE-B-2026 の例では、 まず比例オッズ仮定を Brant 検定で確認し、 棄却されなければ順序ロジスティック回帰を採用してよいと判断する。 ただし、 サンプル数が47県と少ないため、 検出力が弱いことには注意が必要である。 検定で棄却されないことが「仮定が成立する」ことを意味するわけではない点は、 一般的な仮説検定と同じ注意事項である。
⚠️ よくある誤用と対処法
誤用 1: 順序尺度の平均を取る 。 5段階リッカート尺度の平均 (例: 「3.7」) を「やや満足寄り」と読み替える運用は実務でよく見るが、 厳密には平均演算は順序尺度では正当化できない。 対処: 中央値 と Top 2 Box (上位2段階の割合) を併記する。
誤用 2: 順序を破壊するクラスタリング 。 階層クラスタリング や K-means で順序ビンを並べ替えてしまうと、 「Q1 と Q3 が同じクラスタ」のような順序を無視した結果が出る。 対処: 順序ビンの並びは固定し、 クラスタリングは「行 (都道府県)」だけに適用する。 ヒートマップの行は 階層クラスタリング でソートしてよいが、 列 (Q1〜Q5) はソートしない。
誤用 3: 順序尺度をピアソン相関で評価 。 順序尺度 × 連続量の関連をピアソン相関で測ると、 「順序ビンの境界値」に依存して相関係数が変動する。 対処: スピアマン相関 か ケンドール τ を使う。 SSDSE-B-2026 で高齢化率Qと標準地価 (C5401) の関連をピアソン相関とスピアマン相関の両方で測ると、 順位ベースのスピアマンの方が外れ値に頑健で、 両者の値が食い違うことがある(2023年度実測の Spearman ρ = -0.790)。
誤用 4: 順序ビンの数を増やしすぎる 。 10分位、 20分位といった細かいビン化は、 隣接ビン同士の差が小さくなり、 統計的検出力を失う。 対処: 3〜5分位に留めるのが実務上のバランスポイント。 解釈性も保たれる。
誤用 5: 順序尺度を one-hot encoding で機械学習 。 順序情報が破壊され、 単調性をモデルが学習できない。 対処: ordinal encoding + 勾配ブースティング の monotone_constraints パラメータで単調性を強制する。
🧰 Python 実装の参考スニペット (順序尺度向けワークフロー)
順序尺度を実務で扱うときの典型的な Python ワークフローは次の通り。 ライブラリは scipy・pandas・statsmodels・scikit-learn を主に使う。 まず連続量 (高齢化率: df['aging_rate'] = df['A1303'] / df['A1101']) を順序ビンに変換する場合は pd.qcut(df['aging_rate'], q=5, labels=['Q1','Q2','Q3','Q4','Q5']) で五分位ビンを作る。 等度数分割なので各 Q に9〜10県ずつ入る。 次に中央値・IQR を Q ごとに集計するには df.groupby('age_q')['land_price'].agg(['median', lambda x: x.quantile(0.75) - x.quantile(0.25)]) で出力する (land_price は標準地価 C5401)。 スピアマン相関の計算は scipy.stats.spearmanr(df['age_q_int'], df['land_price']) で r 値と p 値が同時に得られる。 ケンドール τ は scipy.stats.kendalltau(df['age_q_int'], df['land_price']) で計算可能。
群間比較のクラスカル・ウォリス検定は scipy.stats.kruskal(*[df[df['age_q']==q]['land_price'] for q in ['Q1','Q2','Q3','Q4','Q5']]) で H 統計量と p 値が得られる。 事後検定のダン検定は scikit_posthocs.posthoc_dunn(df, val_col='land_price', group_col='age_q', p_adjust='bonferroni') で全ペア比較の調整 p 値が得られる。 順序ロジスティック回帰は statsmodels.miscmodels.ordinal_model.OrderedModel(df['age_q_int'], df[['land_price','birth_rate']], distr='logit').fit(method='bfgs') で実装でき、 オッズ比と累積閾値が出力される (birth_rate は合計特殊出生率 A4103)。 機械学習で順序を保ったまま予測モデルを組むには、 LightGBM の monotone_constraints=[1, -1] (land_price に +1、 birth_rate に -1 のように順序方向を指定) のような指定を行う。 この設計は順序尺度の単調性をモデルに学習させる強力な仕掛けである。
可視化では、 matplotlib の boxplot で Q 別の箱ひげ図を描くのが基本。 順序を保ったまま色を段階的明度で表現するには cmap='YlGn' や cmap='Blues' を使う。 seaborn では sns.boxplot(x='age_q', y='land_price', data=df, palette='Blues') でシンプルに実装できる。 順序を保った棒グラフは df.groupby('age_q')['land_price'].median().plot(kind='bar', color=plt.cm.Blues(np.linspace(0.3, 0.9, 5))) のように明度のグラデーションで表現する。 順序ビンの並びを揃えるには、 pd.Categorical(df['age_q'], categories=['Q1','Q2','Q3','Q4','Q5'], ordered=True) で順序カテゴリ型に変換しておくと、 ggplot や seaborn のファセットでも順序が崩れない。
📚 歴史的経緯と Stevens の尺度水準
順序尺度という概念は、 心理学者 S. S. Stevens が1946年に発表した論文 "On the Theory of Scales of Measurement" で体系化された 4つの尺度水準 (名義・順序・間隔・比例) のうち2番目に位置する。 Stevens の分類は、 「どんな数値変換が情報を保つか」という観点から定義されており、 順序尺度は 単調変換 (順位を保つ変換) で情報が保たれる尺度として位置づけられる。 たとえば、 5段階評定を「1,2,3,4,5」とコード化するか「10,20,30,40,50」とコード化するかで結果が変わるべきではなく、 中央値や順位相関は両方のコード化で同じ値になる。 一方、 ピアソン相関は2つのコード化で異なる値になるため、 順序尺度には不適切と判断できる。 この「許される数値変換の集合」によって、 どの統計手法が適切かが自動的に決まる、 という Stevens 流の規範論は、 統計教育の基礎として今も影響力を持つ。
ただし、 Stevens の分類には批判もある。 統計学者 Frederic Lord は1953年に「テストの得点は順序尺度だが、 平均を取って t検定をしても実務上問題ない」と主張し、 これが「Stevens 流厳格論 vs Lord 流実用論」の論争の発端となった。 現代の実務では、 「厳密には順序尺度でも、 サンプル数が十分大きく、 分布が極端に歪んでいない場合は、 平均や t検定を使ってもバイアスは小さい」という妥協的な運用が広がっている。 ただし、 サンプル数が小さい場合や分布が極端に歪んでいる場合は、 Stevens 流の厳格論に従うほうが安全である。 順序ロジスティック回帰や順位ベース検定は、 サンプル数や分布形状に左右されにくい頑健な方法として位置づけられる。
📝 まとめ
順序尺度は 順位 → 中央値 → 順位相関 → 順位ベース検定 という連鎖で扱うのが原則。 図・表・指標の全工程で「間隔の等しさ」を仮定しないことが、 結論の妥当性を保つ鍵となる。 SSDSE-B-2026 のような実データで Q1〜Q5 を作る練習を繰り返すと、 順序尺度に対する違和感のない感覚が身につく。 また、 五分位や三分位といった「順序ビンの粒度設計」も、 検出力・解釈性・業務知識との整合性を踏まえて決めることが重要である。 機械的な等度数分割で済ませず、 業務知識と統計的検出力の両面からビン境界を吟味する習慣を身につけたい。 ドメインによっては伝統的に「順序尺度を間隔尺度として擬似的に扱う」運用 (GPA、 5段階評定の平均など) も存在するが、 厳密には誤用であることを認識した上で使うことが重要である。 順序ロジスティック回帰のような専用モデルを使えば、 順序情報を活かしたまま統計的推論を行える。 Python の scipy・statsmodels・scikit-learn・LightGBM を組み合わせれば、 順序尺度を一貫して扱うワークフローが構築できる。 Stevens の尺度水準を踏まえつつ、 実務的な妥協 (Lord 流) と厳格な順位ベース手法 (Stevens 流) を使い分ける判断力が重要となる。 詳細は カテゴリ変数 、 名義尺度 、 間隔尺度 、 比例尺度 、 尺度水準 を併せて参照。
最後に強調しておきたいのは、 順序尺度の運用は「数値演算を控える」という消極的な制約ではなく、 「順位情報を最大限活かす」という積極的な姿勢で取り組むべきだという点である。 中央値・四分位範囲・スピアマン相関・クラスカル・ウォリス検定・順序ロジスティック回帰といった順位ベースの手法群は、 外れ値耐性・非線形性への頑健性・分布形状への独立性といった多くの利点を持つ。 「順序尺度を間隔尺度に変換できないか」と無理に拡張するよりも、 順位ベースの豊富な手法群を使いこなす方が、 結果的に頑健で信頼できる分析が可能になる。 SSDSE-B-2026 で高齢化率・総人口・標準地価を順位ビン化して実践演習を重ねれば、 順序尺度の扱いに自信が持てるようになる。 順序尺度は「制約のある変数」ではなく「順位という強力な情報を持つ変数」として捉え直すと、 分析の幅が広がる。
本セクションで紹介した3枚の図 (散布図・ヒストグラム・箱ひげ図)、 7つのチェックリスト、 5つの理解度チェック、 順序ロジスティック回帰、 ドメイン別の応用例、 Stevens の尺度水準と Lord 流批判は、 順序尺度を体系的に理解するための実務的基盤となる。 次のステップとしては、 自分の手元のデータ (アンケート結果・成績データ・顧客満足度など) を Q1〜Q5 に分けて、 中央値・スピアマン相関・クラスカル・ウォリス検定を実際に走らせてみることを推奨する。 そこで気づいた点や疑問は、 隣接する 名義尺度 ・間隔尺度 ・比例尺度 の項目を読み返すと、 「順序尺度に特有の制約と利点」がより鮮明に浮かび上がる。 順序尺度の学習は、 統計学全体の尺度水準理解を深める入口でもあり、 ここで身につけた「順位を尊重する分析作法」は、 ノンパラメトリック統計やランクベース機械学習といった応用分野でも同じように役立つ。 順位という情報を侮らず、 順位だからこそ可能になる頑健な統計推論の世界へ、 ぜひ踏み出してほしい。 順序尺度を制するものは、 尺度水準論を制すると言っても過言ではない。 これを起点に、 名義尺度・間隔尺度・比例尺度の関係性も体系的に学んでいくと、 統計分析の見通しが大きく開けるだろう。
📚 関連トピック一覧
「ordinal-scale」と関連する基礎統計・データ分析の主要トピックを横断的に参照できる。 各リンクから対応する用語ページへジャンプして、 体系的な学習を進められる。