Bắt đầu ngayBắt đầu miễn phí

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, data1data2, 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ê

Xem khóa học

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 data1 bằng dcst.ecdf(). Lưu kết quả vào biến xy.
  • 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ồi x. Lưu kết quả vào biến cdf.
  • 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ỏi y để lấy giá trị y tại góc lồi. Lưu kết quả vào D_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_topD_bottom. Bạn có thể truyền D_topD_bottom cùng nhau như một tuple cho np.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))
Chỉnh sửa và Chạy Mã