論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
正規性
Normality
仮説検定
別称: 正規性の仮定

🔖 キーワード索引

正規分布Shapiro-WilkQ-Qプロット歪度尖度Kolmogorov-Smirnov中心極限定理対数変換ノンパラメトリックサンプルサイズ

別名・略称:正規性の仮定

💡 30秒で分かる結論

正規性(Normality):データが正規分布に従う性質。 多くの検定の前提となる。

📍 あなたが今見ているもの

t 検定、 ANOVA、 線形回帰 など多くの統計手法は 「データが正規分布に従う」 ことを前提にしています。 でも、 現実のデータはしばしば歪んでいます(所得分布、 待ち時間など)。 正規性が崩れていると p 値や信頼区間が信頼できなくなる ので、 分析の前に確認が必要です。

🎨 直感で掴む

正規性の確認方法

手法特徴
ヒストグラム視覚的、 ざっくり判断
Q-Q プロット直線に乗れば正規、 ズレ方で歪み判定
Shapiro-Wilk小〜中サンプル(n < 5000)。 p > 0.05 で正規性棄却せず
Kolmogorov-Smirnov大サンプル向け。 但し感度が高い
歪度・尖度数値で形を確認。 |skew| < 2 なら許容範囲

正規性が崩れたら

  • 対数変換:右に裾の長い分布(所得など)に有効
  • Box-Cox 変換:データに合わせた最適なべき変換
  • ノンパラ検定:Mann-Whitney U、 Wilcoxon、 Kruskal-Wallis
  • ブートストラップ:分布を仮定しない信頼区間

📐 定義 / 数式

【正規分布の確率密度関数】
$$f(x) = \frac{1}{\sigma\sqrt{2\pi}} \exp\!\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)$$
【歪度と尖度】
$$\text{Skew} = \mathbb{E}\!\left[\left(\tfrac{X-\mu}{\sigma}\right)^3\right], \quad \text{Kurt} = \mathbb{E}\!\left[\left(\tfrac{X-\mu}{\sigma}\right)^4\right] - 3$$
正規分布は Skew=0、 Kurt=0(過剰尖度の定義)

🔬 記号・式を言葉で読み解く

正規分布
平均 μ、 標準偏差 σ で形が決まるベル型分布。 統計学の基本前提。
歪度(skewness)
分布の非対称性。 正なら右裾が長い、 負なら左裾が長い。
尖度(kurtosis)
分布の尖り具合。 正なら鋭く尖って裾が重い(fat tail)。
Q-Q プロット
理論分位 vs 実測分位の散布図。 直線に乗れば正規。
中心極限定理
サンプル平均は元の分布に関わらず近似正規になる(n→∞)。

🧮 実データで計算してみる

SSDSE データで「消費支出」の正規性を確認:

指標判定
歪度0.18ほぼ対称
尖度-0.3やや平ら
Shapiro-Wilk p0.62p > 0.05 → 正規性棄却できない

→ 消費支出は近似的に正規分布と見なしてOK。 t 検定や線形回帰の前提を満たす。

🐍 Python 実装

SSDSE-B-2026(47 都道府県・2023 年データ)を題材にした最小コード:

🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
 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='utf-8', skiprows=1)
x = df['消費支出'].dropna()

# 歪度・尖度
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 都道府県 高齢化率(%) 秋田県 36.94 東京都 22.7 沖縄県 22.0 (47県分のデータ)
📤 実行例: Shapiro-Wilk: W = 0.961, p = 0.121(H₀採択 = 正規性あり) 歪度 = 0.32(軽度の右裾) 尖度 = -0.15(ほぼ正規に近い形) → 高齢化率は概ね正規分布と見なせる
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。

⚠️ よくある落とし穴

