🔖 キーワード索引
この用語と一緒に検索・参照されやすいタグ。 関連ページに飛ぶときの手がかりにも使えます。
#仮説検定#対立仮説#H1#片側・両側#検定設計
「alternative hypothesis」は統計データ分析の文脈で扱う重要概念のひとつ。 本ページでは「alternative hypothesis」を取り巻く中核キーワードを以下にチップで一覧化する。 各キーワードは関連する概念・手法・道具立てを含み、 文献検索や学習計画の起点になる。
alternative hypothesis統計分析SSDSE-B-2026前提条件適用範囲落とし穴関連手法Python 実装検証方法
これらのキーワードは「alternative hypothesis の理解 → 適用 → 検証」のプロセスを構成する。 各章で詳しく解説する。
💡 30秒で分かる結論
🍰 まずはやさしく
自分が伝えたい主張のことです。
正しさを証明するために使います。
部活の新メニューで成績が上がったと言いたい時などです。
まずは結論から短くまとめます。
対立仮説(H₁)は、 「研究者が示したい主張」を表す仮説。 帰無仮説 H₀ を棄却した時に採択される。
- 位置付け:H₀「効果なし」と H₁「効果あり」のペアで検定
- 方向:両側(≠)/片側(> or <)
- 選び方:研究設計時に先に決める(後付け禁止)
- 検出力:H₁ が真のときに H₀ を棄却できる確率
- 注意:「H₀ を棄却できなかった = H₁ が偽」ではない
ここまでが要点です。 ただし実際に使う前に、 このページの「⚠️ よくある落とし穴」で挙げた 後付けで片側に変える/『H₀ を棄却できない』=『H₀ が真』と誤読/複数比較の補正忘れ には必ず目を通してください。 つまずくのは知識が無いときより、 知ってはいたが確認を飛ばしたときです。
📍 文脈:「対立仮説」はどんな場面で出てくる?
🍰 まずはやさしく
分析でよく使う道具のようなものです。
調べたい問いをはっきりさせるために使います。
スマホの利用時間とテストの点数に関係があるか調べる時などです。
どんな場面で使うのかを説明します。
本サイトの回帰分析・差分検定で頻出。 「相関係数が 0 でない(H₁)」「政策実施前後で差がある(H₁)」のように研究の問いそのものを表現する基礎概念。
この用語は一見すると単独で理解できそうに見えますが、 実際には前提となる概念(測定・尺度・サンプリングなど)と組合せて初めて意味を持ちます。 「定義を覚える」より「どんな問いに答える道具なのか」を捉えるのが効率的です。
🎨 直感で掴む
🍰 まずはやさしく
裁判での有罪判決のようなものです。
データを使って主張を裏付けるために使います。
勉強法を変えて点数が変わったか確かめる時などです。
直感的にわかる仕組みを解説します。
対立仮説 H₁ は「研究者が示したい主張」を数式で書いたものです。 例えば SSDSE-B-2026 で「人口 A1101 と出生数 A4101 は無関係ではない」と言いたい時、 H₀: ρ=0、 H₁: ρ≠0 と立てます。 H₁ を直接証明するのではなく、 「H₀ ではあり得ないデータが観測された」と示すのが検定の論理です。
- 裁判の比喩:H₀ =「無罪推定」、 H₁ =「有罪」。 証拠(データ)が十分なら H₀ を棄却 → H₁ 採択。
- 「H₁ を直接証明する」のではない。 「H₀ ではあり得ない」と示すのが検定の論理。
- 片側 vs 両側:「増えるはず」と方向の先見がある時は片側、 「変化があるか分からない」なら両側。
💡 H₁ の立て方のコツ:「効果がある」「差がある」「相関がある」など否定したいゼロ仮説(H₀)と論理的に対をなす命題を書く。 「人口と出生数は相関する」だけでは曖昧で、 「ρ ≠ 0(両側)」または「ρ > 0(右片側)」と数式形で明示するのが鉄則です。
🔬 数式を言葉で読み解く — 数式を「言葉」に翻訳
数式を眺めるだけでは身につかないので、 各記号がどんな役割を担っているかを言葉で押さえます。 「数式を音読する習慣」がつくと、 論文や教科書を読むスピードが体感で 2 倍ほど上がります。
- H₀
- 帰無仮説(差なし・効果なし)
- H₁
- 対立仮説(研究者の主張)
- μ
- 母平均(パラメータの代表例)
- μ₀
- H₀ で仮定する値(通常 0 等)
- α
- 有意水準(典型 0.05)
📚 補足:同じ記号でも分野・教科書によって意味が違うことがあります(例: $\hat{y}$ は予測値だが、 統計の文脈では推定量を意味することも)。 不明確なときは、 必ずその文書の記号定義表を確認しましょう。
🧮 実値で計算してみる
H₁ を立てて検定する流れを、 SSDSE-B-2026 の実値で追体験します。 典型例は「人口(A1101)と出生数(A4101)の Pearson 相関 ρ について、 H₀: ρ=0, H₁: ρ≠0」を 47 都道府県データで検定するパターン。 手計算と Python 出力で同じ t 値・p 値が出るかを照合しましょう。
典型的な検定問題と H₁ の例:
| 場面 | H₀ | H₁ |
| 新薬の効果 | μ_new = μ_control | μ_new > μ_control(右片側) |
| 男女の平均身長 | μ_M = μ_F | μ_M ≠ μ_F(両側) |
| 相関係数の有意性 | ρ = 0 | ρ ≠ 0(両側) |
| 政策効果(DiD) | β_DiD = 0 | β_DiD ≠ 0(両側) |
表の各場面で H₀ と H₁ は必ず対になっている点が肝心。 H₁ は単独では書けず、 H₀ で「あり得ない」状態を表します。 47 都道府県データで t 統計量を手計算した値と Python の scipy.stats 出力を必ず突き合わせ、 数式とコードの一致を目で確認しましょう。
🧮 数式に値を入れて手で計算する: t 検定で対立仮説を検証
合成データで H₀: μ=50, H₁: μ≠50 を 1 標本 t 検定で評価する。
Step 1: 標本データ
| i | x_i | x_i - x̄ | (x_i - x̄)² |
| 1 | 52 | +2 | 4 |
| 2 | 55 | +5 | 25 |
| 3 | 48 | -2 | 4 |
| 4 | 53 | +3 | 9 |
| 5 | 42 | -8 | 64 |
Step 2: 平均・標準偏差・t 統計量
x̄ = (52+55+48+53+42)/5 = 250/5 = 50.0
Σ(x-x̄)² = 4+25+4+9+64 = 106
s² = 106/(5-1) = 26.5, s = √26.5 ≈ 5.148
SE = s/√n = 5.148/√5 ≈ 2.303
t = (x̄ - μ₀)/SE = (50.0 - 50)/2.303 = 0.0
p 値 ≫ 0.05 → H₀ 棄却できず、 H₁ を採用できない
🐍 Python で再現
| import numpy as np
from scipy import stats
x = np.array([52, 55, 48, 53, 42])
t, p = stats.ttest_1samp(x, popmean=50)
print(f"x̄ = {x.mean()}")
print(f"s = {x.std(ddof=1):.3f}")
print(f"t = {t:.3f}")
print(f"p = {p:.3f}")
|
📤 実行結果
x̄ = 50.0
s = 5.148
t = 0.000
p = 1.000
💬 手計算 (Step 2) t=0.0 / p>0.05 と Python 出力が完全一致。 帰無仮説を棄却できない。
🐍 Python 実装
公的統計(SSDSE-B-2026)を題材に、 最小限の Python コードで動作させます。 ファイルパス(data/raw/SSDSE-B-2026.csv)は自分の環境に合わせて変更してください。 まずはこのまま動かすことが理解の最短ルートです。
🎯 解説: SSDSE-B-2026 の都道府県データで対立仮説(H₁)を設定する例。 帰無仮説 H₀「効果なし/差なし」に対する代替として、 「両側」「右片側」「左片側」のいずれを検定するかを明確に決める。 H₁ の設定が分析設計の最重要ポイント。
| from scipy import stats
import numpy as np
# 例: 2 群平均の比較(独立 t 検定)
group_A = np.array([12, 15, 14, 13, 16])
group_B = np.array([10, 11, 9, 12, 10])
t, p = stats.ttest_ind(group_A, group_B, alternative='two-sided')
print(f't={t:.3f}, p={p:.4f}') # H1: 両側
|
📥 入力例: data/raw/SSDSE-B-2026.csv
都道府県 高齢化率(%) 地域
秋田県 36.94 東北
東京都 22.7 関東
沖縄県 22.0 九州沖縄
📤 実行例(両側 vs 片側):
両側検定: H₁: μ ≠ 28%, p = 0.024
右片側 : H₁: μ > 28%, p = 0.012
左片側 : H₁: μ < 28%, p = 0.988
→ 仮説の向きで p 値が変わる
💬 読み方: 片側検定は「方向性の予測がある」場合に限る(事後に有利な側を選ぶのは禁止)。 両側検定がデフォルトで安全。 H₁ の言語表現「〜と異なる」「〜より大きい」「〜より小さい」と scipy の alternative='two-sided'/'greater'/'less' は対応する。
▶ 実行 を押せばこのページの中でそのまま動きます(ライブラリもデータも同梱済みで、 準備は要りません)。 手元の Python に移して動かすときは pip install numpy pandas scipy statsmodels が必要です。 読んでいるデータは data/raw/SSDSE-B-2026.csv。 日本語を含むので encoding='cp932' の指定を落とさないでください。
本サイトの全コードは 論文一覧ページ から実例として確認できます。 自分のデータで試したい場合は、 列名・欠損記号・単位の違いだけ調整すれば、 ほぼそのまま流用できます。
👣 ステップバイステップ実例
「対立仮説」を初めて使う方向けに、 ハンズオン的な実行手順を整理します。 上の Python 実装と組み合わせて、 1 度自分の手でなぞってみることを強く推奨します。
- 環境準備:このページのコードは ▶ 実行 ボタンでそのまま動くので、 まずは何も入れずに試す。 手元で動かしたくなったら Python 3.9 以上に pandas・scipy・matplotlib を入れ、 Jupyter Notebook か Google Colab を使うと試行錯誤しやすい。
- データ取得:本サイト題材の SSDSE-B-2026 を
data/raw/ に配置(または自分のデータを用意)。 列名と単位を確認。
- 探索的に観察:
df.head()、 df.describe()、 df.isna().sum() で全体像を把握。 ここで欠損や外れ値の見当を付ける。
- 前提検証:対立仮説 をこのデータに当てはめてよいか(このページの「⚠️ よくある落とし穴」で挙げた 後付けで片側に変える・『H₀ を棄却できない』=『H₀ が真』と誤読 など)を確認。 NG なら別手法を検討。
- 本処理:上のコードブロックを参考に、 関数を呼び出して値を取得。 中間出力をその都度プリントして合っているか確認。
- 結果可視化:散布図、 棒グラフ、 ヒートマップなど、 解釈しやすい図を 1〜2 枚作る。 タイトルには結論を書く。
- 解釈・記録:「📝 レポートでの報告」の 5 点セットに沿って Notebook に書き残す。 後の自分のために結論・限界・次の一手を明記。
- 共有:Notebook を GitHub や Drive に置き、 関係者にレビュー依頼。 ピアレビューで穴が見つかることが多いので大事。
この 8 ステップを 1 度回すと、 「用語を読んで分かった気になる」段階から「実際に使える」段階に進めます。 知識は身体で覚えるのが結局のところ最速です。
🐍 SSDSE-B-2026 で $H_1$ を検証する実例
このコードでやること : SSDSE-B-2026 (47 都道府県データ) を使い、 「東日本 vs 西日本で 1 世帯あたり消費支出に差があるか」という $H_1$ を 2 標本 $t$ 検定で検証する。 さらに片側と両側の $p$ 値を比較し、 効果量 (Cohen の $d$) も併記する。
📥 入力データ (SSDSE-B-2026 抜粋) :
SSDSE-2026 都道府県 人口 消費支出
R01000 北海道 5183 276432
R02000 青森県 1238 251204
R03000 岩手県 1210 261580
...
R47000 沖縄県 1467 238115
(全 47 行、 都道府県コード R01100 ~ R47100)
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 | import pandas as pd
import numpy as np
from scipy import stats
# SSDSE-B-2026 読み込み
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023].copy()
# 東日本 (北海道〜静岡県、 都道府県コード R01〜R22) と西日本 (R23〜R47) に分割
df['region'] = df['Code'].str[:3].apply(
lambda x: '東日本' if int(x[1:]) <= 22 else '西日本'
)
east = df[df['region']=='東日本']['L3221']
west = df[df['region']=='西日本']['L3221']
# H0: 東西で平均消費支出に差はない / H1: 差がある (両側)
t_stat, p_two = stats.ttest_ind(east, west, equal_var=False)
# H1: 東日本 > 西日本 (右片側)
p_one = p_two / 2 if t_stat > 0 else 1 - p_two / 2
# Cohen の d
pooled = np.sqrt((east.var(ddof=1) + west.var(ddof=1)) / 2)
d = (east.mean() - west.mean()) / pooled
print(f'東日本 n={len(east)}, 平均={east.mean():.0f}')
print(f'西日本 n={len(west)}, 平均={west.mean():.0f}')
print(f't={t_stat:.3f}')
print(f'両側 p={p_two:.4f}')
print(f'右片側 p={p_one:.4f}')
print(f'Cohen d={d:.3f}')
|
📤 実行すると次の出力が得られる :
東日本 n=22, 平均=305784
西日本 n=25, 平均=287120
t=2.872
両側 p=0.0062
右片側 p=0.0031
Cohen d=0.835
💬 結果の読み方 : 両側 $p = 0.0062$、 右片側 $p = 0.0031$ で、 いずれも有意水準 $\alpha = 0.05$ を大きく下回っており $H_0$ を棄却できる。 つまり「東日本と西日本で消費支出に統計的に有意な差がある」と言え、 平均も東日本 305,784 円 > 西日本 287,120 円 と東高西低の方向で対立仮説 $H_1$ が支持される。 効果量 Cohen $d = 0.84$ は Cohen の目安で「大きい効果」に分類され、 統計的有意性だけでなく実質的にも無視できない差である。 47 都道府県という小標本でも検出できたことは、 群間差がそれだけ明瞭であることを意味する。 なお片側 $H_1$ (東 > 西) を事前登録していた場合は $p = 0.0031$ とさらに強い証拠になるが、 方向の先見がなければ両側 $p = 0.0062$ で報告するのが誠実である。
同じデータで ANOVA を試す (3 地域比較)
このコードでやること : 同じ SSDSE-B-2026 データを「東日本・中部・西日本」の 3 群に分け、 ANOVA で「$H_0$: すべての平均が等しい vs $H_1$: 少なくとも 1 組が異なる」を検証する。
📥 入力例(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
14
15
16
17
18 | 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].copy()
code_num = df['Code'].str[1:3].astype(int)
def region3(n):
if n <= 15: return '東日本'
elif n <= 23: return '中部'
else: return '西日本'
df['region3'] = code_num.apply(region3)
groups = [df[df['region3']==r]['L3221'] for r in ['東日本','中部','西日本']]
f_stat, p_val = stats.f_oneway(*groups)
print(f'F={f_stat:.3f}, p={p_val:.4f}')
print(df.groupby('region3')['L3221'].agg(['mean','count']))
|
📤 実行例 (実データから得られる典型値) :
F=4.115, p=0.0230
mean count
region3
中部 305511 8
東日本 305558 15
西日本 286574 24
💬 結果の読み方 : $F = 4.12$、 $p = 0.0230$ で $\alpha = 0.05$ を下回り $H_0$ を棄却できる。 「3 地域間で消費支出に少なくとも 1 組の差がある」と結論でき、 対立仮説 $H_1$ が支持される。 群平均を見ると東日本 305,558 円・中部 305,511 円がほぼ同水準で高く、 西日本 286,574 円が約 19,000 円低い。 ANOVA は「どこかに差がある」までしか言わないので、 全体差が有意だった今回は Tukey HSD 等の多重比較を回して「どの組が有意に違うか」を特定するのが次の定石である (この平均パターンからは西日本 vs 他 2 群の差が効いていると予想される)。 中部と東日本の差はごくわずかで、 有意差はこの 2 群では出ない可能性が高い。
🧪 分野別ケーススタディ — $H_1$ の書き方が結論を決める
対立仮説の書き方は分野ごとに慣習があり、 同じデータでも $H_1$ の設定が違えば結論も使い道も大きく変わります。 ここでは医療・教育・マーケティング・品質管理・社会調査の 5 分野について、 典型的な $H_1$ 設定パターンと注意点を整理します。
ケース 1: 医療 — 新薬の有効性試験 (RCT)
新薬 A の有効性を検証する第 III 相試験では、 患者を新薬群と標準治療群に無作為に割り付け、 主要評価項目 (例: 6 ヶ月後の症状改善率) を比較します。 規制当局 (FDA・PMDA) は通常、 両側検定の $H_1$ ($\mu_A \neq \mu_B$) を要求し、 有意水準 $\alpha = 0.05$、 検出力 $1-\beta = 0.80$、 想定効果量を事前に登録します。 サンプルサイズはこれら 3 値から逆算され、 試験開始後に変更すると統計的妥当性が大きく損なわれます。 主要 $H_1$ が支持されなかった場合、 副次評価項目で有意差が出ても「探索的所見」止まりで、 効能効果としては承認されないのが原則です。
特殊例として「非劣性試験 (non-inferiority trial)」では $H_1$ : 「新薬は標準治療より $\Delta$ 以上劣らない」と書き、 同等性検定 TOST の片側版として扱います。 「同等以上」を示したいときの定石で、 ジェネリック医薬品の生物学的同等性 (BE) 試験はこの $H_1$ 設定に従います。
ケース 2: 教育 — 新しい教授法の効果検証
「アクティブラーニング型授業は従来型授業より学習成果が高い」を検証するには、 同じ教科を異なる方法で教え、 共通テストの成績を比較します。 $H_0$ : $\mu_A = \mu_B$、 $H_1$ : $\mu_A > \mu_B$ (右片側) と設定するのが自然ですが、 教育研究では「先行研究で明確な方向性が示されていない」場合は両側にするのが安全です。 学級単位での無作為化が現実的でない場合は、 階層モデル (multilevel model) で「学級レベル」と「生徒レベル」の分散を分離し、 $H_1$ をマルチレベルの効果として書きます。
教育研究で特に注意したいのは「ベースラインの違い」で、 群間で事前テスト得点が異なる場合は共分散分析 (ANCOVA) を使い、 $H_1$ : 「ベースラインを揃えた上で、 介入効果がゼロでない」と精緻化します。 また、 教育介入は短期効果と長期効果で結論が異なることが多く、 $H_1$ を「6 ヶ月後」「1 年後」「3 年後」と時点別に書き分けるのが現代の作法です。
ケース 3: マーケティング — A/B テストの $H_1$ 設計
Web サイトの新デザイン B が旧デザイン A よりクリック率 (CTR) を高めるかを検証する A/B テストでは、 通常 $H_0$ : $p_A = p_B$、 $H_1$ : $p_A \neq p_B$ (両側) を採用し、 比率の差の検定 ($z$ 検定) や $\chi^2$ 検定を使います。 トラフィックを 50:50 で分割し、 必要サンプルサイズに達するまで続けます。 「効果が見えてきたから途中で打ち切る」 (optional stopping) は第 1 種の過誤率を膨らませる典型的な誤りで、 早期停止には Sequential Probability Ratio Test (SPRT) や Group Sequential Design など別の手法が必要です。
ベイズ流の A/B テストでは「$P(p_B > p_A | \text{data})$」を直接計算でき、 「現時点で B が勝つ確率は 87%」のように連続的な意思決定ができます。 また、 多腕バンディット (multi-armed bandit) アルゴリズムを使えば「最適な腕にトラフィックを動的に多く流す」運用が可能で、 $H_1$ を「最良の腕を選ぶ」最適化問題に拡張できます。 マーケティングでは効果量が小さいことが多く ($d = 0.05 \sim 0.20$)、 必要サンプル数が万〜数十万件単位になることに留意が必要です。
ケース 4: 品質管理 — 工程能力指数と管理図
製造業の品質管理では「工程平均が規格中心からずれていないか」を継続的に監視します。 $H_0$ : $\mu = \mu_0$ (規格中心)、 $H_1$ : $\mu \neq \mu_0$ (両側) を $X$-bar 管理図でモニタリングし、 $\pm 3\sigma$ の管理限界を超えたら $H_0$ を棄却します。 工程能力指数 ($C_p$, $C_{pk}$) は別途算出され、 「規格幅とばらつきの比」として $H_1$ : 「工程は規格を満たす能力がある (= $C_{pk} \geq 1.33$)」を実用的に判定します。
六標準偏差 (Six Sigma) 運動では $H_1$ : 「不良率は 100 万機会あたり 3.4 件未満」を目標値として掲げ、 工程改善活動を進めます。 これらは古典的検定の $H_1$ を品質哲学に組み込んだ実用例で、 統計が経営層の意思決定言語として機能している好例です。 統計的工程管理 (SPC) では「異常検出 = $H_1$ 採択」が現場の作業指示と直結するため、 第 1 種の過誤 (誤警報) と第 2 種の過誤 (見逃し) のコストを天秤にかけて管理限界を設定します。
ケース 5: 社会調査 — 世論調査における $H_1$ の罠
「内閣支持率が前月から上昇したか」を世論調査で検証する場合、 単純な比率差検定では誤った結論を導きやすい。 標本誤差 ($\pm 3\%$ 程度) を考慮すると、 「先月 45% → 今月 48%」のような変化は統計的に有意でないことが多く、 「上がった」「下がった」と報道するのは適切ではありません。 $H_0$ : $p_{\text{前月}} = p_{\text{今月}}$、 $H_1$ : 異なる、 を $\chi^2$ 検定で評価し、 信頼区間を併記するのが誠実です。
世論調査では非回答バイアス・選択バイアス・質問順序効果など、 統計検定では捉えきれない誤差が大きく、 $H_1$ が支持されても「真の世論」と一致するとは限りません。 「サンプルサイズが大きいから誤差が小さい」と誤解されがちですが、 偏りのあるサンプルでは大規模化しても精度は向上しません (例: 1936 年の Literary Digest による予測失敗、 サンプル 230 万人でも結果は大外れ)。 $H_1$ を立てる前にサンプリングの妥当性を確認することが、 統計的検定よりも遥かに重要です。
⚠️ よくある落とし穴
対立仮説 H₁ を立てるとき初学者が陥りやすい典型ミスを列挙します。 「データを見てから H₁ を変える」「H₀ 不棄却 = H₀ が真と読む」など、 統計検定の論理を逸脱する罠が大半。 SSDSE-B-2026 で 47 都道府県を分析する場面でも、 これらは頻繁に発生します。
❌ 後付けで片側に変える
結果を見てから片側に切り替えると有意になりやすい(p-hacking)。
❌ 『H₀ を棄却できない』=『H₀ が真』と誤読
検出力不足の可能性。 サンプル数を増やして再検定。
❌ 複数比較の補正忘れ
多数の H₁ を同時検定するなら Bonferroni、 FDR で α 補正。
❌ 実用的有意 vs 統計的有意
効果量も併記。 n が大きいと小さな差でも有意になる。
🛡 H₁ 設計の三原則:「データ収集前に H₁ を文書化(事前登録)する」「片側/両側と効果量の予測を明示する」「多重比較なら Bonferroni/FDR で α を補正する」。 47 指標の SSDSE-B-2026 で「どれかが有意」を狙うと第一種の過誤が爆発するため、 事前に H₁ を絞ることが必須です。
⚠️ 対立仮説で初学者が踏みがちな 10 の落とし穴 (拡張版)
- データを見てから片側に変える — 観測した方向に合わせて片側化 → 実質 α=0.025 を α=0.05 として扱うことになる。
- $H_0$ を採択 = $H_0$ が真と勘違い — 検定は「棄却できなかった」だけで、 真を証明しない。 不採択は弱い結論。
- p 値 = $H_1$ が真である確率と勘違い — p 値は $H_0$ が真の下でデータ以上に極端な結果が出る確率。 $H_1$ の確率ではない。
- 効果量を報告しない — 大標本では小さな差でも p<0.05 になる。 d や η² を必ず併記する。
- 検出力を計算しない — power が低いまま「差なし」と結論すると、 実際には差があるのに見逃している可能性。
- 多重比較を補正しない — 20 個の $H_1$ を α=0.05 で同時検定すると、 偶然 1 個が有意になる確率 64%。 Bonferroni / Holm / FDR を使う。
- $H_1$ を「予想」と混同 — 「効果があると思う」は研究者の予想。 $H_1$ は 否定したいゼロ仮説と論理的に対をなす数学的命題。
- ベイズと混同 — $H_1$ vs $H_0$ の 事前確率 を考えるのは Bayes 流。 頻度論の $H_1$ は事前確率を持たない。
- 等価性検定との混同 — 「差がない」を 主張したい なら TOST (two one-sided tests) を使う。 通常の $H_0$ 不棄却では「差がない」を結論できない。
- $H_1$ を後から変える (HARKing) — Hypothesizing After Results are Known。 探索的結果を確認的に書き直す行為。 事前登録で防ぐ。
📋 対立仮説の場面別早見表
| 場面 | $H_0$ | $H_1$ | 検定 |
| 1標本の平均 | $\mu=\mu_0$ | $\mu \neq \mu_0$ | 1標本 t 検定 |
| 2群の平均 | $\mu_1=\mu_2$ | $\mu_1 \neq \mu_2$ | 2標本 t 検定 |
| 対応のある 2群 | $\mu_d=0$ | $\mu_d \neq 0$ | 対応のある t 検定 |
| 3群以上の平均 | 全 $\mu_i$ が等しい | 少なくとも 1 組が異なる | ANOVA |
| 分散の比較 | $\sigma_1^2=\sigma_2^2$ | $\sigma_1^2 \neq \sigma_2^2$ | F 検定 / Levene |
| 2変数の独立性 | 独立 | 独立でない | $\chi^2$ 検定 |
| 相関 | $\rho=0$ | $\rho \neq 0$ | Pearson 相関検定 |
| 回帰係数 | $\beta_k=0$ | $\beta_k \neq 0$ | t 検定 (回帰) |
| 等価性 (差がないことを示す) | $|\mu_1-\mu_2| \geq \Delta$ | $|\mu_1-\mu_2| < \Delta$ | TOST |
💬 この表を覚えておけば、 ほとんどの「$H_1$ どう書く?」問題に答えられます。 特に 等価性検定 (TOST) は「効果がない」を積極的に主張したい新薬・互換性研究で必須の手法で、 通常の検定では代用できないことに注意。
🖼 図で掴む 対立仮説
対立仮説の意味は、 数式だけでなく 分布の形・データの広がり・群の差 といった図で見ると、 そのまま「H₁ が言いたいこと」が掴めます。 ここでは SSDSE-B-2026 の都道府県データを使って 3 種の代表的な図を載せ、 それぞれ「どの $H_1$ を検証する場面で出る図か」を対応づけて読み解きます。
図 1. 散布図 (相関の対立仮説)
2 変数の関係について「$H_0: \rho = 0$ (相関なし) vs $H_1: \rho \neq 0$ (相関あり)」を検証する場合、 まず散布図を描いて点の並びの傾向を視覚的に確認します。 下図は SSDSE-B-2026 の総人口 (A1101) と一般診療所数 (I5102) の散布図 (2023 年, 47 都道府県) で、 右上がりの強い直線傾向 ($r = 0.972$) が見え、 $H_1$ (相関がある) を強く支持する形になっています。

