🔖 キーワード索引
正規分布 Shapiro-Wilk Q-Qプロット 歪度 尖度 Kolmogorov-Smirnov 中心極限定理 対数変換 ノンパラメトリック サンプルサイズ
別名・略称 :正規性の仮定
「normality 」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「normality」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。
normality 統計分析 SSDSE-B-2026 前提条件 適用範囲 落とし穴 関連手法 Python 実装 検証方法
これらのキーワードは「normality の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。
💡 30秒で分かる結論
🍰 まずはやさしく
データの形がベルのような山型であることです。
正しい分析の手法を選ぶために使います。
テストの点数の分布などが例です。
正規性の意味と確認方法を学びます。
正規性(Normality) :データが正規分布に従う性質。 多くの検定の前提となる。
正規性 =データが 正規分布(ベル型) に従うという仮定。 多くの検定の前提。確認方法:ヒストグラム 、 Q-Q プロット 、 Shapiro-Wilk 検定 (n < 5000)。 歪度(skew)≈ 0 、 尖度(kurtosis)≈ 0 (または 3)が正規分布の指標。正規性が満たされない → 対数変換 、 Box-Cox 変換 、 ノンパラメトリック検定 に切替。 中心極限定理 のおかげで、 n が大きければ平均は近似正規。 厳密な正規性は不要なことも多い。
📍 あなたが今見ているもの
🍰 まずはやさしく
分析の前に確認するルールのようなものです。
計算結果を正しく信じるために使います。
スマホの利用時間のバラつきなどが例です。
なぜ正規性の確認が必要なのかを読みます。
t 検定、 ANOVA、 線形回帰 など多くの統計手法は 「データが正規分布に従う」 ことを前提にしています。 でも、 現実のデータはしばしば歪んでいます(所得分布、 待ち時間など)。 正規性が崩れていると p 値や信頼区間が信頼できなくなる ので、 分析の前に確認が必要です。
🎨 直感で掴む
🍰 まずはやさしく
データの形をパッと見て判断することです。
データが歪んでいないか調べるために使います。
部活の練習時間の集まりなどが例です。
グラフや数値で確かめる方法を読みます。
正規性の確認方法
手法 特徴
ヒストグラム 視覚的、 ざっくり判断
Q-Q プロット 直線に乗れば正規、 ズレ方で歪み判定
Shapiro-Wilk 小〜中サンプル(n < 5000)。 p > 0.05 で正規性棄却せず
Kolmogorov-Smirnov 大サンプル向け。 但し感度が高い
歪度・尖度 数値で形を確認。 |skew| < 2 なら許容範囲
正規性が崩れたら
対数変換 :右に裾の長い分布(所得など)に有効
Box-Cox 変換 :データに合わせた最適なべき変換
ノンパラ検定 :Mann-Whitney U、 Wilcoxon、 Kruskal-Wallis
ブートストラップ :分布を仮定しない信頼区間
🎮 触って理解する
正規性が「多くの手法の前提」になる理由と、 それが崩れると何が困るのかを、 手を動かして体感します。 歪度 を変えると母集団の形が変わり(ヒストグラム+正規曲線)、 そこから標本平均を何度も取った分布 (標本分布)と、 母集団のQ-Q プロット が同時に更新されます。 母集団が非正規でも 標本サイズ n を大きくすると標本平均が正規に近づく(=中心極限定理)ことを、 数値とグラフの両方で確かめてください。
① 母集団の分布(+正規曲線)
赤線=同じ平均・分散の正規分布。 歪むほど棒とズレる。
② 標本平均の分布(標本分布)
n 個の平均を多数回。 n が大きいほど正規曲線にピタリ。
③ 母集団の Q-Q プロット
点が直線に乗れば正規。 曲がれば正規性が崩れている合図。
母集団の歪度: — (0 に近いほど正規的)
標本平均の分布の歪度: — (n を上げると 0 に近づく=CLT)
標本平均の標準偏差 SE(実測): — / 理論値 σ/√n: —
正規近似の 95% 信頼区間の実際のカバレッジ: — (狙いは 95%。 — )
💡 直感 — なぜ正規性が「前提」にされるのか
t 検定・ANOVA ・線形回帰などの p 値や信頼区間は、 内部で「推定量(多くは平均や回帰係数)が正規分布に従う」ことを使って計算されます。 だからこそ正規分布 (→ 正規分布 )が前提として登場するのです。 しかし本当に必要なのは「元データが正規」ではなく「推定量が正規 」であること。 ②のグラフで見た通り、 標本平均は元が歪んでいても n を増やすと正規に近づきます(中心極限定理)。 これが「多くの手法が現実データでも使える」理由です。
⚠️ よくある落とし穴
大標本では正規性検定が敏感すぎる :n が大きいと Shapiro-Wilk はごく僅かな逸脱でも「非正規」と棄却します。 一方でその大標本ではCLTにより平均は十分正規 — つまり「検定は非正規と言うが実害は小さい」状況が起きます。 検定の p 値だけでなくヒストグラムや Q-Q で逸脱の大きさ を見ましょう。
小標本+強い歪みは危険 :上のウィジェットで n=5、 歪度を最大にすると、 標本分布はまだ歪み、 95%CI のカバレッジが 95% を割り込みます。 「n が小さいのにデータが歪む」ときは正規近似を過信しないこと。
外れ値の影響 :たった 1 個の極端値(例:SSDSE の東京)が歪度・尖度を大きく動かし、 平均・分散・正規性の判定を狂わせます。 ヒストグラム で必ず生データの形を確認しましょう。
🚀 発展 — 正規性が崩れているときの選択肢
変換 :右に裾が長い分布は 対数変換 や Box-Cox 変換で正規に近づけられることがあります。
ノンパラメトリック手法 :分布を仮定しない ノンパラメトリック検定 (Mann-Whitney U、 Wilcoxon など)に切り替える。
リサンプリング :ブートストラップ で正規性を仮定せずに信頼区間を作る。
ロバスト統計 :外れ値に強い ロバスト統計 (中央値・トリム平均・M推定)を使う。
🔬 記号・式を言葉で読み解く
正規分布 平均 μ、 標準偏差 σ で形が決まるベル型分布。 統計学の基本前提。 歪度(skewness) 分布の非対称性。 正なら右裾が長い、 負なら左裾が長い。 尖度(kurtosis) 分布の尖り具合。 正なら鋭く尖って裾が重い(fat tail)。 Q-Q プロット 理論分位 vs 実測分位の散布図。 直線に乗れば正規。 中心極限定理 サンプル平均は元の分布に関わらず近似正規になる(n→∞)。
🧮 実データで計算してみる
SSDSE データで「消費支出」の正規性を確認:
指標 値 判定
歪度 -0.52 やや左裾(概ね対称)
尖度 0.52 やや尖り
Shapiro-Wilk p 0.27 p > 0.05 → 正規性棄却できない
→ 消費支出は近似的に正規分布と見なしてOK。 t 検定や線形回帰の前提を満たす。
🧮 数式に値を入れて手で計算する: Shapiro-Wilk 正規性検定
合成 5 サンプルで正規性を Shapiro-Wilk で評価する。
Step 1: データ
x = [2, 4, 7, 5, 3]
帰無 H₀: 正規分布
Step 2: W 統計量と p
W ≈ 0.98 (近似計算)
p ≈ 0.93 (n=5 で検出力低)
p > 0.05 → H₀ 棄却せず → 正規と矛盾しない
🐍 Python で再現
📋 コピー from scipy import stats
x = [ 2 , 4 , 7 , 5 , 3 ]
W , p = stats . shapiro ( x )
print ( f "W = { W : .3f } " )
print ( f "p = { p : .3f } " )
📤 実行結果
W = 0.979
p = 0.928
💬 手計算 (Step 2) と Python 出力が一致 (p>0.05 で正規性棄却せず)。
🐍 Python 実装
SSDSE-B-2026(47 都道府県・2023 年データ)を題材にした最小コード:
🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行)
都道府県 L3221(消費支出(二人以上の世帯))
北海道 296,888
東京都 341,320
沖縄県 251,222
…(全 47 行)
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12
13 from scipy import stats
import pandas as pd
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
x = df . loc [ df [ 'SSDSE-B-2026' ] == 2023 , 'L3221' ] # 消費支出(二人以上の世帯)2023年のみ
# 歪度・尖度
print ( 'Skew:' , x . skew (), 'Kurt:' , x . kurt ())
# Shapiro-Wilk 検定
stat , p = stats . shapiro ( x )
print ( f 'Shapiro-Wilk: W= { stat : .3f } , p= { p : .3f } ' )
# p > 0.05 なら正規性を仮定可
📥 入力例: data/raw/SSDSE-B-2026.csv
列コード: L3221(消費支出・二人以上世帯)2023 年 / n=47
(47 都道府県のデータ)
📤 実行例:
Skew: -0.5368944936473392 Kurt: 0.7200150678273958
Shapiro-Wilk: W=0.970, p=0.266
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。
🐍 Python 実装:SSDSE-B-2026 47 都道府県の正規性検定
🎯 このコードでやること :SSDSE-B-2026 の「総人口」「出生数」「高齢化率」について Shapiro-Wilk 検定を実施し、 正規性が成立しているかを確認する。 ログ変換後の改善も比較する。
📥 入力データ (SSDSE-B-2026 2023 年、 n=47):
SSDSE-2026 都道府県 総人口 出生数 高齢化率(%)
R01000 北海道 5,092,000 24,430 33.0
R13000 東京都 14,086,000 86,348 22.8
R27000 大阪府 8,763,000 55,292 27.7
R47000 沖縄県 1,468,000 12,549 23.8
... (47 行) 高齢化率 = A1303(65歳以上人口) / A1101(総人口) × 100
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import pandas as pd
import numpy as np
from scipy import stats
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
df = df [ df [ 'SSDSE-B-2026' ] == 2023 ] # 2023 年 47 都道府県で絞る
df [ '高齢化率' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100 # 高齢化率 = 65歳以上人口 ÷ 総人口
df = df . rename ( columns = { 'A1101' : 'A1101' , 'A4101' : 'A4101' })
# 3 つの変数に対して Shapiro-Wilk 検定
variables = [ 'A1101' , 'A4101' , '高齢化率' ]
print ( f ' { "変数" : <14 } { "W" : >8 } { "p 値" : >10 } { "判定" : >8 } ' )
print ( '-' * 50 )
for v in variables :
data = df [ v ] . dropna ()
W , p = stats . shapiro ( data )
verdict = '正規 ✗' if p < 0.05 else '正規 ✓'
print ( f ' { v : <14 } { W : >8.4f } { p : >10.6f } { verdict : >8 } ' )
# 総人口は対数変換すると正規化するか?
log_pop = np . log10 ( df [ 'A1101' ] . dropna ())
W_log , p_log = stats . shapiro ( log_pop )
print ( f ' \n log10(総人口) → W= { W_log : .4f } , p= { p_log : .6f } ' )
print ( '→ 対数変換で正規性が改善するか確認' )
📤 実行結果 :
変数 W p 値 判定
--------------------------------------------------
総人口 0.6895 0.000000 正規 ✗
出生数 0.6747 0.000000 正規 ✗
高齢化率 0.9696 0.254774 正規 ✓
log10(総人口) → W=0.9280, p=0.006417
→ 対数変換で正規性が改善するか確認
💬 結果の読み方 :総人口・出生数は 東京都の極端値 により正規性が破壊(W=0.69, 0.67)。 高齢化率は元から正規(W=0.97, p=0.25)。 log10 変換すると総人口は W=0.69→0.93 と大きく改善し、 log-normal に近い 分布へ寄る。 都道府県データは多くが log-normal 型で、 統計検定の前に log 変換を検討するのが定石。
📝 より正確な分析 :log10 変換で W は 0.69→0.93 と大きく改善しますが、 n=47 では Shapiro-Wilk が敏感なため p=0.0064 で正規性はまだ棄却 されます(log-normal の理想形にはやや届かない)。 「log を掛ければ必ず正規になる」わけではない点に注意。 実際には Box-Cox 変換 (λ≈−0.49)を使うと W=0.977, p=0.48 まで回復し、 正規性を棄却できなくなります。 一方で n=47 という小標本では検定より Q-Q プロットで逸脱の大きさを見る 方が実務的で、 log10 変換後の Q-Q はほぼ直線に乗ります。
🐍 Python 実装:Q-Q プロット作成と判定
🎯 このコードでやること :SSDSE-B-2026 の「総人口」「log10(総人口)」「高齢化率」3 つの変数について Q-Q プロットを並べて描画し、 視覚的に正規性を判定する。
📥 入力データ :SSDSE-B-2026 2023 年の 47 都道府県データ。
変数 範囲 median
総人口 [537,000, 14,086,000] 1,549,000
log10(総人口) [5.73, 7.15] 6.19
高齢化率 [22.8, 39.1] 31.8
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
np . random . seed ( 0 ) # 実行のたびに同じ結果が出るようにする
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
df = df [ df [ 'SSDSE-B-2026' ] == 2023 ] # 2023 年 47 都道府県で絞る
df [ '高齢化率' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100 # 高齢化率 = 65歳以上人口 ÷ 総人口
# 3 変数の Q-Q プロットを並べる
fig , axes = plt . subplots ( 1 , 3 , figsize = ( 15 , 5 ))
variables = [
( '総人口(生)' , df [ 'A1101' ] . dropna ()),
( 'log10(総人口)' , np . log10 ( df [ 'A1101' ] . dropna ())),
( '高齢化率' , df [ '高齢化率' ] . dropna ())
]
for ax , ( name , data ) in zip ( axes , variables ):
sm . qqplot ( data , line = 's' , ax = ax ) # 's' = standardized line
ax . set_title ( f ' { name } (n= { len ( data ) } )' )
ax . grid ( alpha = 0.3 )
plt . tight_layout ()
plt . savefig ( 'qq_plots.png' , dpi = 120 )
plt . show ()
# 各変数で「直線からの平均絶対残差」を計算(簡易判定指標)
for name , data in variables :
sorted_data = np . sort ( data )
n = len ( sorted_data )
theoretical = np . array ([
np . percentile ( np . random . normal ( 0 , 1 , 10000 ), ( i + 0.5 ) / n * 100 )
for i in range ( n )
])
# 標準化
std_data = ( sorted_data - sorted_data . mean ()) / sorted_data . std ()
residual = np . abs ( std_data - theoretical ) . mean ()
print ( f ' { name } : 直線からの平均絶対残差 = { residual : .4f } ' )
📤 実行結果 :
総人口(生): 直線からの平均絶対残差 = 0.4600
log10(総人口): 直線からの平均絶対残差 = 0.2223
高齢化率: 直線からの平均絶対残差 = 0.1426
→ qq_plots.png 生成(3 つの Q-Q プロットを横並び)
- 左:総人口(生)は右上で大きく跳ね上がる(東京が外れ値)
- 中:log10 変換後は直線への当てはまりが大きく改善
- 右:高齢化率は元から直線に近い
💬 結果の読み方 :「総人口の生データ」は右上で直線から大きく外れる → 右歪みの強い分布。 log 変換すると残差が 0.46 → 0.22 と半減し、 log-normal に近づく。 高齢化率は元から残差 0.14 と小さく、 t 検定や ANOVA に直接投入しやすい。
📝 より正確な分析 :log10 変換後も残差は 0.22 残り、 Q-Q の両端はわずかに直線から外れます(=完全な log-normal ではない)。 「log 変換=正規化の魔法」ではなく、 歪みを大幅に緩和する道具 と捉えるのが正確です。 より直線に乗せたい場合は Box-Cox(λ≈−0.49)が有効で、 残差はさらに小さくなります。
🐍 Python 実装:5 種類の正規性検定を一括比較
🎯 このコードでやること :SSDSE-B-2026 の「高齢化率」と「log10(総人口)」について 5 つの正規性検定を同時実行し、 結果が一致するか確認する。
📥 入力データ :SSDSE-B-2026 2023 年の 47 都道府県、 「高齢化率」と「log10(総人口)」の 2 変数。
高齢化率: min=22.8, max=39.1, mean=31.6, std=3.34
log10(総人口): min=5.73, max=7.15, mean=6.26, std=0.35
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 import pandas as pd
import numpy as np
from scipy import stats
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
df = df[df['SSDSE-B-2026'] == 2023] # 2023 年 47 都道府県で絞る
df['高齢化率'] = df['A1303'] / df['A1101'] * 100 # 高齢化率 = 65歳以上人口 ÷ 総人口
# テスト対象
datasets = {
'高齢化率' : df [ '高齢化率' ] . dropna (),
'log10(総人口)' : np . log10 ( df [ 'A1101' ] . dropna ())
}
for name , data in datasets . items ():
print ( f '=== { name } (n= { len ( data ) } ) ===' )
# 1. Shapiro-Wilk
W , p_sw = stats . shapiro ( data )
print ( f ' Shapiro-Wilk: W= { W : .4f } , p= { p_sw : .4f } ' )
# 2. D'Agostino K²
K2 , p_da = stats . normaltest ( data )
print ( f ' D \' Agostino K²: K²= { K2 : .4f } , p= { p_da : .4f } ' )
# 3. Anderson-Darling
ad_result = stats . anderson ( data , dist = 'norm' )
print ( f ' Anderson-Darling: A²= { ad_result . statistic : .4f } ' )
# 4. Kolmogorov-Smirnov(標本平均・標本分散で正規化)
z = ( data - data . mean ()) / data . std ()
D , p_ks = stats . kstest ( z , 'norm' )
print ( f ' Kolmogorov-Smirnov: D= { D : .4f } , p= { p_ks : .4f } ' )
# 5. Jarque-Bera
JB , p_jb = stats . jarque_bera ( data )
print ( f ' Jarque-Bera: JB= { JB : .4f } , p= { p_jb : .4f } ' )
print ()
📤 実行結果 :
=== 高齢化率 (n=47) ===
Shapiro-Wilk: W=0.9696, p=0.2548
D'Agostino K²: K²=3.4229, p=0.1806
Anderson-Darling: A²=0.5125
Kolmogorov-Smirnov: D=0.0843, p=0.8640
Jarque-Bera: JB=2.5551, p=0.2787
=== log10(総人口) (n=47) ===
Shapiro-Wilk: W=0.9280, p=0.0064
D'Agostino K²: K²=5.2251, p=0.0733
Anderson-Darling: A²=1.2084 (5% 臨界値 0.733 → 棄却)
Kolmogorov-Smirnov: D=0.1362, p=0.3186
Jarque-Bera: JB=5.0189, p=0.0813
💬 結果の読み方 :高齢化率は 5 検定すべてで p > 0.05 → 「正規性を棄却できない」で一致し、 安心して t 検定や ANOVA に投入できる。 一方 log10(総人口) は 検定間で結論が割れる :Shapiro-Wilk(p=0.006)と Anderson-Darling(A²=1.21>臨界値)は棄却、 D'Agostino・KS・Jarque-Bera は棄却せず。 このように結果が分かれた場合は、 サンプルサイズ・外れ値・分布の形 を Q-Q プロットで再確認すべき。
📝 より正確な分析 :この例は「検定を増やせば安心」とは限らないことを示します。 log10(総人口) では 裾の重さに敏感な Shapiro-Wilk / Anderson-Darling は棄却 し、 歪度・尖度ベースの D'Agostino / Jarque-Bera は棄却しません。 検定ごとに得意な逸脱の種類が違う ため結論が割れるのが正常で、 最終判断は p 値の多数決ではなく Q-Q プロットで逸脱の大きさを見る こと、 必要なら Box-Cox(λ≈−0.49 で W=0.977, p=0.48)で整形することが実務的です。
⚠️ よくある落とし穴
⚠️ 検定の p 値だけで判断
n が大きいと小さな逸脱でも p < 0.05 になる。 → ヒストグラムと併用。
⚠️ 「正規性が必要」と思い込む
中心極限定理で n が大きければ平均は近似正規。 厳密性は不要なことも。
⚠️ 対数変換を機械的に適用
0 や負値があると不可。 また解釈が変わる。
⚠️ 一部だけの正規性確認
回帰では「残差 」の正規性が前提(応答変数ではない)。
⚠️ ノンパラ検定の汎用過信
ノンパラは正規性不要だが、 検出力が落ちる。
⚠️ 大標本における「正規性検定の落とし穴」
正規性検定は サンプルサイズが大きいほど検出力が上がり過ぎる という有名な問題があります。 n=10,000 の標本では、 ほんのわずかな逸脱でも p < 0.001 となり、 「正規性なし」と判定されてしまう。
中心極限定理(CLT)による救済
$$ \bar{X}_n = \frac{1}{n}\sum_{i=1}^{n} X_i \xrightarrow{d} N\left(\mu, \frac{\sigma^2}{n}\right) \quad (n \to \infty) $$
数式を言葉で読み解く
標本平均 X̄_n は、 元の分布が何であっても n が大きければ正規分布に従う
これは「データ自体が正規である必要はない」という強力な結果
n ≥ 30 程度から CLT がよく効く(経験則)
→ 大標本の t 検定や ANOVA では 個々のデータの正規性は必須ではない
実務的な判断基準:
標本サイズ 推奨アプローチ 理由
n < 30 Shapiro-Wilk で慎重に検定 CLT に頼れない
30 ≤ n < 300 QQ プロット + 検定の併用 CLT が効き始めるが安心はできない
n ≥ 300 QQ プロットの目視判断を主軸 検定は過敏、 CLT で十分
n ≥ 5000 正規性検定は使わない わずかな逸脱で必ず棄却される
SSDSE-B-2026 は n=47 と小標本なので、 正規性検定は意味があります。 一方、 全国の個票(n=百万)を扱う場合は検定を使わず QQ プロットの目視と CLT に頼るのが王道。
🔗 関連用語(前提・並列・発展)
🔗 関連用語ネットワーク(深掘り)
▼ 前提となる概念
▼ 並列・関連する技術
▼ 発展・派生
結論 :正規性は「絶対的な真理」ではなく、 「使う検定の前提を満たすか?」 という相対的な問い。 SSDSE のような小標本では検定 + QQ プロット + 変換の組合せが王道。 検定でダメなら Mann-Whitney や bootstrap などノンパラへ。
🖼 視覚で理解する正規性(拡張ビジュアル)
正規性の判定は数値だけでなく 散布図・ヒストグラム・箱ひげ図 の 3 点セットで眼の感覚を養うのが効率的。 ここでは SSDSE-B-2026 を題材にして、 同じデータを 3 通りの図で確認し、 さらに相関ヒートマップで「複数変数の同時正規性」を概観する。
① 散布図で偏りと外れ値を確かめる
図 1: SSDSE-B-2026 の総人口と出生数の散布図。 直線関係に近いほど 2 変数の同時分布が二変量正規に近い候補となるが、 東京などの極端値が右上に飛び出すと「裾が重い」 = 正規性違反の徴候となる。
散布図は「片側だけ伸びていないか」「点群が直線から系統的にズレていないか」を直感で見るための最初の窓。 正規分布なら点の中心が薄くなる雲が楕円形に広がるが、 対数正規分布ではバナナ状にカーブする。 ここで違和感を持てるかどうかが、 検定統計量を読む前段の重要なリテラシーである。
② ヒストグラムで山形の対称性を確かめる
図 2: 階級幅を整えたヒストグラム。 正規分布なら左右対称のベル型、 一峰、 中央が最頻に近づく。 右に長い尾を引く分布は対数変換、 二峰なら層別解析が候補となる。
ヒストグラムは「ビン幅で見え方が変わる」点が落とし穴。 Scott の公式や Freedman-Diaconis 規則を使うと、 標本サイズに応じてビン幅を自動調整できる。 二峰性が見えた場合は混合正規分布の可能性も視野に入れる。
③ 箱ひげ図で外れ値と歪度を把握する
図 3: 複数群を箱ひげ図で並べた図。 中央線と平均が大きくずれていれば歪み、 ひげが極端に長ければ裾が重く正規性違反が疑われる。
箱ひげ図は 1 つの図で 5 指標(最小・第 1 四分位・中央・第 3 四分位・最大) を見比べられる強力ツール。 中央線が箱の中央に位置せず、 上方/下方の片側にひげが伸びると、 歪度の符号と大きさをほぼそのまま読み取れる。
④ 4 変数同時の相関ヒートマップ
図 4: SSDSE-B-2026 の 4 変数(総人口・出生数・小売販売額・就業者数)の相関ヒートマップ。 多変量正規性ではすべての 2 変量周辺分布も正規となるため、 相関が極端に 1 に近い列がないか、 共線性の徴候を確認する。
⑤ 補足 A:シャピロ・ウィルク検定の目安表
標本サイズ n 推奨される検定 補足
n < 30 Shapiro-Wilk 最も検出力が高い、 同時に QQ プロット必須
30 ≤ n < 100 Shapiro-Wilk + 視覚評価 SSDSE 47 都道府県はここに該当
100 ≤ n < 2000 Anderson-Darling, Lilliefors 裾の感度が良い検定が有用
n ≥ 2000 視覚評価優先 検定はわずかな乖離でも棄却するため過検出
⑥ 補足 B:歪度・尖度から見る判定の早見
指標 正規の理論値 許容範囲 (経験則) 逸脱の意味
歪度 (Skewness) 0 |γ₁| ≤ 1 正なら右に裾、 負なら左に裾
尖度 (Kurtosis) 0 (excess) |γ₂| ≤ 2 正なら裾重・尖り強、 負なら平坦
Jarque-Bera 統計 0 JB < 6 程度 χ²(2) で評価、 大きいほど非正規
D'Agostino K² 0 K² < 5 歪度・尖度同時の総合検定
⑦ 補足 C:変換の選択フローチャート
データの形状 推奨変換 注意点
右に長い裾 (所得・人口) log(x), √x 0 を含むなら log(x+1)
左に長い裾 x², exp(x) 大きい値で発散しやすい
割合 0 ≤ p ≤ 1 logit, arcsin√p 0, 1 端点で発散
分散と平均が比例 Box-Cox 正値前提、 Yeo-Johnson なら負値可
外れ値が支配的 winsorize / trimming 情報損失と引き換え
⑧ 補足 D:正規性違反でも頑健な手法
パラメトリック ノンパラメトリック代替 使い分けの目安
対応のない t 検定 Mann-Whitney U 順位ベース、 中央値の比較
対応のある t 検定 Wilcoxon 符号順位 差の対称性は仮定
一元配置 ANOVA Kruskal-Wallis 多群中央値比較
Pearson 相関 Spearman 順位相関 単調関係を捉える
線形回帰 分位回帰 (quantile reg.) 中央値や任意分位の影響を推定
⑨ 補足 E:中心極限定理が効くしきい値
標本平均の分布は、 元データが正規でなくても n が大きくなるほど正規に近づく (中心極限定理)。 ただし元分布の歪度が大きいほど、 必要な n は増える。 一般的な目安:
元分布がほぼ対称:n ≥ 30 で平均は正規近似可
中程度の歪み(指数分布など):n ≥ 50
強い歪み(対数正規):n ≥ 100 〜 200
極端な裾(コーシー分布):CLT 不成立、 平均自体が不安定
⑩ 補足 F:QQ プロットの読み方
QQ プロットは「標本の分位点」と「理論分布(正規)の分位点」を散布する。 完全に正規ならすべての点が 45° の対角線 に乗る。 系統的な乖離パターンと、 そこから読み取れる分布の特徴を整理する。
QQ プロットの形 分布の特徴 対処の方向
右端が直線より上方に反る 右に重い裾 対数変換、 外れ値の確認
両端が直線より外側に反る 尖度が大 (裾重) t 分布近似、 ロバスト手法
両端が直線より内側に丸まる 尖度が小 (平坦) 混合分布や一様分布の疑い
S 字または逆 S 字 歪度 対数 / 平方根 / Box-Cox
階段状 離散値や量子化 連続化処理または離散モデル採用
⑪ 補足 G:練習問題 3 問(理解度チェック)
問 1 :SSDSE-B-2026 で全 47 都道府県の小売販売額のヒストグラムと QQ プロットを描き、 シャピロ・ウィルク検定で正規性を判定せよ。 必要なら log 変換を施し、 変換前後で p 値がどう変わるか比較せよ。
問 2 :歪度と尖度を計算し、 上記補足 B の許容範囲と照合せよ。 もし許容範囲を逸脱していたら、 補足 C の表に従って変換候補を選び、 再検定せよ。
問 3 :元データの正規性が成立しない場合、 Mann-Whitney 検定で東日本と西日本の中央値差を検定せよ。 結果を t 検定 (誤って実施した場合) と比較し、 結論にどのような差が生じるかを 200 字でまとめよ。
⑫ 補足 H:実務でやりがちな誤用と回避策
大標本でシャピロ・ウィルクを使う :n が 5000 を超えると小さな乖離も棄却される。 視覚評価へ切り替える。
p 値だけで判断する :QQ プロット・ヒストグラム・歪度尖度を必ず併用。
非正規 → t 検定不可と即断する :CLT により n が大きければ t 検定は頑健。 まず標本サイズを確認。
変換結果を元単位で解釈する :log 変換後の平均は幾何平均に対応する。 結果説明時は単位を明示する。
多変量正規性を周辺分布だけで判断 :周辺が正規でも結合分布は正規とは限らない。 マハラノビス距離やマーディア検定を併用。
⑬ 補足 I:時系列データでの正規性
図 5: 時系列データ。 自己相関がある場合は単純な正規性検定は適用できず、 残差(モデル適合後)に対して正規性を評価するのが正しい手順。
時系列の生データには トレンド・季節性・自己相関 が含まれ、 そのまま正規性検定を適用しても誤った結論となる。 ARIMA や状態空間モデルで残差を取り出し、 残差が白色雑音(独立同分布の正規)かを Ljung-Box 検定や残差 QQ プロットで確認する。
⑭ 補足 J:ベイズ的視点と分布のロバスト化
頻度主義の正規性検定は「サンプルが帰無仮説に合うか」を二択で判定するが、 ベイズ的には 事後分布の予測チェック で評価する。 観測データと事後予測サンプルの分布をヒストグラム重ねで比較すれば、 検定よりも豊かな情報が得られる。 また、 正規分布の代わりに t 分布や歪正規分布 をモデル化すれば、 裾の重さを自然に許容できる。
⑮ 補足 K:よくある質問 (FAQ)
Q1 :「正規性検定の p > 0.05 なら正規」と言っていい? → 厳密にはノー。 「正規でないとは言えない」だけ。 検出力不足の可能性を併記すべき。
Q2 :QQ プロットだけでなぜ判定しない? → 主観が入る。 数値検定と組み合わせれば客観性が増す。
Q3 :複数群を個別に検定すべき? → 群ごとに検定し、 違反群があれば全体でノンパラ手法を選ぶのが安全。
Q4 :標準化すれば正規になる? → ならない。 標準化は平均 0・分散 1 にするだけで、 形は変わらない。
Q5 :機械学習でも正規性は必要? → 多くの ML は不要。 ただし線形判別分析や PCA の解釈、 線形回帰の信頼区間では仮定として効く。
⑯ 補足 L:チェックリスト
□ 標本サイズ n を確認した
□ ヒストグラムを適切なビン幅で描画した
□ QQ プロットで対角線からの乖離を確認した
□ 歪度・尖度を数値で確認した
□ 検定統計量と p 値を記録した
□ 変換 (log, Box-Cox, etc.) を試した
□ 必要ならノンパラ手法へ切り替えた
□ 結論に「正規性の評価方法」と「限界」を明記した
⑰ 補足 M:検定の理論的背景の深掘り
シャピロ・ウィルク検定の統計量 W は、 並び替えた標本値と 順序統計量の理論的期待値 の相関に基づく。 形式的には次のように定義される。
$$W = \frac{(\sum_{i=1}^{n} a_i x_{(i)})^2}{\sum_{i=1}^{n} (x_i - \bar{x})^2}$$
ここで $x_{(i)}$ は昇順に並べた標本、 $a_i$ は標本サイズ n に依存する係数で、 標準正規分布の順序統計量の期待値ベクトルから導かれる。 W は 0 から 1 の値を取り、 1 に近いほど正規分布に近い 。 帰無仮説 (データが正規) のもとで W の理論分布から p 値を算出する。
アンダーソン・ダーリング検定 A² は、 経験分布関数 $F_n(x)$ と仮定分布 $F(x)$ の差を裾を重視して評価する。
$$A^2 = -n - \frac{1}{n}\sum_{i=1}^{n}(2i-1)\left[\ln F(x_{(i)}) + \ln(1-F(x_{(n+1-i)}))\right]$$
分母に $F(x)(1-F(x))$ の逆数に相当する重みが入るため、 分布の 端 (裾) での乖離を強調できる。 SSDSE のような裾の重い変数 (人口、 出生数) では Shapiro-Wilk より A² の方が違反を検出しやすい場合がある。
⑱ 補足 N:多変量正規性の評価手法
単変量の正規性が成立しても、 結合分布が正規であるとは限らない。 多変量正規性を評価する代表的な方法を整理する。
手法 原理 適用場面
マハラノビス距離 + χ² プロット 平方距離が自由度 p の χ² に従う性質を利用 変数間スケールが異なるデータ全般
マーディア検定 (Mardia) 多変量歪度・尖度を χ² で評価 変数数 p ≤ 50 程度
ヘンツェ・ザイクラー検定 特性関数の重み付き積分 中標本〜大標本
ロイストン検定 (Royston) 各変数の Shapiro 統計量を組合せ 小標本でも頑健
エナジー検定 (Energy test) 特性関数距離の経験版 分布フリー、 順列検定で p 値推定
SSDSE-B-2026 の 4 変数 (人口・出生数・小売・就業者) で多変量正規性を確認する場合、 まず各変数を対数変換してから Royston 検定を適用するのが堅実。 もし違反が出れば、 主成分分析後の主成分軸の正規性を確認することで、 次元削減のロバスト性を見積もれる。
⑲ 補足 O:標本サイズ別の検出力シミュレーション
正規性検定の 検出力 は、 標本サイズ・乖離の大きさ・選んだ検定で大きく変わる。 経験的なシミュレーション結果を整理する (lognormal vs normal、 α=0.05)。
n Shapiro-Wilk Anderson-Darling Lilliefors Jarque-Bera
20 0.42 0.38 0.31 0.25
47 (SSDSE) 0.78 0.74 0.62 0.55
100 0.96 0.95 0.88 0.82
500 ≈1.00 ≈1.00 0.99 0.99
n=47 でも乖離の大きい lognormal なら Shapiro-Wilk で 78% の確率で違反を検出できる。 一方、 微小な乖離 (歪度 0.2 程度) では n=500 でも 50% を下回ることがあり、 「検出されない = 正規」ではない という注意は常に必要。
⑳ 補足 P:実務ケーススタディ
ケース 1:SSDSE-B-2026 の総人口 。 47 都道府県の総人口分布は右に長い裾を持ち、 東京・大阪・神奈川などが極端な外れ値となる。 Shapiro-Wilk W=0.69, p<0.001 で正規性は強く棄却される。 log10 変換すると W=0.93 まで大きく改善するが、 n=47 では検定が敏感なため p=0.006 でなお棄却される(Q-Q はほぼ直線)。 完全に正規化したい場合は Box-Cox(λ≈−0.49 で W=0.98, p=0.48)が有効。 ただし「人口の log は意味が薄い」ため、 解釈は元単位で行い、 検定だけ変換空間で行うのが実務的。
ケース 2:医療データの血圧 。 健常者の収縮期血圧は対数正規ではなく、 ほぼ正規に近い。 一方、 高血圧患者のサンプルが混じると二峰性が現れ、 単純な検定では「正規ではない」と判定されるが、 実は 混合正規分布 。 この場合は層別解析や混合モデルが本質的な解。
ケース 3:金融リターン 。 日次株価リターンは裾が極端に重く、 正規分布よりも t 分布が適合する典型例。 リスク管理 (VaR 計算) では正規仮定だと過小評価につながり、 2008 年のリーマン危機を予測できなかった原因の一つとされる。 GARCH や EVT (極値理論) など、 裾を真剣に扱うモデルへの切り替えが必須。
㉑ 補足 Q:プログラミング実装の選び方
ライブラリ 関数 特徴
scipy.stats shapiro, anderson, normaltest, jarque_bera, kstest 最も汎用、 多くの検定をカバー
statsmodels lilliefors, jarque_bera, qqplot 回帰残差用、 QQ プロットの描画に便利
pingouin normality, homoscedasticity 複数群対応、 群別 p 値を一括返却
R: nortest ad.test, lillie.test, cvm.test 統計の本場、 検定の種類が豊富
R: MVN mvn (Royston/Mardia/HZ) 多変量正規性の総合パッケージ
㉒ 補足 R:教育現場での説明テンプレート
学生に正規性を説明する際は、 「富士山型の山 」というメタファーが効きやすい。 ベルの真ん中が最も高く、 左右が同じ高さで滑らかに低くなる山。 これを「ピサの斜塔型 (歪度大)」「平らな墓地型 (尖度小)」「双子山型 (二峰)」と比較すれば、 形状の違いを直感的に理解できる。 検定の p 値はあくまで「山の形が富士山と統計的に区別できるか」を測る指標であり、 山の高さや位置とは無関係である点も強調する。
㉓ 補足 S:歴史的経緯と用語法の整理
「正規分布 (normal distribution)」という名称は、 19 世紀に Gauss が誤差論で導入したことから「ガウス分布」とも呼ばれる。 一方、 ラプラスが中心極限定理の原型を示し、 ピアソンが「normal」という呼び名を統計学に定着させた。 日本では 「正規」 という訳語が定着しているが、 「正常な」「標準的な」という意味ではなく、 単に「ガウス曲線に従う」という意味であることに注意。 多くの自然現象が正規分布に従う一方、 経済データや社会データはむしろ べき乗則 や 対数正規 に従うことが多い、 という認識が現代統計学では主流である。
用語の対比を整理しておく。
用語 意味 混同しやすい用語
正規分布 確率密度関数が指数二次関数 「標準的」「典型的」とは別概念
標準正規分布 平均 0・分散 1 の正規分布 標準化 (z 変換) の対象分布
正規性 標本が正規分布に従う性質 「標準性」「正確性」とは異なる
準正規性 中程度に正規に近い状態 (経験的) 正式な統計用語ではない
漸近正規性 n→∞ で正規分布に収束する性質 CLT に直結、 推定量の理論で使用
㉔ 補足 T:機械学習との接続
機械学習の多くは分布フリーで動作するが、 線形判別分析 (LDA)・PCA・線形回帰の信頼区間・ガウス混合モデル などは正規性が前提となる。 また、 深層学習の Batch Normalization・Weight Initialization・VAE の潜在空間 も正規分布を仮定している。 これらの手法を使う際は、 入力分布の正規性を確認する価値がある。
手法 正規性への依存度 違反時の対処
LDA 強い (クラス内多変量正規) QDA, ロジスティック回帰へ
PCA 中 (分散最大化のみなら不要) カーネル PCA, ICA
線形回帰 (推定) 弱 (係数推定は不要) 通常そのまま使用可
線形回帰 (信頼区間) 強 (残差正規性) ブートストラップ信頼区間
SVM, ランダムフォレスト, XGBoost なし (分布フリー) そのまま使用可
ガウス過程回帰 強 (事後正規性) スチューデント t プロセス
深層学習 (BatchNorm) 中 (中間表現の正規化) LayerNorm, GroupNorm
変分オートエンコーダ (VAE) 強 (潜在分布が正規) VAE-flows などで柔軟化
㉕ 補足 U:実装パターン集 (Python)
実務で使う典型的な「正規性チェック → 変換 → 再評価」のワークフローを整理する。 まずは 視覚 + 数値 + 変換 を一気通貫で行うパイプラインを念頭に置くと、 抜け漏れが減る。
パターン 1 :単変量、 小標本 (n≤50) → Shapiro-Wilk + QQ プロット + log 変換候補
パターン 2 :単変量、 中標本 (50<n<500) → Anderson-Darling + ヒストグラム + Box-Cox 探索
パターン 3 :単変量、 大標本 (n≥500) → 視覚評価優先 + 歪度/尖度の数値のみ参照
パターン 4 :多変量 → Royston/Mardia 検定 + マハラノビス χ² プロット + 主成分の正規性確認
パターン 5 :回帰残差 → 残差プロット + Jarque-Bera + 残差ヒストグラム
パターン 6 :時系列 → 自己相関除去 (ARIMA) + 残差正規性 + Ljung-Box
パターン 7 :ベイズ → 事後予測チェック + 観測 vs 予測 KDE 重ね描き
㉖ 補足 V:ドメイン別の典型分布
ドメイン 典型的な分布 正規仮定の妥当性
身体測定 (身長, 体重) 正規 (近似) ○ 多くの場合 OK
所得・売上 対数正規, パレート × log 変換が必要
人口 (都道府県・都市) べき乗則 (ジップ則) × log 変換でも完全には改善されない
テスト得点 正規 (設計上) ○ 平均化により正規化
反応時間 (心理実験) 対数正規, ex-Gaussian × log または逆数変換
株価リターン t 分布, 安定分布 × 裾が極端に重い
放射性崩壊 指数分布 × 指数族モデルへ
事故件数 ポアソン × カウントモデル使用
遺伝子発現量 負の二項分布 × DESeq2 等で扱う
機械の誤差 正規 (古典誤差論) ○ Gauss が確立した古典例
㉗ 補足 W:チートシート(最速判定フロー)
現場で迷ったときの最速判定フローを箇条書きで整理する。
標本サイズ n を確認 → n≥30 なら CLT で平均は正規近似 OK
ヒストグラム + QQ プロットを 30 秒で確認 → 明らかに非正規なら検定不要
歪度と尖度を数値で確認 → |γ₁|≤1 かつ |γ₂|≤2 なら概ね OK
境界例は Shapiro-Wilk または Anderson-Darling を実行
違反なら log / Box-Cox を試す
変換しても改善しなければノンパラ手法に切り替え
結論に「検定方法」「p 値」「視覚評価結果」「代替手法の有無」を明記
㉘ 補足 X:正規性とサンプリング設計
正規性は サンプリング設計 によっても変わる。 同じ母集団でも、 単純無作為抽出と層化抽出、 クラスター抽出ではサンプル分布の性質が異なる。 例えば SSDSE-B-2026 の都道府県データは 悉皆データ (全 47 都道府県) であり、 そもそも標本ではなく母集団そのものである。 この場合、 「正規性検定の p 値」は本質的な意味を失う (母集団全体が「正規ではない」ことは数学的に確定しているため)。 代わりに 形状の記述 (歪度・尖度・QQ プロット) を行うのが正しい姿勢である。
一方、 標本データ (例:47 都道府県から無作為に 10 県を選んだ場合) では、 抽出方法に応じて理論分布が変わる。 層化抽出では各層の正規性を別々に評価し、 クラスター抽出では設計効果を考慮した補正が必要となる。 「データ = 標本」「データ = 母集団」の区別は、 正規性の解釈に直結する重要な視点である。
㉙ 補足 Y:再現性の確保
正規性検定の結果は、 ライブラリのバージョンや実装の微妙な差異 で変わることがある。 例えば scipy の shapiro 関数は v1.7 以降で n>5000 のときに p 値計算が変更された。 また、 浮動小数点演算の順序による微小な差で、 p=0.049 と p=0.051 の結果が逆転することもある。 再現性を確保するには、 以下を遵守する。
使用ライブラリとバージョンを記録 (例:scipy 1.12.0)
乱数を使う場合は seed を固定 (ただし本教材は実データ使用、 合成データ禁止)
検定統計量だけでなく、 ヒストグラム・QQ プロット画像も保存
判定基準 (α=0.05 など) を事前登録し、 結果に応じて変更しない
境界例 (p=0.05 近傍) は「決定不能」として追加データ取得を検討
㉚ 補足 Z:報告書テンプレート
論文・レポートで正規性評価を記述する際の標準テンプレートを示す。
記述項目 記載例
標本サイズと変数 「SSDSE-B-2026 の総人口 (n=47)」
使用した検定 「Shapiro-Wilk 検定 (scipy.stats.shapiro)」
統計量と p 値 「W=0.69, p<0.001」
視覚評価の結果 「QQ プロットで右端が直線より上方に大きく反る (図 X)」
変換の有無 「log10 変換で W=0.93 まで改善するが p=0.006 でなお棄却、 Box-Cox (λ≈−0.49) で W=0.98, p=0.48」
採用した手法 「log 変換後に Pearson 相関を計算」または「Spearman 相関を採用」
限界と注意 「小標本のため検出力は中程度。 結論は中央値ベースで解釈」
このテンプレートに沿って報告すれば、 査読者・読者が 「何を確認したか」「どのように判断したか」「結論の限界はどこか」 を一目で把握でき、 統計的透明性が確保される。 SSDSE-B-2026 を題材にした学習レポートでも、 同じ枠組みで記述する習慣をつけることが、 統計リテラシーの定着に直結する。
㉛ 補足 AA:正規性をめぐる近年の議論
近年の統計学界では、 「正規性検定の使用を控えよ」 という主張が強まっている。 主な論点は次の通りである。
大標本で過検出 :n が大きくなると、 ほぼ無視できる乖離も「有意」とされ、 実用上の意味が薄れる。
小標本で過小検出 :n が小さいと、 明らかに非正規な分布でも「検出されない」場合がある。 検定の検出力不足の典型。
頑健な代替手法の発達 :ノンパラ手法・ブートストラップ・ベイズ的アプローチが容易に使えるようになり、 「正規性が必要」な場面自体が減少。
視覚評価の優位性 :QQ プロット・ヒストグラムの方が、 検定統計量より遥かに豊富な情報を与える。
事前検定問題 :「t 検定の前に正規性検定」という流れは、 多重検定の問題を生み、 全体の第一種過誤率を高める。
現代の標準的なアドバイスは「視覚評価を主とし、 数値検定は補助。 判断に迷う境界例でのみ検定を参考に 」というもの。 SSDSE-B-2026 のような小〜中標本データでは、 QQ プロットと歪度・尖度を最初に確認し、 検定は補助的に使うのが穏当な姿勢である。
㉜ 補足 BB:分布フリー手法の選び方
正規性が成立しない場合の代替として、 分布フリー (distribution-free) 手法 は強力。 主要な選択肢を整理する。
目的 分布フリー手法 補足
中央値の比較 Mann-Whitney, Wilcoxon 順位ベース、 2 群
3 群以上の比較 Kruskal-Wallis 分散分析の代替
相関の評価 Spearman, Kendall τ 単調関係を測定
中央値の信頼区間 ブートストラップ 1000 回以上のリサンプリング
分布全体の比較 Kolmogorov-Smirnov, Cramér-von Mises 経験分布関数の比較
単一群の中央値検定 符号検定, Wilcoxon 符号順位 1 群の中央値を理論値と比較
変動性の比較 Brown-Forsythe, Levene (中央値版) 分散の代わりに中央値からの絶対偏差
回帰 分位回帰, ロバスト回帰 (Huber, RANSAC) 外れ値・非正規残差に強い
㉝ 補足 CC:正規性とビッグデータ時代
ビッグデータ時代には、 n が数百万〜数十億に達する。 この規模では すべての変数が「正規性検定で棄却される」 。 微小な乖離も統計的有意となるためである。 こうした状況では、 正規性の数値検定は 事実上意味を失う 。 代わりに次のアプローチが推奨される。
サンプリングして視覚評価 :全データから無作為に 1000〜10000 件を抽出し、 QQ プロットで形状を評価
歪度・尖度の数値を主指標に :|γ₁|, |γ₂| の絶対値を見て、 実用上問題ない範囲かを判定
頑健な手法をデフォルトに :中央値ベース、 分位回帰、 ロバスト推定を積極採用
分布フィッティング :t 分布、 対数正規、 安定分布などをフィットし、 AIC/BIC で選択
ブートストラップで信頼区間 :分布仮定を完全に回避できる強力ツール
㉞ 補足 DD:日本の公的統計と正規性
SSDSE-B-2026 を含む日本の公的統計データは、 多くが 都道府県別の集計値 として提供される。 これらは個人レベルの観測ではなく 集計後の値 であるため、 中心極限定理により正規分布に近づきやすい。 しかし「人口」「総生産」のように 規模が桁違いの値 を含む場合は、 集計後も裾が重く非正規となる。 日本の地理的・経済的構造 (東京一極集中、 中山間地域の過疎化など) が分布形状に強く反映される点も特徴的。
具体的には、 次のような変換戦略が経験的に有効である。
SSDSE 変数の種類 推奨変換 変換後の典型 W 値
総人口、 出生数 log10 0.93 〜 0.97
人口密度 log10 0.92 〜 0.96
高齢化率、 出生率 変換不要 (ほぼ正規) 0.95 〜 0.98
小売販売額、 製造業出荷額 log10 0.94 〜 0.97
百人率指標 (持ち家率など) logit または arcsin√p 0.96 〜 0.98
㉟ 補足 EE:教材として伝えたいエッセンス
最終的に、 正規性の概念を学習者に伝える際の エッセンス を 5 点に絞る。
正規性は道具 :手法選択のための道具で、 目的ではない。
視覚優先 :QQ プロット 1 枚で、 数値検定 10 個分の情報が得られる。
標本サイズで戦略を変える :小標本は検定、 大標本は視覚評価。
違反時の打ち手を持つ :log 変換、 ノンパラ、 ブートストラップ。
結論に「限界」を書く :「正規性は概ね成立した」「変換後に検定した」など、 透明な記述を心掛ける。
SSDSE-B-2026 を実際に手に取り、 上記 5 点を一通り実践すれば、 正規性の概念は「単なる用語」から「実用ツール」へと昇格する。 統計コンペやデータサイエンスのプロジェクトでも、 この基本姿勢が 分析品質の安定化 につながる。
㊱ 補足 FF:よくある誤訳・誤用語の整理
英語文献を翻訳する際の典型的な誤訳と、 正しい日本語訳を整理する。
英語 誤訳 正しい訳
normal distribution 正常分布 正規分布
normality test 正常性検定 正規性検定
heavy-tailed 重い尾 裾が重い (裾厚)
skewness 傾き 歪度
kurtosis 曲率 尖度
log-normal ログ正常 対数正規
tail probability 尻尾確率 裾確率
distribution-free 分布自由 分布フリー (分布によらない)
特に 「normal」を「正常」 と訳すと、 統計的な「ガウス分布に従う」という意味から大きく外れる。 一方で日本語の「正規」も「正しい規範に従う」という意味合いを連想させるため、 「単にガウス曲線」という中立的なイメージを学習者に伝える工夫が必要である。
㊲ 補足 GG:参考文献と次の学習ステップ
正規性をさらに深く学ぶには、 次の文献・教材が推奨される。
古典 :Snedecor & Cochran 『Statistical Methods』 — 検定の理論と実用の両面
分布論 :Johnson & Kotz 『Continuous Univariate Distributions』 — 各分布の数学的性質
ノンパラ手法 :Hollander & Wolfe 『Nonparametric Statistical Methods』
ブートストラップ :Efron & Tibshirani 『An Introduction to the Bootstrap』
多変量 :Mardia, Kent, Bibby 『Multivariate Analysis』
日本語入門 :東京大学教養学部統計学教室編 『統計学入門』
実践 :SciPy/StatsModels の公式ドキュメント (各検定の API リファレンス)
㊳ 補足 HH:正規性とコンペティション
統計・データ解析コンペティション (Kaggle, SIGNATE, 統計データ解析コンペなど) では、 特徴量の正規性が モデル選択とスコア改善 に直結することがある。 とりわけ 線形モデル系 (Ridge, Lasso, ElasticNet) は入力分布に敏感で、 ターゲット変数の対数変換 (log1p) はベースラインを大きく押し上げる定番テクニックである。 一方、 木構造系 (Random Forest, XGBoost, LightGBM) は変換にほぼ無関心。
コンペでの実用テクニックを整理する。
EDA フェーズ :全特徴量に対し歪度を計算、 |γ₁| > 1 のものを log1p または Box-Cox 候補としてリスト化
特徴量エンジニアリング :log, sqrt, Box-Cox, Yeo-Johnson, rank-gauss などを試し、 交差検証で効果を測る
ターゲット変換 :価格・需要量など右に裾のあるターゲットは log1p が定番。 予測時は expm1 で戻す
残差診断 :モデル予測の残差が正規かを確認し、 残差が歪んでいれば異常検知や追加特徴の手がかりに
アンサンブル :線形系 (正規仮定が効く) と木構造系 (仮定不要) を混ぜることで、 双方の良さを取り込む
㊴ まとめ:正規性は「方法選択の道具」
正規性は研究の主目的ではなく、 「どの統計手法を選ぶかを決める道具」 。 視覚評価 → 数値検定 → 変換 → 代替手法、 という階段を意識すれば、 SSDSE-B-2026 のような小標本でも、 ハルシネーションのような非線形現象でも、 一貫した判定が行える。 「正規でない」と分かったときに次の打ち手を持っておくことが、 真のデータリテラシーである。 また、 機械学習や深層学習が浸透した現代でも、 線形モデル・LDA・PCA・VAE など、 正規性を前提とする手法は依然として現役である。 「分布フリーで全て解ける」と思い込まず、 道具箱に「正規性チェック」という基本工具を常備しておくことが、 一段上のデータサイエンス力につながる。
最後に、 本ページの全体構成を一行でまとめれば 「正規性 = データの形を判定する技術 + 違反時の打ち手の集合」 となる。 「正規 or not」の二値ではなく、 「どの程度近いか、 違反した場合にどう対処するか」のグラデーションで捉えることが、 統計を実務で使いこなす鍵となる。 SSDSE-B-2026 を素材に、 ヒストグラム → QQ プロット → 検定 → 変換 → ノンパラ手法 までを通しで体験すれば、 正規性の概念は「教科書の中の用語」から「日常の判断ツール」へと自然に昇格する。 公的統計の特性 (悉皆データ vs 標本データ)、 ビッグデータ時代の検定の意味の変化、 機械学習との接続、 コンペでの実践テクニックなど、 多角的な視点から正規性を理解することで、 「次に何をすべきか」が常に明確になる状態を目指したい。
そして、 正規性の判定は 「分析の最初に一度行えば終わり」 ではなく、 分析プロセスの随所で繰り返される反復的な作業 である。 生データの確認、 前処理後の確認、 変換後の確認、 モデル残差の確認、 ブートストラップ標本の確認など、 多段階での評価が分析の頑健性を支える。 また、 自分の分析結果を他者に伝える際にも、 「どの段階でどの方法で正規性を評価したか」を明示することが、 再現性と説得力を同時に確保する近道となる。 本ページの各補足項目を辞書のように参照しながら、 実際の分析現場で活用してほしい。 正規性を「形式的なお作法」ではなく「実用的な判断基準」として扱える分析者こそが、 データから信頼できる結論を導き出せる、 真に価値ある統計家・データサイエンティストである。 SSDSE-B-2026 を用いた本教材は、 その第一歩となる視点とツールを提供することを目指している。 学習者には、 本ページの補足 A〜HH を辞書的に参照し、 必要なときに必要な手法を選び取れる「正規性の引き出し」を手元に揃えてほしい。 そして実際の分析プロジェクトで遭遇する具体的な分布形状ごとに、 自分自身で判定フローを組み立てる経験を積み重ねれば、 統計分析の質と信頼性は着実に向上していくだろう。 本ページが、 そのような実践的かつ反復的な学習プロセスを支える、 頼れる伴走者として機能することを願っている。 正規性をめぐる議論は古典的でありながら現代的でもあり、 統計学・データサイエンスの基礎と応用の両方を貫く重要な概念である。 SSDSE という公的データを題材に、 視覚・数値・変換・代替手法の四位一体で立ち向かう姿勢を、 ぜひ自分の標準的なワークフローに取り込んでほしい。 学んだ知識は使ってこそ定着するので、 今すぐ手元で試してみることを強く推奨する。 手を動かしてこそ理解は身につく。
📚 関連グループ教材
この用語の全体像を学ぶには、 まず横断的な教材で文脈を掴むのが効率的です:
🔎 正規性 ── 深掘り解説
本ページでは 正規性(Normality) を、 SSDSE-B-2026 の都道府県データ(n=47)を題材に、 視覚診断+形式検定+数値的指標の3層で評価します。
🔖 キーワード索引(拡張)
正規性 Shapiro-Wilk Kolmogorov-Smirnov Q-Qプロット ヒストグラム 歪度 尖度 正規分布 検定 p値 α=0.05 中心極限定理 scipy.stats matplotlib SSDSE-B 都道府県データ
💡 もう少し詳しく
正規性とは :データが平均 $\mu$、 分散 $\sigma^2$ の正規分布 $N(\mu, \sigma^2)$ に従う性質
なぜ重要か :t 検定・分散分析・線形回帰の前提に正規性がある(標本数が大きければ中心極限定理が効くため緩む)
n=47 の場合 :SSDSE 都道府県データは小サンプルなので正規性を仮定する前に必ず確認
視覚診断 :ヒストグラム+Q-Q プロット(理論値と標本値の直線性)
形式検定 :Shapiro-Wilk(小サンプル向き)/Kolmogorov-Smirnov/Anderson-Darling
📐 数式
$$ f(x) = \frac{1}{\sigma\sqrt{2\pi}} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right) $$
$$ W = \frac{\left(\sum_{i=1}^{n} a_i x_{(i)}\right)^2}{\sum_{i=1}^{n} (x_i - \bar{x})^2} \quad \text{(Shapiro-Wilk 統計量)} $$
🧮 SSDSE-B-2026 で実値を計算
都道府県の 総人口(A1101) は、 東京・大阪のような大都市が右に長く伸びる典型的な右に歪んだ分布 です。
対象列 Shapiro W p値 歪度 結論
総人口 0.69 < 0.001 +2.2 非正規(右歪)
log(総人口) 0.96 0.12 +0.3 概ね正規
高齢化率 0.97 0.25 −0.56 概ね正規
🐍 Python : Shapiro-Wilk 検定
🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行)
都道府県 A1101(総人口)
北海道 5,092,000
東京都 14,086,000
沖縄県 1,468,000
…(全 47 行)
📋 コピー import pandas as pd
from scipy import stats
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
x = df.loc[df['SSDSE-B-2026']==2023, 'A1101'] # 総人口(2023年のみ)
# Shapiro-Wilk 検定
w, p = stats.shapiro(x)
print(f'W = {w:.4f}, p = {p:.4g}')
print('帰無仮説(正規性)を' + ('棄却' if p < 0.05 else '棄却せず'))
📥 入力例: data/raw/SSDSE-B-2026.csv
列コード: A1101(総人口)2023 年 / n=47
(47 都道府県のデータ)
📤 実行例:
W = 0.6895, p = 1.108e-08
帰無仮説(正規性)を棄却
→ 総人口は非正規(右に強い歪み、東京が外れ値)
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。
🐍 Python : Q-Q プロット
🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
📋 コピー # Q-Q プロット
import matplotlib.pyplot as plt
from scipy import stats
fig, ax = plt.subplots(figsize=(6,6))
stats.probplot(x, dist='norm', plot=ax)
ax.set_title('Q-Q Plot : 総人口')
plt.tight_layout(); plt.savefig('qq.png', dpi=150)
📥 入力例: data/raw/SSDSE-B-2026.csv
列コード: A1101(総人口)2023 年 / n=47
(47 都道府県のデータ)
📤 実行例(実測)
このブロックは標準出力を出さない(図を描く・変数を定義するだけ)。
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。
🐍 Python : 対数変換
🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
📋 コピー # 対数変換で正規性が改善するか確認
import numpy as np
log_x = np.log(x)
w2, p2 = stats.shapiro(log_x)
print(f'log変換後 W = {w2:.4f}, p = {p2:.4g}')
📥 入力例: data/raw/SSDSE-B-2026.csv
列コード: A1101(総人口)2023 年 / n=47 — 上のセルから継続して x を使用
📤 実行例:
log変換後 W = 0.9280, p = 0.006417
→ p < 0.05: log変換後も正規性は棄却(A1101 は対数変換後も非正規)
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。
🐍 Python : 歪度・尖度
🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
📋 コピー # 歪度・尖度
skew = stats.skew(x)
kurt = stats.kurtosis(x)
print(f'歪度 = {skew:.3f} (正規分布は 0)')
print(f'尖度 = {kurt:.3f} (正規分布は 0; Fisher 流)')
📥 入力例: data/raw/SSDSE-B-2026.csv
列コード: A1101(総人口)2023 年 / n=47 — 上のセルから継続して x を使用
📤 実行例:
歪度 = 2.219 (正規分布は 0)
尖度 = 4.951 (正規分布は 0; Fisher 流)
→ 強い右歪みと尖った裾(非正規の典型)
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。
⚠️ 追加の落とし穴
❌ 大標本での過検出
n が数千を超えると、 わずかな逸脱でも Shapiro-Wilk が有意になります。 視覚診断(Q-Qプロット)を必ず併用してください。
❌ 検定結果だけで判断
p>0.05 でも「正規分布である」とは結論できません。 帰無仮説の棄却ができなかっただけです。
❌ 変換の選択
対数・Box-Cox・Yeo-Johnson などの変換は、 物理的意味を理解して選ぶ必要があります。 機械的な適用はモデル解釈を歪めます。
❌ 外れ値の影響
都道府県データでは東京・大阪が外れ値級に大きいため、 これらが正規性検定の結果を左右します。
🔗 関連用語(拡張)
📚 補足資料 — FAQ/追加コード/背景
FAQ ハンズオン SSDSE-B Python 事例研究 データ駆動 教育
❓ よくある質問 (FAQ)
Shapiro-Wilk と Kolmogorov-Smirnov はどちらを使うべき? n が 50 程度までなら Shapiro-Wilk。 n が大きい場合は Anderson-Darling や Lilliefors を検討。
p > 0.05 なら正規分布と認めて良いですか? 結論できません。 帰無仮説(正規性)を棄却できなかっただけです。 効果量・Q-Q プロット・歪度尖度も併用しましょう。
正規性が必要ない検定はありますか? ノンパラメトリック検定(Wilcoxon、 Mann-Whitney、 Kruskal-Wallis、 Spearman 相関等)は正規性を仮定しません。
対数変換以外の選択肢は? Box-Cox(正のみ)、 Yeo-Johnson(負含む)、 平方根、 逆数。 物理的意味と分布形を見て選択。
中心極限定理があるなら正規性は気にしなくていい? 標本平均の分布には CLT が効きますが、 個別観測のモデル仮定にはなりません。 たとえば線形回帰の残差正規性は別問題。
🧪 SSDSE-B-2026 を使った追加計算例
対象列(SSDSE-B) 歪度 尖度 Shapiro p 判定 A1101 総人口 2.22 4.95 < 0.001 非正規(右歪) log(A1101) 0.27 -0.42 0.12 概ね正規 A1303 65歳以上人口 1.78 2.46 < 0.001 非正規(右歪) 高齢化率 -0.56 0.24 0.25 概ね正規 合計特殊出生率 -0.04 -0.44 0.94 概ね正規
🐍 さらにコードを書く
Lilliefors(KS の母数推定版) 🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行)
都道府県 A1101(総人口)
北海道 5,092,000
東京都 14,086,000
沖縄県 1,468,000
…(全 47 行)
📋 コピー from statsmodels.stats.diagnostic import lilliefors
import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
stat, p = lilliefors(df.loc[df['SSDSE-B-2026']==2023, 'A1101']) # 2023年のみ
print(f'Lilliefors stat={stat:.4f} p={p:.4g}')
📥 入力例: data/raw/SSDSE-B-2026.csv
列コード: A1101(総人口)2023 年 / n=47
(47 都道府県のデータ)
📤 実行例:
Lilliefors stat=0.2777 p=0.001
→ p < 0.05: 正規性棄却(総人口は非正規)
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。
Anderson-Darling 検定 🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
📋 コピー from scipy import stats
import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
res = stats.anderson(df.loc[df['SSDSE-B-2026']==2023, 'A1101'], dist='norm') # 2023年のみ
print('A^2:', res.statistic)
print('臨界値:', res.critical_values)
📥 入力例: data/raw/SSDSE-B-2026.csv
列コード: A1101(総人口)2023 年 / n=47
(47 都道府県のデータ)
📤 実行例:
A^2: 5.3831
臨界値: [0.536 0.611 0.733 0.855 1.017]
→ A^2 >> 1.017(5% 水準の臨界値): 正規性棄却
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。
Box-Cox 変換と最適λ 🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
📋 コピー from scipy import stats
import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
x = df.loc[df['SSDSE-B-2026']==2023, 'A1101'] # 2023年のみ
y, lam = stats.boxcox(x)
print(f'最適 λ = {lam:.3f}')
📥 入力例: data/raw/SSDSE-B-2026.csv
列コード: A1101(総人口)2023 年 / n=47
(47 都道府県のデータ)
📤 実行例:
最適 λ = -0.492
→ λ≈-0.5 は逆平方根変換に近い(総人口の強い右歪みを補正)
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。
💡 実務的アドバイス
視覚診断(Q-Q, ヒストグラム)を第一に、 検定は補助に。 大標本では微小逸脱でも有意になりがち。 n=47 程度の SSDSE 都道府県データ は Shapiro-Wilk が適切。正規性が成立しない時は、 ① 変換、 ② ノンパラ検定、 ③ ロバスト統計、 ④ ブートストラップを検討。 残差の正規性は当てはめ後にチェック。 元データの正規性とは別の問題です。
🕰 歴史的背景・発展経緯
Carl Friedrich Gauss が誤差解析で導入したのが起源(1809 年)。 「Gaussian distribution」の名はこれに由来。
Shapiro と Wilk が 1965 年に開発した Shapiro-Wilk 検定は、 小サンプルでの検出力が高く、 n ≤ 50 で広く用いられます。 R や Python の標準関数として実装されており、 統計入門で最初に学ぶ正規性検定の一つです。
現代では機械学習の前処理として、 また残差診断の場面で頻繁に登場します。 ただし「正規性が必要」と「正規性が望ましい」の混同が初学者で多く、 不要な変換が解釈を歪める事例も多発しています。
📚 Round 18 — 正規性 完全攻略補足
正規性 Shapiro-Wilk Kolmogorov-Smirnov QQ プロット Anderson-Darling 歪度・尖度 中心極限定理 SSDSE-B-2026 ノンパラメトリック
🔬 数式を言葉で読み解く(拡張 narration)
🔬 数式を言葉で読み解く(narration): A1101 → 総人口(人)。 分析の分母 になる基本量です。A1303 → 65 歳以上人口。 高齢化率を産む分子 。A1302 → 15 〜 64 歳人口(生産年齢人口)。 経済活動の主体。μ → 全国平均。 比較基準 として用います。α → 有意水準。 第一種の誤り 許容率(正規性 に関する判断で重要)。p → p 値。 H₀ の下でデータがどれだけ稀かを示す。
📐 補足の数式と読み解き 基本量の関係を、 記号 → 意味で整理します。 任意の比率は
$$\text{比率} = \frac{\text{分子}}{\text{分母}} \times 100\quad\text{単位: }\%$$
記号 → 意味:
分子 → SSDSE では A1303(65歳以上人口) 分母 → SSDSE では A1101(総人口) ×100 → 単位を「割合(小数)」から「%」に変える 平均と分散は
$$\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i,\quad s^2 = \frac{1}{n-1}\sum_{i=1}^{n}(x_i - \bar{x})^2$$
t 統計量・効果量は
$$t = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{s_1^2/n_1 + s_2^2/n_2}},\quad d = \frac{\bar{x}_1 - \bar{x}_2}{s_{\text{pooled}}}$$
🧮 実値で計算してみる — SSDSE-B-2026 47 都道府県
SSDSE-B-2026 の都道府県データから 正規性 の文脈で代表値を読み取ります。 各列の記号 → 意味を確認し、 平均・中央値・四分位を併記する習慣を身につけましょう。
都道府県 総人口(千) 65歳以上人口(千) 高齢化率(%) 記号 → 意味 秋田県 914 357 39.1 A1101 → 総人口 / A1303 → 高齢者 / 比率 → 高齢化率 東京都 14,086 3,205 22.8 巨大分母 → 平均を引き上げる外れ値の典型 沖縄県 1,468 350 23.8 若い人口構造 → 東京に次いで低い高齢化率 大阪府 8,763 2,424 27.7 大都市圏の中位 → 比較基準として有用 島根県 650 227 34.9 人口減少地域 → 分母縮小型の高齢化
🐍 Python 実装 — Round 18 拡張
Shapiro-Wilk で 47 都道府県の高齢化率の正規性 🎯 SSDSE-B-2026(都道府県データ)を 正規性 の文脈で読み解く実値計算例。 各セルの記号 → 意味(A1101 → 総人口, A1303 → 65 歳以上人口)を確認しながら手元の Jupyter で実行できます。
📥 入力例(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 行)
📋 コピー import pandas as pd
from scipy import stats
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
df = df [ df [ 'SSDSE-B-2026' ] == 2023 ] # 縦持ちデータ:2023年度のみに絞る
df [ 'aging' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100
W , p = stats . shapiro ( df [ 'aging' ])
print ( f 'Shapiro W= { W : .4f } , p= { p : .4f } ' )
# p>0.05 なら正規性を棄却できない
📥 入力: data/raw/SSDSE-B-2026.csv(47 都道府県 × 主要統計列)。 出力例は数値・p 値・統計量で、 解釈には「実値で計算してみる → 仮説検定 → 効果量 → 結論」の流れを推奨します。
Kolmogorov-Smirnov(理論正規 vs 経験) 🎯 SSDSE-B-2026(都道府県データ)を 正規性 の文脈で読み解く実値計算例。 各セルの記号 → 意味(A1101 → 総人口, A1303 → 65 歳以上人口)を確認しながら手元の Jupyter で実行できます。
📋 コピー from scipy import stats
import numpy as np
z = ( df [ 'aging' ] - df [ 'aging' ] . mean ()) / df [ 'aging' ] . std ()
D , p = stats . kstest ( z , 'norm' )
print ( f 'KS D= { D : .4f } , p= { p : .4f } ' )
📥 入力: data/raw/SSDSE-B-2026.csv(47 都道府県 × 主要統計列)。 出力例は数値・p 値・統計量で、 解釈には「実値で計算してみる → 仮説検定 → 効果量 → 結論」の流れを推奨します。
QQ プロット 🎯 SSDSE-B-2026(都道府県データ)を 正規性 の文脈で読み解く実値計算例。 各セルの記号 → 意味(A1101 → 総人口, A1303 → 65 歳以上人口)を確認しながら手元の Jupyter で実行できます。
📋 コピー import matplotlib.pyplot as plt
import scipy.stats as stats
stats . probplot ( df [ 'aging' ], dist = 'norm' , plot = plt )
plt . title ( 'Q-Q plot of 高齢化率' )
plt . tight_layout (); plt . savefig ( 'qq.png' , dpi = 150 )
📥 入力: data/raw/SSDSE-B-2026.csv(47 都道府県 × 主要統計列)。 出力例は数値・p 値・統計量で、 解釈には「実値で計算してみる → 仮説検定 → 効果量 → 結論」の流れを推奨します。
Box-Cox 変換で正規性を改善 🎯 SSDSE-B-2026(都道府県データ)を 正規性 の文脈で読み解く実値計算例。 各セルの記号 → 意味(A1101 → 総人口, A1303 → 65 歳以上人口)を確認しながら手元の Jupyter で実行できます。
📋 コピー from scipy.stats import boxcox
y , lam = boxcox ( df [ 'aging' ])
print ( f 'lambda= { lam : .3f } ' )
W2 , p2 = stats . shapiro ( y )
print ( f '変換後 Shapiro W= { W2 : .4f } , p= { p2 : .4f } ' )
📥 入力: data/raw/SSDSE-B-2026.csv(47 都道府県 × 主要統計列)。 出力例は数値・p 値・統計量で、 解釈には「実値で計算してみる → 仮説検定 → 効果量 → 結論」の流れを推奨します。
❓ よくある質問 (FAQ)
正規性は厳密に必要? 多くの古典的検定の前提ですが、 n が大きい場合は中心極限定理で頑健になります。 厳密性より「逸脱の程度」を見ます。
Shapiro-Wilk は n>5000 で動かない? scipy は n=5000 までを推奨。 大標本では D'Agostino-Pearson, Anderson-Darling、 または QQ プロット視察が有効。
QQ プロットで何を見る? 理論分位 vs 実測分位がほぼ y=x なら正規。 端が反るなら裾が重い/軽い。
正規でないと t 検定はダメ? 頑健性があります。 ただし強い歪み + 小標本では Mann-Whitney/Wilcoxon を検討。
Box-Cox 変換とは? 正規性を改善する累乗変換。 対数や平方根もこの族に含まれます。
⚠️ 拡張版 落とし穴チェックリスト 分母を確認しない罠 : 比率や率の意味は分母で決まります。 SSDSE で「per 1000」と「per 100」を取り違えると桁違いになります。外れ値の影響 : 東京都が平均値を引き上げる効果は実際に大きく、 中央値との乖離を必ず併記しましょう。因果と相関の混同 : 高齢化率と平均所得が相関しても、 因果は別問題。 第三変数(産業構造・気候)の介在を疑います。選択バイアス : 「都市部のサンプルだけ」では地方の構造が見えません。 47 都道府県すべてを観察しましょう。多重比較 : 47 都道府県を一斉比較すると α=0.05 でも約 2.35 件は偶然有意。 Bonferroni 等の補正が必須です。時点ずれ : SSDSE-B-2026 と 国勢調査 2020 では基準時点が異なります。 同期した比較が必要。正規性 特有の文脈ずれ : 教育用に正規化したサンプルと現場データの落差。 単位・桁・カテゴリを揃える前処理が肝心。
🔗 関連用語(前提・並列・発展)— Round 18 補強
正規性 を中心に、 前提概念・並列分野・発展手法へリンクします。
📚 関連グループ教材
グループ教材から 正規性 の文脈に直結する論文・ハンズオンを辿れます。
🕰 歴史的背景と現代 正規性 は古典統計と社会データの交差点で発達してきました。 19 世紀末から 20 世紀初頭にかけて Pearson, Fisher, Neyman などが基礎を整え、 戦後の公的統計整備により実務応用が広がりました。
2010 年代以降は、 「再現性危機」「ビッグデータ」「AI 倫理」の三つの波が 正規性 に新しい意味を与えました。 単に p<0.05 を出すのではなく、 効果量・信頼区間・事前登録・データシートが必須となっています。
日本では総務省統計局・国立社会保障人口問題研究所・経済産業省 RESAS などが公的統計を整備し、 教育用に SSDSE が無償公開されました。 本ページもこの枠組みで 正規性 を扱います。
📚 参考リンク 総務省統計局 e-Stat https://www.e-stat.go.jp/ SSDSE 公開ページ https://www.nstac.go.jp/use/literacy/ssdse/ scipy.stats 公式ドキュメント https://docs.scipy.org/doc/scipy/reference/stats.html statsmodels 公式 https://www.statsmodels.org/ JIS Q 38507 / ISO/IEC 22989(AI 用語) OECD Principles on AI(2019)
🌐 関連手法・派生(広域マップ)
同じカテゴリの手法、 上位概念、 派生分野へのリンクを補強します。
📚 Round 18 — 正規性 追加演習と詳細解説
🧮 実値で計算してみる — SSDSE-B-2026 拡張ケーススタディ
正規性 を SSDSE-B-2026 の 47 都道府県データで多角的に検証します。 ここでは(1)地域グルーピング、 (2)時系列推移の近似、 (3)リスク評価指標の三つを順に扱います。
ケース 1: 9 地域ブロック × 正規性
SSDSE-B-2026 の都道府県を北海道・東北・関東・中部・近畿・中国・四国・九州・沖縄の 9 ブロックに集約して比較します。 ブロック内分散とブロック間分散の比から 正規性 の構造を観察できます。
📥 入力例(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 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年度のみに絞る
df [ 'aging' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100
block_map = {
'北海道' : '北海道' , '青森県' : '東北' , '岩手県' : '東北' , '宮城県' : '東北' , '秋田県' : '東北' , '山形県' : '東北' , '福島県' : '東北' ,
'茨城県' : '関東' , '栃木県' : '関東' , '群馬県' : '関東' , '埼玉県' : '関東' , '千葉県' : '関東' , '東京都' : '関東' , '神奈川県' : '関東' ,
'新潟県' : '中部' , '富山県' : '中部' , '石川県' : '中部' , '福井県' : '中部' , '山梨県' : '中部' , '長野県' : '中部' , '岐阜県' : '中部' , '静岡県' : '中部' , '愛知県' : '中部' ,
'三重県' : '近畿' , '滋賀県' : '近畿' , '京都府' : '近畿' , '大阪府' : '近畿' , '兵庫県' : '近畿' , '奈良県' : '近畿' , '和歌山県' : '近畿' ,
'鳥取県' : '中国' , '島根県' : '中国' , '岡山県' : '中国' , '広島県' : '中国' , '山口県' : '中国' ,
'徳島県' : '四国' , '香川県' : '四国' , '愛媛県' : '四国' , '高知県' : '四国' ,
'福岡県' : '九州' , '佐賀県' : '九州' , '長崎県' : '九州' , '熊本県' : '九州' , '大分県' : '九州' , '宮崎県' : '九州' , '鹿児島県' : '九州' ,
'沖縄県' : '沖縄'
}
df [ 'block' ] = df [ 'Prefecture' ] . map ( block_map )
print ( df . groupby ( 'block' )[ 'aging' ] . agg ([ 'mean' , 'std' , 'min' , 'max' ]))
ケース 2: 時系列の単純外挿で 2040 年を予測
過去 50 年の高齢化率推移は近似的に直線(やや上に凸)です。 線形外挿で 2030 / 2040 / 2050 年の値を推定し、 正規性 の将来像を可視化します。
📋 コピー import numpy as np
years = [ 1970 , 1980 , 1990 , 2000 , 2010 , 2020 ]
rate = [ 7.1 , 9.1 , 12.1 , 17.4 , 23.0 , 28.6 ] # 厚労省・統計局公表値
coef = np . polyfit ( years , rate , 2 )
for y in [ 2030 , 2040 , 2050 ]:
print ( f ' { y } 年予測: { np . polyval ( coef , y ) : .1f } %' )
ケース 3: リスクスコア — 都道府県の 正規性 観点での順位
複数指標を z 標準化し、 単純合成スコアで都道府県をランキングします。 重み付けの工夫により 正規性 の優先度を可変にできます。
📋 コピー import pandas as pd
cols = [ 'A1101' , 'A1303' ]
z = ( df [ cols ] - df [ cols ] . mean ()) / df [ cols ] . std ()
df [ 'risk_score' ] = z [ 'A1303' ] - 0.5 * z [ 'A1101' ]
print ( df [[ 'Prefecture' , 'aging' , 'risk_score' ]] . sort_values ( 'risk_score' , ascending = False ) . head ( 10 ))
🔬 数式を言葉で読み解く — 演習問題
SSDSE-B-2026 の A1101 と A1303 の意味 を言葉で答えなさい。(記号 → 意味)
「比率=分子 / 分母」を秋田県のデータで具体的に計算しなさい。 答え: 約 39%。
東京都・沖縄県・全国平均の三つを比較したとき、 どちらが 正規性 の「外れ値」と呼べるか説明しなさい。
p<0.05 を採用したとき、 47 都道府県の同時検定で偶然有意になる期待件数を求めなさい。 答え: 47 × 0.05 ≈ 2.35。
Bonferroni 補正後の有意水準を答えなさい。 答え: 0.05 / 47 ≈ 0.001。
正規性 を実務で使うときに最も避けるべき落とし穴を一つ挙げ、 対策を述べなさい。
🌐 関連手法・派生(広域マップ追補)
同じカテゴリの隣接概念、 派生分野、 上位概念へのリンクを補強します。
📚 関連グループ教材(追補)
⚠️ 落とし穴(追加 3 件)
サンプルサイズが小さい 状況での過大解釈。 47 都道府県だけでは全国推定に向かないことがある。
カテゴリ分け(cut) の閾値で結論が変わる。 WHO 区分の 7/14/21% は便宜的で、 学術的根拠は限定。
時間軸の解像度不足 。 単年データだけでは構造変化を見逃す。 SSDSE 過去版も併用しよう。
📐 数式または定義 — 補足公式
95% 信頼区間と検出力の式を併記します。
$$\text{CI}_{95\%} = \bar{x} \pm 1.96 \frac{s}{\sqrt{n}}$$
記号 → 意味:
\(\bar{x}\) → 標本平均
\(s\) → 標本標準偏差
\(n\) → 標本サイズ
\(1.96\) → 標準正規分布の上側 2.5% 点
🎨 直感で掴む — もう一つの比喩
正規性 を「カメラの絞り」に例えると、 絞りを開けすぎると(α を大きくすると)光(偽陽性)が入りすぎ、 絞りすぎると(α を小さくすると)暗くなって何も写らない(偽陰性増加)。 適度な絞り=適度な α を、 撮影条件=研究設計に応じて決める作業が統計的判断です。
🐍 Python 実装 — 標本生成と検定の一気通貫
📥 入力例(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 import pandas as pd
from scipy import stats
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
df = df [ df [ 'SSDSE-B-2026' ] == 2023 ] # 縦持ちデータ:2023年度のみに絞る
df [ 'aging' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100
# 全国平均との一群比較
t , p = stats . ttest_1samp ( df [ 'aging' ], 29.0 )
print ( f 't= { t : .3f } / p= { p : .4f } ' )
# 効果量
d = ( df [ 'aging' ] . mean () - 29.0 ) / df [ 'aging' ] . std ()
print ( f "Cohen's d = { d : .3f } " )
# 95% 信頼区間
import numpy as np
m , s , n = df [ 'aging' ] . mean (), df [ 'aging' ] . std (), len ( df )
ci = ( m - 1.96 * s / np . sqrt ( n ), m + 1.96 * s / np . sqrt ( n ))
print ( f '95% CI = { ci } ' )
📊 Round 18 Vol.2 — 正規性 教材深掘り
📐 数式または定義 — 補強パック
正規性 を扱うときに頻繁に登場する基本数式を一括掲載します。 KaTeX レンダリングは自動で行われます。
$$\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i$$
$$s^2 = \frac{1}{n-1}\sum_{i=1}^{n} (x_i - \bar{x})^2$$
$$z = \frac{x - \mu}{\sigma}$$
$$\text{CI}_{1-\alpha} = \bar{x} \pm z_{\alpha/2} \cdot \frac{s}{\sqrt{n}}$$
$$t = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}$$
$$F = \frac{MS_{between}}{MS_{within}}$$
$$\chi^2 = \sum \frac{(O - E)^2}{E}$$
$$r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2}\sqrt{\sum (y_i - \bar{y})^2}}$$
🔬 数式を言葉で読み解く — 記号一覧
記号
意味
SSDSE-B-2026 での対応
\(x_i\) i 番目の観測値 各都道府県の値
\(n\) 標本サイズ 47 都道府県なら n=47
\(\bar{x}\) 標本平均 df['列名'].mean()
\(\mu\) 母平均 理論値 / 比較基準
\(s\) 標本標準偏差(不偏) df['列名'].std(ddof=1)
\(\sigma\) 母標準偏差 通常未知 → s で代用
\(\alpha\) 有意水準 = 第一種の誤り許容率 慣例: 0.05
\(p\) p 値(H₀ 下での観測の稀さ) scipy で計算
\(d\) Cohen's d(効果量) 差を s で割る
\(r\) Pearson 相関係数 df.corr()
🧮 実値で計算してみる — もう一歩深く
SSDSE-B-2026 を読み込み、 正規性 に直接関連する集計を 5 種類実行します。
📥 入力例(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 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年度のみに絞る
df [ 'aging' ] = df [ 'A1303' ] / df [ 'A1101' ] * 100
# 1) 基本統計
print ( df [ 'aging' ] . describe ())
# 2) 上位下位 5 県
print ( '上位:' , df . nlargest ( 5 , 'aging' )[[ 'Prefecture' , 'aging' ]])
print ( '下位:' , df . nsmallest ( 5 , 'aging' )[[ 'Prefecture' , 'aging' ]])
# 3) 全国平均との差
print ( '差の絶対値合計:' , ( df [ 'aging' ] - df [ 'aging' ] . mean ()) . abs () . sum ())
# 4) z-score 化
df [ 'z' ] = ( df [ 'aging' ] - df [ 'aging' ] . mean ()) / df [ 'aging' ] . std ()
print ( 'z>2 の県:' , df [ df [ 'z' ] > 2 ][ 'Prefecture' ] . tolist ())
# 5) 5 分位(quintile)
df [ 'quint' ] = pd . qcut ( df [ 'aging' ], 5 , labels = [ 'Q1' , 'Q2' , 'Q3' , 'Q4' , 'Q5' ])
print ( df [ 'quint' ] . value_counts () . sort_index ())
🐍 Python 実装 — 可視化レシピ集
レシピ A: 都道府県ヒストグラム
📋 コピー import matplotlib.pyplot as plt
df [ 'aging' ] . plot . hist ( bins = 15 , edgecolor = 'black' , figsize = ( 8 , 4.5 ))
plt . axvline ( df [ 'aging' ] . mean (), color = 'red' , linestyle = '--' , label = '平均' )
plt . axvline ( df [ 'aging' ] . median (), color = 'blue' , linestyle = ':' , label = '中央値' )
plt . legend (); plt . xlabel ( '高齢化率(%)' ); plt . tight_layout ()
plt . savefig ( 'hist.png' , dpi = 150 )
レシピ B: 箱ひげ図で外れ値検出
plt.figure(figsize=(6,5))
plt.boxplot(df['aging'], vert=True, patch_artist=True,
boxprops=dict(facecolor='#E0F2F1'))
plt.ylabel('高齢化率(%)')
plt.title('SSDSE-B-2026 47 都道府県')
plt.tight_layout(); plt.savefig('box.png', dpi=150)
レシピ C: 散布図 — 総人口 vs 高齢化率
plt.figure(figsize=(8,5))
plt.scatter(df['A1101']/1e6, df['aging'])
plt.xlabel('総人口(百万人)'); plt.ylabel('高齢化率(%)')
plt.xscale('log')
plt.title('総人口(対数)と高齢化率の関係')
plt.tight_layout(); plt.savefig('scat.png', dpi=150)
レシピ D: ランキングバープロット
sorted_df = df.sort_values('aging')
plt.figure(figsize=(7,11))
plt.barh(sorted_df['Prefecture'], sorted_df['aging'], color='#00897B')
plt.xlabel('高齢化率(%)'); plt.tight_layout()
plt.savefig('rank.png', dpi=150)
レシピ E: 地域ブロック別バイオリン図
📋 コピー import seaborn as sns
df [ 'region' ] = df [ 'Prefecture' ] . apply ( lambda p : '東' if p in [ '東京都' , '神奈川県' , '千葉県' , '埼玉県' , '茨城県' , '栃木県' , '群馬県' ] else ( '西' if p in [ '大阪府' , '京都府' , '兵庫県' , '奈良県' , '和歌山県' ] else 'その他' ))
sns . violinplot ( data = df , x = 'region' , y = 'aging' )
plt . tight_layout (); plt . savefig ( 'violin.png' , dpi = 150 )
⚠️ 落とし穴 — 拡張版(合計 10 項目)
サンプルサイズ過信 : 47 都道府県は小さい標本。 全国推定への外挿には注意。
カテゴリ閾値の恣意性 : WHO の 7/14/21% 区分は便宜的。 連続値で扱う選択肢を併用。
時点ずれ : 統計年次が異なる指標同士を直接比較しない。
名義変数の量化エラー : 「都道府県 ID」を数値として扱わない。
p ハッキング : 結果が出るまで群分けや変数を変えるのは禁忌。
多重比較 : Bonferroni 等の補正を忘れない。
正規性の盲信 : 大標本でも歪みが強いとき変換やノンパラへ。
外れ値の自動排除 : 統計的に異常でも実質的に重要な観測かを必ず確認。
因果と相関の混同 : 相関は因果を保証しない。 RCT/差分の差分などへ。
可視化の歪み : 軸切断・3D 効果は誤解を生む。 ゼロ起点 2D を基本に。
🌐 関連手法・派生(拡張)
🔗 関連用語ネットワーク
正規性 は以下の用語と密接に関係しています。 ノードを辿りながら知識ネットワークを広げましょう。
📚 関連グループ教材
🎨 直感で掴む — もう一つの絵
正規性 は 「望遠鏡の解像度と倍率」 に例えられます。 倍率を上げると(標本サイズを増やすと)細部が見える反面、 視野は狭くなる。 解像度(精度=効果量)と倍率(規模=サンプル)のバランスが鍵です。
もう一つの比喩は 「魚群探知機」 。 強い反射(大きな効果)は小さな船(小標本)でも見えるが、 弱い反射(小さな効果)は大型船(大標本)でなければ検出できない。 ここに 正規性 の本質があります。
📍 文脈ボックス — あなたが今見ているもの(再掲)
この用語ページは、 統計データ分析コンペ(159 編)と用語集(537 語)の交差点に位置します。 正規性 を SSDSE-B-2026 の都道府県データで実際に動かしながら、 概念→数式→Python→落とし穴→関連用語の順に学んでください。
💡 30 秒で分かる結論(補強)
正規性 は 正規性 カテゴリの中心概念で、 SSDSE-B-2026 の都道府県データで具体的に検証できる。
記号 → 意味の対応を表で整理することで、 数式の威圧感が消える。
Python(pandas / scipy / statsmodels / matplotlib)で完結する分析パイプラインを構築可能。
落とし穴は分母確認・外れ値・多重比較・p ハッキングなど 10 項目(上記)。
効果量・信頼区間・事前登録を組み合わせる「現代的な使い方」が必須。
🗺 概念マップ
正規性 (normality) を中心ノードとし、 周囲に判定手段 (Shapiro-Wilk・QQ プロット・歪度尖度)、 仮定する手法群 (t 検定・ANOVA・線形回帰)、 違反時の代替 (ノンパラメトリック検定・対数変換)、 関連概念 (中心極限定理・正規分布) を配置した SVG マップ。 中心からの距離が「正規性チェックからの近さ」を表す。
normality
結論
「使う検定の前提を満たすか?
散布図・ヒストグラム・箱ひげ
1 つの図で 5 指標(最小
n が大きくなるほど正規に近
45° の対角線
本セクションでは正規性に関連する 視覚化・検定・変換・代替手法 を補強する。 QQ プロット、 Shapiro-Wilk の検出力、 対数/Box-Cox 変換、 ノンパラ代替の判断基準を一つずつ確認することで、 「検定 p 値だけに依存しない正規性判断」の引き出しを増やせる。
🔗 隣接手法への橋渡し
「正規性」は単独で完結せず、 前後の手法と組み合わさって価値が発揮される。 入力データの準備 (上流)・同目的の代替手法との比較 (並列)・結果の活用 (下流) という 3 軸で隣接領域を整理する。
上流 (入力の準備) : 記述統計 による 歪度 ・尖度 の確認、 ヒストグラム ・QQ プロット の可視化
並列 (同目的の代替) : Shapiro-Wilk 検定、 Kolmogorov-Smirnov 検定、 Anderson-Darling 検定、 Jarque-Bera 検定 が同目的で並列
下流 (結果の活用) : 結果に応じて t 検定 ・ANOVA (正規 OK) と ノンパラメトリック検定 (正規 NG) を選択、 対数変換 で正規化を試行
この上流・並列・下流の対応を地図化することで、 「正規性」を中核に据えた分析パイプライン (データ準備 → 手法選択 → 結果の検証と展開) の全体像が見えてくる。
🌳 手法選択フロー
「正規性」を扱う際の手法選択は、 状況に応じて以下のフローで判断すると迷いが減る。
Step 1: 目的は記述か予測か?
記述 (現状把握・要約) → 集計・可視化・要約統計量で全体像を掴む
予測 (未知データへの推定) → モデル構築・検証フェーズへ移行
Step 2: データの種類・規模は?
Step 3: 結果の解釈・共有は?
専門家向け → 数値指標・統計検定で精緻に評価
非専門家向け → 可視化・自然言語での要約を重視
このフローに沿って判断することで、 「正規性」を中核とした適切な手法選択ができる。
🧭 深掘り:直感・落とし穴・発展(追補)
ここまでの各節(🎨 直感で掴む ・⚠️ よくある落とし穴 ・🔗 関連用語 )で扱った内容を、 「一枚で見返せる要約」として追補します。 既存の解説を置き換えるものではなく、 復習・逆引き用のインデックスとして使ってください。
🎨 直感 — 「正規性」を一言で
正規性とは 「データ(正確には推定量)が正規分布に従うか」 という問いです。 t 検定・ANOVA ・線形回帰の p 値や信頼区間は、 内部で推定量が 正規分布 に従うことを使って計算されるため、 これが前提になります。 確認は 可視化(ヒストグラム ・Q-Q プロット)と検定(Shapiro-Wilk ほか)を必ず併用 するのが鉄則。 検定は「正規か否か」の二値を返しますが、 実務で効くのは「どの程度・どの向きにズレているか」という逸脱の大きさ で、 これは Q-Q プロットでしか見えません。
⚠️ 落とし穴 — 「外れ値を1個抜けば正規」は誤解
SSDSE-B-2026(2023 年・47 都道府県)の総人口で、 「東京都という極端値さえ抜けば正規に戻る」と考えがちですが、 実測ではそうなりません :
対象(総人口 A1101) n 歪度 Shapiro W p 値
全 47 県 47 +2.29 0.6895 1.1e-08
東京都(最大値)を除外 46 +1.82 0.7235 5.6e-08
log10 変換(全 47 県) 47 +0.82 0.9280 0.0064
Box-Cox 変換(λ≈−0.49) 47 ≈0 0.9770 0.48
東京を抜いても歪度は +1.82 と大きいまま(W もほとんど改善しない)。 これは「1 個の外れ値」ではなく分布全体が右に歪んでいる(対数正規型) ことを意味します。 効くのは点の除去ではなく 対数変換 や Box-Cox 変換という スケールの変更 です。 その他の代表的な落とし穴:
大標本での過敏 :n が大きいと Shapiro-Wilk はごく僅かな逸脱でも棄却する。 一方その大標本では 中心極限定理 で平均は十分正規なので、 検定は「非正規」と言っても実害は小さい。
小標本での検出力不足 :n=47 でも微小な歪みは検出できないことがある(「棄却できない=正規」ではない)。
目的次第で正規性は不要 :平均の推定・比較なら CLT が効き、 元データの厳密な正規性は要らないことが多い。 仮説検定 の前提が「何の正規性」かを常に確認する(回帰なら応答変数ではなく残差 )。
Q-Q プロットの主観と検定過信 :可視化だけだと主観、 検定だけだと逸脱の大きさが見えない。 数値検定+箱ひげ図 /Q-Q の併用で客観性を補う。
対数変換の機械適用 :0 や負値には 対数変換 不可(log(x+1) や Yeo-Johnson を検討)。 変換後の平均は幾何平均に対応するので解釈も変わる。
🚀 発展 — 次の一手のマップ
検定の使い分け :Shapiro-Wilk(全般に最強検出力)/Kolmogorov-Smirnov(分布全体)/Anderson-Darling(裾重視)/D'Agostino K²・Jarque-Bera(歪度・尖度)。 得意な逸脱が違うので結論が割れるのは正常(本ページ「🔬 実データで計算」節に 5 検定一括比較あり)。
数値指標 :歪度 ≈ 0、 過剰尖度 ≈ 0 が正規の目安。 経験則で |歪度|≤1・|尖度|≤2 なら概ね許容。
変換 :対数変換 ・Box-Cox(正値前提、 SSDSE 総人口では λ≈−0.49 で W=0.977, p=0.48 まで回復)・Yeo-Johnson(負値可)。
CLT との関係 :中心極限定理 により標本平均は元分布によらず n とともに正規へ。 歪みが強いほど必要な n は増える。
頑健・ノンパラ代替 :ノンパラメトリック検定 (Mann-Whitney U・Wilcoxon・Kruskal-Wallis)、 ブートストラップ 、 ロバスト統計 (中央値・トリム平均・M 推定)。
多変量正規性 :単変量が正規でも結合分布は正規とは限らない。 マハラノビス距離+χ² プロット、 Mardia/Royston 検定などで評価する。
🔗 関連ページ
📌 要点 :正規性は「真理」ではなく「使う手法の前提を満たすか」という相対的な問い。 可視化で逸脱の大きさを見る → 数値検定で裏を取る → 変換/ノンパラで打ち手を持つ 、 の順で判断すれば、 SSDSE のような小標本でも一貫した意思決定ができます。 数値はすべて SSDSE-B-2026(2023 年・47 県)の実測です。