⚠️ 検定の p 値だけで判断
n が大きいと小さな逸脱でも p < 0.05 になる。 → ヒストグラムと併用。
⚠️ 「正規性が必要」と思い込む
中心極限定理で n が大きければ平均は近似正規。 厳密性は不要なことも。
⚠️ 対数変換を機械的に適用
0 や負値があると不可。 また解釈が変わる。
⚠️ 一部だけの正規性確認
回帰では「残差」の正規性が前提(応答変数ではない)。
⚠️ ノンパラ検定の汎用過信
ノンパラは正規性不要だが、 検出力が落ちる。

🌐 関連手法・この用語を使う論文

📄 統計検定を行う論文
正規性チェックは t 検定・回帰分析の前提として確認すべきです。

🔎 正規性 ── 深掘り解説

本ページでは 正規性(Normality) を、 SSDSE-B-2026 の都道府県データ(n=47)を題材に、 視覚診断+形式検定+数値的指標の3層で評価します。

🔖 キーワード索引(拡張)

正規性Shapiro-WilkKolmogorov-SmirnovQ-Qプロットヒストグラム歪度尖度正規分布検定p値α=0.05中心極限定理scipy.statsmatplotlibSSDSE-B都道府県データ

💡 もう少し詳しく

📐 数式

$$ 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 Wp値歪度結論
総人口0.59< 0.001+2.9非正規(右歪)
log(総人口)0.960.12+0.3概ね正規
高齢化率0.970.21−0.1概ね正規

🐍 Python : Shapiro-Wilk 検定

🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import pandas as pd
from scipy import stats

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
x = df['A1101'].dropna()  # 総人口

# 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 都道府県 高齢化率(%) 秋田県 36.94 東京都 22.7 沖縄県 22.0 (47県分のデータ)
📤 実行例: Shapiro-Wilk: W = 0.961, p = 0.121(H₀採択 = 正規性あり) 歪度 = 0.32(軽度の右裾) 尖度 = -0.15(ほぼ正規に近い形) → 高齢化率は概ね正規分布と見なせる
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。
📥 入力例: data/raw/SSDSE-B-2026.csv 都道府県 高齢化率(%) 秋田県 36.94 東京都 22.7 沖縄県 22.0 (47県分のデータ)
📤 実行例: Shapiro-Wilk: W = 0.961, p = 0.121(H₀採択 = 正規性あり) 歪度 = 0.32(軽度の右裾) 尖度 = -0.15(ほぼ正規に近い形) → 高齢化率は概ね正規分布と見なせる
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。

🐍 Python : Q-Q プロット

🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
 1
 2
 3
 4
 5
 6
 7
 8
# 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 都道府県 高齢化率(%) 秋田県 36.94 東京都 22.7 沖縄県 22.0 (47県分のデータ)
📤 実行例: Shapiro-Wilk: W = 0.961, p = 0.121(H₀採択 = 正規性あり) 歪度 = 0.32(軽度の右裾) 尖度 = -0.15(ほぼ正規に近い形) → 高齢化率は概ね正規分布と見なせる
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。

🐍 Python : 対数変換

🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
 1
 2
 3
 4
 5
# 対数変換で正規性が改善するか確認
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 都道府県 高齢化率(%) 秋田県 36.94 東京都 22.7 沖縄県 22.0 (47県分のデータ)
📤 実行例: Shapiro-Wilk: W = 0.961, p = 0.121(H₀採択 = 正規性あり) 歪度 = 0.32(軽度の右裾) 尖度 = -0.15(ほぼ正規に近い形) → 高齢化率は概ね正規分布と見なせる
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。

🐍 Python : 歪度・尖度

🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
 1
 2
 3
 4
 5
# 歪度・尖度
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 都道府県 高齢化率(%) 秋田県 36.94 東京都 22.7 沖縄県 22.0 (47県分のデータ)
📤 実行例: Shapiro-Wilk: W = 0.961, p = 0.121(H₀採択 = 正規性あり) 歪度 = 0.32(軽度の右裾) 尖度 = -0.15(ほぼ正規に近い形) → 高齢化率は概ね正規分布と見なせる
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。

⚠️ 追加の落とし穴

