Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

一般的には、両側検定と片側検定のどちらを使えばよいのでしょうか?

こんにちは。PyQチームのtsutomuです。
今回は、両側検定と片側検定の選び方の指針を紹介します。

質問

PyQで両側検定と片側検定について以下のように習いました。

  • 「平均がある値と異なる」という主張にも3種類ある(1標本時)。
    • 両側検定(平均がある値と差がある):帰無仮説は「平均がある値と同じ」。標本平均が2つのしきい値の外側のときに主張がいえる。
    • 片側検定(平均がある値より大きい):帰無仮説は「平均がある値以下」。標本平均が1つのしきい値以上のときに主張がいえる。
    • 片側検定(平均がある値より小さい):帰無仮説は「平均がある値以上」。標本平均が1つのしきい値以下のときに主張がいえる。

両側検定と片側検定の選び方の指針を教えて下さい。

回答

両側検定と片側検定のどちらを使うかは、主張したいことで決めなければいけません

  • 「片側にしか興味がない」のであれば、片側検定を使います。
  • 「違うことを主張したい」のであれば、両側検定を使います。片側検定を使ってはいけません。

片側検定を使うと対立仮説を採用しやすくなります。乱数を使った具体例で見てみましょう。

乱数を使って検証

4種類のデータ(平均が50, 50.000001, 80, 20)に対して、両側検定と片側検定の結果を出力します。 有意水準は0.05とします。

import numpy as np
from scipy.stats import t

μ0 = 50  # 平均
σ = 10  # 標準偏差
n = 1000000  # サンプル数
α = 0.05  # 有意水準
for typ, b, func in [('両側', 1 - α / 2, np.abs), ('片側', 1 - α, np.array)]:
    th = t.ppf(b, n - 1)  # しきい値
    for df in [0, 1e-6, 30, -30]:
        np.random.seed(0)
        data = np.random.normal(μ0 + df, σ, n)
        data = (data - μ0) / data.std(ddof=1)
        whc = int(df != 0) + 1 if typ == '両側' else int(df > 0) + 1
        cmp = np.greater_equal if whc == 1 else np.less
        v = cmp(func(data), th).sum() / n
        print(f'{typ}検定の第{whc}種の過誤 = {v:.3f} [平均 = {μ0 + df}]')

【出力】

両側検定の第1種の過誤 = 0.050 [平均 = 50]
両側検定の第2種の過誤 = 0.950 [平均 = 50.000001]
両側検定の第2種の過誤 = 0.149 [平均 = 80]
両側検定の第2種の過誤 = 0.149 [平均 = 20]
片側検定の第1種の過誤 = 0.050 [平均 = 50]
片側検定の第2種の過誤 = 0.950 [平均 = 50.000001]
片側検定の第2種の過誤 = 0.088 [平均 = 80]
片側検定の第1種の過誤 = 0.000 [平均 = 20]

PyQのクエスト「データに基づく仮説検定」で学んだ第1種の過誤と第2種の過誤の復習です。

  • 第1種の過誤:帰無仮説が真なのに、帰無仮説を棄却してしまう間違い
  • 第2種の過誤:帰無仮説が偽なのに、帰無仮説を棄却しない間違い

両側検定の場合

  • 帰無仮説 H0: μ = 50
  • 対立仮説 H1: μ ≠ 50

帰無仮説は「母集団の平均は50である」です。

  • 平均 == 50の場合:帰無仮説は真です。第1種の過誤は有意水準に近いです。
  • 平均 == 50.000001の場合:帰無仮説は偽です。しかし、約95%の確率で帰無仮説を棄却できないので、第2種の過誤が約0.95になります。
  • 平均 == 80の場合:帰無仮説は偽です。約85%の確率で帰無仮説を棄却できるので、第2種の過誤が約0.149になります。
  • 平均 == 20の場合:帰無仮説は偽です。約85%の確率で帰無仮説を棄却できるので、第2種の過誤が約0.149になります。

平均が「80 == 50 + 30」の場合も「20 == 50 - 30」の場合も、第2種の過誤が同じくらいになります。

片側検定の場合

  • 帰無仮説 H0: μ ≦ 50
  • 対立仮説 H1: μ > 50

帰無仮説は「母集団の平均は50以下である」です。

  • 平均 == 50の場合:帰無仮説は真です。第1種の過誤は有意水準に近いです。
  • 平均 == 50.000001の場合:帰無仮説は偽です。しかし、約95%の確率で帰無仮説を棄却できないので、第2種の過誤が約0.95になります。
  • 平均 == 80の場合:帰無仮説は偽です。約91%の確率で帰無仮説を棄却できるので、第2種の過誤が約0.088になります。
  • 平均 == 20の場合:帰無仮説は真です。約100%の確率で帰無仮説を棄却できるので、第2種の過誤が約0.000になります。

特徴的なのは、平均が80のときも20のときも、片側検定の方が両側検定より帰無仮説を棄却できる確率が高くなります。
このように片側検定を使うと対立仮説を採用しやすくなります

まとめ

  • 両側検定と片側検定のどちらを使うかは、主張したいことで決めなければいけません
  • 片側検定を使うと対立仮説を採用しやすくなりますが、「違うことを主張したい」のであれば片側検定を使ってはいけません

関連するクエスト

このお悩み解決はPyQのクエスト、「両側検定と片側検定」の補足情報として作成しています。PyQユーザーで興味がある方はぜひ解いてみてください。

Copyright ©2017- BeProud Inc. All rights reserved.