仮説検定:2012年のほうがクチバシは深いですか?
ECDF のプロットと信頼区間の結果から、Daphne Major にいる G. scandens のクチバシが深くなっていることはかなり明確に見えてきました。ですが、これは単なる偶然によるものという可能性はないでしょうか。つまり、平均が同じだとした場合に、観測された平均の差が得られる確率はどのくらいでしょうか?
注意してください。ここで検定している仮説は、クチバシの深さが同じ分布から来ているというものではありません。それには置換検定を使えます。ここでの仮説は、平均が等しいというものです。この仮説検定を行うには、2つのデータセットの平均が等しくなるようにシフトし、その後ブートストラップサンプリングを使って平均の差を計算します。
この演習はコースの一部です
Pythonで学ぶ統計思考(パート2)
演習の手順
- 1975年と2012年のクチバシの深さを連結した配列を作成し、その平均を計算して保存します。
- 直前に計算した結合データの平均に等しくなるよう、
bd_1975とbd_2012をシフトします。 - 1975年と2012年のクチバシの深さについて、それぞれ平均のブートストラップ推定量を10,000個取得します。
- 差のブートストラップ推定量を得るために、2012年の推定量から1975年の推定量を引きます。
- p値を計算して表示します。前の演習で計算した観測された平均の差は、
mean_diffとして名前空間に残っています。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Compute mean of combined data set: combined_mean
combined_mean = ____(____((bd_1975, bd_2012)))
# Shift the samples
bd_1975_shifted = ____
bd_2012_shifted = ____
# Get bootstrap replicates of shifted data sets
bs_replicates_1975 = ____
bs_replicates_2012 = ____
# Compute replicates of difference of means: bs_diff_replicates
bs_diff_replicates = ____
# Compute the p-value
p = np.sum(____ >= ____) / len(____)
# Print p-value
print('p =', p)