[統計] Rで統計的検定

### テストデータの入力
```R
df <- data.frame(
      X = c(46, 28, 46, 37, 32, 41, 42, 45, 38, 44,
            42, 60, 32, 42, 45, 58, 27, 51, 42, 52),
      Y = c(38, 33, 26, 25, 28, 28, 26, 27, 27, 27,
            31, 30, 27, 29, 30, 25, 25, 24, 27, 30)
      )
```
 
## Welchのt検定
**データの種類**
* 対応がない
* パラメトリック
* **等分散、不等分散どちらでも可**
（等分散検定を行うくらいなら最初からWelchのt検定を使った方が良いらしい。）
 
 ```R
 t.test(x=df$X, y=df$Y)
```
```
 	Welch Two Sample t-test

data:  df$X and df$Y
t = 6.8338, df = 24.128, p-value = 4.427e-07
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 10.01736 18.68264
sample estimates:
mean of x mean of y 
    42.50     28.15 
 ```


 ## Studentのt検定
**データの種類**
* 対応がない
* パラメトリック
* 等分散
 
 ```R
t.test(x=df$X, y=df$Y, var.equal=TRUE)
```
```
	Two Sample t-test

data:  df$X and df$Y
t = 6.8338, df = 38, p-value = 4.13e-08
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 10.09909 18.60091
sample estimates:
mean of x mean of y 
    42.50     28.15 
```

## t検定の頑健性について</b></summary>

以下、統計分析研究所アイスタットのWEBサイトより引用です。

[ｔ検定（スチューデントのｔ検定）](https://istat.co.jp/sk_commentary/t-test/t-test)
>母集団の正規性については、t検定は頑健だといわれている。それは、サンプルサイズが十分大きければ母集団が正規分布でなくとも検定統計量はｔ分布に近づくからである。「サンプルサイズが十分大きい」の目安は30で、2群合わせると60である。
言い換えれば2群合わせたサンプルサイズが60以上であれば母集団が正規分布でなくてもｔ検定は適用できるということである。サンプルサイズが60に満たない場合の母平均の差の検定はノンパラ検定を適用する。

[ウェルチのｔ検定](https://istat.co.jp/sk_commentary/t-test/WelchsTest)
>母集団の正規性については、t検定同等この検定も頑健だといわれている。それは、サンプルサイズが十分大きければ母集団が正規分布でなくとも検定統計量はｔ分布に近づくからである。「サンプルサイズが十分大きい」の目安は30で、2群合わせると60である。言い換えれば2群合わせたサンプルサイズが60以上であれば母集団が正規分布でなくてもウェルチのｔ検定は適用できるということである。
サンプルサイズが60に満たない場合の母平均の差の検定はノンパラ検定を適用する。

## パラメトリック検定とノンパラメトリック検定の使いわけ
[母平均の差の検定](https://istat.co.jp/sk_commentary/t-test/population_mean)
>ノンパラメトリック検定は、母集団の分布を仮定しない便利な検定法である。基本的には，調査、実験で得られたデータに対する仮説検定の際にはノンパラメトリック検定を実行することは間違いではない。特に、得られたデータサイズが小さいときはパラメトリックな方法で検定すると検出力が低下するため、ノンパラメトリックな方法を選択した方が良い。
>しかしながら、欠点も存在する。本来パラメトリック検定を行うことができるデータに対してノンパラメトリック検定を行うと、帰無仮説を棄却できるのにも関わらず帰無仮説を採用してしまう確率が大きく上昇する。得られたデータに対し、適切な検定法を選定することは重要である。

## Wilcoxonの順位和検定(Ｕ検定)
**データの種類**
* 対応がない
* ノンパラメトリック


<br>**パッケージのインストール**
```R
install.packages("coin")
```

基本的な使い方はこんな感じ↓
`wilcox_test([配列] ~ [ラベル], distribution="exact")`


```R
library(coin)

# テストデータの入力
X <- c(1,2,1,1,1,1,1,1,1,1,2,4,1,1)
Y <- c(3,3,4,3,1,2,3,1,1,5,4)
labels <- factor(c("x","x","x","x","x","x","x","x","x","x","x","x","x","x","y","y","y","y","y","y","y","y","y","y","y"))

wilcox_test(c(X,Y) ~ labels, distribution="exact")
```
```
	Exact Wilcoxon-Mann-Whitney Test

data:  c(X, Y) by labels (x, y)
Z = -2.6934, p-value = 0.00669
alternative hypothesis: true mu is not equal to 0
```

## Wilcoxon の符号付順位検定（サインランク検定）
 **データの種類**
* 対応がある
* ノンパラメトリック

<br>データの指定方法が**符号順位検定(Ｕ検定)と少し異なる**
`wilcoxsign_test([データ1] ~ [データ2], zero.method=[0の処理法], distribution="exact")`

**[0の処理方法]**
`zero.method="Prat"`：順位変換後に除去（デフォルト/省略可能）
`zero.method="Wilcoxon"`：除去後に順位変換

<br>**パッケージのインストールと読み込み**
```R
install.packages("coin")
library(coin)
```


#### `zero.method='Pratt'`の場合
```R
# テストデータの入力
X <- c(1,2,1,1,1,1,1,1,1,1,2)
Y <- c(3,3,4,3,1,2,3,1,1,5,4)

wilcoxsign_test(X ~ Y, distribution="exact")
```
```
	Exact Wilcoxon-Pratt Signed-Rank Test

data:  y by x (pos, neg) 
	 stratified by block
Z = -2.7203, p-value = 0.007812
alternative hypothesis: true mu is not equal to 0
```

#### `zero.method='Wilcox'`の場合
```R
wilcoxsign_test(X ~ Y, zero.method = 'Wilcox', distribution="exact")
```

```
	Exact Wilcoxon Signed-Rank Test

data:  y by x (pos, neg) 
	 stratified by block
Z = -2.5552, p-value = 0.007812
alternative hypothesis: true mu is not equal to 0
```