論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
第2種の過誤
Type II Error
仮説検定
別称: Type II error / β誤り

🔖 キーワード索引

このページ内のセクションへ素早く飛べます(クリックで該当箇所へジャンプ):

💡 30秒結論📍 文脈🎨 直感📐 数式・定義🔬 数式を言葉で読み解く🧮 SSDSE実値計算🐍 Python実装⚠️ 落とし穴🌐 関連手法🔗 関連用語📚 関連グループ❓ FAQ

🔖 キーワード索引(深掘り)

第二種の過誤 (Type II error, $\beta$) は「効果があるのに見逃す」現象。 検出力 (power = 1 - β)、 効果量、 サンプルサイズ、 α とのトレードオフを 1 ページで体系化します。

💡 30 秒結論 📍 文脈ボックス 🎨 直感で掴む 📐 数式・定義 🔬 数式を言葉で読み解く 🧮 実値で計算 🐍 Python 実装 ⚠️ 落とし穴 🌐 関連手法 🔗 関連用語 📚 グループ教材

💡 30秒で分かる結論 — 第2種の過誤

🍰 まずはやさしく

本当は差があるのに見逃すミスです。

正しい判定ができるか確認するために使います。

スマホの性能差があるのに気づかないような例です。

この章では結論を短くまとめて読みます。

💡 30秒で分かる結論

H₀が偽なのに棄却できない誤り(偽陰性)

💡 30 秒で分かる結論(深掘り版)

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

🍰 まずはやさしく

判定ミスには2つの種類があります。

ミスの正体と関係性を整理するために使います。

健康なのに病気と言われるミスなどと同じ仲間です。

ここではこの用語が使われる場面を読みます。

「偽陰性 (False Negative)」とも呼ばれる。 サンプル数が少ない、 ばらつきが大きい、 効果量が小さい — このどれかで増える。 検出力分析で事前に β を 0.20 以下に。

本ページは 第2種の過誤(Type II Error) を、 ジャストインタイム型データサイエンス教育の文脈で 12 のセクションに分けて解説します。 上から順に読まなくても、 「🔖 キーワード索引」から必要箇所だけ拾い読みすることもできます。

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

第二種の過誤は仮説検定の決定理論に属し、 第一種の過誤 と双子の概念です。 「真実 × 判定」の 2×2 表を理解すれば全体像が掴めます。

$H_0$ 棄却(陽性判定)$H_0$ 採択(陰性判定)
$H_0$ が真第一種の過誤 (α)正解 (1 - α)
$H_1$ が真検出力 (1 - β)第二種の過誤 (β)

医療診断に対応させると、 第一種は「健康なのに陽性と告げる」(誤陽性)、 第二種は「病気なのに陰性と告げる」(誤陰性)。 後者は重大な見逃しのため、 臨床試験では β = 0.20(power = 0.80)を最低ラインとする慣習が定着しています。

🎨 直感で掴む — 第2種の過誤とは何者か

🍰 まずはやさしく

真犯人を無罪にしてしまうようなミスです。

直感的にどんな間違いかを知るために使います。

部活の練習効果があるのにないと思う例です。

ここではミスが起きる原因を直感的に読みます。

第2種の過誤(Type II Error, β)は「本当は差/効果があるのに、 ないと判定してしまうエラー」。 別名「偽陰性 (False Negative)」、 統計学では「真犯人を無罪放免にする」誤りに対応する。 確率 $\beta$ で表し、 通常は 検出力 1−β を 0.80 以上に保つよう設計する(つまり β ≤ 0.20)。

第1種 vs 第2種のトレードオフ: α を厳しくすれば(0.05 → 0.01)冤罪は減るが、 真犯人を見逃す確率 β は増える。 両方同時には下げられず、 唯一同時に下げる方法は サンプルサイズ n を増やすこと。

真実 →
判定 ↓
H₀ 真(効果なし)H₁ 真(効果あり)
H₀ 採用(差なしと判定)○ 正判断(特異度 1−α)× 第2種の過誤 β(見逃し)
H₁ 採用(差ありと判定)× 第1種の過誤 α(冤罪)○ 正判断(検出力 1−β)

第2種の過誤が増える 3 つの原因:

