あるshimaoの備忘録的な何か

コードを書かない分析系の記事を書いていきます。コードを記述する場合はQiitaに書いています。

各群における反応率と各群の総サンプル数しかわからない場合の検定

この記事に書いたこと

  • 書くことになったきっかけ
  • standard error of the difference of proportions(SEDP)について
  • SEDPの導出

書いた動機

先日、上長と話していたとき『機械学習するときにどれだけサンプル数があれば良いか』って話になりました。そこでサンプリングしてサンプル数減らして機械学習してる論文を探していたところ、2群の分類学習で各群15,600にサンプリングしているモノを発見。で、この15,600って数学的にどういう意味やねんって事をSEDPを例として説明しました。そのメモとしてこの記事を書いています。

※15,600という数値はブログ用に適当に値を作っています

SEDPってなんやねん?

 2群の「反応率の差の標準誤差」です。

二項分布における分散を使用しているため、yes/noなどの2者択一のモノに対する反応率についての差の検定に用いる事が可能です。

標準誤差自体は正規分布ですので、その信頼区間を用いて簡単な検定を行うという時に使用します。

つまりZ値を用いた検定です。

簡単な例

3つのサイトの支持率の間に差があるのかどうか、を例にとって見ていきます。

SEDP = {p1(1-p1)/N1 + p2(1-p2)/N2}^0.5  p:サイトの支持率、N:投票者数

として話を進めます。

各サイトのプロパティを以下に記載します。

 サイト1:支持率 75%, 投票者数 400名

 サイト2:支持率 53%, 投票者数 1,500名

 サイト3:支持率 50%, 投票者数 700名

以下、差の検定の計算例を示す。

 SEDP_1,2 = {0.75*(1-0.75)/400 + 0.53*(1-0.53)/1500}^0.5 ⋍ 0.025

 Z score_1,2 = |p1 – p2| / SEDP1,2  = (0.75 – 0.53)/0.025 ⋍ 8.8

 SEDP_2,3 = {0.53*(1-0.53)/1500 + 0.50*(1-0.50)/700}^0.5 ⋍ 0.023

 Z score_2,3 = |p2 – p3| / SEDP2,3  = (0.53 – 0.50)/0.023 ⋍ 1.3

 Z score_1,2 > 1.96(95%のz値)

 Z score_2,3 < 1.64(90%のz値)

したがって、サイト1とサイト2の支持率には95%水準で有意差があるが、サイト2とサイト3の支持率には90%水準でも有意差がない、ということになります。

ただ、これ、本来は多重比較しないと評価が甘く出てしまい、第一種の過誤が起きてしまう場面です。3群以上の検定をする場合は多重比較をして下さい。

(2群の比率の差を見る場合、無理にSEDP使わなくても比率の差の検定していただければ大丈夫です。)

SEDPによるサンプルサイズの検討

信頼度95%、反応率5%、0.5%の誤差を検出する。

という条件の下での必要サンプル数をSEDPによって求めてみます。

式としては以下のようになります。

 0.5%/1.96 = {p(1-p)/N + (p+d)(1-p-d)/N}^0.5  p:反応率、N:必要サンプル数

これをNについて計算すると、N⋍15,286となります。

15,600サンプルぐらいだと大体上のような条件の場合が想定されるわけです。

ただ、これもボンフェローニ補正をしていない場合の計算ですのでご注意下さい。

SEDPの導出

2つの独立した正規母集団N(μx, σx2)とN(μY, σY2)を考える。ここで期待値および分散の基本フォーミュラより、

 E[Xb] = E[1/nΣXi] = 1/nE[ΣXi] = 1/nΣE[Xi] = μ

 V[Xb] = V[1/nΣXi] = 1/n2V[ΣXi] = 1/n2ΣV[Xi] = (1/n)σ2

ここでXbはXの平均値を指す。期待値ではないのでこの段階では揺らぐ値であることに注意。

また、各々の集団より抽出された標本平均の分布は、

 Xb~N(μx, σx2/n), Yb~N(μY, σY2/m)   (各々サンプル数をn、mとした)

次に標本平均の差の標本分布を考える。ここでも期待値、分散の基本フォーミュラに立ち返ることにより導出を行い、

 Xb – Yb = Xb + (-1)・Yb ~ N(μx + (-1)・μY, σx2/n + (-1)2σY2/m)

したがって、

  Xb – Yb ~ N(μx - μY , σx2/n + σY2/m)

これにより標準誤差は(σx2/n + σY2/m)^0.5であることが導かれた。

まとめ

最後のところ「導かれた(ドヤッ」って書いてありますが、これであってんだっけ?って思いながら書きましたw

絶賛ツッコミお待ち中です!

おかしいところあったらガンガンツッコんで下さいませm(_ _)m

Appendix

SEPと期待値、分散についてもついでに書いておきます。

期待値、分散の基本フォーミュラ

期待値:E[X] = Σk kP (X = k)

分散:V[X] ≡ E[(X - μ)2] ただしμ≡E[X]

ここから

 E[cX] = cE[X] = cμ

 V[cX] = E[(cX – cE[X])2] = E[c2(X - μ)2] = c2E[(X - μ)2] = c2V[X]

またXとYが独立、E[X]=μ, E[Y]=νとして

 V[X+Y] = E[{(X+Y) – (μ+ν)}2] = E[{(X –μ) + (Y – ν)}2]

         = E[(X - μ)2 + (Y - ν)2 + 2(X - μ)(Y - ν)]

         = E[(X - μ)2] + E[(Y - ν)2] + E[2(X - μ)(Y - ν)]

         = V[X] + V[Y] + 2E[(X - μ)(Y - ν)]

ここで右辺第3項はX,Yの独立性から

 2E[(X - μ)(Y - ν)] = 2E[X - μ]E[Y - ν] = 2(μ - μ)(ν - ν) = 0

したがって、XとYが独立である場合、

 V[X+Y] = V[X] + V[Y]

standard error of a proportion(SEP)の導出

2項分布Bn(n,p)の分散を求めることによって導出できる。以下書き下す。

ます確率pで1、確率q≡1-pで0が出る独立な確率変数Z1,…,Znを考える。左の場合、その合計X≡Z1+…+Znは2項分布Bn(n,p)に従うことは自明。ここで事象の独立性から

 V[X] = V[Z1]+…+ V[Zn]

また、定義どおりの計算により

 V[Zt] = E[(Zt - p)^2] = (1-p)2p + (0-p)2q = q2p + p2q = pq(q + p) = pq    (t=1,…,n)

よってBn(n,p)の分散はV[X] = npq = np(1-p)

 SEP = SD/(n)^0.5 = (V[X]/n)^0.5 / (n)^0.5 = {p(1-p)/n}^0.5

参考書籍