Kiểm định giả thuyết - Chênh lệch trung bình
Chúng ta muốn kiểm định giả thuyết rằng có sự khác biệt về mức quyên góp trung bình nhận được từ A và B. Trước đó, bạn đã học cách tạo một hoán vị của dữ liệu. Giờ, chúng ta sẽ tạo phân phối rỗng của chênh lệch trung bình và sau đó tính p-value.
Với phân phối rỗng, trước tiên ta tạo nhiều bộ dữ liệu đã hoán vị và lưu lại chênh lệch trung bình cho mỗi trường hợp. Tiếp theo, ta tính thống kê kiểm định là chênh lệch trung bình với bộ dữ liệu gốc. Cuối cùng, ta xấp xỉ p-value bằng cách tính gấp đôi tỉ lệ số trường hợp có chênh lệch lớn hơn hoặc bằng giá trị tuyệt đối của thống kê kiểm định (giả thuyết hai phía). Một p-value nhỏ hơn, chẳng hạn 0.05, có thể cho thấy ý nghĩa thống kê.
Bài tập này là một phần của khóa học
Mô phỏng Thống kê bằng Python
Hướng dẫn bài tập
- Tạo nhiều hoán vị của
donations_A&donations_Bvà gán vàoperm. - Gán
samplesbằng chênh lệch trung bình củapermuted_A_datasets&permuted_B_datasets. Ta đặtaxis=1để có trung bình cho từng bộ dữ liệu thay vì trung bình gộp. - Gán
test_statbằng chênh lệch trung bình củadonations_A&donations_B. - Tính p-value
p_valbằng gấp đôi tỉ lệ phần tử trongsampleslớn hơn hoặc bằng giá trị tuyệt đối củatest_stat.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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))