背景
今回は谷合(2018.10.5)、Pythonで理解する統計解析の基礎、技術評論社を参考に対応のあるt検定についての記事を書きました。推定と検定を通して、結局は統計検定量をどのように算出するかの問題だと思っています。もう少し詳しく簡潔に表現できる様にしたいです。
前回の記事
統計的推定と検定をPythonで解く「統計的仮説検定(1標本の平均の検定)」(2022.4.23)
問題
Aさんのクラスでは最近、筋トレをすると集中力が向上すると評判です。疑い深いAさんは自身も筋トレを始める前伊、本当に筋トレに効果があるのか確かめてみる事にしました。そのため、まずAさんは友達20人に1週間筋トレをしてもらい、その前後で集中力を測るテストを受けてもらいました。このデータからどのような検定を行えば、筋トレが集中力テストに有意な差を出すか確かめることができるでしょうか。
解答
どういう問題か(問題の分類)
対応のある2標本の平均値の差の検定です。これは2つの対応のある標本(同じ母集団から抽出したと考えられる標本)が本当に同じ母集団から抽出されたかどうかを知りたいです。これを知るには2つの標本分布の差が正規分布に従うかどうかを見れば良さそうです。
どのように解けるか(解法)
筋トレに集中力を向上させる効果があるかどうかは、筋トレ前と筋トレ後の集中力テストの平均点を比較すれば良さそうです。そのため、$\mu_{before}$を筋トレ前の集中力テストの平均点、$\mu_{after}$を筋トレ後の集中力テストの平均点として、次のような仮説検定を行う事を考えます。このような検定が平均値の差の検定です。
*帰無仮説:$\mu_{after}$-$\mu_{before}=0$
*対立仮説:$\mu_{after}$-$\mu_{before}≠0$
どのように解けるか(Python)
まず、元となるデータをGitHubから取り込みます。これは「『Pythonで理解する統計解析の基礎』のサポートページ」です。
!git clone https://github.com/ghmagazine/python_stat_sample.git
データを読み込みます。
import pandas as pd
training_rel = pd.read_csv('data/ch11_training_rel.csv')
print(training_rel.shape)
training_rel.head()
今回はデータに対応があるため、個々のデータで差を考える事ができます。
training_rel['差'] = training_rel['後'] - training_rel['前']
training_rel.head()
もし筋トレが集中力テストに与える影響がないのであれば、その差はランダムにばらつき平均が0の分布となっているはずです。そのため、この仮説検定は差の平均を$\mu_{diff}$として
*帰無仮説:$\mu_{diff}=0$
*対立仮説:$\mu_{diff}≠0$
と言い換えることができます。
さらに、その差がそれぞれ独立に同一の正規分布に従っていると仮定できると、この検定は母分散がわからない場合の正規分布の母平均の検定、すなわち1標本のt検定に帰着できます。
ここまでわかれば、1標本のt検定はscipy.statsのttest_1samp関数で計算出来ます。
t, p = stats.ttest_1samp(training_rel['差'], 0)
p
p値が0.040となります。
p値が有意水準を下回ったため、「p = 0.040 ゆえ(有意水準 5%で)有意差はない」となり帰無仮説は棄却となりました。筋トレは集中力に有意な差をもたらすようです。
どのように解けるか(解法)
筋トレをしたら、テストの点数が上がるかどうかを統計的に知りたいです。筋トレに効果があったら、筋トレ前後でテストの点数が違うはずです。つまり、筋トレ前後のテストの点数の確率分布が異なる事を統計的に求めたいです。これは筋トレ前後のテストの点数の差がない、つまり、μ=0を棄却することで求めます。
この時、自由度19に従うt分布の有意水準5%で帰無仮説が棄却されます。この時の臨界値は$t=1.729$です。次にt値を求めます。
$$
t=\frac{\bar{X}-\mu}{\sqrt{s^2/n}}
$$
$$
t\fallingdotseq2.204
$$
t値が臨界値より大きい為、帰無仮説は棄却されます。手計算ではt値を求めて検定を行うことになりそうです。
参考
谷合(2018.10.5)、Pythonで理解する統計解析の基礎、技術評論社
感想
対応のあるt検定は平均の差を求める事で1標本の平均の検定になるという認識を持ちました。また、自分の理解のスピードが遅いのと、知識同士の繋がりを作るのが難しく、書けば書くほど遅く、雑になります。その辺をどうすれば良いかも考えて書き続けようと思います。