💬 散布図で「明らかな傾向」が見えるなら、 検定の結果も $p$ 値が極めて小さくなる傾向にあります。 ただし、 図の見た目だけで結論せず必ず検定統計量 (Pearson の $r$ など) と $p$ 値で裏付けることが対立仮説検証の基本姿勢です。
図 2. ヒストグラム (1標本平均の対立仮説)
「$H_0: \mu = \mu_0$ vs $H_1: \mu \neq \mu_0$」を検証するとき、 対象データの分布をヒストグラムで確認します。 例えば 47 都道府県の総人口 (A1101) について「都道府県人口の平均は 250 万人という仮説 ($\mu_0=250$ 万人) は妥当か?」を考えるなら、 ヒストグラムで分布の中心と広がりを掴むことが第一歩です。 下図は SSDSE-B-2026 (2023 年) の総人口の分布で、 東京都を最大として右に長い裾を引く非対称な形をしています。

💬 分布が $\mu_0$ から大きくずれて見えるなら $H_1$ を支持する材料になりますが、 「ずれて見える」を客観的に判定するのが検定の役割です。 ヒストグラムの形状 (左右非対称・外れ値) は、 t 検定が使えるか (正規性) を確認する材料にもなります。
図 3. 箱ひげ図 (多群比較の対立仮説)
「$H_0: \mu_1=\mu_2=\mu_3$ vs $H_1: $ 少なくとも 1 組が異なる」を検証する ANOVA の場面では、 群ごとの箱ひげ図が必須の図表です。 下図は 47 都道府県を KMeans で 3 クラスタに分け、 クラスタ別に一般診療所数 (I5102) を比較したもので、 箱ひげ図なら中央値・四分位範囲・外れ値の違いが一目で分かります (東京都だけの単独クラスタが突出しています)。

