Tôi không chắc có cách nào hiệu quả hơn để tính toán ECDF tại các điểm dữ liệu hay không , nhưng cách tiếp cận bạo lực sau đây sẽ hiệu quả để tính toán ECDF qua "lưới" dữ liệu . Đây là một khái quát đơn giản của phiên bản 1D.
Giả sử bạn có một bộ dữ liệu gồm điểm trong kích thước, được đưa ra trong ma trận . Để đơn giản, tôi sẽ giả sử rằng bao gồm toàn bộ các số duy nhất (nghĩa là vị trí chung *). Tôi sẽ sử dụng ký hiệu Matlab trong mã giả sau đây, vì đó là cách tôi nghĩ về thuật toán, nhưng tôi có thể mở rộng về điều này nếu có hứng thú.NdN× dXX
Tính toán đầu tiên
[x: , k,Tôi: , k] = sắp xếp [X: , k] cho ,k = 1 : d
Trong đó là ma trận thứ hạng tọa độ khôn ngoan và là ma trận trục tọa độ lưới (cả hai kích thước ).TôixN× d
Sau đó rasterize các điểm dữ liệu vào lưới dữ liệu ngụ ý, tính toán biểu đồ (đã chuẩn hóa) thành
.P= tích lũy [ tôi,1N, N× cái [1, d] ]
Sau đó tích hợp "EPDF" này vào từng chiều để cung cấp ECDF:
cho .P= cumsum [ P, k ]k = 1 : d
Bây giờ là ECDF được lấy mẫu tại .PTôi1, ... ,TôidxTôi1, 1, ...xTôid, d
Thuật toán này cần thời gian cho mỗi loại và cho mỗi tổng, vì vậy tổng chi phí là . Vì bản thân ECDF có lưới có các phần tử , nên về cơ bản là tối ưu.Ô [ Nđăng nhậpN]O [Nd]Ô [ d(Nd+ Nđăng nhậpN) ]O [Nd]
(* Giả định về các điểm khác biệt có thể được nới lỏng bằng cách sử dụng thay vì , cùng với một chút lưu giữ sách.)độc nhất [ ]sắp xếp [ ]