Tính thống kê K-S
Viết một hàm để tính thống kê Kolmogorov–Smirnov từ hai bộ dữ liệu, data1 và data2, trong đó data2 gồm các mẫu từ phân phối lý thuyết mà bạn đang so sánh với dữ liệu của mình. Lưu ý: điều này có nghĩa là chúng ta dùng hacker stats để tính thống kê K-S cho một bộ dữ liệu và một phân phối lý thuyết, chứ không phải thống kê K-S cho hai bộ dữ liệu thực nghiệm. Thuận tiện là hàm bạn vừa chọn để tính các giá trị của ECDF chính tắc được cung cấp dưới tên dcst.ecdf_formal().
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
- Tính các giá trị tại các góc lồi của ECDF chính tắc cho
data1bằngdcst.ecdf(). Lưu kết quả vào biếnxvày. - Dùng
dcst.ecdf_formal()để tính các giá trị của CDF lý thuyết, xác định từdata2, tại các góc lồix. Lưu kết quả vào biếncdf. - Tính các khoảng cách giữa các góc lõm của ECDF chính tắc và CDF lý thuyết. Lưu kết quả là
D_top. - Tính khoảng cách giữa các góc lồi của ECDF chính tắc và CDF lý thuyết. Lưu ý bạn cần trừ
1/len(data1)khỏiyđể lấy giá trịytại góc lồi. Lưu kết quả vàoD_bottom. - Trả về thống kê K-S là giá trị lớn nhất trong tất cả các phần tử của
D_topvàD_bottom. Bạn có thể truyềnD_topvàD_bottomcùng nhau như một tuple chonp.max()để thực hiện điều này.
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.
def ks_stat(data1, data2):
# Compute ECDF from data: x, y
# Compute corresponding values of the target CDF
cdf = ____
# Compute distances between concave corners and CDF
D_top = ____ - ____
# Compute distance between convex corners and CDF
D_bottom = ____ - ____ + ____/____
return np.max((D_top, D_bottom))