始める無料で始める

仮説検定 - 平均の差

A と B から受け取った寄付額の平均に差があるという仮説を検定したいとします。前のレッスンでは、データの置換(permutation)を1回だけ生成する方法を学びました。ここでは、平均の差に関する帰無分布を生成し、p値を計算します。

帰無分布を作るために、まず複数の置換データセットを生成し、各ケースについて平均の差を保存します。次に、元のデータセットでの平均の差を検定統計量として計算します。最後に、p値を、平均の差が検定統計量の絶対値以上となるケースの割合の2倍として近似します(両側検定)。例えば p 値が 0.05 未満であれば、統計的に有意と判断できます。

この演習はコースの一部です

Pythonで学ぶ統計シミュレーション

コースを見る

演習の手順

  • donations_Adonations_B の複数回の置換を生成して、perm に代入します。
  • permuted_A_datasetspermuted_B_datasets の平均の差を samples に代入します。全体の平均ではなく各データセットごとの平均を計算するために、axis=1 を指定します。
  • donations_Adonations_B の平均の差を test_stat に代入します。
  • p 値 p_val を、samples のうち test_stat の絶対値以上のものの割合の2倍として計算します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Generate permutations equal to the number of repetitions
perm = np.array([np.random.____(len(____) + len(____)) for i in range(reps)])
permuted_A_datasets = data[perm[:, :len(donations_A)]]
permuted_B_datasets = data[perm[:, len(donations_A):]]

# Calculate the difference in means for each of the datasets
samples = np.mean(____, axis=1) - np.mean(____, axis=1)

# Calculate the test statistic and p-value
test_stat = ____
p_val = 2*np.sum(____ >= np.abs(____))/reps
print("p-value = {}".format(p_val))
コードを編集して実行