python PR

【pythonで統計学】帰無仮説と対立仮説について〜わかりやすい例付き〜

python 統計学 帰無仮説
記事内に商品プロモーションを含む場合があります

初めて統計学に触れたとき、

帰無仮説?対立仮説?棄却?有意水準?

と、わからないことしかありませんでした

おそらく初めて統計学に触れる方は、誰もが通る道かと思います

ここの部分を間違って覚えてしまうと、その後の結果の解釈の誤ってしまうので、

今回の記事で帰無仮説と対立仮説は完璧にしておきましょう

まとめ
  • 帰無仮説:棄却したい仮説
  • 対立仮説:帰無仮説と対立する仮説

pythonで統計学を学ぶ流れは以下の記事を参考にしてください

python 統計学
pythonで統計学を学ぶメリット〜実際の学習手順を紹介〜近年、データサイエンティストの需要が高まってきていますが、データサイエンティスト必須能力として、「プログラミング言語」「統計学」が挙げられています。pythonで統計学を扱えれば、データサイエンティストとしての道も開けるでしょう。今回はpythonで統計学を学ぶメリットや実際にどのように学習していくべきかを解説していきたいと思います。...

帰無仮説と対立仮説とは

帰無仮説と対立仮説の前に、統計検定のちょっと変わった考え方に触れておきます

統計検定には背理法という考え方が含まれています

統計検定は、「差がないことを否定して、差があることを証明する」という手順を踏みます

こういう手順を踏む理由は、

  1. 立てた仮説の正しさを証明することが難しい
  2. 仮説が正しくないことを証明することは可能

と、大きく2つの理由があります

背理法については以下の記事で深掘りしているので、参考にしてください

python 統計学 背理法
【pythonで統計学】背理法の基本について統計的仮説検定を用いる場合には、その背景に「背理法」という考え方が採用されています。背理法を始めて聞く場合には、わかりにくいものですが、慣れれば自身の思考の糧にすることができます。この記事では、背理法とは何かについて解説していきたいと思います。...

統計的仮説検定について

帰無仮説・対立仮説を用いる場合は、「統計的仮説検定」を行う場合です

統計的仮説検定は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%とされている
おすすめプログラミングスクール

DMMWEBCAMP
  • WEBCAMPはコスパ最強
  • WEBCAMPは初心者に優しい充実したサポート付き
  • 16週間プランを選択して、返金してもらおう
WEBCAMPの公式ページはこちら WEBCAMPの口コミ・評価はこちら
テックアカデミー  
  • テックアカデミーは費用対効果抜群
  • テックアカデミーのサポートは個人の能力に応じつつ、python初心者に優しい
  • まずは無料体験でテックアカデミーを知ってから受講を決める
テックアカデミーの公式ページはこちら テックアカデミーの口コミ・評価はこちら
キカガク
  • 多種多様なスキルコース
  • 初心者から専門家まで対象
  • 給付金利用で費用を抑えられる
キカガクの公式ページはこちら キカガクの口コミ・評価はこちら
Aidemy Premium
  • 完全オンラインで、時間や場所に縛られず学習したい
  • マンツーマン学習サポートにより実践に近い経験をしたい
  • 未経験から機械学習エンジニアになりたい
Aidemy Premiumの公式ページはこちら Aidemy Premiumの口コミ・評価はこちら
My Agile Privacy
This website uses technical and profiling cookies. Clicking on "Accept" authorises all profiling cookies. Clicking on "Refuse" or the X will refuse all profiling cookies. By clicking on "Customise" you can select which profiling cookies to activate.