Up

有意差があるときに「差がある」の条件付き確率

 

統計的検定において、有意差が認められたときに「差がある」という事後確率(有意な検定結果という条件の下での条件付き確率)がどのようになるのを、表1の設定の下で計算してみた。

 

表1 差についての仮説と検定の確率

 

有意差あり(+)

有意差なし(−)

差がある:

検定力:

第2種の誤り:

差がない:

第1種の誤り:

帰無仮説採択:

 

「差がある(Effective)」の事前確率を とおき、有意差が認められたときに、「差がある(Effective)」の事後確率を求めると以下のようになる。

ここで、

のとき、

となり、検定の結果が有意であっても、「差がある」の事後確率は事前確率と同じであることに注意。条件(1)は、帰無仮説と対立仮説の確率分布が完全に重なるとき成り立つ。

有意水準、とし、検定力 としたときの事後確率を「差がある(Effective)」の事前確率  の関数として描くと図1を得た。

図1

 

青の実線が検定力90%に対するグラフであり、赤の点線が検定力6%に対するグラフである。有意差が認められたときの仮説「差がある」の事後確率は、事前確率の値によって異なるが、その値は検定力  にも依存していることがわかる。検定力が0.9あるいは0.8というように大きいと、有意差が認められたときの事前確率から事後確率への変化は大きいが、検定力が0.06と小さいとき有意差が認められても事後確率は事前確率とほとんど変わらない。

 

逆に、検定結果が非有意であったとき、「差がある」の事前確率はどのような事後確率に変わるのかを調べてみる。事後確率は次式で与えられる。

ここで、検定結果が有意の場合と同様、

のとき、

となり、検定の結果が非有意であっても、「差がある」の事後確率は事前確率と同じであることに注意。

有意水準、とし、検定力 としたときの事後確率を「差がある(Effective)」の事前確率  の関数として描くと図2を得る。

図2

 

図1と同様、青の実線が検定力90%に対するグラフであり、赤の点線が検定力6%に対するグラフである。有意差が認められなかったときの仮説「差がある」の事後確率は、事前確率の値によって異なるが、その値は検定力  にも依存していることがわかる。検定力が0.9あるいは0.8というように大きいと、有意差が認められたときの事前確率から事後確率への変化は大きいが、検定力が0.06と小さいとき有意差が認められても事後確率は事前確率とほとんど変わらない。

検定力が大きいとき、仮説「差がある」の事後確率は検定結果が有意であるか非有意であるかに応じて事前確率から大きく変わるが、検定力が小さいときは、検定結果が有意であっても非有意であっても仮説「差がある」の事後確率は事前確率からあまり変わらない。検定力が大きいときの検定結果の情報量は多いが、検定力が小さいときは検定結果の情報量は少ないといえる。

 

図1のグラフは、以下のスクリプトによって描かれている。

 

import matplotlib.pyplot as plt

import numpy as np

 

 

def P_after( g, a, b ):

    return g * (1 -b) / (g * (1 - b - a) + a)

 

x = np.arange(0, 1.001, 0.01)

b = [ 0.1, 0.2, 0.5, 0.8, 0.94 ]

y = []

for i in range(5):

    y.append([])

for v in x:

    for i in range(5):

        t = P_after( v, 0.05, b[i] )

        y[i].append(t)

 

plt.plot(x, y[0], 'b-')

plt.plot(x, y[1], 'b--')

plt.plot(x, y[2], 'g-')

plt.plot(x, y[3], 'g--')

plt.plot(x, y[4], 'r:')

plt.plot([0, 1], [0, 1], 'k--')

plt.legend(['0.9', '0.8', '0.5', '0.2', '0.06', 'y = x'], loc = 2)

plt.title('Probablity of "Effective" conditional on "Significant"')

plt.xlabel('P(Effective)')

plt.ylabel('P(Effective|Sig.)')

plt.show()

 

 

図2の描画スクリプトは以下のようである。

 

import matplotlib.pyplot as plt

import numpy as np

 

 

def P_after_n( g, a, b ):

    return g * b / (g * (b + a - 1) + (1 - a))

 

x = np.arange(0, 1.001, 0.01)

b = [ 0.1, 0.2, 0.5, 0.8, 0.94 ]

y = []

for i in range(5):

    y.append([])

for v in x:

    for i in range(5):

        t = P_after_n( v, 0.05, b[i] )

        y[i].append(t)

 

plt.plot(x, y[0], 'b-')

plt.plot(x, y[1], 'b--')

plt.plot(x, y[2], 'g-')

plt.plot(x, y[3], 'g--')

plt.plot(x, y[4], 'r:')

plt.plot([0, 1], [0, 1], 'k--')

plt.legend(['0.9', '0.8', '0.5', '0.2', '0.06', 'y = x'], loc = 4)

plt.title('Probablity of "Effective" conditional on "Not Significant"')

plt.xlabel('P(Effective)')

plt.ylabel('P(Effective|Not Sig.)')

plt.show()

 

 

上記2つのスクリプトのファイルはまとめて圧縮ファイルSigStatPrg.zipとした。

 

なお、表1は信号検出理論の枠組みと考えられるが、<岡本安晴「心理学データ分析と測定」勁草書房、第12.3節 診断検査>を参照されたい。

 

Up