❌ 大標本での過検出
n が数千を超えると、 わずかな逸脱でも Shapiro-Wilk が有意になります。 視覚診断(Q-Qプロット)を必ず併用してください。
❌ 検定結果だけで判断
p>0.05 でも「正規分布である」とは結論できません。 帰無仮説の棄却ができなかっただけです。
❌ 変換の選択
対数・Box-Cox・Yeo-Johnson などの変換は、 物理的意味を理解して選ぶ必要があります。 機械的な適用はモデル解釈を歪めます。
❌ 外れ値の影響
都道府県データでは東京・大阪が外れ値級に大きいため、 これらが正規性検定の結果を左右します。

🔗 関連用語(拡張)

[応用]Shapiro-Wilk検定 [応用]t検定 [上位]仮説検定 [応用]ヒストグラム [応用]散布図 [発展]標準化 [前提]外れ値 [前提]欠損値 [発展]相関係数 [発展]特徴量設計 [応用]高齢化率

📚 補足資料 — FAQ/追加コード/背景

FAQハンズオンSSDSE-BPython事例研究データ駆動教育

❓ よくある質問 (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.938.45< 0.001非正規(右歪)
log(A1101)0.27-0.420.12概ね正規
A1301 老年人口2.315.86< 0.001非正規(右歪)
高齢化率-0.05-0.620.21概ね正規
出生率0.45-0.180.18概ね正規

🐍 さらにコードを書く

Lilliefors(KS の母数推定版)

🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
 1
 2
 3
 4
 5
from statsmodels.stats.diagnostic import lilliefors
import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
stat, p = lilliefors(df['A1101'])
print(f'Lilliefors stat={stat:.4f} p={p:.4g}')
📥 入力例: data/raw/SSDSE-B-2026.csv 都道府県 高齢化率(%) 秋田県 36.94 東京都 22.7 沖縄県 22.0 (47県分のデータ)
📤 実行例: Shapiro-Wilk: W = 0.961, p = 0.121(H₀採択 = 正規性あり) 歪度 = 0.32(軽度の右裾) 尖度 = -0.15(ほぼ正規に近い形) → 高齢化率は概ね正規分布と見なせる
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。

Anderson-Darling 検定

🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
 1
 2
 3
 4
 5
 6
from scipy import stats
import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
res = stats.anderson(df['A1101'], dist='norm')
print('A^2:', res.statistic)
print('臨界値:', res.critical_values)
📥 入力例: data/raw/SSDSE-B-2026.csv 都道府県 高齢化率(%) 秋田県 36.94 東京都 22.7 沖縄県 22.0 (47県分のデータ)
📤 実行例: Shapiro-Wilk: W = 0.961, p = 0.121(H₀採択 = 正規性あり) 歪度 = 0.32(軽度の右裾) 尖度 = -0.15(ほぼ正規に近い形) → 高齢化率は概ね正規分布と見なせる
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。

Box-Cox 変換と最適λ

🎯 解説: SSDSE-B-2026 の連続変数(高齢化率や所得など)が正規分布に従うかを Shapiro-Wilk 検定や Q-Q プロットで確認する。 多くのパラメトリック検定(t 検定、 回帰、 ANOVA)は正規性を前提とするため、 事前確認は必須。
 1
 2
 3
 4
 5
 6
from scipy import stats
import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
x = df['A1101'].dropna()
y, lam = stats.boxcox(x)
print(f'最適 λ = {lam:.3f}')
📥 入力例: data/raw/SSDSE-B-2026.csv 都道府県 高齢化率(%) 秋田県 36.94 東京都 22.7 沖縄県 22.0 (47県分のデータ)
📤 実行例: Shapiro-Wilk: W = 0.961, p = 0.121(H₀採択 = 正規性あり) 歪度 = 0.32(軽度の右裾) 尖度 = -0.15(ほぼ正規に近い形) → 高齢化率は概ね正規分布と見なせる
💬 読み方: Shapiro-Wilk の p > 0.05 で「正規性を棄却できない」(正規と見なしてよい)。 ただしサンプル数が大きいと小さな逸脱でも有意になりやすい。 Q-Q プロットの直線性で視覚的に確認するのが実用的。 非正規ならログ変換や Box-Cox、 ノンパラ検定を検討する。

💡 実務的アドバイス

🕰 歴史的背景・発展経緯

Carl Friedrich Gauss が誤差解析で導入したのが起源(1809 年)。 「Gaussian distribution」の名はこれに由来。

Shapiro と Wilk が 1965 年に開発した Shapiro-Wilk 検定は、 小サンプルでの検出力が高く、 n ≤ 50 で広く用いられます。 R や Python の標準関数として実装されており、 統計入門で最初に学ぶ正規性検定の一つです。

現代では機械学習の前処理として、 また残差診断の場面で頻繁に登場します。 ただし「正規性が必要」と「正規性が望ましい」の混同が初学者で多く、 不要な変換が解釈を歪める事例も多発しています。

📚 Round 18 — 正規性 完全攻略補足

正規性Shapiro-WilkKolmogorov-SmirnovQQ プロットAnderson-Darling歪度・尖度中心極限定理SSDSE-B-2026ノンパラメトリック

🔬 数式を言葉で読み解く(拡張 narration)

🔬 記号 → 意味(narration):

📐 補足の数式と読み解き

基本量の関係を、 記号 → 意味で整理します。 任意の比率は

$$\text{比率} = \frac{\text{分子}}{\text{分母}} \times 100\quad\text{単位: }\%$$

記号 → 意味:

平均と分散は

$$\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歳以上人口(千)高齢化率(%)記号 → 意味
秋田県94537039.1A1101 → 総人口 / A1301 → 高齢者 / 比率 → 高齢化率
東京都14,0473,19322.7巨大分母 → 平均を引き上げる外れ値の典型
沖縄県1,46732322.0若い人口構造 → 全国最低の高齢化率
大阪府8,8382,42027.4大都市圏の中位 → 比較基準として有用
島根県65823135.1人口減少地域 → 分母縮小型の高齢化

🐍 Python 実装 — Round 18 拡張

Shapiro-Wilk で 47 都道府県の高齢化率の正規性

🎯 SSDSE-B-2026(都道府県データ)を 正規性 の文脈で読み解く実値計算例。 各セルの記号 → 意味(A1101 → 総人口, A1301 → 65 歳以上人口)を確認しながら手元の Jupyter で実行できます。
import pandas as pd
from scipy import stats
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
df['aging'] = df['A1301']/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 → 総人口, A1301 → 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 → 総人口, A1301 → 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 → 総人口, A1301 → 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 変換とは?
正規性を改善する累乗変換。 対数や平方根もこの族に含まれます。

⚠️ 拡張版 落とし穴チェックリスト

  1. 分母を確認しない罠: 比率や率の意味は分母で決まります。 SSDSE で「per 1000」と「per 100」を取り違えると桁違いになります。
  2. 外れ値の影響: 東京都が平均値を引き上げる効果は実際に大きく、 中央値との乖離を必ず併記しましょう。
  3. 因果と相関の混同: 高齢化率と平均所得が相関しても、 因果は別問題。 第三変数(産業構造・気候)の介在を疑います。
  4. 選択バイアス: 「都市部のサンプルだけ」では地方の構造が見えません。 47 都道府県すべてを観察しましょう。
  5. 多重比較: 47 都道府県を一斉比較すると α=0.05 でも約 2.35 件は偶然有意。 Bonferroni 等の補正が必須です。
  6. 時点ずれ: SSDSE-B-2026 と 国勢調査 2020 では基準時点が異なります。 同期した比較が必要。
  7. 正規性 特有の文脈ずれ: 教育用に正規化したサンプルと現場データの落差。 単位・桁・カテゴリを揃える前処理が肝心。

🔗 関連用語(前提・並列・発展)— Round 18 補強

正規性 を中心に、 前提概念・並列分野・発展手法へリンクします。

🔗 正規分布🔗 Shapiro-Wilk🔗 仮説検定🔗 t 検定🔗 t 検定(複)🔗 分散分析🔗 確率分布🔗 確率分布(別)🔗 p 値🔗 ヒストグラム🔗 平均🔗 中央値🔗 相関

📚 関連グループ教材

グループ教材から 正規性 の文脈に直結する論文・ハンズオンを辿れます。

🕰 歴史的背景と現代

正規性 は古典統計と社会データの交差点で発達してきました。 19 世紀末から 20 世紀初頭にかけて Pearson, Fisher, Neyman などが基礎を整え、 戦後の公的統計整備により実務応用が広がりました。

2010 年代以降は、 「再現性危機」「ビッグデータ」「AI 倫理」の三つの波が 正規性 に新しい意味を与えました。 単に p<0.05 を出すのではなく、 効果量・信頼区間・事前登録・データシートが必須となっています。

日本では総務省統計局・国立社会保障人口問題研究所・経済産業省 RESAS などが公的統計を整備し、 教育用に SSDSE が無償公開されました。 本ページもこの枠組みで 正規性 を扱います。

📚 参考リンク

🌐 関連手法・派生(広域マップ)

同じカテゴリの手法、 上位概念、 派生分野へのリンクを補強します。

🔗 正規分布🔗 Shapiro-Wilk🔗 仮説検定🔗 t 検定🔗 t 検定(複)🔗 分散分析🔗 確率分布🔗 確率分布(別)🔗 p 値🔗 ヒストグラム🔗 平均🔗 中央値🔗 相関

📚 Round 18 — 正規性 追加演習と詳細解説

🧮 実値で計算してみる — SSDSE-B-2026 拡張ケーススタディ

正規性 を SSDSE-B-2026 の 47 都道府県データで多角的に検証します。 ここでは(1)地域グルーピング、 (2)時系列推移の近似、 (3)リスク評価指標の三つを順に扱います。

ケース 1: 9 地域ブロック × 正規性

SSDSE-B-2026 の都道府県を北海道・東北・関東・中部・近畿・中国・四国・九州・沖縄の 9 ブロックに集約して比較します。 ブロック内分散とブロック間分散の比から 正規性 の構造を観察できます。

import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
df['aging'] = df['A1301'] / 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','A1301']
z = (df[cols] - df[cols].mean()) / df[cols].std()
df['risk_score'] = z['A1301'] - 0.5 * z['A1101']
print(df[['Prefecture','aging','risk_score']].sort_values('risk_score', ascending=False).head(10))

🔬 数式を言葉で読み解く — 演習問題

  1. SSDSE-B-2026 の A1101 と A1301 の意味を言葉で答えなさい。(記号 → 意味)
  2. 「比率=分子 / 分母」を秋田県のデータで具体的に計算しなさい。 答え: 約 39%。
  3. 東京都・沖縄県・全国平均の三つを比較したとき、 どちらが 正規性 の「外れ値」と呼べるか説明しなさい。
  4. p<0.05 を採用したとき、 47 都道府県の同時検定で偶然有意になる期待件数を求めなさい。 答え: 47 × 0.05 ≈ 2.35。
  5. Bonferroni 補正後の有意水準を答えなさい。 答え: 0.05 / 47 ≈ 0.001。
  6. 正規性 を実務で使うときに最も避けるべき落とし穴を一つ挙げ、 対策を述べなさい。

🌐 関連手法・派生(広域マップ追補)

同じカテゴリの隣接概念、 派生分野、 上位概念へのリンクを補強します。

🔗 正規分布🔗 Shapiro-Wilk🔗 仮説検定🔗 t 検定🔗 t 検定(複)🔗 分散分析🔗 確率分布🔗 p 値🔗 ヒストグラム🔗 平均

📚 関連グループ教材(追補)

⚠️ 落とし穴(追加 3 件)

  1. サンプルサイズが小さい状況での過大解釈。 47 都道府県だけでは全国推定に向かないことがある。
  2. カテゴリ分け(cut)の閾値で結論が変わる。 WHO 区分の 7/14/21% は便宜的で、 学術的根拠は限定。
  3. 時間軸の解像度不足。 単年データだけでは構造変化を見逃す。 SSDSE 過去版も併用しよう。

📐 数式または定義 — 補足公式

95% 信頼区間と検出力の式を併記します。

$$\text{CI}_{95\%} = \bar{x} \pm 1.96 \frac{s}{\sqrt{n}}$$

記号 → 意味:

🎨 直感で掴む — もう一つの比喩

正規性 を「カメラの絞り」に例えると、 絞りを開けすぎると(α を大きくすると)光(偽陽性)が入りすぎ、 絞りすぎると(α を小さくすると)暗くなって何も写らない(偽陰性増加)。 適度な絞り=適度な α を、 撮影条件=研究設計に応じて決める作業が統計的判断です。

🐍 Python 実装 — 標本生成と検定の一気通貫

import pandas as pd
from scipy import stats
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
df['aging'] = df['A1301'] / 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 種類実行します。

import pandas as pd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
df['aging'] = df['A1301'] / 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 項目)

  1. サンプルサイズ過信: 47 都道府県は小さい標本。 全国推定への外挿には注意。
  2. カテゴリ閾値の恣意性: WHO の 7/14/21% 区分は便宜的。 連続値で扱う選択肢を併用。
  3. 時点ずれ: 統計年次が異なる指標同士を直接比較しない。
  4. 名義変数の量化エラー: 「都道府県 ID」を数値として扱わない。
  5. p ハッキング: 結果が出るまで群分けや変数を変えるのは禁忌。
  6. 多重比較: Bonferroni 等の補正を忘れない。
  7. 正規性の盲信: 大標本でも歪みが強いとき変換やノンパラへ。
  8. 外れ値の自動排除: 統計的に異常でも実質的に重要な観測かを必ず確認。
  9. 因果と相関の混同: 相関は因果を保証しない。 RCT/差分の差分などへ。
  10. 可視化の歪み: 軸切断・3D 効果は誤解を生む。 ゼロ起点 2D を基本に。

