統計的推定と検定をPythonで解く「統計的仮説検定（2標本の平均の差の検定、対応のないt検定、ウェルチの方法）」(2022.4.28)

# 背景
前回は「対応のない2標本の平均の差のt検定」をしました。2標本の検定統計量を算出して、帰無仮説を棄却するかどうか判断するのでした。前回はウェルチの方法を使わない方法で行いました。今回はウェルチの方法を使いたいと思います。

ここで気になるのが、ウェルチの方法を使う時と使わない時の違いです。それは「2標本の母分散が等しい」と仮定できるかどうかの様です。前回は同じテストだった為、同じ母集団と見なす事が出来そうです。これは「2標本の母分散が等しい」と言えそうです。ウェルチの方法を使う際は「2標本の母分散が等しいと仮定できない時」の様です。ここで、再度「対応のあるなし」について気になりました。それが「同じ母集団かどうか」の違いだったと思いましたので、「同じ母集団」と「2標本の母分散が等しい」は分けて考えているのだと思います。この辺は、もう少し詳しくなってから考えるとして、今回はウェルチの方法を使った「対応のない2標本の平均の差のt検定」を考えてみます。

今回は、[谷合(2018.10.5)、Pythonで理解する統計解析の基礎、技術評論社](https://gihyo.jp/book/2018/978-4-297-10049-0)に戻りたいと思います。前々回の記事「[統計的推定と検定をPythonで解く「統計的仮説検定（2標本の平均の差の検定、対応のあるt検定」(2020.4.25)」](https://qiita.com/tan0ry0shiny/items/4f03e9ad3c9142a9e66c)」の流れで見て頂くと分かり易いかもしれません。

<b>前回の記事</b>
[統計的推定と検定をPythonで解く「統計的仮説検定（2標本の平均の差の検定、対応のないt検定」(2020.4.26)](https://qiita.com/tan0ry0shiny/items/5227abf3d8eea48a8963)

# 問題
Aさんのクラスでは筋トレがはやり始めましたが、もともとは文科系の学生が多いクラスのようです。一方、Bさんがいる隣のクラスは体育系の学生が多く、普段から筋トレをしているそうです。もし筋トレに集中力を向上させる効果がるのなら、AさんのクラスとBさんのクラスの間に集中力テストの平均に差が出るのではないかと思い、Bさんのクラスの学生にも集中力テストを受けてもらいました。このデータからどのような検定を行えば、AさんとBさんのクラスの集中力に有意な差があるか確かめる事ができるでしょうか。



# 解答
## どういう問題か（問題の分類）
対応の無い2標本の平均値の差の検定です。これは２つの対応のない標本(別々の母集団から抽出したと考えられる標本)が本当に別々の母集団から抽出されたかどうかを知りたいです。これを知るには２つの標本分布の差が正規分布に従うかどうかを見れば良さそうです。
正規分布が想定できるが、母分散が等しいと想定するのに無理がある場合、ウェルチの方法を使います。

## どのように解けるか（概要）
筋トレに集中力を向上させる効果があるかどうかは、AさんのクラスとBさんのクラスの集中力テストの平均点を比較すれば良さそうです。そのため、$\mu_1$をAさんのクラスの平均点、$\mu_2$をAさんのクラスの平均点として、次のような仮説検定を行うことを考えます。

*帰無仮説：$\mu_{1}$-$\mu_{2}=0$
*対立仮説：$\mu_{1}$-$\mu_{2}≠0$
### どのように解けるか(Python)
まず、元となるデータをGitHubから取り込みます。これは「[『Pythonで理解する統計解析の基礎』のサポートページ](https://github.com/ghmagazine/python_stat_sample)」です。
```Python
!git clone https://github.com/ghmagazine/python_stat_sample.git
```
データを読み込みます。
```Python
import pandas as pd
import numpy as np
training_ind = pd.read_csv('data/ch11_training_ind.csv')
print(training_ind.shape)
training_ind.head()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2496939/42fe160c-c6c2-c970-1139-e0c5f105e5b7.png)

今回は対応のないデータのため、差をとっても意味がありません。2標本から検定統計量を計算しようとするとウェルチの方法では次のようになります。

2標本のt検定はscipy.statsのttest_ind関数で計算出来ます。```equal_value=False```にすることでウェルチの方法で計算します。
```Python
t,p = stats.ttest_ind(training_ind['A'], training_ind['B'], equal_var=False)
```
$t=-1.76, p=0.087$となりました。
p値が有意水準5％を上回ったため、帰無仮説が採択されました。AさんとBさんのクラスの間には平均的に有意な差があるとはいえないという結論になりました。つまり、筋トレをしていれば文系も体育系も関係ないという事です。[前回の結果](https://qiita.com/tan0ry0shiny/items/4f03e9ad3c9142a9e66c)と合わせて考えると、筋トレは集中力に有意な差をもたらし、元々筋トレをしているかどうかは関係ないと言えそうです。

### どのように解けるか（解法）
先程は、プログラミングで計算したため、簡単にp値が求められました。これを手計算でするのはなかなか難しそうです。代わりに、t値を求めても同じ様に判断できます。

この時､自由度38に従うt分布の有意水準5%で帰無仮説が棄却されます｡AさんのクラスとBさんのクラスのテストの平均点に差があるかどうかを調べることが目的です。更に、Bさんのクラスの方が平均点が良い事を想定しているので、片側検定を行います。統計数値表から$t_{0.05}(38)$の値を読み取ると「1.686」となっています。次に$t$値を求めます。

$$
t=\frac{| \overline{x}_1 - \overline{x}_2 |}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}
$$

今回はデータから計算して求めます。
t=1.76となりました。これはscipy.statsのttest_ind関数で求めたt値と大きさは同じです。先程確認した$t_{0.05}(38)=1.686$を上回るため、帰無仮説が採択され、Pythonで求めた結論と同じになりました。

# 参考
1. [統計WEB、24-4. 対応のない2標本t検定、【コラム】母分散が等しいと仮定できる場合とできない場合](https://bellcurve.jp/statistics/course/9446.html)
1. [統計WEB、統計用語集、Welchの方法](https://bellcurve.jp/statistics/glossary/1898.html)
1. [統計学入門、東京大学出版会](https://www.amazon.co.jp/dp/4130420658/ref=cm_sw_r_tw_dp_HKW1Q0RAWQW99FVZD2G7)
1. [統計学基礎、東京図書](https://www.amazon.co.jp/dp/4489022271/ref=cm_sw_r_tw_dp_CP8VKVB7DFG15343M6AP)
# 感想
対応のないt検定の、ウェルチの方法を使える時の問題を行いました。前回に引き続き2標本の検定統計量を算出しましたが、対応のない（別々の母集団から抽出した）データを使いました。ウェルチの方法を使う時はそれぞれの分散を使い、前回の様にウェルチの方法を使わない時はプールした分散$s^2$を使うという認識になりました。ウェルチの方法を使うかどうかは、２つの母集団の分散が異なる場合を想定する時という認識です。