初めて統計学に触れたとき、
帰無仮説?対立仮説?棄却?有意水準?
と、わからないことしかありませんでした
おそらく初めて統計学に触れる方は、誰もが通る道かと思います
ここの部分を間違って覚えてしまうと、その後の結果の解釈の誤ってしまうので、
今回の記事で帰無仮説と対立仮説は完璧にしておきましょう
- 帰無仮説:棄却したい仮説
- 対立仮説:帰無仮説と対立する仮説
pythonで統計学を学ぶ流れは以下の記事を参考にしてください
Contents
帰無仮説と対立仮説とは
帰無仮説と対立仮説の前に、統計検定のちょっと変わった考え方に触れておきます
統計検定には背理法という考え方が含まれています
統計検定は、「差がないことを否定して、差があることを証明する」という手順を踏みます
こういう手順を踏む理由は、
- 立てた仮説の正しさを証明することが難しい
- 仮説が正しくないことを証明することは可能
と、大きく2つの理由があります
背理法については以下の記事で深掘りしているので、参考にしてください
統計的仮説検定について
帰無仮説・対立仮説を用いる場合は、「統計的仮説検定」を行う場合です
統計的仮説検定はwikipediaで以下のように説明されています
統計的仮説検定(statistical hypothesis testing)とは、母集団分布の母数に関する仮説を標本から検証する統計学的方法のひとつ。日本工業規格では、仮説(statistical hypothesis)を「母数又は確率分布についての宣言。帰無仮説と対立仮説がある。」と定義している。検定(statistical test)を「帰無仮説を棄却し対立仮説を支持するか,又は帰無仮説を棄却しないかを観測値に基づいて決めるための統計的手続き。その手続きは,帰無仮説が成立しているにもかかわらず棄却する確率がα以下になるように決められる。このαを有意水準という。」と定義している。
仮説Aが正しいとした場合、実際のデータから仮説Aの状態になる確率を算出したとき、その確率が十分に小さい場合には仮説Aは成り立ちそうにないと判断する
ということになります
帰無仮説とは
帰無仮説とは、「棄却したい仮説」のことを指します
棄却というのは、その仮説を捨てるようなものです
帰無というのは「無に帰す(=差がない)」ということを指しています
そのため、帰無仮説は差がない・違いがない仮説、ということになります
対立仮説とは
対立仮説とは、帰無仮説に対して立てられる仮説であるため、そう呼ばれています
対立仮説は、差がある・違いがある仮説、ということになります
帰無仮説と対立仮説の例
「運動を週5回している人たち(A群)としていない人たち(B群)では、BMIに差がある」
ということを証明したいとしましょう
帰無仮説は差がない・違いがない、というものだったので、
帰無仮説:A群とB群のBMIに差はない
これに対するのが、対立仮説なので、
対立仮説:A群とB群のBMIに差がある
ということになります
2群の値を統計検定にかけた際に出てくる、p値(p-value)が0.05未満であれば、帰無仮説を棄却します
(慣例的に有意水準が5%になっていることが多いです。分野によっては1%(0.01)のこともあります)
実際に検定をかけてみる
上記の例を実際に統計にかけてみたいと思います
今回は対応のないt検定で統計をかけたいと思います
from scipy import stats
import numpy as np
A=np.array([21,20,18,22,19,21,20])#A群のBMI
B=np.array([31,30,25,27,13,28,27])#B群のBMI
result=stats.ttest_ind(A, B, alternative='two-sided')
print("p=%.3f" %(result.pvalue))
>>>p=0.030
上記の様になるかと思います
さらに作図もしましょう
import pandas as pd
from scipy import stats
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
sns.set()
A=np.array([21,20,18,22,19,21,20])
B=np.array([31,30,25,27,13,28,27])
result=stats.ttest_ind(A, B, alternative='two-sided')
print("p=%.3f" %(result.pvalue))
data=[["BMI",A.mean(),B.mean()]]
df=pd.DataFrame(data,columns=["name","A","B"])
color=["r","b"]
df.plot(x="name",y=["A","B"],kind="bar",color=color,figsize=(4,3))
plt.show()
平均の棒グラフで見ても、2群に差がありそうな感じはしますね
実際のp値は0.05未満なので、帰無仮説が棄却され、2群に有意差がある、という結果になります
帰無仮説を棄却できない場合
結構勘違いしやすいのですが、p値が0.05以上の場合、対立仮説を棄却する、つまり帰無仮説が正しい、と判断してしまいやすいです
しかし、帰無仮説が棄却できなかった場合、「A群とB群で血圧に差があるとは言えない」ということになります
ここは結構ややこしい部分ですが、間違えてしまわないようにしましょう
まとめ
- 帰無仮説:差がない・違いがないという仮説
- 対立仮説:差がある・違いがあるという仮説
- 棄却:その仮説を捨てること
- 有意水準:慣例的に5%とされている