論文の冒頭で「n = 47(47都道府県)」と書かれる数字。 ほぼ全ての統計量の信頼性を左右する基本要素。
サンプルサイズ とは:観測したデータの個数。nが大きいほど統計量の精度が上がり、小さな効果でも有意になりやすい。
サンプルサイズ n は 「データの個数」 です。 47都道府県データなら n=47、 1000人のアンケートなら n=1000。 単純な数字ですが、 n は分析結果の精度・検出力・解釈の全てを支配する重要パラメータです。
n の効果:n が大きいほど、 (i) 推定値のばらつき(標準誤差)が小さくなる、 (ii) 信頼区間が狭くなる、 (iii) 検定の検出力(小さな効果も発見できる確率)が上がる。 $\sqrt{n}$ 則:標準誤差は $1/\sqrt{n}$ で減るので、 精度を2倍にしたければ n を4倍にする必要がある。
n が小さすぎる弊害:(i) 検定の検出力不足で「効果あり」を見逃す、 (ii) 推定値が不安定で再現できない、 (iii) 外れ値の影響を受けやすい。
n が大きすぎる弊害:(i) 実用上無視できる小さな差でも p<0.001 になり、 「有意」が氾濫する、 (ii) 計算コストが上がる。
都道府県データ n=47 は中規模。 重回帰では n ≥ 10×(説明変数の数) が経験則なので、 n=47 だと説明変数は4〜5個までが目安。 多変量分析(PCA、 クラスタリング)も実行可能だが、 結果の安定性に注意。

statsmodels.stats.power。| 用語 | 記号 | 何を測る? | 公式 |
|---|---|---|---|
| 標準偏差 | σ, s | データ1個のばらつき | √(Σ(x-x̄)²/(n-1)) |
| 標準誤差 | SE | 推定値のばらつき | σ/√n |
| 信頼区間 | CI | 真値の入る範囲 | x̄ ± z·SE |
| p値 | p | 偶然この結果が出る確率 | P(|T| ≥ |t_obs| | H₀) |
| 有意水準 | α | Type I 誤り許容率 | 通常 0.05 |
| 検出力 | 1-β | 真の差を検出する確率 | 1 - Pr(Type II error) |
| 効果量 | d, r, R² | 差の大きさ | Cohen's d = (μ₁-μ₂)/σ |
| サンプルサイズ | n | 標本数 | power analysisで決定 |
p₁ = 5%、 MDE = +20%相対(p₂ = 6%)、 α = 0.05、 検出力 = 0.80:
1日あたりのアクセス数 D 、 必要サンプル N の場合、 期間 = N/D 日。 ただし最低でも 1-2 週は曜日効果を均すため。
古典的な「事前に N を決める」方式とは別に、 ベイズ統計では「データを見ながら判断」できる手法も発展中。 Optimizely や Google Optimize で採用。
サンプルを徐々に増やして学習し、 訓練・検証スコアの推移を可視化。 「データ追加でモデルが伸びる余地があるか」を判断:
1 2 3 4 5 6 7 8 9 | from sklearn.model_selection import learning_curve import matplotlib.pyplot as plt train_sizes, train_scores, val_scores = learning_curve( estimator, X, y, train_sizes=np.linspace(0.1, 1.0, 10), cv=5, scoring='accuracy') plt.plot(train_sizes, train_scores.mean(axis=1), label='Train') plt.plot(train_sizes, val_scores.mean(axis=1), label='Validation') |
検証スコアがプラトーに達していれば、 さらにサンプルを増やす効果は薄い。
マイナークラスのサンプル数こそ重要。 「2クラス分類で1%しかないクラス」を学習するには、 そのクラスだけで最低数百は欲しい。
「次にラベル付けすべきサンプル」を選ぶ手法。 同じ精度をより少ないサンプルで達成。 医療画像など、 ラベル付けコストが高い場面で有効。
⚠️ ただし「サンプルが少ない」は本質的な限界。 どんなテクニックを使っても、 n が極端に少なければ強い結論は出せない。 結果の不確実性を明示すべき。
サンプルサイズ がデータサイエンスの体系の中でどこに位置するかを、 3つの異なる視点で可視化します。 同じ情報でも見方を変えると気付きが変わります。
🌐 統計・データサイエンス › 推測統計 › 推定 › 標本サイズ
中心の概念から放射状に、 前提・兄弟・発展形・応用先などの関係性を矢印で結びます。 横の繋がりを見るのに最適。 ノードをドラッグ、 ホイールでズーム、 クリックで遷移。
大きな円が小さな円を包含する Circle Packing 図。 「サンプルサイズ」は緑色でハイライト。
長方形を入れ子に分割した Treemap 図。 各分野の規模感を面積で比較。 「サンプルサイズ」は緑色でハイライト。
| マップ | 分かること | こんな時に見る |
|---|---|---|
| 🔗 関係マップ | 手法間の横の関係(前提→発展→応用) | 「次に何を学べばよい?」 学習順序の判断 |
| ⭕ 包含マップ | 分類体系の入れ子構造(上位⊃下位) | 「この手法はどんなジャンルに属する?」 |
| 🌳 ツリーマップ | 分野の規模比較(面積=ボリューム) | 「データサイエンス全体の俯瞰像」 |
💡 ジャストインタイム学習のヒント:3つの視点を行き来することで、 概念を多角的に理解できます。 包含マップやツリーマップはズーム/ドリルダウンで大分類から細部まで探索できます。
サンプルサイズと検出力に関する主要概念チップ集。
SSDSE-B-2026 は 47都道府県 = n=47 の典型的な「小〜中規模パネル」。 サンプルサイズに関連する具体計算を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from statsmodels.stats.power import TTestIndPower analysis = TTestIndPower() # 必要なサンプルサイズを計算 n_required = analysis.solve_power( effect_size=0.5, # 中程度の効果量(Cohen's d) alpha=0.05, power=0.80, ratio=1.0 # 2群が同じサイズ ) print(f'各群に必要なサンプルサイズ: {n_required:.0f}') # 与えられたnでの検出力 power = analysis.solve_power( effect_size=0.3, n_obs=50, alpha=0.05) print(f'検出力: {power:.3f}') |
| 分析の種類 | 最低 n | 推奨 n |
|---|---|---|
| 単回帰 | 30 | 100+ |
| 重回帰(説明変数 k) | 10k + 10 | 20k + 50 |
| 因子分析 | 100 | 200-300 |
| クラスタリング | 2^k × 10 | 数百 |
| 機械学習(教師あり) | 10 × 特徴数 | 数千〜数万 |
n が小さいと、 真に差があっても見つけられない(false negative)。 研究設計時に必ず power analysis を。
大きすぎる n は意味のない小さな差も「有意」に。 効果量で実用的意義を判断。
サンプルが大きいほど精度は上がるが、 コストも増える。 √n でしか改善しないため、 設計時に慎重に。
多くの検定を行う場合、 必要な n は劇的に増えます(補正後の α が小さくなるため)。