Tôi hiểu rằng một khi chúng ta vẽ các giá trị dưới dạng biểu đồ, chúng ta có thể xác định phân phối lưỡng kim bằng cách quan sát các đỉnh đôi, nhưng làm thế nào để tìm thấy nó theo lập trình? (Tôi đang tìm kiếm một thuật toán.)
Tôi hiểu rằng một khi chúng ta vẽ các giá trị dưới dạng biểu đồ, chúng ta có thể xác định phân phối lưỡng kim bằng cách quan sát các đỉnh đôi, nhưng làm thế nào để tìm thấy nó theo lập trình? (Tôi đang tìm kiếm một thuật toán.)
Câu trả lời:
Xác định một chế độ cho phân phối liên tục đòi hỏi phải làm mịn hoặc tạo dữ liệu.
Binning thường quá chần chừ: kết quả thường phụ thuộc vào nơi bạn đặt các điểm cắt bin.
Làm mịn hạt nhân (cụ thể, dưới dạng ước tính mật độ hạt nhân ) là một lựa chọn tốt. Mặc dù có thể có nhiều hình dạng hạt nhân, nhưng điển hình là kết quả không phụ thuộc nhiều vào hình dạng. Nó phụ thuộc vào băng thông kernel. Do đó, mọi người hoặc sử dụng một hạt nhân thích ứng hoặc thực hiện một chuỗi các độ mịn của hạt nhân để thay đổi băng thông cố định để kiểm tra tính ổn định của các chế độ được xác định. Mặc dù sử dụng bộ điều hợp mượt mà hoặc "tối ưu" là hấp dẫn, hãy lưu ý rằng hầu hết (tất cả?) Trong số này được thiết kế để đạt được sự cân bằng giữa độ chính xác và độ chính xác trung bình: chúng không được thiết kế để tối ưu hóa ước tính vị trí của các chế độ.
Theo như triển khai, các trình làm mịn kernel thay đổi cục bộ và mở rộng một hàm được xác định trước để phù hợp với dữ liệu. Với điều kiện là chức năng cơ bản này có thể khác biệt - Gaussian là một lựa chọn tốt vì bạn có thể phân biệt chúng bao nhiêu lần tùy thích - sau đó tất cả những gì bạn phải làm là thay thế nó bằng đạo hàm của nó để lấy đạo hàm của mịn. Sau đó, đơn giản chỉ là vấn đề áp dụng quy trình tìm kiếm tiêu chuẩn để phát hiện và kiểm tra các điểm quan trọng. ( Phương pháp của Brent hoạt động tốt.) Tất nhiên bạn có thể thực hiện cùng một mẹo với đạo hàm thứ hai để kiểm tra nhanh xem liệu bất kỳ điểm quan trọng nào có phải là tối đa cục bộ hay không - đó là chế độ.
Có một bài báo nổi tiếng của Silverman liên quan đến vấn đề này. Nó sử dụng ước tính mật độ hạt nhân. Xem
BW Silverman, Sử dụng ước tính mật độ hạt nhân để điều tra đa phương thức , J. Royal Stat. Sóc. B , tập. 43, không 1, 1981, trang 97-99.
Lưu ý rằng có một số lỗi trong các bảng của bài báo. Đây chỉ là một điểm khởi đầu, nhưng là một điểm khá tốt. Nó cung cấp một thuật toán được xác định rõ để sử dụng, trong trường hợp đó là thứ bạn đang tìm kiếm nhất. Bạn có thể tìm trên Google Scholar tại các bài báo trích dẫn nó để có những cách tiếp cận "hiện đại" hơn.
Tôi đến bữa tiệc muộn, nhưng nếu bạn chỉ quan tâm đến việc nó có đa phương thức hay không, có nghĩa là bạn không quan tâm đến số lượng chế độ, bạn nên xem diptest .
Trong R
gói được gọi diptest
.
Định nghĩa trong wiki hơi khó hiểu với tôi. Xác suất của một tập dữ liệu liên tục chỉ có một chế độ là không. Một cách đơn giản để lập trình một distrubiton lưỡng kim là với hai phân phối bình thường riêng biệt tập trung khác nhau. Điều này tạo ra hai đỉnh hoặc những gì wiki gọi là chế độ. Bạn thực sự có thể sử dụng hầu hết hai phân phối, nhưng một trong những cơ hội thống kê khó hơn là tìm cách tập hợp dữ liệu được hình thành sau khi kết hợp hai phân phối dữ liệu ngẫu nhiên.