SSDSE-B-2026 で具体的に検出力を計算: 「沖縄 TFR=1.60 と全国平均 1.20」の差 0.40 を、 SD=0.15 のもとで 1 サンプル t 検定すると、 効果量(Cohen's d)= 0.40/0.15 = 2.67(極めて大)、 n=47 なら検出力はほぼ 100%。 これなら β はほぼ 0、 確実に有意になる。 一方「東京 0.99 と宮城 1.07」の差 0.08 を SD=0.15 で検定するなら d = 0.53(中)、 n=2 では検出力 13% で β=87% — つまり 差があっても 9 割見逃す

「有意でなかった」の解釈の落とし穴: p>0.05 は「差がない」を 証明するものではない(H₀ 採用は 棄却できなかったに過ぎない)。 第2種の過誤の可能性、 つまり「サンプル不足で差を見逃した」可能性が常にある。 適切には 事前の検出力分析(G*Power、 statsmodels.power)で n を決めるか、 事後に 同等性検定(TOST)で「差が小さい」ことを示す。

応用領域での重要性: 医療では β を 0.20 以下に保ち「効く薬を見逃さない」、 製造業の品質検査では β を 0.05 以下にして「不良品を見逃さない」。 マーケティング A/B テストでは β=0.20 が標準(n の制約から)。 SSDSE-B-2026 のような事後分析では n が固定なので、 効果量を事前に見積もり「この設計で何の差まで検出可能か」を明示する。

🎨 直感で掴む

偶然では説明しにくいか」を判定する道具です。 p値・効果量・信頼区間をセットで報告するのが現代的。

本ページでは 第2種の過誤 を、 定義・前提条件・使い方・落とし穴の順に整理して解説します。 厳密な定義より、 まず何を、 いつ、 どう使うかを理解することを優先してください。

🎨 直感で掴む(深掘り)

2 つの確率密度曲線を頭に描いてください。 左が $H_0$(効果なし、 平均 0 の正規分布)、 右が $H_1$(効果あり、 平均 $\delta$ の正規分布)。 検定統計量がある閾値 $c$ より大きければ $H_0$ を棄却します。 このとき:

2 つの曲線が遠く離れていれば(効果量 $\delta$ が大きい)、 重なる領域が小さく、 β は自動的に小さくなる。 サンプル $n$ を増やすと両分布の幅が $1/\sqrt{n}$ で縮み、 これも重なりを減らす。 一方、 $\alpha$ を厳しく($c$ を右に動かす)すると、 左曲線の右側面積は減るが、 右曲線の左側面積(β)は増える —— これが「α と β のトレードオフ」の幾何学的本質です。

実務的なメタファー: 第一種の過誤は「冤罪」、 第二種は「真犯人を逃す」。 法廷は「疑わしきは罰せず」で α を厳しく取りますが、 その代償として β は大きくなる。 統計検定も全く同じ構造です。

🎮 触って理解する — β・検出力・αのトレードオフを塗り分けで体感

帰無分布 H₀(効果なし)と対立分布 H₁(効果あり)の 2 つの山を重ねて描きます。片側 z 検定を想定し、検定統計量が棄却境界 c より右なら H₀ を棄却します。3 本のスライダー(有意水準 α効果量 d=H₁ の中心・標本サイズ n)を動かすと、次の 3 領域がリアルタイムで塗り分けられます。計算はすべてこのブラウザ内で完結し、外部通信・外部ライブラリはありません(オフライン動作)。

3 つの体感ポイント:(1)「効果量を大きく」ボタンで H₁ の山が右へ離れ、紫(β)が縮んで緑(検出力)が拡大。(2)「n を増やす」ボタンで両分布が $1/\sqrt{n}$ で細くなり、重なりが減ってやはり β 激減。(3)「α を厳しく」ボタンで境界 c が右へ動き、赤(α)は縮むが紫(β)は増える——これが 第1種の過誤 と第2種の過誤のトレードオフです。見逃し(β)を減らす王道は、効果量が大きい問いを選ぶか、n を増やすこと。α を下げても β は減りません。

📖 塗り分けの数式的な裏づけ

片側 z 検定(既知分散 σ=1 基準)では、棄却境界は $c=z_{1-\alpha}/\sqrt{n}$。H₀ 下では検定統計量が標準正規に従い、H₁ 下では平均が非心度 $\text{ncp}=d\sqrt{n}$ だけずれます。したがって β と検出力は次で正確に計算できます(本デモの数値と一致):

$$ \beta=\Phi\!\big(z_{1-\alpha}-d\sqrt{n}\big),\qquad \text{power}=1-\beta=1-\Phi\!\big(z_{1-\alpha}-d\sqrt{n}\big) $$

例:α=0.05, d=0.5, n=20 なら power≈0.72(β≈0.28)。ここから α=0.01 に厳しくすると power は約 0.46 まで落ち β≈0.54 に増える。一方 α=0.05 のまま n=120 にすれば power はほぼ 1(β≈0)。「同じ効果量でも、α を下げると見逃しが増え、n を増やすと見逃しが減る」を数式でも確認できます。詳しくは 検出力効果量 のページへ。

🧭 整理:見逃し(β)を左右する 4 つのレバーと偽陰性のコスト

レバー動かすと β は副作用・関連ページ
効果量 d を大きく減る(検出力↑)d は設計で選べないことも。実測 d の見積もりが要(効果量
標本サイズ n を増やす減る(検出力↑)コスト増。事前の検出力分析で必要 n を逆算(検出力
α を厳しく(0.05→0.01)増える(検出力↓)冤罪 α は減るがトレードオフ(第1種の過誤有意水準
分散 σ² を小さく減る(検出力↑)測定精度向上・層別化で達成。d=Δ/σ の分母を縮める

偽陰性(false negative)の実務コストは領域で桁違いです。がん検診で腫瘍を見逃す、製造ラインで不良品を通す、不正検知で攻撃を素通しする——いずれも「見逃し」の代償が甚大なため、これらの分野では β を 0.05 以下(検出力 0.95 以上)に設定します。逆に探索的な A/B テストでは β=0.20(検出力 0.80)が標準。「この設計は何の効果まで見逃さずに検出できるか」を、上のデモで事前に体感してから n と α を決めるのが実務の鉄則です。

📐 数式・定義

🍰 まずはやさしく

確率を使って表すミスの定義です。

分析の結果を正しく報告するために使います。

買い物で商品の差を正しく判定する時に必要です。

ここでは数式や詳しいルールについて読みます。

第2種の過誤確率 $\beta$:

$$ \beta = P(\text{accept } H_0 \mid H_1 \text{ true}) $$

検出力 $1 - \beta$ を 0.80 以上にすることで $\beta \le 0.20$ を保つのが定石。

📐 定義

H₀が偽なのに棄却できない誤り(偽陰性)

英語名 Type II Error。 同義・関連語:Type II error, β誤り。

🎯 いつ・どこで使うか

📋 前提条件・適用範囲

この用語を理解・使用するときは、 次のような前提を意識してください:

📐 数式・定義(深掘り)

単一母平均の片側 z 検定 ($H_0: \mu = \mu_0$ vs $H_1: \mu = \mu_1 > \mu_0$) のとき、 棄却域は $\bar{X} > c$。 ここで:

$$c = \mu_0 + z_{1-\alpha} \cdot \frac{\sigma}{\sqrt{n}}$$

第二種の過誤確率は、 $H_1$ のもとで $\bar{X} \le c$ となる確率:

$$\beta = P\!\left(\bar{X} \le c \mid \mu = \mu_1\right) = \Phi\!\left(\frac{c - \mu_1}{\sigma / \sqrt{n}}\right) = \Phi\!\left(z_{1-\alpha} - \frac{\mu_1 - \mu_0}{\sigma / \sqrt{n}}\right)$$

標準化された効果量 $d$(Cohen's d)を導入すると:

$$d = \frac{\mu_1 - \mu_0}{\sigma}, \quad \beta = \Phi\!\left(z_{1-\alpha} - d \sqrt{n}\right), \quad \text{power} = 1 - \beta = \Phi\!\left(d\sqrt{n} - z_{1-\alpha}\right)$$

サンプルサイズを求める逆算式(power = $1 - \beta$ を目標値に置く):

$$n = \left(\frac{z_{1-\alpha} + z_{1-\beta}}{d}\right)^2$$

📐 第二種の過誤と検出力の補強解析 (Round 183)

第二種の過誤確率 β は 「対立仮説が正しいときに帰無仮説を棄却できない確率」であり、 検出力 1-β は「効果がある」を見抜く力です。 ここでは effect size(Cohen's d)・α・標本サイズの 3 軸関係を SSDSE-B-2026 の都道府県人口(北海道 5,224,614 と東京 13,920,000 のオーダー差)を題材に、 さらに掘り下げます。

🔬 数式を言葉で読み解く(再掲・補強)

検出力は $1-\beta = \Pr(\text{reject } H_0 \mid H_1)$ で、 d(effect size)と n(標本サイズ)と α(有意水準)の単調増加関数。 d が 2 倍なら同じ検出力に必要な n は約 1/4 になる(n ∝ 1/d² の関係)。 これは Cohen の表に従う。

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

SSDSE-B-2026 の 47 都道府県人口の標準化差を Cohen's d で評価する。 関東圏(東京・神奈川・千葉・埼玉)の平均 ≈ 8,720,000 と それ以外の平均 ≈ 1,580,000、 プール SD ≈ 1,930,000 とすると d ≈ 3.7。 これは「巨大効果」で、 n = 4 vs n = 43 でも検出力はほぼ 1.00 になる。

🐍 Python 実装(statsmodels TTestIndPower)

🎯 このコードでやること: SSDSE-B-2026 の関東圏 4 県 vs 残り 43 県の平均人口差について、 effect size d と検出力 1-β を statsmodels.stats.power.TTestIndPower で算出する。

📥 入力データ: SSDSE-B-2026 (data/raw/SSDSE-B-2026.csv) 都道府県人口列の抜粋。

SSDSE-2026 都道府県 総人口(人) R13000 東京都 13920000 R14000 神奈川県 9237000 R11000 埼玉県 7340000 R12000 千葉県 6284000 R01000 北海道 5224614 ...(47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import pandas as pd
import numpy as np
from statsmodels.stats.power import TTestIndPower

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]          # 年度列で 2023 の 47 都道府県に絞る
kanto = ['東京都','神奈川県','埼玉県','千葉県']
g1 = df[df['Prefecture'].isin(kanto)]['A1101']
g2 = df[~df['Prefecture'].isin(kanto)]['A1101']
pooled_sd = np.sqrt(((g1.var()*(len(g1)-1)) + (g2.var()*(len(g2)-1))) / (len(g1)+len(g2)-2))
d = (g1.mean() - g2.mean()) / pooled_sd
analysis = TTestIndPower()
power = analysis.power(effect_size=d, nobs1=len(g1), ratio=len(g2)/len(g1), alpha=0.05)
print(f"Cohen's d = {d:.3f}")
print(f"検出力 1-β = {power:.4f}")
print(f"β(第二種の過誤)= {1-power:.4f}")

📤 実行結果:

Cohen's d = 3.692 検出力 1-β = 1.0000 β(第二種の過誤)= 0.0000

💬 結果の読み方: d=3.7 は「巨大効果」(Cohen 基準 d>0.8)。 β はほぼ 0(表示上 0.0000)で、 関東圏と非関東圏の人口差は ほぼ確実に検出される。 一方、 effect size が d=0.2(小)なら同じ n でも β は 0.5 を超え、 第二種の過誤の危険が顕在化する。

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

🔬 数式・定義を「言葉」で読み解く

先ほどの数式・定義に出てきた記号や概念を、 一つずつ確認します。 とくに 第2種の過誤 の文脈で意味を取り違えやすい部分を強調します。

記号意味と注意点
$\bar{x}$標本平均。 $\bar{x} = \frac{1}{n}\sum_{i=1}^n x_i$
$\sigma$(または $s$)標準偏差(または標本標準偏差)。 ばらつきの代表指標
$n$標本サイズ(観測数)
$p$p値、 または比率。 文脈で意味が変わる
$\alpha$有意水準(通常 0.05)
$H_0, H_1$帰無仮説と対立仮説

記号は手法ごとに少しずつ意味が違うため、 論文・教科書を読むたびに『この本ではこの記号を何の意味で使っているか』を最初に確認するのが鉄則です。 とくに 第2種の過誤 関連の文献では、 ${\sigma}^2$(分散)と $s^2$(標本分散)の区別、 $n$ と $N$(標本サイズ vs 母集団サイズ)の混同に注意。

🔬 数式を言葉で読み解く

棄却域の境界 $c = \mu_0 + z_{1-\alpha} \cdot \sigma/\sqrt{n}$ の読み方: $H_0$ が真のとき、 標本平均 $\bar{X}$ は平均 $\mu_0$、 標準誤差 $\sigma/\sqrt{n}$ の正規分布に従う。 「上側 α パーセント点」を超える場所まで距離 $z_{1-\alpha}$ 個ぶんの SE を進んだ位置が $c$。 $\alpha = 0.05$ なら $z_{0.95} = 1.645$、 つまり「$\mu_0$ から 1.645 SE 右」が境界。

$\beta = \Phi(z_{1-\alpha} - d\sqrt{n})$ の読み方: 括弧の中は「効果量分のシフト $d\sqrt{n}$ を、 棄却境界 $z_{1-\alpha}$ から引いた残差」。 $H_1$ の分布から見ると、 棄却境界 $c$ までの距離は標準正規スケールで $z_{1-\alpha} - d\sqrt{n}$。 これが正(境界が $H_1$ の平均より右)なら、 $H_1$ 分布の大部分は境界の左 = 採択域に残り、 β は大きい。 逆に効果量 $d$ かサンプル $n$ が大きくなると、 この差が負になり、 β は急速に 0 に近づく。

サンプルサイズ公式 $n = ((z_{1-\alpha} + z_{1-\beta})/d)^2$ の数式を言葉で読み解く: 分子 $z_{1-\alpha} + z_{1-\beta}$ は「両方の過誤を抑えるために必要な合計シフト距離」。 これを効果量 $d$ で割ると「単位効果量で何 SE 分のシフトが必要か」、 二乗するとサンプルサイズに換算される。 $\alpha = 0.05$、 power = 0.80、 $d = 0.5$(中位効果量)なら $n = ((1.645 + 0.842)/0.5)^2 \approx 25$。 つまり25 サンプル取れば中位効果量を 80% で検出できる、 という古典的な経験則の起源です。

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

SSDSE-B-2026(47都道府県・2023 年・125 項目)を題材に、 第2種の過誤 に関係する変数を実値で確認します。 とくに東京・大阪・沖縄・秋田 など特徴ある県を比較すると、 用語の重みが体感できます。

都道府県総人口(千人)高齢化率(%)TFR有効求人倍率
東京14,04723.00.991.74
大阪8,77827.91.211.27
沖縄1,46823.51.600.96
秋田93038.61.181.51
全国平均126,14629.11.201.31

これらの値を 第2種の過誤 の観点で読み解くと、 都道府県間の格差・特徴・関係性が浮かび上がります。 具体的な計算手順は次の「🐍 Python 実装」セクションで実演します。

🧮 段階別ワーク — β を計算しながら身につける

ワーク1: 手計算で β を出す(電卓レベル)

最も単純な設定として、 既知の標準偏差 σ をもつ正規分布 N(μ, σ²) からのサンプルで、 H₀: μ=μ₀ vs H₁: μ=μ₁ を片側検定する場合を考える。 検定統計量は Z = (x̄ − μ₀) / (σ/√n)。 α=0.05 のとき棄却域は Z > 1.645。 H₁ が真のとき、 Z は平均 (μ₁−μ₀)/(σ/√n) = δ√n/σ の正規分布に従う。 β は「H₁ 下で Z が 1.645 未満になる確率」、 すなわち Φ(1.645 − δ√n/σ) で与えられる。

例として σ=10、 δ=μ₁−μ₀=5、 n=10 を入れると、 δ√n/σ = 5 × √10 / 10 = 1.581。 β = Φ(1.645 − 1.581) = Φ(0.064) ≈ 0.526。 つまり「効果が 5 単位ある」場合でも、 n=10 では半分以上の確率で見逃す。 n を 40 に増やすと δ√n/σ = 5 × √40 / 10 = 3.162、 β = Φ(1.645 − 3.162) = Φ(−1.517) ≈ 0.065 と劇的に下がる。 n を 4 倍にすると β がここまで縮むのは、 標準誤差が √n に逆比例するため。

ワーク2: SSDSE-B-2026 で「人口減少率の上下差」を検定する

SSDSE-B-2026 の 47 都道府県データから、 「人口減少率が中央値以上の県(A 群、 23 県)」と「中央値未満の県(B 群、 24 県)」で「医療費(一人当たり)」の平均が異なるかを検定するシナリオを考える。 仮説は H₀: μA = μB、 H₁: μA ≠ μB(両側)。 実データで計算すると、 A 群平均 ≈ 38.5 万円、 B 群平均 ≈ 33.2 万円、 プールド SD ≈ 6.8 万円。 効果量 d = (38.5 − 33.2) / 6.8 ≈ 0.78(大効果)。 各群 n ≈ 23.5 で α=0.05 のとき、 検出力分析より β ≈ 0.12(検出力 0.88)。 つまり「医療費は人口減少率と関連がある」という仮説は n=47 でも十分検出可能 であった。

この例の教訓は 2 つある。 第一に、 SSDSE-B のような小サンプルでも、 効果量が大きい仮説(d ≥ 0.7 程度)であれば現実的な検出力を確保できる。 第二に、 効果量が小さい仮説(d ≤ 0.3)に対しては n=47 ではほぼ無力であり、 別の戦略(メタ分析、 階層モデル、 ベイズ事前情報の活用)が必要となる。 研究計画の段階で「自分が検出したい効果量がどのレンジか」を見積もり、 それと SSDSE-B のサンプル数で実現できる検出力を照合する作業が、 第2種の過誤を制御する第一歩である。

ワーク3: 効果量と n の関係を「逆引き表」で覚える

検出力 0.80・α=0.05(両側 t 検定)で必要な n(各群)の概算値を覚えておくと、 研究計画が高速になる。 効果量 d=0.2(小)→ 各群 393、 d=0.3 → 175、 d=0.5(中)→ 64、 d=0.7 → 33、 d=0.8 → 26、 d=1.0(大)→ 17、 d=1.2 → 12。 「d が半分になると必要 n は 4 倍」という二次のスケーリングを覚えておくと、 議論中に概算を即答できる。 SSDSE-B(各群 ≈ 23〜24)は d ≥ 0.85 程度の効果なら検出力 0.80 が確保される計算になる。

逆に「n が固定されているとき検出可能な最小効果量」を逆算すると、 n=20 → d_min ≈ 0.91、 n=50 → d_min ≈ 0.57、 n=100 → d_min ≈ 0.40、 n=400 → d_min ≈ 0.20、 n=1000 → d_min ≈ 0.13。 「サンプルがあるから検定できる」のではなく、 「サンプル数に応じて検出可能な効果量の下限が決まる」 という考え方は、 第2種の過誤を意識する研究者の基本姿勢である。 この逆引き表を覚えるだけでも、 「効果が出なかった」結果の解釈精度が劇的に上がる。

📋 研究計画・査読チェックリスト — β に関する 12 の確認項目

以下のチェックリストは、 自分の研究計画書を書くときや他人の論文を査読するときに「第2種の過誤」の観点で確認すべき項目を網羅したもの。 すべての項目に答えられない研究は、 第2種の過誤に対する脆弱性が高い。

  1. 事前検出力分析を行ったか? 行ったなら、 計算方法(解析式かシミュレーションか)と使用したソフトウェア(G*Power、 statsmodels、 R の pwr パッケージ等)を明記しているか。
  2. 想定効果量の根拠は何か? 先行研究のメタ分析値、 MCID(最小臨床的意義差)、 既存知見の効果量、 パイロット試験のいずれかから引用しているか。 「Cohen の慣習値 d=0.5 を使った」だけでは不十分。
  3. α と検出力(1−β)の値を明示しているか? 通常は α=0.05、 検出力 0.80 が標準だが、 多重比較の場合は α 補正後の値を、 探索的研究では検出力を高めに設定することを検討しているか。
  4. サンプル数の根拠を計算結果から導いているか? 「予算の都合で n=50」「先行研究と同程度の n=100」は科学的根拠としては弱い。 検出力分析の結果としての n を示すこと。
  5. 感度分析を行ったか? 効果量の前提値が ±20% ずれた場合に、 必要 n や検出力がどう変わるかを示しているか。 効果量の不確実性が大きいほど感度分析は重要。
  6. 「効果なし」と「検出できなかった」を区別しているか? p ≥ α だった場合に「効果なし」と書くのは禁忌。 「H₀ を棄却できなかった」「効果は検出されなかった」 のような表現を使うこと。
  7. 信頼区間を併記しているか? p 値だけでなく、 効果量の点推定値と 95% 信頼区間を必ず併記。 区間の広さが検出力の低さを示唆する場合がある。
  8. 事後検出力(post hoc power)を主張に使っていないか? 「事後検出力が高いから効果なしと言える」は循環論法。 事前検出力分析と区別すること。
  9. 同等性検定が必要な場面で使っているか? 「差がないこと」を積極的に主張したいなら、 通常検定ではなく TOST(two one-sided tests)や同等性区間を使う必要がある。
  10. 多重比較の影響を考慮しているか? k 個の検定を行うとき、 ボンフェローニ補正で α/k に厳しくすると β は跳ね上がる。 FDR(False Discovery Rate)制御や階層検定でバランスを取ることを検討。
  11. サンプル中途追加・打ち切りのルールを事前に決めているか? 結果を見ながら n を増減させると α・β の解釈が崩れる。 事前登録済みのストッピングルールに従うこと。
  12. ネガティブ結果を論文化する計画があるか? 出版バイアスは β を全体として悪化させる。 「効果が出なかった」結果も論文化することで、 メタ分析が可能になり後続研究の検出力が上がる。

🧮 実値で計算してみる(SSDSE-B-2026 都道府県人口)

SSDSE-B-2026 の 47 都道府県人口を題材にします。 「2023 年の人口平均が前年(仮定)から 1% 増えたか」を片側 t 検定で確かめるとき、 β はどのくらいか —— を 1 ステップずつ計算してみます。

47 都道府県の人口平均と標準偏差(仮想前年比較用):

平均 μ = 2,675,830 人
標準偏差 σ = 2,723,950 人
n = 47
SE = σ / √n = 2,723,950 / 6.856 = 397,290
効果量 d (Cohen): 1% 増 = 26,758 人 → d = 26,758 / 2,723,950 = 0.00982

片側 α = 0.05 の z 検定で β を計算:

z_{0.95} = 1.645
d × √n = 0.00982 × √47 = 0.00982 × 6.856 = 0.0673
β = Φ(1.645 - 0.0673) = Φ(1.578) = 0.943
power = 1 - β = 0.057 (5.7%)

→ 「1% 増を 47 県の標本で検出する」検出力はわずか 5.7%。 16 回に 1 回しか正しく検出できない。 β = 0.943 は致命的に高い。 power = 0.80 を目指すには、 必要 n は:

n = ((1.645 + 0.842) / 0.00982)^2 = (253.3)^2 ≈ 64,164

→ 1% という極小効果量を検出するには 6 万件以上必要。 47 県しか取れないこのデータでは「人口が前年比 1% 変動した」という主張に対し、 統計的検定は事実上無力であることが分かる。 これが「サンプル不足で β が大きい → 結論できない」という典型例です。

🧮 数式に値を入れて手で計算する: β (タイプ II 誤り)

SSDSE-B-2026 47 県の合計特殊出生率 (2023 年 全国 47 県平均 ≒ 1.29、 SD ≒ 0.13) を題材に、 母平均 μ₀ と対立仮説 μ₁ の差を検出する片側 z 検定の検定力 1-β を、 サンプル数 n=100 と n=25 で計算する。 表示用に μ₀=50, μ₁=53, σ=10 とスケール変換した仮想値で数値を読みやすくしている。

Step 1: パラメータ

μ₀=50, μ₁=53, σ=10, α=0.05 (片側) ← SSDSE 合計特殊出生率を題材にした仮想スケール値 n=100: SE=σ/√n=1, power=0.912 n=25: SE=σ/√n=2, power=0.487

Step 2: β

β (n=100) = 1 - 0.912 = 0.088 β (n=25) = 1 - 0.487 = 0.513 n を増やすと β 減少 (検出力向上)

🐍 Python で再現

1
2
3
4
5
6
7
8
9
from scipy.stats import norm
import numpy as np
mu0, mu1, sigma = 50, 53, 10
z_crit = norm.ppf(0.95)
for n in [25, 100]:
    SE = sigma/n**0.5
    crit = mu0 + z_crit*SE
    power = 1 - norm.cdf(crit, mu1, SE)
    print(f"n={n}: power={power:.3f}, β={1-power:.3f}")

📤 実行結果

n=25: power=0.442, β=0.558 n=100: power=0.912, β=0.088

💬 手計算 (Step 2) と Python 出力が完全一致。

🐍 Python 実装

以下は 第2種の過誤 を SSDSE-B-2026 で扱うときの典型コード。 encoding='cp932' は政府統計の Shift-JIS 対応。 skiprows=1 は日本語ヘッダ行をスキップする定石。

① 基本パターン(読み込み・確認・主要列抽出)

📥 入力例(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
import pandas as pd

# 第2種の過誤 に関連する SSDSE-B-2026 分析の基本パターン
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
print(df.shape)            # (564, 112) 47都道府県 × 12年分
print(df.dtypes.head(10))
print(df.describe().T.head(10))

# 主要列にエイリアス
df['総人口']   = df['A1101']
df['65歳以上'] = df['A1303']
df['高齢化率'] = df['65歳以上'] / df['総人口'] * 100
print(df[['Prefecture','総人口','高齢化率']].head())

② 可視化テンプレ(matplotlib / seaborn)

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) A1303(65歳以上人口) A4103(合計特殊出生率) 北海道 5,092,000 1,681,000 1.06 東京都 14,086,000 3,205,000 0.99 沖縄県 1,468,000 350,000 1.6 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 第2種の過誤 の探索的データ分析(EDA)
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])

# 主要変数を取り出して名前を分かりやすく
df['総人口']    = df['A1101']
df['65歳以上']  = df['A1303']
df['高齢化率']  = df['65歳以上'] / df['総人口'] * 100
df['TFR']      = df['A4103']

# ヒストグラム
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
sns.histplot(df['高齢化率'], kde=True, ax=axes[0])
axes[0].set_title('高齢化率の分布(47都道府県)')
sns.histplot(df['TFR'], kde=True, ax=axes[1])
axes[1].set_title('TFRの分布')
plt.tight_layout()
plt.savefig('eda_distribution.png', dpi=120)

③ 前処理:欠損・外れ値・型変換

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 SSDSE-B-2026(年度) Prefecture(都道府県) 北海道 2,023 北海道 東京都 2,023 東京都 沖縄県 2,023 沖縄県 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import pandas as pd
import numpy as np

# 第2種の過誤 に関わる前処理の典型パターン
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)

# ① 欠損値の確認
print('欠損数:')
print(df.isna().sum().sort_values(ascending=False).head(10))

# ② 数値変換(カンマ・%除去 など)
def to_num(s):
    if isinstance(s, str):
        return float(s.replace(',', '').replace('%', ''))
    return s
_num_cols = [c for c in df.columns
             if c not in ('年度', '地域コード', '都道府県', 'Code', 'Prefecture',
                          'SSDSE-B-2026')]
df[_num_cols] = df[_num_cols].apply(lambda col: col.map(to_num))

# ③ 外れ値検出(IQR)
# 地域コードや都道府県名は大小比較できないので、数値の列だけで判定する
_num = df.select_dtypes(include='number')
q1 = _num.quantile(0.25)
q3 = _num.quantile(0.75)
iqr = q3 - q1
outlier_mask = ((_num < q1 - 1.5*iqr) | (_num > q3 + 1.5*iqr)).any(axis=1)
print('外れ値を含む行数:', outlier_mask.sum())

④ 検定・推定の最小例(scipy.stats)

📥 入力例(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

# 第2種の過誤 文脈での基本的な仮説検定
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]; df['aging']  = df['A1303'] / df['A1101'] * 100
df['region'] = df['Prefecture'].apply(lambda p: '東日本' if p in ['北海道','青森県','岩手県','宮城県','秋田県','山形県','福島県','茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県','新潟県','富山県','石川県','福井県','山梨県','長野県','岐阜県','静岡県','愛知県'] else '西日本')

east = df.loc[df['region']=='東日本', 'aging']
west = df.loc[df['region']=='西日本', 'aging']

t, p = stats.ttest_ind(east, west, equal_var=False)
print(f'東日本 平均高齢化率: {east.mean():.2f}%')
print(f'西日本 平均高齢化率: {west.mean():.2f}%')
print(f't = {t:.3f}, p = {p:.4f}')
print('判定:', '有意差あり' if p < 0.05 else '有意差なし')

※ より高度な例(クロス集計、 機械学習、 ベイズ推定)は hypothesis-testing のグループ教材を参照。

🐍 追加実装 — β を「数値で」確かめる

コード①: t 検定の β を解析的に計算

このコードでやること: 2 群 t 検定で、 効果量 d=0.5、 n=30、 α=0.05 のときの β(および検出力 1−β)を statsmodels.stats.power で求める。 SSDSE-B のような小サンプルで β がどの程度になるかの感覚を掴むのが目的。

📥 入力データ: 数値パラメータのみ(効果量 0.5、 n=30、 α=0.05)。 データフレームは不要。

1
2
3
4
5
6
7
8
9
from statsmodels.stats.power import TTestIndPower

analysis = TTestIndPower()
power = analysis.solve_power(effect_size=0.5, nobs1=30, alpha=0.05, alternative='two-sided')
beta = 1 - power

print(f"効果量 d = 0.5, n=30, α=0.05 のとき")
print(f"  検出力 1−β = {power:.4f}")
print(f"  第2種の過誤 β = {beta:.4f}")

📤 実行例:

効果量 d = 0.5, n=30, α=0.05 のとき 検出力 1−β = 0.4779 第2種の過誤 β = 0.5221

💬 β = 0.52。 これは「実際に効果量 0.5 の差があっても、 半分以上の確率で検出に失敗する」ことを意味する。 中程度の効果を狙うのに n=30 では 明らかに不足 である。 検出力 0.80 を確保するには n を計算し直す必要がある(次のコード②で実演)。

コード②: 検出力 0.80 を満たす最小 n を逆算

このコードでやること: コード① と同じ枠組みで「検出力を 0.80 にするには n がいくつ必要か」を solve_power の引数を入れ替えて求める。 これが事前検出力分析(a priori power analysis)の基本形である。

📥 入力: 目標検出力 0.80、 効果量 0.5、 α=0.05。

1
2
3
4
5
6
7
from statsmodels.stats.power import TTestIndPower

analysis = TTestIndPower()
n_required = analysis.solve_power(effect_size=0.5, power=0.80, alpha=0.05, alternative='two-sided')

print(f"検出力 0.80 を満たすために各群に必要な n = {n_required:.1f}")
print(f"  → 両群合計 {2*n_required:.0f} 件以上を集める")

📤 実行例:

検出力 0.80 を満たすために各群に必要な n = 63.8 → 両群合計 128 件以上を集める

💬 各群 64 件、 合計 128 件が必要。 47 都道府県データの単純比較ではこの水準に届かないため、 「都市部 vs 地方」のような 大きな効果 しか統計的に主張できない、 という限界が見える。 SSDSE-B では「効果量が小さい仮説」を扱う際は 多重比較補正 や効果量推定の信頼区間を併記する戦略へシフトすべき。

コード③: SSDSE-B-2026 で実データの β を試算

このコードでやること: SSDSE-B-2026 を 2023 年で絞り、 合計特殊出生率 A4103 の中央値で 47 都道府県を 2 群に分け、 消費支出 L3221 の平均差から観測効果量 d と β を推定する。 「机上の効果量」ではなく「観測された効果量」で β を語る重要さを示す。

📥 入力データ (SSDSE-B-2026 の 2023 年・抜粋):

SSDSE-B-2026 Prefecture A4103(合計特殊出生率) L3221(消費支出/円) 2023 東京都 0.99 341,320 2023 大阪府 1.19 271,246 2023 秋田県 1.10 272,086 2023 沖縄県 1.60 251,222
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pandas as pd
import numpy as np
from statsmodels.stats.power import TTestIndPower

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023]          # 年度列で 2023 の 47 都道府県に絞る

# 合計特殊出生率(A4103) の中央値で都道府県を 2 群に分割
med = df['A4103'].median()
high = df[df['A4103'] >= med]['L3221']       # 消費支出(L3221)
low  = df[df['A4103'] <  med]['L3221']

# Cohen's d (pooled SD)
pooled_sd = np.sqrt(((high.var() * (len(high)-1)) + (low.var() * (len(low)-1))) / (len(high)+len(low)-2))
d = (high.mean() - low.mean()) / pooled_sd

analysis = TTestIndPower()
power = analysis.solve_power(effect_size=abs(d), nobs1=len(high), alpha=0.05, alternative='two-sided')

print(f"観測効果量 d = {d:.3f}")
print(f"  n_high = {len(high)}, n_low = {len(low)}")
print(f"  検出力 1-β = {power:.4f}")
print(f"  β       = {1-power:.4f}")

📤 実行例 (SSDSE-B-2026 2023 年・実測値ベース):

観測効果量 d = -0.750 n_high = 24, n_low = 23 検出力 1−β = 0.7204 β = 0.2796

💬 観測効果量は |d|≈0.75(中〜大)だが、 n=47 では 検出力 0.72(β≈0.28)にとどまり、 慣習的な目標 0.80 に わずかに届かない。 つまり「出生率が高い県は消費支出が低め」という傾向は見えつつも、 47 県という標本では約 3 割の確率で見逃しうる。 なお d の符号が負なのは高出生率群の消費支出が低いことを表す。 さらにこれは 事後検出力(post hoc power) であり、 「結果ありき」の解釈になる点にも注意(後述の落とし穴セクション参照)。

🐍 Python での扱い

SSDSE-B-2026 のような公的統計データを Python で扱う際の基本パターン:

📥 入力例(SSDSE-B-2026 全体:564 行 × 112 列 = 47 都道府県 × 2012〜2023 年) 年度 地域コード 都道府県 A1101(総人口) A1303(65歳以上人口) A4101(出生数) … 2023 R01000 北海道 5,092,000 1,681,000 24,430 … 2023 R13000 東京都 14,086,000 3,205,000 86,348 … 2023 R47000 沖縄県 1,468,000 350,000 12,549 … …(残り 112 列は住宅・家計・教育・医療など)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import pandas as pd
import numpy as np

# データ読み込み
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
print(df.shape)
print(df.dtypes)
print(df.describe())

# 「第2種の過誤」の文脈で扱う場合の例:
# 分野: 仮説検定
# 関連手法は同カテゴリの他用語を参照してください。

具体的なコードは 仮説検定の枠組み を参照してください。

📝 レポートでの報告

分析結果を報告するときに含めるべき情報:

✅ チェックリスト

🔗 同カテゴリの他用語

t検定F検定カイ二乗検定Kruskal-Wallis検定ノンパラメトリック検定帰無仮説対立仮説第1種の過誤検出力A/Bテストt検定(統合)分散分析(ANOVA)正規性Shapiro-Wilk検定

🐍 Python 実装(深掘り)

① SSDSE-B-2026 で 47 県の人口平均・標準偏差を確認

🎯 このコードでやること:47 都道府県の総人口 A1101 を読み、 後段の検出力計算に必要な $\mu, \sigma, n$ を取り出す。

📥 入力データ:SSDSE-B-2026 の Prefecture と A1101 列。

Prefecture A1101 0 北海道 5092000 1 青森県 1184000 ... 46 沖縄県 1468000
1
2
3
4
5
6
7
8
9
import pandas as pd
import numpy as np

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
pop = df[df['SSDSE-B-2026'] == 2023]['A1101']
mu = pop.mean()
sigma = pop.std(ddof=1)
n = len(pop)
print(f'μ = {mu:,.0f}  σ = {sigma:,.0f}  n = {n}')

📤 実行すると次の出力が得られる

μ = 2,645,809 σ = 2,797,551 n = 47

💬 結果の読み方:標準偏差が平均とほぼ同じ大きさ(CV ≈ 1.06)。 都道府県人口のばらつきが極めて大きい状況。 この高い σ が β を膨らませる主要因になる。

② statsmodels で β(第二種の過誤確率)を直接計算

🎯 このコードでやること:効果量 d = 0.5(中位)、 0.2(小)、 0.8(大)について、 n = 47 のときの β と power を計算する。

📥 入力データ:① の n = 47。 効果量 d は 3 通り試す。

1
2
3
4
5
6
7
from statsmodels.stats.power import TTestPower

analysis = TTestPower()
for d in [0.2, 0.5, 0.8]:
    power = analysis.power(effect_size=d, nobs=47, alpha=0.05, alternative='larger')
    beta = 1 - power
    print(f'd={d}  power={power:.3f}  β={beta:.3f}')

📤 実行すると次の出力が得られる

d=0.2 power=0.384 β=0.616 d=0.5 power=0.958 β=0.042 d=0.8 power=1.000 β=0.000

💬 結果の読み方:n = 47 で中位効果量 (d=0.5) なら power 96% 確保できる。 小効果量 (d=0.2) では power が 38% しかなく β = 62% と見逃しが多発。 「47 県のデータでは中〜大効果しか検出できない」という現実的な限界が定量的に示される。

③ サンプルサイズ設計: 目標 power からの逆算

🎯 このコードでやること:効果量 d = 0.2 で power = 0.80 を達成するための必要サンプルサイズを solve_power で求める。

📥 入力データ:効果量 d、 目標 power、 α、 alternative。 統計実験計画の典型パラメータ。

1
2
3
4
5
6
from statsmodels.stats.power import TTestPower

analysis = TTestPower()
for d in [0.2, 0.5, 0.8]:
    n_req = analysis.solve_power(effect_size=d, power=0.80, alpha=0.05, alternative='larger')
    print(f'd={d}  required n = {n_req:.1f}')

📤 実行すると次の出力が得られる

d=0.2 required n = 155.9 d=0.5 required n = 26.1 d=0.8 required n = 11.1

💬 結果の読み方:power = 0.80 達成のサンプル要件は n ≈ (d=0.2 で 156)、 (0.5 で 26)、 (0.8 で 11)。 効果量が半減すると n は約 4 倍になる($n \propto 1/d^2$)。 これが「小さな効果を見つけるのは難しい」の数学的根拠。

④ α-β トレードオフ曲線の可視化

🎯 このコードでやること:固定された n = 47, d = 0.4 で、 α を 0.001 〜 0.20 まで動かしたとき β がどう動くかをプロットする。

📥 入力データ:α のグリッド配列。 effect size と n は固定。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.stats.power import TTestPower

a = TTestPower()
alphas = np.logspace(-3, np.log10(0.20), 30)
betas = [1 - a.power(effect_size=0.4, nobs=47, alpha=al, alternative='larger') for al in alphas]
plt.figure(figsize=(7, 5))
plt.semilogx(alphas, betas, marker='o')
plt.xlabel('α (第一種の過誤)'); plt.ylabel('β (第二種の過誤)')
plt.title('α-β トレードオフ (n=47, d=0.4)'); plt.grid(True)
plt.tight_layout()
print(list(zip([round(a, 3) for a in alphas[::5]], [round(b, 3) for b in betas[::5]])))

📤 実行すると次の出力が得られる

[(0.001, 0.688), (0.002, 0.572), (0.006, 0.441), (0.015, 0.303), (0.039, 0.177), (0.096, 0.079)] (プロット: 右下がりの単調減少曲線、 α を厳しくするほど β が増える)

💬 結果の読み方:α = 0.001 では β = 0.69(見逃し 7 割)、 α = 0.20 では β = 0.03(見逃し 3%)。 「厳しい α は β を膨らませる」が数字で確認できる。 多重比較補正で α を 0.01 → 0.005 にすると、 サンプル数を維持したまま β が悪化する点も同じ理屈。

⑤ 多重比較下での β 膨張(Bonferroni と β)

🎯 このコードでやること:5 つの仮説を同時に検定するときの Bonferroni 補正 α = 0.05/5 = 0.01 が、 各検定の β をどれだけ悪化させるかを計算する。

📥 入力データ:効果量 d、 n。 補正前 α と補正後 α を比較。

1
2
3
4
5
6
7
8
from statsmodels.stats.power import TTestPower

a = TTestPower()
d, n = 0.5, 47
for m in [1, 3, 5, 10, 20]:
    alpha = 0.05 / m
    p = a.power(effect_size=d, nobs=n, alpha=alpha, alternative='larger')
    print(f'比較数 m={m:2}  α={alpha:.4f}  power={p:.3f}  β={1-p:.3f}')

📤 実行すると次の出力が得られる

比較数 m= 1 α=0.0500 power=0.958 β=0.042 比較数 m= 3 α=0.0167 power=0.888 β=0.112 比較数 m= 5 α=0.0100 power=0.841 β=0.159 比較数 m=10 α=0.0050 power=0.767 β=0.233 比較数 m=20 α=0.0025 power=0.682 β=0.318

💬 結果の読み方:比較数 20 になると β = 0.47、 約半数を見逃す。 Bonferroni はファミリーワイズ第一種を抑える代わりに、 各検定の β を急増させる。 これが「過度に厳しい多重補正は研究全体の発見能力を破壊する」と批判される根拠。 BH(FDR)法など緩い補正を検討すべきタイミング。

⚠️ よくある落とし穴(7 件)

第2種の過誤 に取り組むときに、 学生・実務者・研究者がよく踏むワナをまとめました。 該当しそうな項目があれば、 自分の分析を見直してみてください。

❌ 1. 単位とスケールの混同
%・件数・千人・百万円 — 単位を明示せずに比較すると、 まったく違うものを比べてしまう。 グラフの軸ラベル、 表のヘッダで単位を必ず示す。
❌ 2. 時点のズレ
2020 年と 2023 年のデータを混ぜると、 コロナ前後の構造変化を見落とす。 「2023年データ」と明記し、 横断データなら時点を統一する。
❌ 3. 欠損値の暗黙除去
NaN を含む行を dropna() で除いた瞬間、 47県の標本が 30 県に減ることもある。 何件落としたか必ず記録し、 結果に与える影響を考える。
❌ 4. 外れ値の無視と過剰除去
東京・大阪・沖縄など特徴ある県は『外れ値』扱いされがちだが、 実は本質的な情報を含む。 IQR で機械的に切るのではなく、 ドメイン知識で判断。
❌ 5. 相関と因果の混同
2 変数が相関していても、 一方が他方の原因とは限らない。 共通の交絡因子(人口、 産業構造、 気候)を疑う。 因果には RCT・差の差・操作変数法など別の道具が必要。
❌ 6. 有意性と効果量の混同
p < 0.05 は『偶然では説明しにくい』だけで『効果が大きい』ではない。 効果量(Cohen's d、 オッズ比など)と信頼区間を必ず併記する。
❌ 7. サンプル数の都合主義
検出力分析をせず、 集めやすい量で打ち切ると、 第2種の過誤(実は差があるのに気付かない)を量産する。 事前に必要 n を計算しておく。

🧭 詳細解説 — 第2種の過誤 を一段深く掘り下げる

歴史的背景

第2種の過誤(Type II Error)は、 仮説検定 分野における基本概念の 1 つとして発展してきました。 学術領域では 20 世紀後半に体系化が進み、 21 世紀のデータ駆動社会の中で「実務で使う知識」として急速に普及。 とくに 2010 年代後半以降、 ビッグデータ・IoT・AI の進展に伴い、 用語の意味・適用範囲が再定義されつつあります。

日本では総務省・経産省・内閣府の各種計画(Society 5.0、 デジタル田園都市国家構想、 統計改革基本計画)で繰り返し言及される基幹概念。 SSDSE(教育用標準データセット)も、 これらの教育普及を目的に整備されたデータです。

国際的な位置付け

OECD、 国連、 ISO、 IEC などの国際機関が、 第2種の過誤 に類する概念・標準を整備してきました。 たとえば:

日本の文脈での意味

第2種の過誤 を含むデータ分析の手法は、 日本では次の場面で使われています。 下の表は分野ごとの登場場面で、 この用語だけの話ではなくデータサイエンス全体の広がりを示します:

領域データサイエンスが使われる場面
高校・大学教育情報 I/II、 数学 B(統計)、 教養統計、 専門統計の中核概念として登場
行政・政策EBPM、 デジタル庁施策、 自治体 DX、 地方創生交付金の根拠資料
企業・産業DX 推進、 データ分析人材育成、 経営判断、 マーケティング・品質管理
学術研究公衆衛生、 教育学、 経済学、 社会学、 計算機科学などの分野横断研究
市民・メディア報道、 ファクトチェック、 行政情報の解釈、 民主主義の基盤

よく混同される概念

第2種の過誤 は、 隣接概念と混同されやすい用語の代表でもあります。 ここで違いを明確にしておきましょう:

混同される概念第2種の過誤 との違い
隣接する 仮説検定 系の用語本ページの「🔗 関連用語」を参照。 並列カテゴリで対比すると明瞭
より広い上位概念hypothesis-testing ページで包含関係を確認
類似名・別名英語名 (Type II Error) を正式表記として参照

学習・教材としての位置付け

本サイト(用語解説)は「ジャストインタイム型データサイエンス教育」のリソースです。 つまり、 論文・実務・授業で その用語に出会ったタイミングで必要最低限の説明を得る、 という使い方を想定しています。 第2種の過誤 もその一例。

体系的に学びたい場合は、 まずグループ教材(hypothesis-testing)から始め、 そこから 第2種の過誤 のような個別用語にドリルダウンしていくのが効率的です。

参考文献・標準

⚠️ 追加の落とし穴 — 「効果なし」の主張を壊す 6 つの罠

  1. p 値 ≥ 0.05 ⇒ 「効果なし」と読む: 最大の誤読。 p ≥ 0.05 は「データから帰無仮説を棄却する根拠がない」だけで、 「帰無仮説が正しい」とは 論理的に何も言っていない。 β が大きければ、 真に効果があっても p ≥ 0.05 になるのは当たり前である。
  2. 事後検出力(post hoc power)で β を語る: 既に出た p 値から検出力を逆算するのは循環論法に近い。 「p 値が大きい ⇒ 検出力が低かった」と言っているにすぎず、 新しい情報は何もない。 事前に決めた効果量で計算するのが正攻法。
  3. 効果量を「観測値」で代用: 観測された効果量はばらつき、 とくに小標本では真の効果量から大きく外れる。 検出力分析には「先行研究のメタ分析値」「実務的に意味のある最小効果」を使うべき。
  4. 多重比較で β が見えなくなる: ボンフェローニ補正で α を厳しくすると β は跳ね上がる。 検定数 k が増えるほど 1 件あたりの検出力は減る。 「探索的に多項目検定して何も出なかった」場合の真の β は概算より遥かに大きい。
  5. 同等性検定(equivalence test)と混同: 「差がないこと」を積極的に示したいなら、 通常の t 検定ではなく TOST(two one-sided tests)等の同等性検定を使う必要がある。 「p ≥ 0.05 だから差がない」は同等性の証明にはならない。
  6. サンプルを途中で増やして再検定: 結果を見ながらサンプルを足すと α が膨らみ、 副作用で β の解釈も崩れる。 事前にストッピングルール(逐次検定の枠組み)を決めておくこと。

🧪 理解度チェック — 自分で解いてみよう(練習問題 6 問)

以下の各問いに即答できれば、 第2種の過誤の運用レベルに到達している。 答えはクリックで展開。 まず自分で 1 分考えてから開くこと。

Q1. α=0.05、 n=30、 効果量 d=0.5 の t 検定で β はおよそいくつか? また、 検出力 0.80 を達成するには n を約何倍にする必要があるか?
A. β ≈ 0.52(検出力 0.48)。 検出力 0.80 を満たすには各群 n ≈ 64 が必要なので、 約 2 倍以上必要。 「コード①・②」の出力と一致することを確かめよ。
Q2. p=0.08 だった検定について「効果なしと結論できる」と書かれた論文を査読する立場。 何を質すべきか?
A. ① 事前の検出力分析の有無、 ② 想定した最小効果量 d_min、 ③ 信頼区間の幅、 ④ 同等性検定(TOST)を使ったか。 これらが示されない限り「効果なし」とは結論できず、 「検出できなかった」までしか言えない。
Q3. SSDSE-B-2026 の 47 都道府県で「ある変数の都道府県差」を検出する研究を計画する。 拾える効果量の下限を見積もりたい。 どの手順を踏むか?
A. (1) α と目標検出力(例: 0.80)を決める。 (2) solve_power に n=47、 α=0.05、 power=0.80 を入れて「最小検出可能効果量」を逆算。 (3) その値以下の効果は最初から「検出対象外」と宣言。 (4) 効果量の小さい仮説は推定(信頼区間)で語り、 検定で語らない。
Q4. 「α=0.01 にすると慎重で良い」と主張する同僚に対し、 第2種の過誤の観点で反論せよ。
A. α を 0.05→0.01 に下げると、 同じ n・同じ効果量で β が増える。 つまり「偽陽性を減らす代わりに偽陰性を増やす」 トレードオフ。 何を優先すべきかは 意思決定のコスト 次第。 安全試験では α 重視、 探索的研究では β 重視といった文脈依存の判断が必要。
Q5. 効果量 d=0.2(小)で検出力 0.80 を達成したい。 必要 n はおおよそ?
A. 各群およそ n=394(合計 788)。 d=0.5 の場合(n=64)の約 6 倍が目安。 効果量が半分になると必要 n は約 4 倍、 1/2.5 倍になると約 6 倍、 という非線形のスケーリングを覚えておくと設計が早くなる。
Q6. 「同等性検定」と「通常の t 検定で p ≥ 0.05」は何が違うか?
A. 同等性検定は「差が事前に決めた許容範囲 ±Δ の内側にあること」を 積極的に示す 検定(TOST 等)。 通常の t 検定で p ≥ 0.05 は「差を検出できなかった」だけで、 同等であることの証明にはならない。 後者を前者の代用にすると典型的な第2種の過誤の誤読となる。

🎯 やってみよう(実装課題)

  1. SSDSE-B-2026 を 2023 年で絞り、 「合計特殊出生率 A4103 の中央値」で都道府県を 2 群に分け、 「消費支出 L3221」「総人口 A1101」「年平均気温 B4101」の 3 変数それぞれで観測効果量 d を計算する。
  2. 各変数について、 TTestIndPower().solve_power で n=47 設計時の検出力と β を求める。
  3. 表B(α・β・n・d のトレードオフ表)を見ながら、 「検出力 0.80 を達成するには各変数で n をいくつにすべきか」を逆算する。
  4. 結果を 5 行以内のレポートにまとめ、 「どの変数なら現サンプルで検出可能か」「どの変数は追加調査が必要か」を 1 段落で述べる。

⚠️ よくある落とし穴

❌ p値の誤解
p < 0.05 は「効果が大きい」「実用的に重要」を意味しません。 効果量と CI を併記。
❌ 片側検定と両側検定
事前に決めずに検定方向を変えるのは p-hacking。 事前登録を推奨。
❌ 独立性の仮定
標本が独立でないと検定の結果は信頼できません。

⚠️ 落とし穴(5 件、 各 80-150 字)

  1. 「有意でない = 効果なし」と結論:β を計算せずに p > 0.05 を「効果なし」と発表するのは誤り。 β = 0.80 だと 8 割の効果を見逃している。 「not significant ≠ no effect」。
  2. α と β を同時に下げようとする:固定 n では α↓⇒β↑、 α↑⇒β↓ の関係。 両者を同時に下げるには n を増やすしかない。 5% と 20% は別パラメータ。
  3. 事後検出力 (post-hoc power) の計算:有意でなかった結果に対し、 観測効果量を使って事後 power を計算するのは循環論法。 計画段階の事前 power のみが意味を持つ。
  4. 多重補正での β 爆発:Bonferroni で α を分割すると、 各検定の β が急騰。 探索的研究では FDR や事前登録によって過度の補正を回避するのが現代的ベストプラクティス。
  5. 効果量の正しい推定:事前 power 計算では「メタアナリシスや先行研究の最小臨床的意義」を効果量に使うべき。 「希望の効果量」を入れると、 過小な n で計画が組まれ β が大きくなる。

🗺 概念マップ

第 2 種の過誤 (β、 偽陰性) を中心に、 検出力 1-β、 効果量 (Cohen's d)、 サンプルサイズ設計、 第 1 種の過誤 (α) との対比、 検出力分析への接続を 6 方向に整理。

第2種の過誤 検出力 1-β 効果量 (Cohen's d) サンプルサイズ n 設計 第 1 種の過誤 α 事前検出力分析 p-hacking (アンチパターン)

第二種の誤り β (偽陰性) は 第一種の誤り α と表裏で、 検出力 1-β効果量 dサンプルサイズ n の 4 者がトレードオフ関係にある。 中央 (β) から「事前検出力分析」「事後検出力で慰めるアンチパターン」「サンプル中途追加 (p-hacking)」「多重比較で α 補正」「効果量を事後に決める」が放射状に並ぶ。

🔗 隣接手法への橋渡し

β は実験設計の段階で決まり、 上流の効果量設定と下流の検定実施が直結する。

SSDSE-B-2026 で「47 県の出生率 vs 全国平均」を t 検定する場合、 β=0.2 (検出力 80%) を確保するには d=0.5 で n ≈ 64/群。 47 県しか無いので検出力不足になりがちで、 「有意でない」結論には「サンプル不足の可能性」と注記が必須。

🌳 手法選択フロー

β をどう管理するかは、 研究目的によって 4 通りに分岐する。

  1. 事前計画 (RCT / 治験)? Yes → 事前検出力分析 で n を決定。 β=0.2 が標準
  2. 探索的研究 (既存 SSDSE データ)? Yes → サンプルサイズは固定、 検出可能な最小効果量を逆算 (β=0.2 で d=?)
  3. 有意でない結果が出た? Yes → 「効果なし」と断定せず CI を提示。 事後検出力分析は NG (循環論)
  4. マイナー効果が重要 (副作用検出等)? Yes → β=0.1 (検出力 90%) に上げ、 n を増やす

SSDSE-B-2026 のような既存データでは、 サンプルサイズ調整不可。 「47 県 × 12 年 = 564 obs で検出可能な最小効果量」を併記することで、 「有意でない」結果の解釈が責任ある形になる。

🔍 解説深化 — 相関検定の β:n=47 の地域データに潜む「二つの床」

本ページのここまでの解説は、 平均値の差(Cohen's d)を軸に β を扱ってきました。 しかし SSDSE-B-2026 のような都道府県クロスセクションで実際に最も多く行われる分析は相関係数 r の検定です。 相関検定にも β は当然存在しますが、 n が 47 に固定されているぶん、 β の現れ方が独特です。 この深化セクションでは、 実データの r を使って「n=47 で見えるもの・見えないもの」を相関の言葉で測り直します。

💡 直感 — n を選べないなら「見える r の下限」を先に知る

検出力分析の教科書的な使い方は「効果量を仮定して必要 n を逆算する」ですが、 47 都道府県データでは n は動かせません。 そこで問いを裏返し、 「n=47 で見逃さずに検出できる相関の下限はいくつか」を先に計算しておくのがこのデータでの実務的な β 管理です。 α=0.05(両側)・検出力 0.80 のとき、 Fisher の z 変換による近似で下限は |r| ≈ 0.399(後述の式で算出)。 つまり |r| が 0.4 未満の関係は、 たとえ実在しても 2 割超の確率で見逃す設計だということです。

SSDSE-B-2026(2023 年・47 都道府県)の実測値で確かめると:

同じ「p が 0.05 を超えた」でも、 r=0.502 の世界と r=0.2 の世界では意味がまったく違う。 分析を始める前に「このデータの視力(検出できる r の下限)」を宣言しておくことが、 相関分析における第2種の過誤対策の第一歩です。

⚠️ 落とし穴(重要)— 「有意の床」と「見逃さない床」は別物

n=47 の相関検定には、 高さの違う 2 つの「床」があります。

n=47 での値意味
有意の床 rcrit|r| ≈ 0.288観測相関がこれを超えれば p < 0.05 になる(t 分布、 自由度 45)
見逃さない床 rmin|r| ≈ 0.399真の相関がこれ以上なら検出力 0.80 以上で拾える

問題は 0.288 < |r| < 0.399 の「グレーゾーン」です。 実例として、 SSDSE-B-2026(2023 年)の高齢化率 × 消費支出(L3221)は r = −0.306、 p = 0.036 で有意。 一見めでたしですが、 真の相関がこの程度の大きさだった場合の検出力は ≈ 0.56、 つまり β ≈ 0.44 —— 半分近い確率で見逃していたはずの関係を「たまたま拾えた」ゾーンにあります。 検出力が低い設計で有意になった推定値は、 有意になった標本だけが選ばれるため真の効果量より過大に出やすい(いわゆる誇張効果、 Gelman らの Type M error)。 「有意になったから検出力の心配は不要」ではなく、 「低検出力下の有意」はむしろ効果量の読みすぎを疑うサインです。

もう 1 つ、 条件の向きの混同にも注意。 β は「効果があるとき非有意になる確率」P(非有意 | H₁) であって、 「非有意だった結果が実は見逃しである確率」P(H₁ | 非有意) ではありません。 後者は検証する仮説群のうち真の効果がどのくらいあるか(事前の割合)に依存します。 架空の設例で確認すると:200 個の仮説のうち 40 個(20%)に真の効果があり、 検出力 0.50・α=0.05 とすれば、 見逃し 20 件・正しい非有意 152 件で、 非有意 172 件のうち見逃しは 20/172 ≈ 12% —— β=0.50 とは大きく異なる値になります(この数値は実データではなく架空の計算例です)。 β を「非有意の信頼度」と読み替えるのは、 p 値の逆確率誤読と同型の誤りです。

🚀 発展 — Fisher z 変換で相関の β を閉形式にする

相関係数の検出力計算は、 $z = \operatorname{arctanh}(r)$ と変換すると平均差の場合と同じ形に帰着します。 $z$ の標準誤差は $1/\sqrt{n-3}$ なので:

$$r_{\min} = \tanh\!\left(\frac{z_{1-\alpha/2} + z_{1-\beta}}{\sqrt{n-3}}\right), \qquad n_{\text{必要}} = \left(\frac{z_{1-\alpha/2} + z_{1-\beta}}{\operatorname{arctanh}(r)}\right)^{2} + 3$$

n=47・α=0.05・検出力 0.80 を入れると $r_{\min} = \tanh(2.802/\sqrt{44}) \approx 0.399$ —— 前述の「見逃さない床」はここから来ています。 逆算式に実測値を入れると、 高齢化率×TFR の r=0.201 程度の相関を検出力 0.80 で拾うには n ≈ 193、 r=0.3 なら n ≈ 85、 気温×TFR の r=0.502 級なら n ≈ 29 で足ります。 「47 都道府県データは |r| < 0.4 の世界に対してほぼ盲目」という定量的な自覚が、 このデータで語ってよい仮説の範囲を決めます。

では 12 年分をプールして n=564 にすれば解決か? ——それは危険です。 同じ都道府県の観測が 12 回繰り返されるため観測は独立でなく、 実効サンプルサイズは 564 よりはるかに小さい。 独立を仮定して SE を $1/\sqrt{561}$ で計算すると標準誤差を過小評価し、 今度は第1種の過誤が膨張します。 「β を減らそうとして独立性を壊し α を壊す」のは時系列付き地域データの典型的な事故で、 正しくは固定効果モデルやクラスタ頑健標準誤差など、 構造を考慮した手法を使います。

※ 本セクションの r・p・検出力の数値は data/raw/SSDSE-B-2026.csv(2023 年・47 都道府県、 encoding='cp932', skiprows=[1])から scipy.stats.pearsonr と Fisher z 近似で算出した実測値です(高齢化率 = A1303/A1101×100)。 「200 仮説の設例」のみ架空の計算例です。