コーパス分析で頻度差を検定する場合、カイ二乗検定や対数尤度比検定がよく使われます。しかし、このような検定には、サンプル・サイズが大きくなれば、実質的な差がなくとも、「有意差あり」という誤った結果が得られる危険性があります。そのようなときには、検定の結果だけでなく、何らかの効果量を確認する必要があります。効果量には様々な指標がありますが、今回は、オッズ比を紹介します。*1
例えば、異なる2つのコーパスから、特定の言語項目の正用と誤用の頻度を集計したとします。それらの頻度を2×2の分割表にするには、以下のようにします。
# 分割表の作成 dat <- matrix(c(700, 1002, 14, 51), nrow = 2) rownames(dat) <- c("Corpus A", "Corpus B") colnames(dat) <- c("Correct", "Error") # 作成した分割表の確認 dat
上記のスクリプトを実行すると、以下のような結果が表示されます。
Correct Error Corpus A 700 14 Corpus B 1002 51
まず、この分割表に対して、カイ二乗検定(イェーツの補正なし)を行うには、以下のようにします。
# カイ二乗検定(イェーツの補正なし) chisq.test(dat, correct = F)
上記のスクリプトを実行すると、以下のような結果が表示されます。ここでのp-valueは0.001584ですので、分析対象である言語項目の正用率に関して、2つのコーパス間で1%水準での有意差があることが分かります。
Pearson's Chi-squared test data: dat X-squared = 9.9778, df = 1, p-value = 0.001584
次に、同じ分割表からオッズ比を計算するには、vcdパッケージを使います。*2
# パッケージの読み込み library(vcd) # オッズ比 (Wald, unconditional) oddsratio(dat, log = F)
上記のスクリプトを実行すると、以下のような結果が表示されます。
[1] 2.54491
そして、信頼区間やp値を求めるには、以下のようにします。*3
# 信頼区間 confint(oddsratio(dat, log = F)) # p値 summary(oddsratio(dat))
上記のスクリプトを実行すると、以下のような結果が表示されます。論文では、p値だけでなく、オッズ比と信頼区間を合わせて報告することで、メタ分析につながります。*4
# 信頼区間 lwr upr [1,] 1.409835 4.593849 # p値 Log Odds Ratio Std. Error z value Pr(>|z|) [1,] 0.93410 0.30134 3.0998 0.0009684 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
最後になりましたが、正用率の分析にオッズ比を用いることに関して、関西大学の水本篤先生と北海学園大学の浦野研先生よりアドバイスを頂きました。記して、感謝を申し上げます。