論文一覧に戻る 📚 用語解説(ジャストインタイム型データサイエンス教育)
ノンパラメトリック検定
Nonparametric Test
分布の形を仮定しない検定法(順位ベース等)。外れ値や非正規分布データに強い。
仮説検定ノンパラ順位検定
📍 文脈💡 30秒結論

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

論文中に 「ノンパラメトリック検定」として登場する用語。

ノンパラメトリック検定 とは:分布の形を仮定しない検定法(順位ベース等)。外れ値や非正規分布データに強い。

💡 30秒で分かる結論

👁️ 直感 — ノンパラメトリック検定は「分布の仮定なし」

ノンパラメトリック検定は、 母集団分布について強い仮定をしない検定群。 「データが正規分布に従う」必要がない。

使い時

🎯 主要なノンパラ検定

パラメトリック ノンパラメトリック 用途
1標本 t検定Wilcoxon符号付き順位中央値の検定
対応のあるt検定Wilcoxon符号付き順位前後比較
独立2標本 t検定Mann-Whitney U(Wilcoxon順位和)2群比較
一元配置 ANOVAKruskal-Wallis3群以上比較
反復測定 ANOVAFriedman 検定3条件以上
Pearson相関Spearman, Kendall順位相関

📐 ノンパラ検定の仕組み

多くのノンパラ検定は、 値そのものではなく順位(rank)に基づきます。 これにより:

🐍 Python でのノンパラ検定

▼ コード解説(Mann-Whitney U 検定(2 群の中央値差))
🎯 解説: scipy.stats.mannwhitneyu で 2 群の分布の位置差を検定。 正規性を仮定しない t 検定の代替。
📥 入力例: 都市群 vs 地方群の食料費比率
📤 実行例: U = 521, p = 0.003 → 中央値が有意に異なる 都市 22%、 地方 26%
💬 読み方: Mann-Whitney U はランクに基づく検定。 正規性が崩れていても使えるため、 小標本や歪んだ分布で重宝。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
from scipy import stats

# Mann-Whitney U(独立2標本)
u, p = stats.mannwhitneyu(group1, group2, alternative='two-sided')

# Wilcoxon 符号付き順位(対応のあるデータ)
w, p = stats.wilcoxon(before, after)

# Kruskal-Wallis(3群以上)
h, p = stats.kruskal(group1, group2, group3)

# Friedman 検定(反復測定)
f, p = stats.friedmanchisquare(cond1, cond2, cond3)

# Spearman 相関
rho, p = stats.spearmanr(x, y)

# Kendall's tau
tau, p = stats.kendalltau(x, y)

🚧 落とし穴と注意点

🔬 「ノンパラ検定」を深く理解する

パラメトリック vs ノンパラ — 検出力の差

パラメトリック検定は仮定が正しいときに最大の検出力を持つ。 仮定が崩れるとノンパラの方が頑健で高い検出力。 一般則:

順位検定の歴史

📝 練習問題 — 理解度チェック

  1. この用語の基本定義を、 自分の言葉で説明できますか?
  2. この手法が使われる典型的なシナリオを3つ挙げられますか?
  3. この手法の前提条件・仮定を確認できますか?
  4. 結果を解釈する際の注意点は何ですか?
  5. 類似手法との違いを説明できますか?
  6. Python(または他言語)で実装できますか?
  7. SSDSE データで応用例を作成できますか?

📚 参考文献・さらなる学習

古典的教科書

実践書

オンラインリソース

💼 実務応用ガイド

データサイエンスプロジェクトでの位置づけ

  1. 探索的分析(EDA):基本統計量・可視化でデータを理解
  2. 前処理:標準化・正規化・欠損値処理
  3. モデリング:回帰・分類・クラスタリング
  4. 評価:CV、 指標計算、 統計的検定
  5. 解釈・報告:効果量・信頼区間・可視化

業界別ユースケース

📖 完全ガイド — 統計学習の参照表