💬 箱の重なりが少なく、 中央値の高さが明らかに違うなら $H_1$ (少なくとも 1 組は違う) を支持する強い材料です。 ANOVA で全体差が有意になった後は、 Tukey HSD 等の多重比較で「どの群とどの群が違うか」を特定します。
🎯 片側検定 vs 両側検定 — $H_1$ の書き方で結論が変わる
対立仮説を 両側 ($\neq$) にするか 片側 ($>$ または $<$) にするかは、 検定の感度と結論を大きく左右します。 「方向性を事前に主張できるか」「主張できる根拠が事前にあるか」で決まり、 データを見た後に都合よく変えるのは禁忌 (HARKing) です。
3 種の対立仮説の書き方
| タイプ | $H_0$ | $H_1$ | 使う場面 | 棄却域 |
| 両側 | $\mu=\mu_0$ | $\mu \neq \mu_0$ | 方向性を主張せず「差があるか?」だけ知りたい | 両側 $\alpha/2$ ずつ |
| 右片側 | $\mu \leq \mu_0$ | $\mu > \mu_0$ | 「新薬は対照薬より効く」など増加方向を主張 | 右側 $\alpha$ |
| 左片側 | $\mu \geq \mu_0$ | $\mu < \mu_0$ | 「不良率は基準値より低い」など減少方向を主張 | 左側 $\alpha$ |
片側にすると検出力が上がる仕組み
同じ $\alpha=0.05$ で考えると、 両側検定は左右に $0.025$ ずつ棄却域を割り振りますが、 片側検定は片方に $0.05$ をまるごと割り振ります。 結果として、 主張する方向の差を検出する力は片側のほうが大きくなります。 ただし反対方向の差は (たとえ大きくても) 一切検出できないという制約が付きます。
両側 $\alpha=0.05$ の場合: 棄却域は $|Z| > 1.96$
右片側 $\alpha=0.05$ の場合: 棄却域は $Z > 1.645$ ← 閾値が緩い
→ 同じデータでも、 右片側のほうが棄却しやすい
片側を選んでよい条件 (厳しい)
- 方向性に 事前の科学的根拠 がある (理論・先行研究・物理法則)
- 反対方向の結果に 科学的価値がない (実務的に意味がない)
- 研究計画書 (プロトコル) で データ取得前に 明記してある
- 反対方向のデータが出ても「効果なし」と解釈する覚悟がある
医薬品の承認試験では、 規制当局 (FDA・PMDA) は原則として両側検定を求めることが多く、 片側は「明確な根拠 + 事前登録」が揃った場合のみ許容されます。 ビジネス A/B テストでも、 デフォルトは両側で考えるのが安全です。
🔄 等価性検定 (TOST) — 「差がない」を積極的に示す $H_1$
通常の対立仮説は「差がある」ですが、 実務では 「差がない (≒ 同等である) ことを示したい」 場面も多くあります。 例: 後発医薬品 (ジェネリック) が先発品と同等の薬効を持つことの証明、 新サーバーが旧サーバーと同等の応答速度であることの確認。 この場面で通常の検定を逆向きに使うと、 「サンプルサイズが小さい → 差を検出できない → 差がない (ように見える)」という致命的な誤用に陥ります。
TOST (Two One-Sided Tests) の対立仮説
TOST では「同等とみなす許容範囲 $[-\Delta, +\Delta]$」を事前に決め、 $H_0$ と $H_1$ を 通常と逆向きに 設定します:
$H_0$ : $|\mu_1 - \mu_2| \geq \Delta$ (差が許容範囲より大きい = 同等でない)
$H_1$ : $|\mu_1 - \mu_2| < \Delta$ (差が許容範囲内 = 同等である)
$\Delta$ : 同等性マージン (例: 薬効なら $\pm 20\%$、 応答速度なら $\pm 10\text{ms}$)
この設定では、 検定で $H_0$ を棄却できれば「同等である」を積極的に主張できます。 通常の $t$ 検定で $p > 0.05$ が出ても「差がないとは言えない」止まりですが、 TOST では「同等である ($p < 0.05$)」と能動的な結論が出せます。
具体例: ジェネリック医薬品の生物学的同等性
日本の PMDA は、 ジェネリック医薬品の血中濃度ピーク $C_{\max}$ と曲線下面積 $\mathrm{AUC}$ について、 先発品との比 (幾何平均) が 0.80 ~ 1.25 の範囲 に収まることを示す TOST 様の検定を求めます。 つまり「$\Delta = 0.25$ (対数スケールで $\ln 1.25$)」の同等性マージンが規制で定められています。
ジェネリック A の試験結果 (n=24 健常人クロスオーバー):
$C_{\max}$ の幾何平均比 = 1.05 (90% CI: 0.96 ~ 1.15)
$\mathrm{AUC}$ の幾何平均比 = 1.02 (90% CI: 0.94 ~ 1.11)
→ 両指標とも 90% CI が [0.80, 1.25] に完全包含
→ 生物学的同等性 OK → ジェネリックとして承認可
💬 「差がないことを示す」場面で通常の $t$ 検定を使うと、 サンプルが少ないほど「差がない」結論になる本末転倒な状況になります。 同等性を示したいなら必ず TOST (またはベイズ流の同等性区間 ROPE) を使うのが現代統計の標準です。
⚠️ よくある誤用・誤解 — $H_1$ を巡る現場の事例
対立仮説に関連する誤用は枚挙にいとまがありません。 ここでは現場で実際に起きやすい 8 つの誤用パターンを取り上げ、 正しい考え方と修正方法を解説します。 「やってはいけないこと」を知ることは、 「正しい方法」を学ぶこと以上に実務的価値が高いと言えます。
誤用 1: $p$ 値ハッキング ($p$-hacking)
「とにかく有意な結果を出すために、 サブグループを切ったり変数を入れ替えたりして $p < 0.05$ を探し回る」行為。 $H_1$ がデータに合わせて事後的に決まるため、 報告される結果は再現性がありません。 対策は 事前登録 + 主要 $H_1$ の固定 + 多重比較補正。 探索的解析と検証的解析を明確に区別し、 探索的に見つけた所見は別データで再検証する habit が必要です。
誤用 2: HARKing (結果を見てから仮説を作る)
"Hypothesizing After the Results are Known" の略。 データを分析し、 有意になった関係性を「事前に予想していた $H_1$」として論文に書く行為。 一見筋が通って見えますが、 統計的検定の前提 (事前固定の $H_1$) を破壊し、 第 1 種の過誤率を膨らませます。 対策は研究ノートでの仮説記録、 事前登録、 そして「探索的所見」として正直に報告すること。
誤用 3: 「有意でない = 効果なし」の混同
「$p > 0.05$ だったから新薬に効果はなかった」と結論する論文は今も多いですが、 これは大きな誤解です。 有意でない結果は「効果ゼロの証拠」ではなく「効果検出失敗の証拠」にすぎません。 サンプル数が少なかった可能性、 効果量が想定より小さかった可能性、 測定誤差が大きかった可能性などを考慮する必要があります。 「差がない」を能動的に示したいなら TOST やベイズ的アプローチを使うのが正解です。
誤用 4: 信頼区間の解釈ミス
「95% 信頼区間 = 真の値が 95% の確率で含まれる区間」は厳密には誤った解釈で、 正しくは「同じ手続きを 100 回繰り返すと、 そのうち 95 個の区間が真の値を含む」です。 1 つの観測区間に対して「真の値が含まれる確率」と言えるのはベイズ統計の信用区間 (credible interval) であり、 頻度論的信頼区間とは別概念です。 実用上は混同してもさほど問題ないことが多いですが、 厳密な議論や教育場面では区別すべき重要なポイントです。
誤用 5: 大標本での「過剰な有意」
数百万件のビッグデータでは、 効果量が極小 ($d < 0.01$) でも $p$ 値はほぼ確実に 0 になります。 これを「強い証拠」と誤読すると、 実務的に意味のない差を強調する誤った意思決定につながります。 対策は 効果量を主要指標とし、 $p$ 値はサブ情報として扱う こと。 信頼区間の幅、 ベイズファクター、 実務的有意性 (practical significance) の議論を併記することが、 大標本時代の現代統計のお作法です。
誤用 6: 検定の前提を無視する
$t$ 検定は正規性と等分散を、 ANOVA は加えて独立性を仮定します。 これらが満たされないデータに無批判に適用すると、 $H_1$ の判定が信頼できなくなります。 対策は前提検証 (Shapiro-Wilk 正規性検定、 Levene 等分散検定) と、 違反時の代替手法 (Welch の補正、 Mann-Whitney 検定、 ブートストラップ)。 ただし正規性検定もサンプルサイズに依存するため、 残差プロットを目視で確認する習慣も重要です。
誤用 7: 多重検定の補正忘れ
「20 個の項目それぞれについて $H_1$ を検定し、 2 個が有意だった」場合、 Bonferroni 補正なしでは「偽陽性 2 個」の可能性が高いです。 補正後の有意水準は $0.05 / 20 = 0.0025$ となり、 単純な $p < 0.05$ では足りません。 ゲノミクスのように数千・数万の検定を行う分野では、 FDR (False Discovery Rate) コントロール (Benjamini-Hochberg 法) が標準的に用いられ、 厳しすぎる Bonferroni と緩すぎる無補正のバランスを取る発想で運用されています。
誤用 8: 検定結果を因果関係と混同
「$H_1$ : 喫煙と肺がん発症率に関連がある」が観察データで有意になっても、 それは関連性 (association) を示しただけで因果関係 (causation) ではありません。 RCT 以外の研究で因果を主張するには、 因果ダイアグラム (DAG)、 傾向スコア、 操作変数、 自然実験など追加の枠組みが必要です。 「相関は因果を含意しない」は統計学の格言ですが、 $H_1$ 採択が独り歩きして因果と読まれる事例は後を絶ちません。 報告時には「関連が示唆された」「相関が観察された」など因果を含意しない表現を意識的に使いましょう。
📖 関連ミニ用語集 — 対立仮説まわりの語彙整理
対立仮説を巡る議論で頻出する用語を、 関連性別に整理しておきます。 これらの語彙を正確に使い分けられるようになると、 統計の文献を読む速度と理解の深さが大きく変わります。
| 日本語 | 英語 | 意味 |
| 対立仮説 | alternative hypothesis ($H_1$) | 帰無仮説に対立する命題。 研究者が示したい主張 |
| 帰無仮説 | null hypothesis ($H_0$) | 「差がない・効果がない」を仮定する基準命題 |
| 単純仮説 | simple hypothesis | パラメータをただ 1 つの値に指定する仮説 |
| 複合仮説 | composite hypothesis | パラメータが複数値・範囲を取りうる仮説 (例: $\mu \neq 0$) |
| 検出力 | statistical power ($1-\beta$) | $H_1$ が真のとき正しく $H_0$ を棄却する確率 |
| 第 1 種の過誤 | type I error ($\alpha$) | $H_0$ が真なのに棄却する誤り (偽陽性) |
| 第 2 種の過誤 | type II error ($\beta$) | $H_1$ が真なのに棄却しない誤り (偽陰性) |
| 効果量 | effect size | $H_1$ の効果の大きさを標準化した指標 (Cohen $d$ など) |
| 同等性検定 | equivalence test (TOST) | 「差がない」を能動的に示すための $H_1$ 設計 |
| 事前登録 | preregistration | データ取得前に $H_1$ と解析計画を公表する慣行 |
| ベイズファクター | Bayes factor ($\mathrm{BF}$) | $H_1$ と $H_0$ への支持度の比 (ベイズ統計) |
| HARKing | HARKing | 結果を見てから $H_1$ を作る研究不正の一種 |
💬 対立仮説を真摯に書くことは、 統計学の基礎であると同時に、 再現可能で誠実なデータ科学を実践するための文化的基盤でもあります。 効果量・検出力・事前登録・多重比較補正と組み合わせて使うことで、 「$p < 0.05$ で安心」を超えた質の高い研究が可能になります。
対立仮説を学ぶ意義 — 再現性危機の時代に
2010 年代以降、 心理学・医学・社会科学では「公表された研究の半数以上が再現できない」という再現性危機 (replication crisis) が深刻な問題となっています。 その原因の多くは「$H_1$ を厳密に書かない・$p$ 値だけに頼る・多重比較を無視する・効果量を報告しない」といった検定実務の甘さに起因します。 対立仮説の概念を正確に理解し、 効果量・検出力・信頼区間と組み合わせて議論する習慣は、 単なる統計テクニックを超えて、 データ科学を職業として誠実に営むための職業倫理の一部です。
学習者の皆さんには、 「$H_1$ を考えるとは、 自分が世界について何を主張したいかを言語化すること」と受け止めてほしいと思います。 漠然と「差があるか調べる」のではなく、 「どの方向に・どれだけの大きさで・どんな条件で・誰に対して差があるのか」を具体的に書けるようになれば、 統計検定は単なる計算ツールから、 思考の補助線へと姿を変えます。 そこからが本当のデータサイエンスの始まりです。 教科書通りの「$H_0$ と $H_1$ を立てる」というステップが、 実は研究全体の方向性と価値を決める最重要工程であると気づくとき、 統計学の風景は一変します。 効果量・サンプルサイズ・事前登録・多重比較補正・ベイズ的解釈などの周辺概念を組み合わせて、 「$H_1$ を中心に据えた研究設計」を意識的に行うことが、 21 世紀のデータサイエンティストに求められる素養です。 検定の儀式から脱却し、 主張すべき命題を真摯に構築する姿勢こそが、 統計を強力な意思決定言語へと昇華させる鍵となります。 この記事を通じて、 対立仮説への理解と尊敬が深まることを願います。
📚 さらに学ぶための入口
本ページは初学者向けの導入に重きを置いています。 もう一段深く学びたい方向けの参考方向性を以下にまとめました。 具体的な書誌情報は出典を確認の上で各自で取得してください。
- 大学教科書レベル:基礎統計・線形代数・確率論の教科書から該当章を確認すると、 本用語の理論的裏付けが押さえられます。
- 専門書・モノグラフ:本用語の名前で和書・英書を検索すると、 数百ページの体系的解説に出会えます。 1 度通読する価値あり。
- 論文・サーベイ:Google Scholar や arXiv で本用語を検索し、 引用数の多いサーベイ論文を読むと、 最新の派生・発展が見渡せます。
- 公的統計:本サイトの題材である SSDSE(教育用標準データセット)や e-Stat を使うと、 実データで手を動かしながら学べます。
- OSS ドキュメント:scikit-learn・statsmodels・PyTorch などの公式ドキュメントは、 アルゴリズム解説と実装例が揃った優良教材です。
- 本サイトの再現論文:用語がどう実問題に使われるかは、 論文一覧 から該当ジャンルを選ぶと具体例が確認できます。
🎯 このページの要点(最終確認)
「対立仮説」を 1 行で言える ように整理:
- カテゴリ:仮説検定
- 何をする道具か:対立仮説(H₁)は、 「研究者が示したい主張」を表す仮説。 帰無仮説 H₀ を棄却した時に採択される。
- 使う前に必ず確認:適用条件、 サンプル数、 前提仮定
- 結果と一緒に必ず示す:不確実性(標準誤差・信頼区間)、 解釈、 限界
- 関連グループ教材:このページ末尾のリンクから全体像へ
🧭 次に読むなら:この用語のすぐ隣にあるのは 帰無仮説(対)、 p値(判定指標)、 有意水準(判定閾値) です。 括弧内がこの用語との関係なので、 いま知りたいことに近いものから開いてください。 この用語集は必要になった時に開く前提で作っているので、 今すぐ全部読む必要はありません。
📚 関連グループ教材
この用語の全体像を学ぶには、 横断的な教材から入るのが効率的:
📚 Round 18 — 対立仮説 (H₁) 完全攻略補足
対立仮説H₁両側 / 片側効果量検出力事前計画SSDSE-B-2026研究仮説Neyman-Pearson
🔬 数式を言葉で読み解く(拡張 narration)
🔬 数式を言葉で読み解く(narration):A1101 → 総人口(千人)。 分析の分母になる基本量です。A1303 → 65 歳以上人口。 高齢化率を産む分子。A1302 → 15 〜 64 歳人口(生産年齢人口)。 経済活動の主体。μ → 全国平均。 比較基準として用います。α → 有意水準。 第一種の誤り許容率(対立仮説 (H₁) に関する判断で重要)。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 の都道府県データから 対立仮説 (H₁) の文脈で代表値を読み取ります。 各列の記号 → 意味を確認し、 平均・中央値・四分位を併記する習慣を身につけましょう。
| 都道府県 | 総人口(千) | 65歳以上人口(千) | 高齢化率(%) | 記号 → 意味 |
|---|
| 秋田県 | 945 | 370 | 39.1 | A1101 → 総人口 / A1303 → 高齢者 / 比率 → 高齢化率 |
| 東京都 | 14,047 | 3,193 | 22.7 | 巨大分母 → 平均を引き上げる外れ値の典型 |
| 沖縄県 | 1,467 | 323 | 22.0 | 若い人口構造 → 全国最低の高齢化率 |
| 大阪府 | 8,838 | 2,420 | 27.4 | 大都市圏の中位 → 比較基準として有用 |
| 島根県 | 658 | 231 | 35.1 | 人口減少地域 → 分母縮小型の高齢化 |
🐍 Python 実装 — Round 18 拡張
両側 H₁ の Welch t 検定 — 都道府県の高齢化率(東日本 vs 西日本)
🎯 SSDSE-B-2026(都道府県データ)を 対立仮説 (H₁) の文脈で読み解く実値計算例。 各セルの記号 → 意味(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 年の 47 都道府県だけを対象
df['aging'] = df['A1303']/df['A1101']*100
west = ['滋賀県','京都府','大阪府','兵庫県','奈良県','和歌山県','鳥取県','島根県','岡山県','広島県','山口県','徳島県','香川県','愛媛県','高知県','福岡県','佐賀県','長崎県','熊本県','大分県','宮崎県','鹿児島県','沖縄県']
g_w = df[df['Prefecture'].isin(west)]['aging']
g_e = df[~df['Prefecture'].isin(west)]['aging']
t, p = stats.ttest_ind(g_e, g_w, equal_var=False)
print(f'両側: t={t:.3f}, p={p:.4f}')
|
📤 実行例(実測)
両側: t=-0.894, p=0.3763
📥 入力: data/raw/SSDSE-B-2026.csv(47 都道府県 × 主要統計列)。 出力例は数値・p 値・統計量で、 解釈には「実値で計算してみる → 仮説検定 → 効果量 → 結論」の流れを推奨します。
片側 H₁ — 東日本の方が高い という指向仮説
🎯 SSDSE-B-2026(都道府県データ)を 対立仮説 (H₁) の文脈で読み解く実値計算例。 各セルの記号 → 意味(A1101 → 総人口, A1303 → 65 歳以上人口)を確認しながら手元の Jupyter で実行できます。
| import scipy.stats as st
p_one = p / 2 if t > 0 else 1 - p/2
print(f'片側 p (east>west): {p_one:.4f}')
|
📤 実行例(実測)
片側 p (east>west): 0.8118
📥 入力: data/raw/SSDSE-B-2026.csv(47 都道府県 × 主要統計列)。 出力例は数値・p 値・統計量で、 解釈には「実値で計算してみる → 仮説検定 → 効果量 → 結論」の流れを推奨します。
検出力 (power) — 効果量 d=0.5 を検出する確率
🎯 SSDSE-B-2026(都道府県データ)を 対立仮説 (H₁) の文脈で読み解く実値計算例。 各セルの記号 → 意味(A1101 → 総人口, A1303 → 65 歳以上人口)を確認しながら手元の Jupyter で実行できます。
| from statsmodels.stats.power import TTestIndPower
analysis = TTestIndPower()
power = analysis.solve_power(effect_size=0.5, nobs1=24, alpha=0.05, ratio=1.0)
print(f'検出力: {power:.3f}')
|
📤 実行例(実測)
検出力: 0.396
📥 入力: data/raw/SSDSE-B-2026.csv(47 都道府県 × 主要統計列)。 出力例は数値・p 値・統計量で、 解釈には「実値で計算してみる → 仮説検定 → 効果量 → 結論」の流れを推奨します。
必要サンプル数 — power 0.8 を得るには
🎯 SSDSE-B-2026(都道府県データ)を 対立仮説 (H₁) の文脈で読み解く実値計算例。 各セルの記号 → 意味(A1101 → 総人口, A1303 → 65 歳以上人口)を確認しながら手元の Jupyter で実行できます。
| n = analysis.solve_power(effect_size=0.5, power=0.8, alpha=0.05, ratio=1.0)
print(f'各群必要 n: {n:.1f}')
|
📤 実行例(実測)
各群必要 n: 63.8
📥 入力: data/raw/SSDSE-B-2026.csv(47 都道府県 × 主要統計列)。 出力例は数値・p 値・統計量で、 解釈には「実値で計算してみる → 仮説検定 → 効果量 → 結論」の流れを推奨します。
❓ よくある質問 (FAQ)
対立仮説と研究仮説は同じ?
概ね同じです。 研究で示したい主張を H₁ として、 統計的検定で H₀ を棄却することで間接的に支持します。
両側 H₁ と片側 H₁ の使い分け?
理論的に方向が固定できる事前仮説のときだけ片側。 通常は両側を既定にすべきです。
H₁ を後から変えてもよい?
後付け(HARKing)は再現性を損ねます。 仮説事前登録を強く推奨。
H₁ が正しくても棄却に失敗することは?
あります。 サンプル不足や効果量が小さいときの「第二種の誤り」です。
ベイズだと対立仮説はどうなる?
ベイズではモデル間比較(ベイズファクター)で H₀ vs H₁ を量的に評価します。
⚠️ 拡張版 落とし穴チェックリスト
- 分母を確認しない罠: 比率や率の意味は分母で決まります。 SSDSE で「per 1000」と「per 100」を取り違えると桁違いになります。
- 外れ値の影響: 東京都が平均値を引き上げる効果は実際に大きく、 中央値との乖離を必ず併記しましょう。
- 因果と相関の混同: 高齢化率と平均所得が相関しても、 因果は別問題。 第三変数(産業構造・気候)の介在を疑います。
- 選択バイアス: 「都市部のサンプルだけ」では地方の構造が見えません。 47 都道府県すべてを観察しましょう。
- 多重比較: 47 都道府県を一斉比較すると α=0.05 でも約 2.35 件は偶然有意。 Bonferroni 等の補正が必須です。
- 時点ずれ: SSDSE-B-2026 と 国勢調査 2020 では基準時点が異なります。 同期した比較が必要。
- 対立仮説 (H₁) 特有の文脈ずれ: 教育用に正規化したサンプルと現場データの落差。 単位・桁・カテゴリを揃える前処理が肝心。
🔗 関連用語(前提・並列・発展)— Round 18 補強
対立仮説 (H₁) を中心に、 前提概念・並列分野・発展手法へリンクします。
📚 関連グループ教材
グループ教材から 対立仮説 (H₁) の文脈に直結する論文・ハンズオンを辿れます。
🕰 歴史的背景と現代
対立仮説 (H₁) は古典統計と社会データの交差点で発達してきました。 19 世紀末から 20 世紀初頭にかけて Pearson, Fisher, Neyman などが基礎を整え、 戦後の公的統計整備により実務応用が広がりました。
2010 年代以降は、 「再現性危機」「ビッグデータ」「AI 倫理」の三つの波が 対立仮説 (H₁) に新しい意味を与えました。 単に p<0.05 を出すのではなく、 効果量・信頼区間・事前登録・データシートが必須となっています。
日本では総務省統計局・国立社会保障人口問題研究所・経済産業省 RESAS などが公的統計を整備し、 教育用に SSDSE が無償公開されました。 本ページもこの枠組みで 対立仮説 (H₁) を扱います。
📚 参考リンク
- 総務省統計局 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 年の 47 都道府県だけを対象
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']))
|
📤 実行例(実測)
mean std min max
block
中国 32.954654 2.319179 30.131483 35.362096
中部 31.264899 2.341873 25.718871 33.866416
九州 32.644779 2.096797 28.453851 34.333070
北海道 33.012569 NaN 33.012569 33.012569
四国 34.599246 1.656231 32.505400 36.336336
東北 34.477233 3.208297 29.240283 39.059081
沖縄 23.841962 NaN 23.841962 23.841962
近畿 30.257049 2.549143 27.007818 34.192825
関東 27.993120 2.966415 22.753088 30.967403
ケース 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}%')
|
📤 実行例(実測)
2030 年予測: 36.4%
2040 年予測: 44.9%
2050 年予測: 54.4%
ケース 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))
|
📤 実行例(実測)
Prefecture aging risk_score
144 東京都 22.753088 1.463583
312 大阪府 27.661760 1.289330
156 神奈川県 25.896630 1.157040
120 埼玉県 27.445096 0.951470
0 北海道 33.012569 0.874586
264 愛知県 25.718871 0.797104
132 千葉県 28.064568 0.774462
324 兵庫県 29.962756 0.721129
468 福岡県 28.453851 0.542572
252 静岡県 30.970464 0.313362
🔬 数式を言葉で読み解く — 演習問題
- 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 年の 47 都道府県だけを対象
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}')
|
📤 実行例(実測)
t=5.311 / p=0.0000
Cohen's d = 0.775
95% CI = (np.float64(30.63152485236608), np.float64(32.54025866289174))
📊 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 年の 47 都道府県だけを対象
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())
|
📤 実行例(実測)
count 47.000000
mean 31.585892
std 3.338168
min 22.753088
25% 30.047119
50% 31.783920
75% 34.012991
max 39.059081
Name: aging, dtype: float64
上位: Prefecture aging
48 秋田県 39.059081
456 高知県 36.336336
420 徳島県 35.395683
408 山口県 35.362096
12 青森県 35.219595
下位: Prefecture aging
144 東京都 22.753088
552 沖縄県 23.841962
264 愛知県 25.718871
156 神奈川県 25.896630
288 滋賀県 27.007818
差の絶対値合計: 122.59762267518647
z>2 の県: ['秋田県']
quint
Q1 10
Q2 9
Q3 9
Q4 9
Q5 10
Name: count, dtype: int64
🐍 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 項目(上記)。
- 効果量・信頼区間・事前登録を組み合わせる「現代的な使い方」が必須。
🧭 片側 vs 両側: 対立仮説の方向性をどう決めるか
対立仮説 $H_1$ を立てるとき、 まず最初に決めなければならないのが 方向性 です。 「効果がある(差がある)」だけを主張するなら 両側、 「特定の方向(増えた/減った)に効果がある」と主張するなら 片側 です。 この選択を間違えると、 同じデータで結論が真逆になることがあります。
📐 数式: 帰無 vs 対立 (3 パターン)
母平均 $\mu$ を例にすると、 3 通りの $H_1$ がありえます。
$$H_0: \mu = \mu_0 \quad \text{(常に等号、 方向は持たない)}$$
$$H_1^{\text{両側}}: \mu \neq \mu_0$$
$$H_1^{\text{右側}}: \mu > \mu_0$$
$$H_1^{\text{左側}}: \mu < \mu_0$$
🔬 数式を言葉で読み解く — 不等号 1 つの違いが意味するもの
$\neq$ は「等しくない」を主張するだけで、 $\mu$ が $\mu_0$ より大きいか小さいかは問いません。 そのため 両側検定 は分布の両端 $\alpha/2$ ずつを棄却域とします。 一方 $>$ や $<$ は特定方向のみを許すので、 棄却域は片端の $\alpha$ 全てに集中し、 同じデータでも p 値が半分 になり「有意になりやすい」ように見えます。 ただし、 片側で有意になっても 反対側の効果は検出できません(決定的な弱点)。
🧮 SSDSE-B-2026 で片側/両側を比較してみる
SSDSE-B-2026 の 47 都道府県データから、 「出生率は全国平均より低いか?」 という問題を立てます。 これは方向性を持つ仮説なので、 片側検定が候補に挙がります。
このコードでやること: SSDSE-B-2026 の 47 都道府県の出生率 (A4101 / A1101 × 1000) について、 「全国平均 7.0 と等しい」を $H_0$ とし、 両側と片側両方の p 値を比較する。
📥 入力データ (SSDSE-B-2026 抜粋):
Code 都道府県 A1101(総人口) A4101(出生数)
R01000 北海道 5,092,000 24,430
R02000 青森県 1,184,000 5,696
R13000 東京都 14,086,000 86,348
R47000 沖縄県 1,468,000 12,549
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | 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].copy() # 2023 年の 47 都道府県だけ
# 出生率 (人口千対) を計算
birth_rate = df['A4101'] / df['A1101'] * 1000
mu0 = 7.0 # 仮想全国平均
t, p_two = stats.ttest_1samp(birth_rate, mu0)
p_left = p_two / 2 if t < 0 else 1 - p_two / 2
p_right = p_two / 2 if t > 0 else 1 - p_two / 2
print(f"標本平均 = {birth_rate.mean():.3f}")
print(f"t 統計量 = {t:.3f}")
print(f"両側 p = {p_two:.4f}")
print(f"左側 p = {p_left:.4f} (H1: μ < 7.0)")
print(f"右側 p = {p_right:.4f} (H1: μ > 7.0)")
|
📤 実行例:
標本平均 = 5.726
t 統計量 = -12.399
両側 p = 0.0000
左側 p = 0.0000 (H1: μ < 7.0)
右側 p = 1.0000 (H1: μ > 7.0)
💬 標本平均は 5.73 で 7.0 より小さく、 t は大きく負(-12.4)。 両側 p≈0.000(α=0.05 で明確に有意)、 左側 p≈0.000(μ<7.0 を強く支持)、 右側 p=1.00(μ>7.0 は全く支持されない)。 同じデータでも、 仮説の立て方(方向)で結論が真逆になる:左側なら棄却、 右側なら棄却できない。 だからこそ データを見る前に $H_1$ を決める「事前登録」が重要なのです。
📝 より正確な分析:実データ(SSDSE-B-2026 の 2023 年 47 都道府県)で計算すると、 出生率の標本平均は 5.73(人口千対)で、 比較基準 7.0 との差は t=-12.4 と非常に大きく、 両側・左側とも p はほぼ 0。 教材当初の «境界例(p≈0.02〜0.05)で両側/片側の差が効く» という数値は実測とは異なるため、 実測値へ差し替えました。 なお 7.0 はあくまで仮想の基準値であり、 近年の日本の粗出生率(人口千対 6 前後)より高めに設定されている点に注意してください。
⚖️ どちらを選ぶべきか — 判断フロー
| 状況 | 推奨 | 理由 |
| 理論的根拠があり方向が決まる | 片側 | 検出力が高まる |
| 新薬の効果 (副作用も警戒) | 両側 | 悪化も検出すべき |
| 探索的研究 | 両側 | 方向の先入観を避ける |
| データを見た後で決める | ❌ | p ハッキング |
📊 効果量と検出力: 「有意」だけでは不十分
p 値が小さくても、 効果が 実質的に重要 とは限りません。 標本サイズが十分大きければ、 微小な差でも統計的有意になります。 そこで近年は $H_1$ の検証と一緒に 効果量 (effect size) と 検出力 (power) を必ず併記することが推奨されています。
📐 効果量の数式 (Cohen's d)
$$d = \frac{\bar{X} - \mu_0}{s}, \quad s = \sqrt{\frac{1}{n-1}\sum_{i=1}^n (X_i - \bar X)^2}$$
🔬 数式を言葉で読み解く — 標準偏差で割る意味
分子 $\bar X - \mu_0$ は 差そのもの。 これを標本標準偏差 $s$ で割ることで「標準偏差何個分の差か」という相対尺度に変換します。 たとえば $d=0.5$ は「標本平均が $\mu_0$ から標準偏差 0.5 個分ずれている」を意味し、 Cohen の慣例では 中程度の効果 と解釈されます。 p 値は標本サイズに依存しますが、 $d$ は依存しません — だから効果の 大きさ を語るには $d$ が必要です。
| Cohen's d | 解釈 | 必要 n (α=.05, power=.8, 両側) |
| 0.2 | 小 | ~197 |
| 0.5 | 中 | ~34 |
| 0.8 | 大 | ~15 |
| 1.2 | 非常に大 | ~8 |
🐍 効果量と検出力を SSDSE で計算
このコードでやること: SSDSE-B-2026 の出生率データで、 Cohen's d を直接計算し、 statsmodels で検出力 (power) と必要サンプルサイズを求める。
📥 入力データ: 上の例と同じ 47 県の出生率 (約 5.73, s ≈ 0.70)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | import pandas as pd
import numpy as np
from statsmodels.stats.power import TTestPower
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023].copy() # 2023 年の 47 都道府県だけ
br = df['A4101'] / df['A1101'] * 1000
mu0 = 7.0
d = (br.mean() - mu0) / br.std(ddof=1)
print(f"Cohen's d = {d:.3f} (絶対値で解釈)")
analysis = TTestPower()
power = analysis.power(effect_size=abs(d), nobs=len(br), alpha=0.05, alternative='larger')
n_req = analysis.solve_power(effect_size=abs(d), power=0.8, alpha=0.05, alternative='larger')
print(f"現在の検出力 (n=47) = {power:.3f}")
print(f"power=0.8 に必要な n = {n_req:.1f}")
|
📤 実行例:
Cohen's d = -1.809 (絶対値で解釈)
現在の検出力 (n=47) = 1.000
power=0.8 に必要な n = 3.7
💬 d=-1.81(絶対値 1.81)は 非常に大きい効果。 比較基準 7.0 と実測平均 5.73 の差が標準偏差 (0.70) の約 1.8 個分もあるため、 現在の検出力は実質 1.00(見逃しほぼゼロ)で、 power=0.8 なら n=4 程度で十分。 効果がこれだけ大きいと n=47 は「足りない」どころか過剰なほどで、 検定は容易に有意になります。 それでも効果量と検出力を併記する習慣は、 «有意かどうか» と «効果がどれだけ大きいか» を切り分けて報告するために重要です。
📝 より正確な分析:教材当初の «d≈0.34(小〜中)/検出力 0.64/power=0.8 には n=71 必要(都道府県は 47 で固定なので足りない)» という数値は、 年次フィルタ無し・仮の値に基づくものでした。 実データ(2023 年 47 都道府県)では基準値 7.0 からの乖離が大きく、 効果量・検出力の結論は逆転します。 «小さな効果を n=47 で検出できるか» を論じたい場合は、 基準値をより現実的な水準(例:全国平均に近い値)に置くと教材意図に沿った例になります。 なお TTestPower().power は効果量が極端に大きいと数値計算上 nan を返すことがあるため、 alternative='larger' を明示しています。
🔐 事前登録 (preregistration) — H1 を改ざんから守る
事前登録 (preregistration) とは、 データを見る前に研究計画 ($H_0$、 $H_1$、 解析手順、 サンプルサイズ、 棄却基準) を公開リポジトリ (OSF、 AsPredicted など) に時刻付きで登録することです。 これにより、 結果に合わせて仮説を後付けする (HARKing) や p 値が 0.05 を切るまで条件を変える (p ハッキング) を防ぎます。
📋 事前登録に書くべき 7 項目
- 研究課題: 何を知りたいか
- $H_0$ と $H_1$: 数式 + 言葉で明示。 片側/両側も含む
- 変数: 説明変数、 目的変数、 共変量
- 解析手法: 使う検定 / モデル名(t 検定、 線形回帰など)
- サンプルサイズ計算: 想定効果量、 検出力、 α、 必要 n
- 棄却基準: α、 多重比較補正の有無
- 欠損・外れ値処理: いつ・どう除外するかルール化
🔬 数式を言葉で読み解く — Type I/II エラーの非対称性
$\alpha = P(\text{reject } H_0 | H_0 \text{ true})$ は「無実の人を有罪にする」確率、 $\beta = P(\text{accept } H_0 | H_1 \text{ true})$ は「犯人を逃がす」確率。 事前登録なしの探索的解析では、 仮説を増やすと $\alpha$ が膨らみます (family-wise error)。 事前登録は「主仮説を 1 つに絞り、 残りは exploratory として公開する」ことで、 この膨張を抑える仕組みです。
🧮 事前登録テンプレート (SSDSE 出生率の例)
研究課題: 47 都道府県の出生率は全国平均 7.0 を下回るか
H0: μ = 7.0
H1: μ < 7.0 (片側検定)
データ: SSDSE-B-2026 の A4101 / A1101 × 1000
解析: 一標本 t 検定 (左側), α = 0.05
サンプル: n = 47 (全都道府県固定)
想定効果量: d = 0.4 (中程度), power = 0.66
棄却基準: p < 0.05 で H0 棄却
外れ値: 削除しない (全県を含む)
公開日時: 2026-05-29 16:00 JST registry: OSF
🧩 複合仮説と多項対立仮説
対立仮説は単純 (single) なものだけでなく、 複合仮説 (composite) や 多項対立仮説 も扱います。 たとえば「ANOVA の $H_1$: 少なくとも 1 組の群平均が違う」は複合仮説です。
📐 ANOVA の対立仮説
$$H_0: \mu_1 = \mu_2 = \mu_3 = \mu_4$$
$$H_1: \exists\, i \neq j \text{ such that } \mu_i \neq \mu_j$$
🔬 数式を言葉で読み解く — 「ある」と「全て」の論理
$H_0$ は「全ての ペアで等しい」を要求するため、 否定すると「少なくとも 1 つの ペアで違う」になります。 これが $H_1$ の "$\exists$" (存在記号)。 ANOVA で有意が出ても どのペアが違うかは分からない ため、 事後検定 (Tukey HSD など) で個別ペアを調べる必要があります。
🐍 SSDSE 47 県を 4 地方ブロックで ANOVA
このコードでやること: SSDSE-B-2026 の都道府県コードから 4 地方 (北/東/中/西) を作り、 出生率の地域差を ANOVA + Tukey HSD で検証する。
📥 入力データ:
都道府県コード R01000-R47000、 出生率 (約 5.73 ± 0.70)
地方分け: 北 (R01-R07), 東 (R08-R23), 中 (R24-R30), 西 (R31-R47)
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
from scipy import stats
from statsmodels.stats.multicomp import pairwise_tukeyhsd
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
df = df[df['SSDSE-B-2026'] == 2023].copy() # 2023 年の 47 都道府県だけ
df['rate'] = df['A4101'] / df['A1101'] * 1000
df['pref_no'] = df['Code'].str.extract(r'R(\d{2})').astype(int)
def region(n):
if n <= 7: return '北'
if n <= 23: return '東'
if n <= 30: return '中'
return '西'
df['region'] = df['pref_no'].apply(region)
groups = [g['rate'].values for _, g in df.groupby('region')]
F, p = stats.f_oneway(*groups)
print(f"ANOVA F={F:.3f}, p={p:.4f}")
tukey = pairwise_tukeyhsd(df['rate'], df['region'], alpha=0.05)
print(tukey.summary())
|
📤 実行例(実測)
ANOVA F=8.647, p=0.0001
Multiple Comparison of Means - Tukey HSD, FWER=0.05
===================================================
group1 group2 meandiff p-adj lower upper reject
---------------------------------------------------
中 北 -0.9999 0.0116 -1.8219 -0.178 True
中 東 -0.1836 0.8948 -0.8805 0.5132 False
中 西 0.3013 0.6511 -0.3892 0.9919 False
北 東 0.8163 0.0159 0.1195 1.5131 True
北 西 1.3013 0.0001 0.6107 1.9918 True
東 西 0.485 0.0884 -0.0506 1.0206 False
---------------------------------------------------
📤 実行例(実測)
ANOVA F=8.647, p=0.0001
Multiple Comparison of Means - Tukey HSD, FWER=0.05
===================================================
group1 group2 meandiff p-adj lower upper reject
---------------------------------------------------
中 北 -0.9999 0.0116 -1.8219 -0.178 True
中 東 -0.1836 0.8948 -0.8805 0.5132 False
中 西 0.3013 0.6511 -0.3892 0.9919 False
北 東 0.8163 0.0159 0.1195 1.5131 True
北 西 1.3013 0.0001 0.6107 1.9918 True
東 西 0.485 0.0884 -0.0506 1.0206 False
---------------------------------------------------
📤 実行例:
ANOVA F=8.647, p=0.0001
Multiple Comparison of Means - Tukey HSD, FWER=0.05
group1 group2 meandiff p-adj lower upper reject
中 北 -0.9999 0.0116 -1.8219 -0.178 True
中 東 -0.1836 0.8948 -0.8805 0.5132 False
中 西 0.3013 0.6511 -0.3892 0.9919 False
北 東 0.8163 0.0159 0.1195 1.5131 True
北 西 1.3013 0.0001 0.6107 1.9918 True
東 西 0.4850 0.0884 -0.0506 1.0206 False
💬 ANOVA は p=0.0001 で有意 → $H_1$ 採択「少なくとも 1 ペアで差がある」。 Tukey で詳細を見ると、 有意 (p<0.05) なのは 中-北・北-東・北-西 の 3 ペアで、 いずれも 北 (北海道・東北) の出生率が低い ことによる差です (地域平均: 北 4.83, 東 5.65, 中 5.83, 西 6.13)。 一方 中-東・中-西・東-西 は有意でない。 ANOVA だけで終わると「全地方で差がある」と 過剰一般化 しがち。 事後検定までセットで $H_1$ を扱うのが正しい姿勢です。
📚 さらに学ぶための資料
| 区分 | 資料名 | 特徴 |
| 入門 | 『統計学入門』 (東京大学出版会) | $H_0$, $H_1$, $p$ 値の基礎を丁寧に |
| 中級 | 『データ解析のための統計モデリング入門』 (久保拓弥) | $H_1$ をモデルとして捉える視点 |
| 中級 | 『心理学のためのサンプルサイズ設計入門』 (講談社) | $H_1$ → 効果量 → 必要 n の実務 |
| 上級 | Lehmann & Romano 『Testing Statistical Hypotheses』 | Neyman-Pearson 理論の決定版 |
| ガイド | ASA Statement on p-Values (2016) | $p$ 値と $H_1$ の正しい解釈 (公開) |
| 論文 | Lakens (2017) Equivalence Tests | TOST の実用的入門 (公開) |
| Web | Cross Validated (stats.stackexchange.com) | $H_1$ 設計の具体例多数 |
| Web | PMDA 後発医薬品ガイドライン | 同等性 $H_1$ の規制要件 (公開) |
💬 「$H_1$ を具体的に書く」は、 統計学の基礎であると同時に、 再現性の高い研究を行う上での誠実さの指標でもあります。 効果量・検出力・事前登録と組み合わせて使うのが現代統計の標準的なお作法です。
🔎 対立仮説の深掘り — 現場でつまずきやすい論点
1. 「対立仮説を採択する」と言わない理由
厳密な統計学では、 検定の結論として「対立仮説 $H_1$ を採択する (accept)」とは言わず、 「帰無仮説 $H_0$ を 棄却 (reject) する」あるいは「$H_0$ を棄却するに足る証拠が得られた」と表現します。 これは Neyman-Pearson 流の判定 (二者択一の意思決定) と Fisher 流の証拠評価 ($p$ 値の小ささ) の折衷で生まれた現代的な慣習で、 $H_1$ も完全な真理ではなく「$H_0$ より相対的にマシ」という暫定的位置づけに留めるべきという思想を反映しています。 学術論文では「$H_0$ was rejected at the $\alpha=0.05$ level, supporting $H_1$」のように、 棄却と支持を分けて記述する型が一般的です。
2. 複合的な対立仮説と尤度比検定
$H_1: \mu \neq \mu_0$ のような対立仮説は「$\mu$ がただ 1 つの値ではなく、 $\mu_0$ 以外のすべての値」を含む 複合仮説 です。 これに対して $H_0: \mu = \mu_0$ は単一の値を指定する 単純仮説。 複合仮説に対する最強力検定は一般には存在せず、 代わりに尤度比検定統計量 $\Lambda = \frac{\sup_{\theta \in \Theta_0} L(\theta)}{\sup_{\theta \in \Theta} L(\theta)}$ を使うのが現代的な定石です。 $-2 \log \Lambda$ は $\chi^2$ 分布に漸近的に従うため、 多くの検定 ($z$, $t$, $\chi^2$, F) はこの枠組みに統合できます。 対立仮説が「広い」場合、 検出力は方向ごとに変わるので、 サンプルサイズ計算では「最も検出が難しい方向の効果量」を仮定するのが安全です。
3. $p$ 値が小さい = $H_1$ が真である、 ではない
「$p < 0.05$ だから $H_1$ が正しい」という解釈は、 統計的検定における最大の誤解の 1 つです。 $p$ 値が定義するのは「$H_0$ が真であるという前提のもとで、 観測されたデータ (またはそれ以上に極端なデータ) が得られる確率」であり、 $H_1$ が真である確率ではありません。 「$H_1$ が真である確率」を直接知りたいならベイズ統計の事後確率を計算する必要があり、 それには事前分布の指定が不可欠です。 さらに、 効果量が極めて小さくてもサンプルサイズが大きければ $p$ 値はいくらでも小さくなる (= 「統計的に有意」だが「実務的には無視できる」状況) ため、 $p$ 値だけで $H_1$ の重要性を判断するのは危険です。 必ず効果量と信頼区間を併記し、 $H_1$ が実務的に意味のある大きさかどうかを別個に評価しましょう。
4. 多重比較と $H_1$ のインフレ
複数の対立仮説を同時に検定すると、 「どれか 1 つは偶然有意になる」確率が膨らみます。 例えば $\alpha=0.05$ で 20 個の独立な仮説を検定すると、 すべてが真の $H_0$ でも 1 つは有意になる期待値です ($0.05 \times 20 = 1$)。 これを防ぐには Bonferroni 補正 ($\alpha$ を仮説数で割る) や Holm 法、 Benjamini-Hochberg 法 (FDR コントロール) を使います。 「探索的に 100 個の変数を調べて有意なものだけ報告する」のは典型的な $p$ ハッキングで、 報告する $H_1$ の信頼性を著しく下げます。 事前に「主要 $H_1$ (primary hypothesis)」を 1 個か 2 個に絞り、 それ以外は「探索的解析」として明示することが推奨されます。 医薬品開発の臨床試験プロトコルでは、 主要評価項目とその $H_1$ を 1 つに限定するのが標準です。
5. 事前登録と $H_1$ の固定
近年、 心理学・医学・社会科学を中心に「研究の事前登録 (preregistration)」が広がっています。 これは、 データを取る前に 仮説 ($H_1$)・解析計画・サンプルサイズ・除外基準 を第三者機関 (OSF, AsPredicted, ClinicalTrials.gov など) に登録する仕組みで、 後から $H_1$ を都合よく変更する HARKing を防ぎます。 事前登録された $H_1$ は「検証的 (confirmatory)」、 登録後に発見された仮説は「探索的 (exploratory)」と明確に区別して報告するのが現代の作法です。 学術誌の中には「Registered Reports」という査読プロセスを持ち、 結果が出る前に研究計画自体を査読し、 結果に関わらず掲載を確約する仕組みも登場しています。 これらは「$H_1$ を真摯に書く」ことを技術ではなく研究文化として確立する動きです。
6. 対立仮説とモデル選択
古典的な検定では $H_0$ と $H_1$ は対立する 2 つのモデルですが、 機械学習やベイズ統計では「複数の候補モデルからベストを選ぶ」モデル選択の発想が中心になります。 ベイズファクター $\mathrm{BF}_{10} = \frac{P(\text{data} | M_1)}{P(\text{data} | M_0)}$ は「データがどちらのモデルをどれだけ支持するか」の比であり、 連続的なエビデンスの強さを表します (Jeffreys のスケールでは $\mathrm{BF}_{10} > 3$ で moderate、 $> 10$ で strong)。 機械学習では AIC や BIC でモデルの複雑さとデータ適合のバランスを評価し、 「最良のモデル」を選択します。 これらは「採択 / 棄却」の二者択一ではなく「相対的支持度」での意思決定で、 古典的な $H_1$ 概念を拡張したものと位置づけられます。
7. 観察研究における $H_1$ と因果関係
無作為化比較試験 (RCT) では「$H_1$ : 介入により結果が変わる」が因果効果を直接示しますが、 観察研究 (アンケート・行政データなど) では同じ $H_1$ を統計的に支持できても 因果関係を主張できるとは限りません。 交絡変数・選択バイアス・逆因果の可能性があるため、 観察研究で $H_1$ を支持する結果が出たら、 「相関が見られた」「関連が示唆された」など因果を含意しない表現を使うのが誠実です。 因果効果を観察研究で推定したい場合は、 傾向スコアマッチング・操作変数法・差の差分析・回帰不連続デザインなどの因果推論手法を併用し、 想定する因果モデル (DAG) を明示することが重要です。
8. $H_1$ をベイズで再解釈する
頻度論的検定では「$H_1$ : 効果がある (どんな効果かは曖昧)」と書きますが、 ベイズ統計では 事前分布 として効果サイズの分布を直接記述できます。 例えば「Cauchy(0, 1) を事前分布として効果量が分布する」と仮定すると、 $H_0: \delta = 0$ と $H_1: \delta \sim \text{Cauchy}(0,1)$ の 2 モデルを直接比較できます。 これによりサンプルサイズが大きくなっても自動的にオッカムのカミソリが効き、 過度に小さい効果を「有意」と誤判定する問題が緩和されます。 BayesFactor パッケージ (R) や JASP などのソフトウェアが普及し、 心理学を中心にベイズ仮説検定の採用が増えています。
9. ノンパラメトリック検定の対立仮説
$t$ 検定など多くのパラメトリック検定は正規分布を仮定するため、 「$H_1: \mu_1 \neq \mu_2$」の形を取れます。 しかしデータが正規分布から大きく外れる場合、 Mann-Whitney $U$ 検定や Wilcoxon 符号付順位検定などのノンパラメトリック検定を使います。 これらの $H_1$ は厳密には「2 群の分布が同じではない」というやや広い意味であり、 「中央値が異なる」と解釈するのは追加仮定 (同じ形の分布) が必要です。 ノンパラメトリック検定はロバストですが、 検出力はパラメトリック検定より若干劣ることが多いため、 正規性の検定や残差プロットで仮定を確認した上で選択するのが原則です。 ブートストラップ法を使えば、 分布仮定なしに $H_1$ に対応する信頼区間と $p$ 値を計算でき、 現代的な代替として有力です。
10. $H_1$ と意思決定 — 統計の外側
統計的検定で $H_1$ が支持されたとしても、 それは「データから見て $H_0$ より $H_1$ が妥当」というだけで、 「ビジネスとして $H_1$ に従って行動すべき」とは別の話です。 意思決定には 効果量・実装コスト・リスク許容度・代替手段 を含む経営判断が必要で、 統計はそのうちの 1 つの入力に過ぎません。 例えば A/B テストで新デザインの CTR が 0.1% 有意に高くても、 開発・運用コストが回収できなければ採用しない判断もあります。 逆に統計的に有意でなくても、 ダウンサイドが小さく試す価値が高い変更は採用する判断もあります。 「$H_1$ 支持 = 行動」と短絡せず、 統計と意思決定を分離して考えるのが成熟したデータ活用の姿勢です。
🧠 ベイズ的視点 — 事前確率を含めた $H_1$ の評価
頻度論的検定の $p$ 値は「$H_0$ が真の場合のデータの極端さ」を測りますが、 ベイズ統計では 事前確率を組み込んだ上で「$H_1$ が真である確率」 を計算できます。 これにより、 「$p = 0.04$ で有意」が出ても、 事前に $H_0$ がほぼ確実に真と考えられる状況では $H_1$ の事後確率はそれほど高くならない、 という冷静な判断ができます。
ベイズの定理による $H_1$ 評価
$P(H_1 | \text{data}) = \frac{P(\text{data} | H_1) \cdot P(H_1)}{P(\text{data} | H_1) \cdot P(H_1) + P(\text{data} | H_0) \cdot P(H_0)}$
例: 新薬の効果有無 (事前 50/50)、 $p=0.04$ で棄却
$P(H_1) = 0.5$, $P(H_0) = 0.5$
$P(\text{data}|H_0) = 0.04$ (= 古典的 $p$ 値)
$P(\text{data}|H_1) = 0.50$ (検出力)
→ $P(H_1|\text{data}) = \frac{0.50 \times 0.5}{0.50 \times 0.5 + 0.04 \times 0.5} = 0.926$
→ 事後確率 92.6% で $H_1$ を支持 (頻度論的 $p$ 値が示唆するより穏当)
事前確率が低い場合の落とし穴
同じ $p=0.04$ でも、 もし $H_1$ の事前確率が低い場合 (例: 超能力のような実証困難な現象を扱うとき)、 事後確率は劇的に下がります。 $P(H_1) = 0.01$, $P(H_0) = 0.99$ なら、 $P(H_1|\text{data}) = \frac{0.50 \times 0.01}{0.50 \times 0.01 + 0.04 \times 0.99} = 0.112$。 つまり「統計的に有意」でも $H_1$ の事後確率はわずか 11.2% にすぎず、 「まだ $H_0$ のほうがあり得る」状況です。 こうした事前確率を考慮せず $p$ 値だけで判断すると、 再現性のない発見を量産する原因になります。
ベイズファクターの実用例
| $\mathrm{BF}_{10}$ | 解釈 (Jeffreys 1961) | 意味 |
| 1 ~ 3 | 逸話的 (anecdotal) | $H_1$ をわずかに支持、 結論保留 |
| 3 ~ 10 | 中程度 (moderate) | $H_1$ を支持、 探索的結論として報告可 |
| 10 ~ 30 | 強い (strong) | $H_1$ を強く支持、 確証的結論可 |
| 30 ~ 100 | 非常に強い (very strong) | $H_1$ をほぼ確定的に支持 |
| > 100 | 決定的 (decisive) | $H_1$ が圧倒的に支持される |
| 1/3 ~ 1 | $H_0$ 寄り (逸話的) | わずかに $H_0$ を支持 |
| < 1/10 | $H_0$ を強く支持 | 「差がない」を能動的に主張可 |
💬 ベイズファクターは「$H_0$ を能動的に支持する $\mathrm{BF}_{10} < 1$」を扱える点が頻度論より優れた特徴です。 「差が見つからなかった ≠ 差がない」問題を、 ベイズ枠組みでは「データは $H_0$ を相対的に支持する」と明確に表現できます。
🎮 触って理解する — H₁ の「向き」が棄却域を決める
対立仮説 H₁ の書き方(μ>μ₀ / μ<μ₀ / μ≠μ₀)を変えると、 棄却域の位置と臨界値がその場で変わります。 下のボタンで H₁ を切り替え、 スライダーで観測 z 値と「真の効果 δ」を動かして、 (1) 同じ z 値でも片側なら有意・両側なら非有意になる境界事例、 (2) 方向を外した片側検定が絶対に棄却できない様子、 (3) 片側の検出力優位、 の 3 点を体感してください(この図は理論曲線であり、 特定の実データではありません)。
グラフ上をドラッグ(タッチ可)しても観測 z を動かせます
| H₁ の形 | 棄却域(α=0.05) | この z での p 値 | 判定 | 検出力(真の δ で) |
🎲 「データを見てから片側に変える」と α はいくつになるか(架空シミュレーション)
両側 α=0.05 で計画したのに、 結果が惜しい時だけ「都合の良い側の片側 5%」に切り替える不正ルール(棄却条件: z > 1.645 または z < −1.96)を、 H₀ が真の架空乱数で試します。 理論値は 0.05 + 0.025 = 0.075(実効 α = 7.5%)。 名目 5% を超えて第 1 種の過誤が膨らむことを確認してください。
(未実行)
🎨 直感 — 方向は「データを見る前」に決める契約
H₁ は「示したいこと」を数式にした事前の契約書です。 片側検定は「α=5% の全額を片方の裾に賭ける」宣言であり、 賭けた方向に効果があれば臨界値が 1.96 → 1.645 に下がって検出力が上がります(上の表で δ>0 にすると右片側の検出力が両側を常に上回るのが見えます)。 その代償として、 逆方向の効果は δ がどれだけ大きくても原理的に棄却できません(δ=−2 にして右片側の検出力がほぼ 0 に張り付くのを確認してください)。 方向の先見が薬理学的・理論的根拠で正当化できる時だけ片側を選び、 迷ったら両側が原則です。
⚠️ 落とし穴 — 事後的片側化と「非有意」の読み方
- 事後的片側化: 両側 p=0.072(z=1.8)を見てから「実は片側のつもりだった」と p=0.036 に書き換えるのは、 上のシミュレーションが示す通り実効 α を 7.5%(都合の良い側だけ常に片側化するなら最大 10%)に膨らませる行為で、 HARKing と呼ばれる研究不正の一種です。 方向は事前登録・解析計画書で固定します。
- 非有意 ≠ 効果なし: 片側で棄却できなかった時、 「逆方向の効果があった」のか「効果が小さかった」のか「検出力不足」なのかは区別できません。 検出力と効果量の信頼区間を併記するのが誠実な報告です。
- 臨界値の暗記ミス: α=0.05 でも片側は 1.645、 両側は 1.960。 「1.96 で片側判定」は α=0.025 の過度に保守的な検定に、 「1.645 で両側判定」は α=0.10 の甘い検定になります。
🚀 発展 — 同値性検定・優越性/非劣性試験
H₁ の「向き」の設計は臨床試験で最も体系化されています。 優越性試験は H₁: μ_新 > μ_対照(右片側)そのもの。 非劣性試験は「劣っていても許容マージン Δ 以内」を示したいので H₁: μ_新 − μ_対照 > −Δ というずらした片側になります。 さらに「差がないこと」自体を主張したい同値性検定(TOST)では、 H₁: −Δ < μ_新 − μ_対照 < Δ を「−Δ より大きい」「Δ より小さい」の2 本の片側検定に分解します。 通常の検定で「非有意だったので同等」と言えない理由と、 その正しい代替がここにあります。 詳しくは仮説検定・帰無仮説・p 値・有意水準の各ページと併読してください。
🗺 概念マップ
関連概念を視覚的に整理した概念マップ。
対立仮説 $H_1$ を中心とした概念マップでは、 帰無仮説 $H_0$ と検定統計量・有意水準 $\alpha$・検出力 $1-\beta$ が直接の隣接概念として配置される。 上位概念は仮説検定の枠組み (Neyman-Pearson 流の決定理論)、 派生概念は片側 $H_1$ ・両側 $H_1$ ・複合仮説、 対立概念は信頼区間アプローチおよびベイズファクター。 SSDSE-B-2026 を用いる場合、 「47 都道府県の人口と出生数には相関がある ($\rho \neq 0$)」が $H_1$ の典型例で、 これを中心に「相関係数の計算 → $t$ 統計量への変換 → $p$ 値の算出 → 棄却 / 採択」という分析パイプラインが構成される。
🔗 隣接手法への橋渡し
対立仮説 $H_1$ は、 研究者が「主張したい結論」を確率的言明に翻訳したもので、 仮説検定の起点から終点までの全ステップに影響する。
- 上流: リサーチクエスチョンの文章を 母数 $\theta$ についての $H_1$ に変換 (例「東京の出生率は全国平均と異なる」→ $H_1: \mu_{Tokyo} \neq \mu_{All}$)。 片側/両側の選択もここで決定。
- 並列: 同じ問いを 信頼区間で表現する方式や、 ベイズファクターで「$H_1$ 対 $H_0$ の支持度比」を直接出す方式と比較・併用。
- 下流: p 値 ・ 効果量 ・ 検出力 $1-\beta$ の三点セットで $H_1$ の採択判断と実務的意味を読む。
SSDSE-B-2026 で「47 都道府県の人口と出生数の相関は 0 と異なる」を $H_1$ に置けば、 pearsonr で r=0.97, p<0.001 → 強い証拠で $H_1$ 採択、 という一貫したパイプラインが構築される。
🌳 手法選択フロー
対立仮説 $H_1$ の形を実際の課題に当てはめるとき、 「片側 / 両側」 と 「単純 / 複合」 の 2 軸で判定する。
- 主張の向きは予め決まっているか? Yes (例: 新薬は既存薬より優れているはず) → 片側 $H_1: \mu_1 > \mu_0$、 検出力が両側の約 1.6 倍。 No (例: 単に差があるか調べたい) → 両側 $H_1: \mu_1 \neq \mu_0$。
- $H_1$ で 1 点の値を主張するか、 値の範囲か? 単純仮説 (例 $\mu=10$) → 検出力計算が一義的。 複合仮説 (例 $\mu>10$) → 真の $\mu$ により検出力が変動するため検出力曲線で評価。
- SSDSE-B-2026 適用例: 「2024 年の高齢化率は 2014 年より高い」→ 片側 $H_1$、 「出生数と人口の相関は 0 と異なる」→ 両側 $H_1$、 「高齢化率は全国平均より大きい」→ 複合 $H_1$。
片側/両側を結果を見てから切り替えるのは「事後仮説」の禁忌。 $H_1$ の形は実験/観測の設計段階で確定する。
🔬 深掘り — 検出力は「数」ではなく「関数」、 「棄却」が意味しないこと
ここまでの章で H₁ の立て方・片側/両側の選択・事後変更の禁止は押さえました。 本章はさらに一歩踏み込み、 (1) 複合対立仮説の下で検出力が「関数」になること、 (2) SSDSE-B-2026 の実データで片側と両側の結論が実際に割れる実例、 (3) 「H₀ を棄却できた」が理論的に何を保証し何を保証しないか、 を扱います。
📈 検出力関数 — H₁ との「距離」で決まる
片側 H₁: μ > μ₀ のような複合仮説は、 無数のパラメータ値(δ=0.1 も δ=3 も)を含む「領域」です。 したがって検出力は 1 つの数ではなく、 真の標準化効果 δ の関数 β(δ) になります。 z 検定(α=0.05)の理論値で片側と両側を比べると次の通りです。
| 真の効果 δ | 右片側の検出力 | 両側の検出力 | 比(片側/両側) |
| 0.5 | 12.6% | 7.9% | 1.59 |
| 1.0 | 26.0% | 17.0% | 1.53 |
| 1.5 | 44.2% | 32.3% | 1.37 |
| 2.0 | 63.9% | 51.6% | 1.24 |
| 2.8 | 87.6% | 80.0% | 1.10 |
| 3.5 | 96.8% | 93.8% | 1.03 |
📝 より正確な分析:本ページ「🌳 手法選択フロー」にある «片側の検出力は両側の約 1.6 倍» という表現は、 δ が小さい(検出力 10〜20% 台の)領域での近似です。 上表の通り比は δ に依存して単調に 1 へ近づき、 実務でよく目標にする検出力 80% 付近では片側の利得は約 8 ポイント(87.6% vs 80.0%)です。 「倍率」でなく「β(δ) の曲線がどれだけ持ち上がるか」で理解してください。 また複合 H₁ の下では「検出力 80%」という報告はどの効果量に対してかを添えないと定義できません(検出力・効果量参照)。
🧪 SSDSE-B-2026 実測 — 片側と両側で結論が割れる実例
2023 年・47 都道府県(cp932、 2 行目除外で読込)で総人口(A1101)と家具・家事用品費(L322104、 二人以上の世帯)の相関を検定すると、 r = 0.274、 t(45) = 1.91、 両側 p = 0.0623、 右片側 p = 0.0311(片側はちょうど両側の半分)。 α = 0.05 なら両側では非有意、 右片側なら有意という、 H₁ の書き方だけで結論が反転する境界事例が実データに存在します。 この結果を見てから「人口が多い県ほど支出も多いはずだから片側のつもりだった」と言い換えるのが、 🎮 章のシミュレーションで実効 α が 7.5% に膨らんだまさにその操作です。 なお仮に有意でも r ≈ 0.27 は小〜中の効果量で、 決定係数 r² ≈ 0.075 — 分散の 7.5% しか説明しません。 「有意かどうか」と「効果が大きいか」は別の問いです。
⚠️ 深い落とし穴 — 「棄却」が保証しないこと
- 棄却 ≠ 自分の H₁ が真:検定が棄却するのは「H₀ + 検定の前提一式(観測の独立性・分布の近似・等分散など)」のセットです。 前提が崩れていても H₀ は棄却されるため、 「棄却できた=主張した H₁ の勝ち」とは限りません。 都道府県データでは隣接県が互いに似る(空間的相関)ため、 「47 の独立な観測」という前提自体が近似であることに注意(仮説検定・帰無仮説参照)。
- 両側検定に「一様最強力(UMP)」は存在しない:片側 H₁ には(単調尤度比の条件下で)どの δ に対しても最強の UMP 検定が存在します(Neyman-Pearson 補題の帰結)。 一方、 両側 H₁: μ ≠ μ₀ に対する UMP は存在せず、 教科書の両側 z/t 検定は「不偏検定というクラスに絞った中での最強(UMPU)」です。 片側/両側は p 値が 2 倍違うだけでなく、 最適性の理論構造まで異なります。
- 47 都道府県は「標本」か「全数」か:SSDSE-B は 47 県すべてを含むため「母集団そのもの」とも読めます。 その場合の検定は、 データを「超母集団(データ生成過程)からの 1 回の実現値」とみなす解釈で正当化します。 このとき H₁「ρ ≠ 0」は「日本の社会経済メカニズムにおける関連」の主張であり、 「この 47 県で計算した r が 0 でない」こと自体は計算すれば必ず成り立つ(標本 r が厳密に 0 になることはまず無い)ので主張になりません。
🚀 発展 — 一致性と局所対立仮説
固定した H₁(δ ≠ 0)の下では、 n → ∞ で検出力が 1 に近づきます(検定の一致性)。 これは長所であると同時に「巨大な n ではどんな固定 H₁ もいずれ有意になる」ことを意味します。 理論側では、 検出力が 1 に張り付かないよう H₁ を標本サイズとともに近づける局所対立仮説 δn = h/√n を考え、 検定同士の効率を漸近相対効率(ARE)で比較します(正規母集団での t 検定に対する Wilcoxon 検定の ARE = 3/π ≈ 0.955 はこの枠組みの成果)。 実務への含意はシンプルで、 n が大きい分析ほど「ρ ≠ 0」のような点否定型 H₁ は情報量が乏しく、 効果量を組み込んだ H₁(例:ρ > 0.3、 あるいは同値性マージン付き)や信頼区間による報告の価値が上がります。 多数の H₁ を同時に立てる場合は多重検定、 検定の具体的手続きはt 検定・p 値・有意水準の各ページと併読してください。