静粛に、只今統計勉強中

仕事でデータ分析をすることになったバリバリ文系アラフィフのおっさんが、独学で統計の勉強を始めました。

Excel VBAで2群の比率の差の検定ができる関数を作ってみた

2群の比率の差の検定というものがあります。
独立性の検定(カイ二乗検定で代用できるせいか、あまりメジャーではないようで、今まで読んだ入門書には解説が載っていませんでした。

視聴率とか値上がり率とか、世の中には○○率があふれていて、年ごと/月ごと/週ごと/日ごとの○○率を比較してみたいといったニーズは結構ありそうなのに、あまりフィーチャーされないのは、ちょっと不思議ですね。

 

私自身、比率の差を検定しようと思ったときは、以前作ったカイ二乗検定用の関数*1を使っていたのですが、

たとえばこんなデータがあるとき、*2
f:id:cyclo-commuter:20180427155338p:plain
表を加工して、
f:id:cyclo-commuter:20180427155831p:plain
こんなふうにクロス表を作ってから関数を適用しなければならないので、かなり面倒でした。そこで今回、お手軽に2群の比率の差が検定できる関数をVBAで作ってみることにしました。

 

2群の比率の差の検定統計量の求め方は、

 n_{1}:第1群の観測数(分母) n_{2}:第2群の観測数(分母)
 r_{1}:第1群の分子 r_{2}:第2群の分子
 p_{1}:第1群の比率 p_{2}:第2群の比率

 p_{1}=\dfrac{r_{1}}{n_{1}}  p_{2}=\dfrac{r_{2}}{n_{2}}   p=\dfrac{r_{1}+r_{2}}{n_{1}+n_{2}} として、

 

 Z=\dfrac{|p_{1}-p_{2}|}{\sqrt{p(1-p)\Bigl(\dfrac{1}{n_{1}}+\dfrac{1}{n_{2}}\Bigr)}}

 

この検定統計量 Z が、帰無仮説  H_{0}:p_{1}=p_{2} に対して標準正規分布に従うのだそうです。

この数式をVBAで記述すると以下のようになります。 

'2群の比率の差の検定結果を求める
Function Diff_bw_Ratio(参照, Optional 種類 As Boolean, Optional 検定の指定)
    Dim p, p1, p2, z

    If 参照.Rows.Count = 2 And 参照.Columns.Count = 2 Then
        p1 = 参照(2) / 参照(1)
        p2 = 参照(4) / 参照(3)
        p = (参照(2) + 参照(4)) / (参照(1) + 参照(3))
        z = Abs(p1 - p2) / Sqr(p * (1 - p) * (1 / 参照(1) + 1 / 参照(3)))
        If 種類 = True Then
            If 検定の指定 = 1 Or 検定の指定 = 2 Then
                Diff_bw_Ratio = _
                    (1 - Application.WorksheetFunction.Norm_S_Dist(z, True)) * 検定の指定
            Else
                Diff_bw_Ratio = CVErr(xlErrNA)
            End If
        Else
            Diff_bw_Ratio = z
        End If
    Else
        Diff_bw_Ratio = CVErr(xlErrNA)
    End If

End Function

 

軽くコードの、というか使い方の解説をしますと、

  1. 引数の「参照」で2群の分母と分子のセル(2×2)を選択します。
  2. 比率は引数にせず、関数の内部で計算しています。
  3. 引数の「種類」は、TRUEでP値、FALSE または指定せずでZ値を返します。
  4. 「種類」で TRUE を選択した場合は、「検定の指定」で1:片側検定 2:両側検定を指定します。

実際に使ってみた結果がこちらです。

f:id:cyclo-commuter:20180428222246p:plain

ご覧のとおり、両側検定のP値がカイ二乗検定のP値と同じ値ですね。
実は、 Z=\sqrt{χ^{2}} という関係も成り立っています。 う~ん、不思議。

 

それにつけても、昨年の統計検定2級試験は、1%有意になるほど合格率に差があったんですねえ。ちょっと吃驚です。

2017年11月の試験問題はそれ以前と出題傾向が違ったなんて話も聞きますが、この合格率の差はそのせいだったりするんでしょうか?

*1:以前作ったカイ二乗検定用の関数はこちら

*2:統計検定公式サイト http://www.toukei-kentei.jp/past/ より