分析の流れ — 8ステップ

  1. 問題定義:何を知りたいのか、 目的を明確に
  2. データ収集:信頼できるソースから(SSDSEなど公的データ)
  3. データクリーニング:欠損値、 外れ値、 入力ミスの確認
  4. 探索的分析(EDA):要約統計量、 ヒストグラム、 散布図
  5. 変数変換:標準化、 対数変換、 カテゴリのエンコード
  6. モデリング:適切な手法を選び、 学習
  7. 評価:CV、 指標、 統計的検定
  8. 解釈・報告:効果量、 信頼区間、 可視化

統計手法の選び方マトリクス

目的 1変数 2変数 多変量
記述平均, 中央値, 分散相関, 共分散PCA, 因子分析
可視化ヒストグラム, 箱ひげ散布図, ヒートマップ散布図行列, バイプロット
予測時系列モデル単回帰重回帰, Ridge, LASSO
分類ロジスティック回帰判別分析SVM, RF, NN
グループ化階級分け2次元クラスタリングk-means, 階層クラスタリング
検定1標本t検定2標本t検定, χ²ANOVA, MANOVA

サンプル数別の手法ガイド

n 推奨手法
n < 10記述統計のみ、 ノンパラ検定、 ベイズ統計
10 ≤ n < 30t検定, ブートストラップ, 単回帰
30 ≤ n < 200重回帰, ANOVA, 階層クラスタリング
200 ≤ n < 10000複雑な回帰, RF, GBM, k-means
n ≥ 10000深層学習, 大規模分散学習

Python 主要ライブラリ早見表

ライブラリ 用途
numpy数値計算の基礎、 行列演算
pandasデータフレーム、 表操作
scipy統計関数、 最適化、 線形代数
statsmodels古典統計、 検定、 回帰分析の詳細
scikit-learn機械学習、 前処理、 評価
matplotlib基本可視化
seaborn統計的可視化(高級)
plotlyインタラクティブ可視化
xgboost / lightgbm勾配ブースティング
PyTorch / TensorFlow深層学習

よくある質問(FAQ)

📓 用語のまとめ — 30秒で理解

このページで扱った概念を、 学習効率のためにまとめます。 これを毎日見ることで、 統計の基礎が体に染み込みます。

必ず押さえるべき記号

記号 意味 読み方
μ母平均ミュー
σ母標準偏差シグマ
σ²母分散シグマ二乗
標本平均エックスバー
s標本標準偏差エス
n標本サイズエヌ
pp値、 比率ピー
α有意水準アルファ
β回帰係数、 第二種誤り率ベータ
r相関係数アール
決定係数アール二乗
Σ総和記号、 共分散行列シグマ大文字
N(μ, σ²)正規分布ノーマル ミュー シグマ二乗
t(df)t分布ティー
χ²(df)カイ二乗分布カイ二乗
F(d1, d2)F分布エフ
H₀, H₁帰無仮説、 対立仮説エイチゼロ、 エイチワン
E[X]期待値エクスペクタンス
Var(X)分散バリアンス
Cov(X, Y)共分散カバリアンス

💡 統計学・データサイエンスは「記号の意味を理解する」ことが最初の壁。 各記号が何を表すか、 公式の中での役割を覚えてしまえば、 後はパターンの組合せで様々な手法が理解できます。

🌐 データサイエンス全体像での位置づけ

データサイエンスのワークフロー

  1. ビジネス理解:何を解決したいか
  2. データ理解:どんなデータがあるか
  3. データ準備:前処理、 特徴量エンジニアリング
  4. モデリング:手法選択、 学習
  5. 評価:性能、 解釈性、 ビジネス価値
  6. 展開:実装、 運用、 監視

(CRISP-DM プロセスより)

主要分野のマッピング

分野 主要技術 代表ツール
記述統計要約量、 可視化pandas, matplotlib
推測統計検定、 信頼区間scipy.stats, statsmodels
機械学習予測、 分類、 クラスタリングscikit-learn, XGBoost
深層学習NN、 画像、 自然言語PyTorch, TensorFlow
時系列ARIMA、 状態空間、 LSTMstatsmodels, prophet
因果推論RCT、 IV、 DiD、 PSMDoWhy, EconML
ベイズ統計MCMC、 変分推論PyMC, Stan
最適化線形/凸/離散最適化scipy.optimize, cvxpy

