スポンサーリンク

p値の求め方 わかりやすくまとめ

記事内に広告が含まれています。

統計学でよく登場する「p値」は、仮説検定の結果を解釈するうえで重要な指標ですが、どのように計算されるのか、初心者には少し難しいと感じるかもしれません。

p値が何を意味するのか、どのように求めるのかを具体的な例とともにまとめます。

スポンサーリンク

p値とは?

p値は、帰無仮説(無効仮説)が正しいと仮定したときに、観測されたデータ(またはそれ以上に極端なデータ)が得られる確率を指します。

  • 小さいp値(例: p < 0.05)
    → 観測されたデータは帰無仮説では説明がつきにくい。帰無仮説を棄却する。
  • 大きいp値(例: p > 0.05)
    → 帰無仮説のもとで観測されたデータは十分に説明可能。帰無仮説を採択する。
スポンサーリンク

p値の求め方

以下の手順でp値を求めることができます。

帰無仮説と対立仮説を定義

  • 帰無仮説(H₀):差や効果がないと仮定する。
  • 対立仮説(H₁):差や効果があると仮定する。

例: 「薬Aが薬Bよりも効果があるか」を検証する場合
H₀:薬Aと薬Bの効果は同じ
H₁:薬Aは薬Bよりも効果がある

検定統計量を計算

検定統計量は、データから仮説を検証するための値です。t検定、z検定、カイ二乗検定など、検定方法に応じて異なる式が使われます。

例: t検定の場合

$$t = \frac{\bar{X}_1 – \bar{X}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}$$

  • \(\bar{X}_1, \bar{X}_2\):​​2つのグループの平均値
  • \(s_1^2, s_2^2\):それぞれの分散
  • \(n_1, n_2\):それぞれのサンプルサイズ

棒グラフや正規分布の下での位置を確認

検定統計量からp値を求めるには、確率分布を使用します。

  • t検定 → t分布
  • z検定 → 標準正規分布
  • カイ二乗検定 → カイ二乗分布

観測された検定統計量が分布のどの位置にあるかを計算します。

p値を計算

p値は「検定統計量が観測された値以上に極端になる確率」です。片側検定か両側検定かによって計算が異なります。

  • 片側検定:片側の尾部での確率を計算
  • 両側検定:両側の尾部での確率を計算

例: 両側検定の場合

$$p\text{-value} = 2 \times P(T \geq |t|)$$

結果を解釈

  • \(p < \alpha\)(例: 0.05):帰無仮説を棄却(有意差あり)
  • \(p \geq \alpha\):帰無仮説を棄却しない(有意差なし)

実際の計算例

問題

新しい薬Aが、従来の薬Bよりも有効かどうかを調べます。薬Aと薬Bの治療効果を比較するため、次のデータを得ました。

  • 薬A:平均効果値 75、標準偏差 10、サンプルサイズ 20
  • 薬B:平均効果値 70、標準偏差 12、サンプルサイズ 20

解答

  1. 帰無仮説と対立仮説
    H₀:薬Aと薬Bの効果は同じ
    H₁:薬Aは薬Bよりも効果が高い
  2. 検定統計量を計算
    t検定を使用します。
    $$ t = \frac{\bar{X}_A – \bar{X}_B}{\sqrt{\frac{s_A^2}{n_A} + \frac{s_B^2}{n_B}}}$$
    $$t = \frac{75 – 70}{\sqrt{\frac{10^2}{20} + \frac{12^2}{20}}}$$
    $$t \approx 1.78$$
  3. p値を計算
    自由度は \(df = n_A + n_B – 2 = 38\)
    t分布表を参照するか、統計ソフトを使用して、p値を求めます。
    両側検定の場合、\(p値 ≈ 0.08\)。
  4. 解釈
    通常、\(\alpha = 0.05\)を基準とします。\(p = 0.08 > 0.05\) のため、帰無仮説を棄却しません。
    薬Aと薬Bの効果に有意な差はないと結論づけます。

ExcelやPythonを使ったp値の計算

Excelの場合

T.TEST関数を使用

$$=\text{T.TEST}(データ範囲1, データ範囲2, tails, type)$$

  • tails: 1(片側)または2(両側)
  • type: 検定の種類(対応あり、なしなど)

Pythonの場合

SciPyライブラリを使用して、以下のように計算できます。

from scipy.stats import ttest_ind

# データを入力
data_a = [75] * 20
data_b = [70] * 20

# t検定
t_stat, p_value = ttest_ind(data_a, data_b)
print(f"t値: {t_stat}, p値: {p_value}")

まとめ

p値は統計学的仮説検定で重要な指標ですが、手計算では難しい場合もあります。t分布やz分布に基づく計算を理解し、ExcelやPythonのツールを活用すると効率的です。

タイトルとURLをコピーしました