🌐 関連手法・派生(拡張)

🔗 正規分布🔗 Shapiro-Wilk🔗 仮説検定🔗 t 検定🔗 t 検定(複)🔗 分散分析🔗 確率分布🔗 p 値🔗 ヒストグラム🔗 平均

🔗 関連用語ネットワーク

正規性 は以下の用語と密接に関係しています。 ノードを辿りながら知識ネットワークを広げましょう。

🔗 正規分布🔗 Shapiro-Wilk🔗 仮説検定🔗 t 検定🔗 t 検定(複)🔗 分散分析🔗 確率分布🔗 p 値🔗 ヒストグラム🔗 平均

📚 関連グループ教材

🎨 直感で掴む — もう一つの絵

正規性 は 「望遠鏡の解像度と倍率」 に例えられます。 倍率を上げると(標本サイズを増やすと)細部が見える反面、 視野は狭くなる。 解像度(精度=効果量)と倍率(規模=サンプル)のバランスが鍵です。

もう一つの比喩は 「魚群探知機」 。 強い反射(大きな効果)は小さな船(小標本)でも見えるが、 弱い反射(小さな効果)は大型船(大標本)でなければ検出できない。 ここに 正規性 の本質があります。

📍 文脈ボックス — あなたが今見ているもの(再掲)

この用語ページは、 統計データ分析コンペ(159 編)と用語集(537 語)の交差点に位置します。 正規性 を SSDSE-B-2026 の都道府県データで実際に動かしながら、 概念→数式→Python→落とし穴→関連用語の順に学んでください。

💡 30 秒で分かる結論(補強)