R統計検定5（比率の差の検定）

# Rで行う基本的な統計検定とその選択フローチャート4

今回は生物学で用いられている基本的な統計検定をRで行う際の手順と実際のコードを特集します。自身のデータセットの特徴と実験目的から適切な統計検定法を選択し、それをRで実行できるようになるための指針となれば幸いです。

第一回：平均値の差の検定（2群） 
第二回：一元配置の分散分析
第三回：一元配置の多重比較
第四回：二元配置の分散分析とその後の多重比較 
**第五回：比率の差の検定**
第六回：サンプルサイズの設計法
第七回：回帰分析

# 第四回　比率の差の検定（2群）
4.1 適切な検定法の選択
適切な統計検定法を選択できるような手順を紹介します。

4.2 ２群の比率の差の検定

4.3 ３群以上の比率の差の検定

### 4.1 適切な検定法の選択
比率の検定は平均値の検定ほどツールが多くありません。2群か3群以上か、あるいはそれぞれの群が対応しているか、していないかで適切な検定を選ぶことができます。

![スクリーンショット 2022-06-15 1.04.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352860/f05b2146-49fe-9fda-f1e8-fed8170dc26f.png)

### 4.2 ２群の比率の差の検定
2群の比率の差の検定法はMcNemar's testやz-test, Fisher's exact testがあります。

####4.2.1 McNemar's test
対応のある名目データに用いられる仮説検定である。 二値変数に関するマッチドペアの2x2分割表に適用され、行と列の限界度数が正しいかどうか（限界均一性があるかどうか）を判定する。McNemar's testは同じグループの患者に対する2つの診断テストの感度と特異度を比較するために用いられる。
参照：https://mom-neuroscience.com/r-mcnemar/
以下のデータセットを使って検定をやってみる。
![スクリーンショット 2022-06-15 1.08.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352860/98d90db4-2b0d-edd4-ef94-0aed148ef7cf.png)
Rで実行してみる。帰無仮説(H0)は2群の比率は同じである。

```R
x <- matrix(c(92, 154, 108, 48), ncol=2, byrow=T) 
mcnemar.test(x, correct=F)
```

結果
```
McNemar's Chi-squared test

data:  x
McNemar's chi-squared = 8.0763, df = 1, p-value = 0.004485
```
以上から帰無仮説は棄却され、投与前と後で脂肪肝の割合に差があるといえる（一体なにを投与したんだろ....??）。
ちなみにmcnemar.test(x, correct=F)のcorrectは連続性の補正を行うかについてのオプションである。連続性の補正とは離散型分布における検定に関する補正で、より厳しい検定を行いたい時やクロス集計表に小さい値が含まれる時、データが少ない時などに適用が推奨されています。

#### z-test
2群比較にはFisher's exact testも適用できるが、標本数が大きい時はz-testの方が使いやすい（計算量が少ないらしい）。
参照：https://multivariate-statistics.com/2021/08/16/statistics-proportions-test/

![スクリーンショット 2022-06-15 1.09.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352860/b0da62d7-8c69-6f17-6e17-f5c018015fa2.png)
Rで実行してみる。帰無仮説(H0)は2群の比率は同じである。
```R
x <- matrix(c(23, 43, 26, 35), ncol=2, byrow=T) 
prop.test(x, correct=F)
```
結果
```
2-sample test for equality of proportions without continuity correction

data:  x
X-squared = 0.80859, df = 1, p-value = 0.3685
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.24690663  0.09141731
sample estimates:
   prop 1    prop 2 
0.3484848 0.4262295 
```
以上から帰無仮説は棄却されず、新規法は既存法とGFP+の割合において差があるとはいえない。

#### Fisher's exact test
分割表 (クロス集計表) における2つ以上のカテゴリーが独立であるかどうかを調べる手法である．すなわち，観測された2つ以上の分類が互いに無関係であるか，または何らかの関係性を有しているかを検定する方法である。なお3群以上の多重比較に用いることも可能だが、なんらかの補正を行う必要がある。
参照：https://data-science.gr.jp/implementation/ist_r_fisher_exact_probability_test.html