キャリアパス

💎 良いデータ分析のための10のコツ

  1. 必ず可視化から始める:散布図、 ヒストグラム、 箱ひげ図
  2. 外れ値を意識する:除く前にドメイン的に理解
  3. 仮定を確認する:正規性、 独立性、 等分散性
  4. サンプルサイズに見合う複雑性:n=10 で深層学習はしない
  5. 効果量も併記する:p値だけでは不十分
  6. 信頼区間で不確実性を示す:点推定だけでは誤解の元
  7. 多重比較を補正する:探索的解析でも誠実に
  8. ホールドアウト or CV で評価する:訓練データの精度は意味がない
  9. 解釈可能性も重視する:ブラックボックスより white-box
  10. 再現可能なコードを書く:random_seed、 バージョン管理

🔗 用語間の関係 — 統計概念のネットワーク

記述統計の基本セット

これらは互いに深く関連します:

推測統計の基本セット

回帰モデルファミリー

クラスタリング・次元削減ファミリー

検定ファミリー

🗺️ 概念マップ — 3つの視点で体系を理解する

ノンパラメトリック検定 がデータサイエンスの体系の中でどこに位置するかを、 3つの異なる視点で可視化します。 同じ情報でも見方を変えると気付きが変わります。

📍 体系階層のパス

🌐 体系階層に未登録

① 🔗 関係マップ — 「他の手法とどう繋がっているか」

中心の概念から放射状に、 前提・兄弟・発展形・応用先などの関係性を矢印で結びます。 横の繋がりを見るのに最適。 ノードをドラッグ、 ホイールでズーム、 クリックで遷移

凡例:現在の用語上位カテゴリ兄弟(並列)前提発展形応用先2階層先

② ⭕ 包含マップ — 「どのカテゴリに含まれているか」

大きな円が小さな円を包含する Circle Packing 図。 「ノンパラメトリック検定」は緑色でハイライト

📍現在地:統計・データサイエンス

③ 🌳 ツリーマップ — 「面積で見るボリューム比較」

長方形を入れ子に分割した Treemap 図。 各分野の規模感を面積で比較。 「ノンパラメトリック検定」は緑色でハイライト

🎯 3つのマップの使い分け

マップ 分かること こんな時に見る
🔗 関係マップ手法間の横の関係(前提→発展→応用)「次に何を学べばよい?」 学習順序の判断
⭕ 包含マップ分類体系の入れ子構造(上位⊃下位)「この手法はどんなジャンルに属する?」
🌳 ツリーマップ分野の規模比較(面積=ボリューム)「データサイエンス全体の俯瞰像」

💡 ジャストインタイム学習のヒント:3つの視点を行き来することで、 概念を多角的に理解できます。 包含マップやツリーマップはズーム/ドリルダウンで大分類から細部まで探索できます。

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

ノンパラメトリック検定の周辺概念をクイックアクセス:

Mann-Whitney U Wilcoxon符号順位 Kruskal-Wallis Friedman 検定 符号検定 順位和統計量 ランク変換 タイ(同順位)処理 検出力の低下 中央値の検定 ≠ 平均の検定 scipy.stats.mannwhitneyu scipy.stats.wilcoxon scikit_posthocs pingouin

🧮 SSDSE-B 実値計算 — 8 地方ブロックの「現金給与」を比較

47都道府県の「現金給与総額」を 8 地方ブロックで Kruskal-Wallis 検定にかけ、 ポストホックで Dunn 検定を実施。 t 検定や ANOVA との結果差も観察する。

▼ コード解説(Wilcoxon 符号付き順位検定(対応あり))
🎯 解説: scipy.stats.wilcoxon で対応のある 2 群の差を検定。 paired t 検定のノンパラ版。
📥 入力例: 同じ県の 2019 と 2023 の死亡率
📤 実行例: W = 124, p < 0.001 → 2023 の方が高い
💬 読み方: 対応サンプル(同じ県の 2 時点)には Wilcoxon。 正規性が必要な paired t より頑健。
▼ コード解説(Kruskal-Wallis 検定(3 群以上))
🎯 解説: scipy.stats.kruskal で 3 群以上の中央値差を検定。 one-way ANOVA のノンパラ版。
📥 入力例: 8 地域ブロック × 高齢化率
📤 実行例: H = 35.8, df=7, p<0.001 → 地域間で分布が異なる
💬 読み方: Kruskal-Wallis は地域比較に頻出。 ANOVA より正規性に頑健で、 多群比較の標準的選択肢。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import pandas as pd
from scipy import stats

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)
df.columns = [c.strip() for c in df.columns]

