開始使用免費開始

假設檢定-平均數差異

我們想要檢定 A 與 B 所收到捐款的平均值是否存在差異的假設。你先前已學會如何對資料做一次排列(permutation)。現在,我們要產生「平均數差異」在虛無假設下的分佈,然後計算 p 值。

對於虛無分佈,我們先產生多個經過隨機重排的資料集,並在每個情況下記錄平均數的差異。接著,用原始資料集計算檢定統計量(test statistic),也就是平均數的差異。最後,我們以雙側假設近似p 值:計算在所有情況中,「差異大於等於檢定統計量絕對值」的比例,再乘以 2。若 p 值小於 0.05(例如 0.05),即可視為達到統計顯著。

本練習屬於課程

Python 的統計模擬

檢視課程

練習說明

  • 產生多組 donations_Adonations_B 的隨機重排,並指定給 perm
  • samples 設為 permuted_A_datasetspermuted_B_datasets 的「平均數差異」。我們設定 axis=1,以便為每個資料集各自計算平均,而非整體平均。
  • test_stat 設為 donations_Adonations_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))
編輯並執行程式碼