假設檢定-平均數差異
我們想要檢定 A 與 B 所收到捐款的平均值是否存在差異的假設。你先前已學會如何對資料做一次排列(permutation)。現在,我們要產生「平均數差異」在虛無假設下的分佈,然後計算 p 值。
對於虛無分佈,我們先產生多個經過隨機重排的資料集,並在每個情況下記錄平均數的差異。接著,用原始資料集計算檢定統計量(test statistic),也就是平均數的差異。最後,我們以雙側假設近似p 值:計算在所有情況中,「差異大於等於檢定統計量絕對值」的比例,再乘以 2。若 p 值小於 0.05(例如 0.05),即可視為達到統計顯著。
本練習屬於課程
Python 的統計模擬
練習說明
- 產生多組
donations_A與donations_B的隨機重排,並指定給perm。 - 將
samples設為permuted_A_datasets與permuted_B_datasets的「平均數差異」。我們設定axis=1,以便為每個資料集各自計算平均,而非整體平均。 - 將
test_stat設為donations_A與donations_B的平均數差異。 - 計算 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))