def region(code):
    code = int(code)
    if code == 1:                  return '北海道'
    if 2  <= code <= 7:            return '東北'
    if 8  <= code <= 14:           return '関東'
    if 15 <= code <= 23:           return '中部'
    if 24 <= code <= 30:           return '近畿'
    if 31 <= code <= 35:           return '中国'
    if 36 <= code <= 39:           return '四国'
    return '九州沖縄'
df['region'] = df['地域コード'].apply(region)

groups = [df.loc[df['region']==r, '現金給与総額'].values
          for r in df['region'].unique()]

H, p_kw = stats.kruskal(*groups)
F, p_aov = stats.f_oneway(*groups)
print(f'Kruskal-Wallis : H = {H:.2f}, p = {p_kw:.4f}')
print(f'One-way ANOVA  : F = {F:.2f}, p = {p_aov:.4f}')

典型的な出力例: H ≈ 16.2, p_kw ≈ 0.024、 F ≈ 2.8, p_aov ≈ 0.020。 どちらも有意(5%水準)で、 結論は一致する。 SSDSE-B のように 47 都道府県 × 8 群=群あたり 5〜10 のサンプルでは、 正規性が怪しいので Kruskal-Wallis の方を主結果に採用するのが無難。

ポストホック:Mann-Whitney U で 2 群ずつ比較(Bonferroni 補正)

▼ コード解説(Friedman 検定(対応 3 群以上))
🎯 解説: scipy.stats.friedmanchisquare で対応 3 群以上の差を検定。 反復測定 ANOVA のノンパラ版。
📥 入力例: 47 県 × 5 年の死亡率
📤 実行例: Q = 86.3, df=4, p<0.001 → 年度間で異なる
💬 読み方: パネルデータの年度間比較に有効。 各県を「ブロック」として扱い、 年度を「処理」とみなす。
▼ コード解説(Spearman 順位相関)
🎯 解説: scipy.stats.spearmanr で順位相関を計算。 単調関係(線形でなくても)を検出。
📥 入力例: df['高齢化率'] と df['死亡率']
📤 実行例: ρ = 0.968, p<0.001 → 強い単調関係 Pearson r=0.97 とほぼ同じ
💬 読み方: Spearman は単調関係(曲線でも単調なら OK)を検出。 外れ値に強く、 Pearson との比較で関係の形を診断できる。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from itertools import combinations
regions = df['region'].unique()
k = len(regions)
m = k*(k-1)//2          # 比較数
print(f'比較数 = {m}, Bonferroni 補正後の α = {0.05/m:.4f}')
for r1, r2 in combinations(regions, 2):
    a = df.loc[df.region==r1, '現金給与総額']
    b = df.loc[df.region==r2, '現金給与総額']
    U, p = stats.mannwhitneyu(a, b, alternative='two-sided')
    mark = '*' if p < 0.05/m else ' '
    print(f'{mark} {r1:<5s} vs {r2:<5s}  U={U:6.1f}  p={p:.4f}')

scikit_posthocs で Dunn 検定(Holm 補正)

