【取り扱い注意】統計とは確率だ

# 目次
[1.はじめに](#1-はじめに)
[2.t検定](#2-t検定)
[3.対応のあるt検定](#3-対応のあるt検定)
[4.対応のないt検定](#4-対応のないt検定)
[5.おわりに](#5-おわりに)

# 1. はじめに
統計って、データを集めて、それで何？っていう感じでした。
すごく乱暴だと思いますが、自分としては、統計処理、特に検定は確率を求めて、起きる事象かどうかを調べることと理解しています。
この記事では統計における代表的な検定手法であるt検定を用いて、統計処理の初歩の初歩を、一緒に考えてみたいと思います。

# 2. t検定
t検定は、母集団の平均の差に関する仮説検定に使われますが、母集団の標準偏差が未知の場合に使用されることが多いです。
t検定は、サンプルから算出された標準偏差を使用して、母集団の標準偏差を推定します。例えば、ある薬の平均効果がある値と等しいかどうかを検証する場合、t検定が適切な方法となります。

薬の効果があるかないかを検定するためには、一般的には「対応のあるt検定（Paired t-test）」や「対応のないt検定（Unpaired t-test）」が使用されます。

どちらの方法を選ぶかは、実験のデザインによります。例えば、同じ被験者に薬を投与する前後のデータを持っている場合は、対応のあるt検定が適している可能性が高いです。一方、複数の独立したグループに対するデータがある場合は、対応のないt検定が適しているかもしれません。

### 名前の由来 ###
「t検定」の「t」は、「Student's t-distribution（スチューデントのt分布）」から来ています。t検定は、ウィリアム・ゴセット（William Sealy Gosset）という統計学者が、統計的な手法を開発する際に使用した偽名「Student」に由来しています。

ゴセットは、アイルランドのギネス醸造所（あのギネスブックのギネスです！）で統計的な品質管理の問題に取り組んでいました。しかし、醸造所は彼の研究成果を外部に公表することを許可していなかったため、彼は「Student」という偽名を使用して自身の研究を発表しました。

彼は、有限のサンプルサイズを持つデータに対する正確な解析手法を開発しました。その手法が後に「Student's t-test（スチューデントのt検定）」として知られるようになり、t検定の名前はここから来ています。スチューデントのt分布は、正規分布に似ていますが、サンプルサイズが小さい場合の母集団のパラメータの推定に用いられる確率分布です。

### z検定 ###
ちなみに、似た検定手法にz検定があり、母集団の平均や比率などのパラメータについての仮説検定に用いられます。

「z検定」という用語は、正規分布（または標準正規分布）を基にした統計的な手法であることを示しています。z検定は、母集団の平均や比率などのパラメータに関する仮説検定に使用され、その計算には正規分布の性質が関連しています。

z検定の名前の由来は、標準正規分布（平均が0で標準偏差が1の正規分布）を表すZ値（Z-score）を用いて仮説検定を行うことにあります。Z値は、あるデータポイントが平均からどれだけ標準偏差の単位数だけ離れているかを示す指標です。z検定では、サンプル平均やサンプル比率をもとにしてZ値を計算し、それを基に仮説が成り立つかどうかを判断します。

このように、Z検定は正規分布の性質に依存しており、サンプルサイズが大きい場合には中心極限定理によって正規分布に近づくという性質を活用します。ただし、母集団の標準偏差が既知でない場合や、サンプルサイズが小さい場合には、t検定が使われます。

中心極限定理によりサンプル数が30を超えると、正規分布が仮定できるとする考え方もあるようです。しかし、標準偏差が既知ということは、あまりないので、t検定の方が、よく使われるようです。

# 3. 対応のあるt検定
対応のあるt検定（Paired t-test）は、同じ対象に対して薬を投与する前後のデータがある場合に使用されます。

つまり、同じ被験者または対象に対して2つの条件（薬を投与する前と薬を投与した後）を比較する場合に適用されます。この方法は、個々の被験者の変動を考慮するため、比較の信頼性が高くなります。

対応のあるt検定をPythonで実行してみましょう。

まず、必要なライブラリをインポートします。

```python
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
```
対応のあるt検定ですので、同じ被験者に薬を投与する前後のデータがある場合を想定します。

```python
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

# Data
before = np.array([15, 18, 20, 16, 19])
after = np.array([20, 22, 24, 19, 21])

# Paired t-test
t_statistic, p_value = stats.ttest_rel(before, after)

# Display results
print("Paired t-test")
print("t-statistic:", t_statistic)
print("p-value:", p_value)

# Visualization
plt.boxplot([before, after], labels=['Before', 'After'])
plt.title("Paired t-test")
plt.ylabel("Value")
plt.show()
```
結果は下の通りです。可視化しましたので、グラフを見れば、薬の投与前と投与後で、数値が明らかに上昇しています（ここでは、改善とします）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76072/4213ccb2-4f25-1e0d-9a51-0e37898d4383.png)


### p値 ###
ここで、注目してほしいのが、P値です。

統計学において、p値（p-value）は仮説検定の結果を解釈するための指標です。p値は、帰無仮説（Null Hypothesis）が成立していると仮定した場合に、観測されたデータよりも極端な結果が得られる確率を示します。つまり、p値は「観測されたデータが偶然に起因する確率」を示す指標です。

p値の解釈方法は、主に帰無仮説を棄却するかどうかの判断に用います。一般的なアプローチは、事前に決めた有意水準（通常は0.05や0.01など）と比較して、以下のように判断します。

p値 < 有意水準：帰無仮説を棄却する
p値 >= 有意水準：帰無仮説を棄却しない

具体的には、p値が有意水準よりも小さい場合、観測されたデータが帰無仮説に基づく期待値よりも極端なものであるため、帰無仮説を棄却し、代わりに対立仮説が支持されると解釈されます。逆に、p値が有意水準を上回る場合、観測されたデータは帰無仮説に基づく範囲内でのものであり、帰無仮説を棄却しないと判断されます。

対応のあるt検定は、同じ対象に対して2つの条件（または時点）を比較する際に使用されます。

p値は、帰無仮説（薬の投与前後に差がない）が成立していると仮定した場合に、観測されたデータよりも極端な差異が得られる確率を示します。

薬の投与前後に差がない、とした場合に、この例でのデータとなる確率は、わずか0.2%しかありません。p値は、事前に決めておく必要がありますが、仮に有意水準1%としていても、棄却されて、効果があるとされます。

つまり、統計処理、特に検定においては、データを踏まえて、そんなことが起きるのか、起きないのか、をチェックしています。統計的にあり得ない、ということは、確率的に起き得ない、ということか否かを計算していることなります。

# 4. 対応のないt検定
次に、対応のないt検定を見てみましょう。
対応のないt検定（Unpaired t-test）は、異なるグループに対して薬を投与する実験データを比較する場合に使用されます。

つまり、薬を投与するグループと対照グループ（偽薬：プラセボを投与するグループ）のように、独立した2つのグループを比較する際に適用されます。この方法は、グループ間の差異を評価する際に使用されます。

```python
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

# Data
group_a = np.array([25, 28, 30, 26, 29])
group_b = np.array([20, 22, 24, 19, 21])

# Unpaired t-test
t_statistic, p_value = stats.ttest_ind(group_a, group_b)

# Display results
print("Unpaired t-test")
print("t-statistic:", t_statistic)
print("p-value:", p_value)

# Visualization
plt.boxplot([group_a, group_b], labels=['Group A', 'Group B'])
plt.title("Unpaired t-test")
plt.ylabel("Value")
plt.show()
```
結果は下の通りです。
可視化しましたので、グラフを見れば、明らかですが、薬を投与したグループ（Group A）は投与しなかったグループ（Group B）に比べて、数値が高くなっています（ここでは、高い数値を良しとします）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76072/a15947d7-b92d-9e4b-3112-3bba3a15ef18.png)


### p値 ###
ここでも、注目してほしいのは、P値です。

対応のないt検定は、独立した2つのグループ（または条件）を比較する際に使用されますが、p値は、帰無仮説（2つのグループ間に差がない）が成立していると仮定した場合に、観測されたデータよりも極端な差異が得られる確率を示します。

2つのグループ間に差がない、とした場合に、この例でのデータとなる確率は、わずか0.09%しかありません。p値は、事前に決めておく必要がありますが、仮に有意水準1%としていても、棄却されて、効果があるとされます。

繰り返しになりますが、統計処理、特に検定では、確率を計算し、あらかじめ決めておいた有意水準と比べて、確率的に起き得るか否かを見ています。

# 5. おわりに
DXが叫ばれている昨今、データ活用の大切さを痛感しています。
データ活用の最初の一歩として、統計を学ぶ人も多いと思います。

結局、統計って、ナニ？　という疑問に、自分なりに考えて、調べた結果を記事にしました。
冒頭にも記載しました通り、かなり乱暴な話ですので、くれぐれも、「取り扱い注意」でお願いします。

最後に、取り上げましたp値ですが、p値は「p-value」の略称で、「p」は「probability（確率）」の頭文字です。
統計学的な解析や仮説検定の結果の有意性を評価する際に重要な役割を果たすp値のpがprobability（確率）を表すってことからも、「統計とは確率だ」と思います。

ただし、p値は結果の解釈に用いる一つの指標に過ぎず、他の要因や文脈も考慮して判断することが重要ですので、くれぐれも、忘れないように留意したいと思います。