Trực quan hóa lấy mẫu hoán vị
Để hiểu trực quan cách lấy mẫu hoán vị hoạt động, trong bài này bạn sẽ tạo các mẫu hoán vị và quan sát chúng bằng đồ thị.
Ta sẽ tiếp tục dùng dữ liệu Trạm Thời tiết Sheffield, lần này xét lượng mưa theo tháng vào tháng 6 (tháng khô) và tháng 11 (tháng ẩm). Ta kỳ vọng hai phân phối này có thể khác nhau, nên sẽ lấy các mẫu hoán vị để xem các ECDF của chúng sẽ trông như thế nào nếu chúng có cùng phân phối.
Dữ liệu được lưu trong các mảng NumPy rain_june và rain_november.
Nhắc lại, permutation_sample() có chữ ký hàm permutation_sample(data_1, data_2) và trả về permuted_data[:len(data_1)], permuted_data[len(data_1):], trong đó permuted_data = np.random.permutation(np.concatenate((data_1, data_2))).
Bài tập này là một phần của khóa học
Tư duy Thống kê với Python (Phần 2)
Hướng dẫn bài tập
- Viết một vòng lặp
forđể tạo 50 mẫu hoán vị, tính ECDF của chúng và vẽ đồ thị.- Tạo một cặp mẫu hoán vị từ
rain_junevàrain_novemberbằng hàmpermutation_sample()của bạn. - Tạo các giá trị
xvàycho một ECDF cho từng mẫu hoán vị bằng hàmecdf()của bạn. - Vẽ ECDF của mẫu hoán vị thứ nhất (
x_1vày_1) bằng các điểm. Làm tương tự cho mẫu hoán vị thứ hai (x_2vày_2).
- Tạo một cặp mẫu hoán vị từ
- Tạo các giá trị
xvàycho ECDF của dữ liệurain_junevàrain_novembervà vẽ các ECDF này lần lượt với đối số từ khóacolor='red'vàcolor='blue'. - Gắn nhãn trục, đặt lề 2% và hiển thị biểu đồ. Phần này đã được làm sẵn, nên bạn chỉ cần bấm gửi để xem biểu đồ!
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.
for _ in ____:
# Generate permutation samples
perm_sample_1, perm_sample_2 = ____
# Compute ECDFs
x_1, y_1 = ____
x_2, y_2 = ____
# Plot ECDFs of permutation sample
_ = plt.plot(____, ____, marker='.', linestyle='none',
color='red', alpha=0.02)
_ = plt.plot(____, ____, marker='.', linestyle='none',
color='blue', alpha=0.02)
# Create and plot ECDFs from original data
x_1, y_1 = ____
x_2, y_2 = ____
_ = plt.plot(x_1, y_1, marker='.', linestyle='none', color='red')
_ = plt.plot(x_2, y_2, marker='.', linestyle='none', color='blue')
# Label axes, set margin, and show plot
plt.margins(0.02)
_ = plt.xlabel('monthly rainfall (mm)')
_ = plt.ylabel('ECDF')
plt.show()