Sinh các bản sao K-S
Giờ bạn cần một hàm để rút các bản sao (replicates) Kolmogorov–Smirnov từ một phân phối mục tiêu f. Hãy xây dựng hàm với chữ ký draw_ks_reps(n, f, args=(), size=10000, n_reps=10000). Ở đây, n là số điểm dữ liệu, và f là hàm bạn sẽ dùng để tạo mẫu từ CDF mục tiêu. Ví dụ, để kiểm định so với phân phối Exponential, bạn sẽ truyền np.random.exponential làm f. Hàm này thường có các tham số, và bạn phải truyền chúng dưới dạng một tuple. Vì vậy, nếu bạn muốn lấy mẫu từ phân phối Exponential với kỳ vọng x_mean, bạn sẽ dùng từ khóa args=(x_mean,). Hai tham số từ khóa size và n_reps lần lượt là số lượng mẫu lấy từ phân phối mục tiêu và số bản sao cần rút.
Bài tập này là một phần của khóa học
Các nghiên cứu tình huống về tư duy thống kê
Hướng dẫn bài tập
- Viết một hàm với chữ ký
draw_ks_reps(n, f, args=(), size=10000, n_reps=10000)thực hiện các bước sau.- Sinh
sizemẫu từ phân phối mục tiêuf. Nhớ rằng để truyềnargsvào hàm lấy mẫu, bạn nên dùng cú phápf(*args, size=size). Lưu kết quả vàox_f. - Khởi tạo mảng bản sao
repslà một mảng rỗng cón_repsphần tử. - Viết vòng lặp
forlặp lạin_repslần các bước sau.- Lấy
nmẫu từf. Tiếp tục dùng*argstrong lời gọi hàm. Lưu kết quả vào biếnx_samp. - Tính thống kê K-S bằng
dcst.ks_stat(), là hàm bạn đã viết ở bài trước và được lưu sẵn trong mô-đundcst. Lưu kết quả vào mảngreps.
- Lấy
- Trả về mảng
reps.
- Sinh
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 samples from target distribution
x_f = ____
# Initialize K-S replicates
reps = ____
# Draw replicates
for i in range(n_reps):
# Draw samples for comparison
x_samp = ____
# Compute K-S statistic
____[i] = ____
return reps