![スクリーンショット 2022-06-15 1.10.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352860/19759a80-4e5a-edf0-c0bb-5bb3f35117ee.png)
Rで実行してみる。帰無仮説(H0)は2群の比率は同じである。
```R
x <- matrix(c(138, 258, 156, 210), ncol=2, byrow=T) 
fisher.test(x)
```
結果

```
Fisher's Exact Test for Count Data

data:  x
p-value = 0.03079
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
 0.5315772 0.9752911
sample estimates:
odds ratio 
 0.7203605 
```
以上から帰無仮説は棄却され、新規法は既存法とGFP+の割合において差があるといえる。

### 4.3 ３群以上の比率の差の検定

#### 4.3.1 Cochran'a Q-test（対応あり）
あまりRでコクランQ検定のやり方を日本語で説明したHPがなかった。
参照：https://cran.r-project.org/web/packages/nonpar/nonpar.pdf
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10203004140
対応のある3群以上の2値変数（01）について、比率を比較するための検定手法です。 対応のある2値変数の比率を比較する場合、前後の比較のような2群の比較ではマクネマー検定が使用されますが、3群以上の比較ではコクランのＱ検定が使用可能
6個体における症状の有無を4回測定した結果を検定してみる。
![スクリーンショット 2022-06-15 1.12.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352860/a8177bf3-f0d0-4a4f-da05-41fb2b67c0f1.png)

Cochran'a Q-testの関数では他の関数と異なるデータ型を用意しないといけないので注意。
Rで実行してみる。帰無仮説(H0)は群間の比率は同じである。
```
install.packages("nonpar")
library(nonpar)

d<- matrix(c(1,1,1,1,1,1, 1,1,0,1,1,1,0,0,0,1,0,0,0,1,0,0,1,1), 6, 4)
cochrans.q(d)
```
結果
```
 Cochran's Q Test 
 
 H0: There is no difference in the effectiveness of treatments. 
 HA: There is a difference in the effectiveness of treatments. 
 
 Q = 9.31578947368421 
 
 Degrees of Freedom = 3 
 
 Significance Level = 0.05 
 The p-value is  0.0253739987887868 
 There is enough evidence to conclude that the effectiveness of at least two treatments differ. 
```
以上から帰無仮説は棄却され、群間の比率に差があると考えられる。どの群に差があるかは2群の比較（mcnemar's test）を行うが、bonferroni法あるいはholm法でp値を補正する必要がある。mcneamr.test関数にはbonferroni補正が装備されていないようなので電卓等を使って自分で補正したp値を用いる必要がある。
参照：https://toukei.sozaiya-san.jp/advance_stats20_cochrans-q-test


#### 4.3.2 Fisher's exact test（多群比較）とp値の補正
参照：https://www.pu-hiroshima.ac.jp/p/ttetsuji/R/[87]fisher-multcomp.html
Fisher's exact testは多群比較にも適用可能だが、p値を補正するように引数を指定してやる必要がある。
先ほどの2群のFisher's exact testで使ったデータに3つの群を足して多群比較してみよう。

![スクリーンショット 2022-06-15 1.13.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352860/fab33169-a834-426b-dc21-ae7cae8b80ca.png)

Rで実行してみる。帰無仮説(H0)は各群の比率に差がない。
```R
install.packages("RVAideMemoire")
library(RVAideMemoire)
d <- matrix(c(138, 156, 258, 210, 146, 132, 199, 178, 110, 110), ncol=2,
            dimnames=list(c("cont", "A", "B", "C", "D"),
                          c("GFP+", "GFP-")),
            byrow=TRUE)
fisher.multcomp(d, p.method = "bonferroni")
```
結果
```
Pairwise comparisons using Fisher's exact test for count data

data:  d

    cont A B C
A 0.3079 - - -
B 1.0000 1 - -
C 1.0000 1 1 -
D 1.0000 1 1 1

P value adjustment method: bonferroni
```
以上から群間の比率に差があるとはいえない。2群比較（既存法と新規法A）を行った場合は有意差があった（同じ数値を使用している）が、多群比較になると検出力が落ちることがわかる。
Holm法での補正もbonferroniのところをholmに変えるとできる。