pythonを用いた統計的仮説検定、信頼区間推定方法まとめ

# Abstract
実験結果やアンケートの回答結果などのデータに対して、**結果に有意差があるか数値的に検証する**際に重要な、**統計的仮説検定**や**信頼区間推定**を行うためのpythonスクリプトを実装しました。  

pythonさえ使えれば誰でもすぐに、手元のデータを分析することができます。  


## [実装リスト](https://github.com/Wotipati/statisticalHypothesisTests)
(各手法のリンクから、実装されているgithubページへ飛べます)

#### 統計的仮説検定 (Statistical Hypothesis Tests)
|            | パラメトリック検定<br>(Parametric test) | ノンパラメトリック検定<br>(Non-parametric test) |
|:-----------|:------------|:------------|
|**対応なし2群<br>(Compare two unpaired groups)**| [対応なしt検定<br>(Unpaired t test)](https://github.com/Wotipati/statisticalHypothesisTests/tree/master/Unpaired-t-test) | [マン・ホイットニーのU検定<br>(Mann-Whitney U test)](https://github.com/Wotipati/statisticalHypothesisTests/tree/master/Mann-Whitney-U-test)|
|**対応あり2群<br>(Compare two paired groups)**| [対応ありt検定<br>(Paired t test)](https://github.com/Wotipati/statisticalHypothesisTests/tree/master/Paired-t-test) | [ウィルコクソンの符号付き順位検定<br>(Wilcoxon Signed-rank test)](https://github.com/Wotipati/statisticalHypothesisTests/tree/master/Wilcoxon-Signed-rank-test)|
|**対応なし他群<br>(Compare more than two unpaired groups)**| [分散分析<br>(ANOVA)](https://github.com/Wotipati/statisticalHypothesisTests/tree/master/ANOVA#one-way-anova) | [クラスカル・ウォリス検定<br>(Kruskal-Wallis test)](https://github.com/Wotipati/statisticalHypothesisTests/tree/master/Kruskal-Wallis-test) |
|**対応あり他群<br>(Compare more than two paired groups)**| *反復測定分散分析<br>(Repeated-measures ANOVA) | [フリードマン検定<br>(Friedman test)](https://github.com/Wotipati/statisticalHypothesisTests/tree/master/Friedman-test) |


*反復測定分散分析に関してはscipyに実装されていなかったため無いです、すいません。

- [等分散の検定(Levene's test)](https://github.com/Wotipati/statisticalHypothesisTests/tree/master/Levene's-test)


#### 信頼区間の推定 (Confidence Interval Estimation)
- [母平均の信頼区間推定](https://github.com/Wotipati/statisticalHypothesisTests/tree/master/Confidence-Interval-Estimation-for-the-Mean)
- [母分散の信頼区間推定](https://github.com/Wotipati/statisticalHypothesisTests/tree/master/Confidence-Interval-Estimation-for-the-Variance)

---

多くの論文(特にHuman Computer Interaction分野)で使用されている代表的な手法(マン・ホイットニーのU検定やウィルコクソンの符号付き順位検定など)はほとんど実装してあるかと思います。  

ご自由にお使いください。
以上のpythonスクリプトは[こちらのgithubリポジトリ](https://github.com/Wotipati/statisticalHypothesisTests)にまとめてあります。


**注意) これらのスクリプトは既存の統計システムを用いてチェックしたものですが、100%正しい保証はないです。実際に論文等で使用される際は，使用される方ご自身の責任において行っていただきますようお願いいたします。** 

**私自身、論文で使用してたりするので、もしミスがあったら教えていただけるとホントに助かります。**



----

### 対象
- 統計的仮説検定や信頼区間推定についてある程度理解している人
- 論文などを執筆する際に、今すぐ集めたデータの検定や信頼区間推定を行いたい人
- pythonが使える人


### 対象じゃない人
**仮説検定や信頼区間推定の理論についてしっかり学びたい人**
一応、各検定のスクリプトがアップロードされているページに、各検定について気休め程度の説明が載ってますが、自分の備忘録として書いたもので人に説明できるような代物ではないです。

[先ほどのリポジトリ内](https://github.com/Wotipati/statisticalHypothesisTests#%E3%81%9D%E3%81%AE%E4%BB%96notes)にも検定に関する基礎知識について幾つか説明的資料がありますが、こちらも気休め程度です。期待しないでください。

ちゃんと勉強したい人には個人的に以下の資料をオススメしておきます。(後者は無料の資料(ただし英語)です)

- [入門 統計学 −検定から多変量解析・実験計画法まで−](http://shop.ohmsha.co.jp/shopdetail/000000001900/)
- [Statistical Methods for HCI Research by Koji Yatani](http://yatani.jp/teaching/doku.php?id=hcistats:start)
       


# 使い方
細かい使い方は、各スクリプトがアップロードされてあるページにREADMEとして載せてあるので、ここでは基本的な使い方を説明します。

一つの検定or推定に対しそれぞれ独立したフォルダが用意されており，中には
　　・検定を行うpythonスクリプト(`XXXX.py`)
　　・データ貼り付け用csvファイル(`testData.csv`)
が入ってます。

基本的な使い方は単純で
　　**① データの準備**
　　**② 実行**
　　**③ 結果を眺める**
だけです。

## 必要なもの
- python3
- scipy (0.19.1)
- pandas (0.20.3)


## ① データの準備
実行したいスクリプトと同じディレクトリにある`testData.csv`にデータを書き込んで保存します。

その際

- 先頭はデータのグループ名を書く
- 各データは`,`で区切りながら書く

ということだけ注意してください。 

例)

```testData.csv
GroupA,2,4,3,1,2,3,3,2,3,1
GroupB,3,5,4,2,4,3,5,5,3,2
GroupC,2,1,1,1,2,3,2,2,2,3
GroupD,3,4,5,2,3,3,5,2,3,5
```` 

(大量にデータがあっていちいち全部書くのが面倒な人は、データを出力する際に上の条件を満たすようなcsvファイルを出力するようなスクリプトを頑張って書いてください)

それぞれの検定ごとに、ほんの少し追加のルール（グループの数など）があるので、そちらはREADMEを参照してください。

## ② 実行
実行したいスクリプトがあるディレクトリに移動し、スクリプトを実行してください。

例）マン・ホイットニーのU検定を行う場合

```
$ python mann-whitney-u-test.py
```

## ③ 結果
p値が出力されます。
有意差が確認された場合は結果に`*`が付きます。

```
$ python mann-whitney-u-test.py

       GroupA            GroupB           GroupC             GroupD
GroupA      -  *0.0192043876643    0.11541267853   *0.0290956779717
GroupB      -                 -  *0.001695333779     0.437412800807
GroupC      -                 -                -  *0.00206574468142
GroupD      -                 -                -                  -
```

---

以上です。  

最後までお読みいただきありがとうございます。