▼ コード解説(Kendall's τ)
🎯 解説: scipy.stats.kendalltau で Kendall の τ を計算。 順位相関の別バージョンで、 小標本で安定。
📥 入力例: 高齢化率と死亡率
📤 実行例: τ = 0.85, p<0.001 → 一致順位多い
💬 読み方: Kendall τ は n<30 で Spearman より安定。 ペアの一致/不一致をカウントする直感的な指標。
▼ コード解説(Bootstrap CI(中央値の信頼区間))
🎯 解説: scipy.stats.bootstrap で中央値の 95% CI を計算。 分布仮定を置かない頑健な区間推定。
📥 入力例: 死亡率の中央値、 n_resamples=10000
📤 実行例: 中央値 = 12.3 95% CI: [11.5, 13.1]
💬 読み方: ブートストラップは分布によらず信頼区間を構成。 中央値・四分位数など平均以外の統計量にも対応。
1
2
3
4
import scikit_posthocs as sp
pvals = sp.posthoc_dunn(df, val_col='現金給与総額',
                        group_col='region', p_adjust='holm')
print(pvals.round(3))

⚠️ ノンパラメトリック検定の落とし穴 — 6 つの典型ミス

① 「ノンパラ=中央値の検定」と誤解する

Mann-Whitney U や Kruskal-Wallis は、 厳密には「中央値の検定」ではなく「分布が確率的に大きいか小さいか(stochastic dominance)」を検定している。 分布の形が大きく違う(一方が右に裾を引く等)と、 中央値が等しくても有意になりうる。 厳密に「中央値の差」を検定したいなら Brown-Mood 中央値検定や、 Hodges-Lehmann 推定量に基づく信頼区間を用いる。 教科書通りに「中央値の比較」と書いて投稿査読で指摘されることが多い。

② 正規性が成り立つのにノンパラを使い検出力を失う

「外れ値が怖いから何でもノンパラ」というのは過剰な保守。 母集団が概ね正規ならパラメトリック検定(t 検定)の方が漸近相対効率(ARE)で常に高く、 Mann-Whitney U の ARE は正規下で 3/π ≈ 0.955 にしかならない。 つまり同じ検出力を得るのに 5% 多くサンプルが必要。 まず正規性プロット(Q-Q)・Shapiro 検定で確認し、 明らかに正規でない場合のみノンパラに切り替える、 という順序が標準。

③ タイ(同順位)が多いのに正規近似 p 値で済ます

順序データやカウントデータでは同値が頻発し、 Mann-Whitney U の正規近似 p 値が不正確になる。 タイが多い場合は (a) タイ補正済み分散を使う、 (b) 厳密 p 値(exact mode)を計算する、 (c) 並べ替え検定で代替する、 のいずれかを選ぶ。 scipy.stats.mannwhitneyu は method='exact' でタイがあると警告を出す。 N が大きく exact が計算困難なら permutation test に切り替える。

④ 多重比較補正なしでポストホックを乱発する

Kruskal-Wallis で有意になったあと、 ペアワイズ Mann-Whitney U を 28 ペア(8 群)打って、 補正なしで「ここが有意!」と報告する事故が多い。 これでは family-wise error rate が α = 1 - (1-0.05)^28 ≈ 76% にまで膨らむ。 Bonferroni(保守的)、 Holm(手堅い)、 Benjamini-Hochberg(FDR)のいずれかを必ず適用。 scikit_posthocs.posthoc_dunn は p_adjust 引数で指定可能。

⑤ 効果量を報告しない

p 値だけ書いて効果量を出さないのは現代統計の悪習。 Mann-Whitney U なら r = Z/√N、 rank-biserial 相関 r_rb、 もしくは Cliff's δ を報告するのが標準。 Wilcoxon 符号順位なら r = Z/√N、 もしくは Hedges' g に変換。 サンプルが少ない時は信頼区間(ブートストラップ)を併記すると説得力が増す。 査読者は p 値より効果量と CI を重視する傾向が強い。

⑥ Wilcoxon 符号順位検定で対称性仮定を忘れる

Wilcoxon signed-rank test は「差の分布が中央値ゼロを中心に対称」という仮定を置く。 対称性が崩れる(強く歪んだ差分分布)と、 検定の解釈は「中央値ゼロ」ではなく「分布のシフト」になる。 対称性が怪しい場合は符号検定(sign test、 差の符号だけを見る)の方が頑健だが、 検出力は落ちる。 ヒストグラムと QQ プロットで対称性を必ず確認すること。

🐍 Python 実装バリエーション — scipy / pingouin / scikit_posthocs

1. scipy.stats — 主要 5 検定の最短コード

▼ コード解説(Permutation test(順列検定))
🎯 解説: scipy.stats.permutation_test で 2 群差を順列検定。 帰無仮説のもとで全並び替えを試す厳密検定。
📥 入力例: 都市 vs 地方の食料費比率、 n_resamples=10000
📤 実行例: 観測差 = 4.2% 順列差の 95% range: [-2.1, 2.0] p < 0.001
💬 読み方: 順列検定は仮定が最小限。 計算負荷は高いが小標本では最も信頼できる。
▼ コード解説(Kolmogorov-Smirnov 検定)
🎯 解説: scipy.stats.kstest または ks_2samp で 2 分布の差を検定。 累積分布関数の最大乖離を測定。
📥 入力例: 都市群と地方群の食料費比率分布
📤 実行例: D = 0.62, p = 0.002 → 分布全体が異なる
💬 読み方: K-S 検定は「中央値だけでなく分布形状」を検査。 中央値が同じでも分散・歪みが違えば棄却される。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from scipy import stats
# 2 群独立:Mann-Whitney U
U, p = stats.mannwhitneyu(a, b, alternative='two-sided', method='auto')
# 2 群対応:Wilcoxon 符号順位
W, p = stats.wilcoxon(x, y, zero_method='wilcox', correction=True)
# k 群独立:Kruskal-Wallis
H, p = stats.kruskal(g1, g2, g3, g4)
# k 群対応:Friedman
chi2, p = stats.friedmanchisquare(*data_per_condition)
# 符号検定(scipy 1.10+)
res = stats.binomtest(np.sum(diff > 0), n=np.sum(diff != 0), p=0.5)

2. pingouin — 高機能で効果量も自動

▼ コード解説(符号検定(最も基礎))
🎯 解説: 対応サンプルで「差が正/負か」のみを使う検定。 中央値の検定に対応。
📥 入力例: 2019 と 2023 の死亡率の差の符号
📤 実行例: 正の差 38 県、 負の差 9 県 二項検定 p<0.001
💬 読み方: 符号検定は最もシンプル。 ノンパラの中でも仮定が最小限で、 中央値の差を粗く検出するのに使う。
▼ コード解説(Boxplot で群間比較)
🎯 解説: seaborn.boxplot で群別に箱ひげ図を描画。 中央値・四分位数・外れ値を視覚化。
📥 入力例: x='地域ブロック', y='死亡率'
📤 実行例: nonparam_boxplot.png 地域ブロック別の中央値・分布形状
💬 読み方: Boxplot はノンパラ検定の結果を視覚化する標準ツール。 中央値や IQR の差が一目で分かる。
1
2
3
4
5
6
7
import pingouin as pg
# Mann-Whitney + 効果量 r + CI
print(pg.mwu(a, b))
# Kruskal-Wallis + η²
print(pg.kruskal(data=df, dv='現金給与総額', between='region'))
# Wilcoxon + 効果量
print(pg.wilcoxon(x, y))

3. scikit_posthocs — Kruskal 後のペアワイズ Dunn / Conover

▼ コード解説(Rank ベースのモデリング)
🎯 解説: 応答変数をランクに変換してから OLS。 ノンパラ回帰の簡易版。
📥 入力例: y_rank = scipy.stats.rankdata(y) X_rank も同様
📤 実行例: Rank R² ≈ 0.92(ほぼ同じ) 外れ値の影響を吸収
💬 読み方: ランク変換すると外れ値の影響が消える。 ロバスト回帰の簡易代替として有効。
▼ コード解説(Effect size(ノンパラ))
🎯 解説: Cliff's delta や Common Language Effect Size で 2 群差の効果量を計算。
📥 入力例: 都市と地方の食料費比率
📤 実行例: Cliff's δ = 0.62(大効果) CLES = 0.81(都市の方が低い確率)
💬 読み方: p 値だけでなく効果量も報告するのが現代統計の標準。 Cliff's δ は -1〜1 の範囲で直感的。
1
2
3
4
import scikit_posthocs as sp
sp.posthoc_dunn(df, val_col='y', group_col='g', p_adjust='holm')
sp.posthoc_conover(df, val_col='y', group_col='g', p_adjust='fdr_bh')
sp.posthoc_nemenyi_friedman(data_matrix)

4. statsmodels で並べ替え検定(permutation test)

▼ コード解説(nonparametric の Python 実装(コードブロック 14))
🎯 解説: nonparametric を SSDSE-B-2026 都道府県データで実行する Python コード。 47 都道府県 × 112 指標のパネルデータを使い、 公的統計の実値に基づいて手法を可視化する。 教育用ハンズオン教材として scipy/pandas/sklearn の標準ライブラリで完結。
📥 入力例: data/raw/SSDSE-B-2026.csv encoding=shift_jis(または cp932), skiprows=1 47 都道府県 × 5 年(2019-2023)= 235 行 数値特徴量 100+ 列(家計・人口・教育・医療)
📤 実行例: nonparametric の主要出力を確認 都道府県別・年度別の指標が出力される 例: 秋田・沖縄・東京の差異が顕著に表れる プロット・統計量・モデルパラメータ等の結果を取得
💬 読み方: nonparametric の結果は SSDSE-B-2026 の地域特性を反映。 都市圏/地方圏/観光圏でパターンが異なり、 47 県の異質性を視覚化・定量化できる。 統計データ活用コンペの実分析に直接転用可能。
▼ コード解説(nonparametric の Python 実装(コードブロック 15))
🎯 解説: nonparametric を SSDSE-B-2026 都道府県データで実行する Python コード。 47 都道府県 × 112 指標のパネルデータを使い、 公的統計の実値に基づいて手法を可視化する。 教育用ハンズオン教材として scipy/pandas/sklearn の標準ライブラリで完結。
📥 入力例: data/raw/SSDSE-B-2026.csv encoding=shift_jis(または cp932), skiprows=1 47 都道府県 × 5 年(2019-2023)= 235 行 数値特徴量 100+ 列(家計・人口・教育・医療)
📤 実行例: nonparametric の主要出力を確認 都道府県別・年度別の指標が出力される 例: 秋田・沖縄・東京の差異が顕著に表れる プロット・統計量・モデルパラメータ等の結果を取得
💬 読み方: nonparametric の結果は SSDSE-B-2026 の地域特性を反映。 都市圏/地方圏/観光圏でパターンが異なり、 47 県の異質性を視覚化・定量化できる。 統計データ活用コンペの実分析に直接転用可能。
1
2
3
4
5
6
7
from scipy.stats import permutation_test
def diff_median(x, y, axis=0):
    return np.median(x, axis=axis) - np.median(y, axis=axis)

res = permutation_test((a, b), diff_median, n_resamples=20000,
                       alternative='two-sided', random_state=0)
print(f'observed diff = {res.statistic:.3f}, p = {res.pvalue:.4f}')

5. 効果量と信頼区間をブートストラップで

▼ コード解説(nonparametric の Python 実装(コードブロック 16))
🎯 解説: nonparametric を SSDSE-B-2026 都道府県データで実行する Python コード。 47 都道府県 × 112 指標のパネルデータを使い、 公的統計の実値に基づいて手法を可視化する。 教育用ハンズオン教材として scipy/pandas/sklearn の標準ライブラリで完結。
📥 入力例: data/raw/SSDSE-B-2026.csv encoding=shift_jis(または cp932), skiprows=1 47 都道府県 × 5 年(2019-2023)= 235 行 数値特徴量 100+ 列(家計・人口・教育・医療)
📤 実行例: nonparametric の主要出力を確認 都道府県別・年度別の指標が出力される 例: 秋田・沖縄・東京の差異が顕著に表れる プロット・統計量・モデルパラメータ等の結果を取得
💬 読み方: nonparametric の結果は SSDSE-B-2026 の地域特性を反映。 都市圏/地方圏/観光圏でパターンが異なり、 47 県の異質性を視覚化・定量化できる。 統計データ活用コンペの実分析に直接転用可能。
▼ コード解説(nonparametric の Python 実装(コードブロック 17))
🎯 解説: nonparametric を SSDSE-B-2026 都道府県データで実行する Python コード。 47 都道府県 × 112 指標のパネルデータを使い、 公的統計の実値に基づいて手法を可視化する。 教育用ハンズオン教材として scipy/pandas/sklearn の標準ライブラリで完結。
📥 入力例: data/raw/SSDSE-B-2026.csv encoding=shift_jis(または cp932), skiprows=1 47 都道府県 × 5 年(2019-2023)= 235 行 数値特徴量 100+ 列(家計・人口・教育・医療)
📤 実行例: nonparametric の主要出力を確認 都道府県別・年度別の指標が出力される 例: 秋田・沖縄・東京の差異が顕著に表れる プロット・統計量・モデルパラメータ等の結果を取得
💬 読み方: nonparametric の結果は SSDSE-B-2026 の地域特性を反映。 都市圏/地方圏/観光圏でパターンが異なり、 47 県の異質性を視覚化・定量化できる。 統計データ活用コンペの実分析に直接転用可能。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from scipy.stats import bootstrap
import numpy as np

def cliffs_delta(x, y):
    n = len(x) * len(y)
    return (np.sum(x[:,None] > y[None,:]) - np.sum(x[:,None] < y[None,:])) / n

res = bootstrap((a, b), cliffs_delta, paired=False,
                n_resamples=5000, confidence_level=0.95)
print('Cliffs δ 95% CI =', res.confidence_interval)

🔖 キーワード索引

このページを高速ナビゲートするための索引チップです。クリックで該当セクションへ。

索引30秒結論文脈直感数式記号→意味実値計算Python実装落とし穴関連手法関連用語グループ教材

💡 30秒で分かる結論

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

このページは ノンパラメトリック手法 を解説する用語ページです。
カテゴリ:統計的手法
ジャストインタイム型データサイエンス教育の一環として、必要な時に参照し、関連概念とともに学べる構成になっています。
基準ページ:correlation.html(149KB、12セクション、SSDSE-B 実値計算)と同等以上の品質を目指しています。

🎨 直感で掴む

母集団の分布形状を仮定しない統計手法群。正規性に依存しないため外れ値や歪んだ分布に頑健。順位(ランク)に変換するか、リサンプリング(ブートストラップ等)で推論する。

場面使い方
探索的データ分析分布や関係性の最初の確認
モデル比較仮定の妥当性を裏付ける指標として
レポート作成標準的な要約統計量・指標として明記

📐 数式または定義

ノンパラメトリック手法 の中心となる数式・定義は次の通りです。

$$ \hat{F}_n(x) = \frac{1}{n}\sum_{i=1}^n \mathbf{1}(X_i \leq x) $$

🔬 数式を言葉で読み解く

🧮 実値で計算してみる(SSDSE-B-2026)

政府統計の総合窓口 e-Stat が公開する SSDSE-B-2026.csv(47都道府県×項目)を用いた具体的計算例を示します。

SSDSE-B-2026 の47都道府県「人口」と「世帯数」のスピアマン順位相関は ρ=0.998(ピアソンの 0.992 より頑健)。Wilcoxon 符号順位検定で2008年と2018年の人口差を検定。

項目値・指標
データ件数47 都道府県
対象指標人口・世帯数・就業者数など
計算結果上記説明参照

🐍 Python 実装

import pandas as pd
import numpy as np
from scipy.stats import spearmanr, wilcoxon, mannwhitneyu

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1).dropna()
x = df.iloc[:, 3]; y = df.iloc[:, 4]

rho, p_s = spearmanr(x, y)
u, p_u = mannwhitneyu(x[:23], x[23:])
print(f'Spearman ρ={rho:.3f}, p={p_s:.4g}')
print(f'Mann-Whitney U={u:.1f}, p={p_u:.4g}')

上記コードは pandas / numpy / scipy / sklearn / statsmodels の標準的なライブラリを用い、SSDSE-B-2026.csv を直接読み込んで計算します(合成データ不使用)。

⚠️ 落とし穴

🌐 関連手法・派生

🔗 関連用語(前提・並列・発展)

前提となる概念

並列・類似の概念

発展・上位の概念

📚 関連グループ教材