Làm thế nào để xác định một phân phối lưỡng kim?


48

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.)


5
Câu hỏi hấp dẫn. Tôi không biết gì về điều này vì vậy sẽ không thử trả lời, nhưng việc kiểm tra lưỡng tính + thử nghiệm đưa ra khá nhiều dẫn đầu đầy hứa hẹn. google.co.uk/search?q=bimodality+test
onestop

một mã lập trình để kiểm tra tính đa phương thức có sẵn tại www.estima.com và được gọi là MODES.SRC. Bạn có thể dễ dàng chuyển đổi nó sang Matlab, R hoặc các phần mềm khác. Trân trọng, guido.

1
Bạn không thể xác định số lượng chế độ (không có giới hạn đối với số lượng wiggles nhỏ mà phân phối có thể có), nhưng bạn có thể bị giới hạn thấp hơn. ví dụ: xem tại đây projecteuclid.org/euclid.aos/1176351045
Glen_b

Câu trả lời:


27

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ế độ.


2
@venkasub, bạn cũng có thể xem phương pháp của Muller để tìm kiếm root. Nó đơn giản hơn phương pháp của Brent và "gần như" hiệu quả như phương pháp của Newton, nhưng không cần biết các dẫn xuất của hàm mục tiêu.
Đức hồng y

25

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.


4
+1 Bài viết này khai thác thông tin về cách số lượng chế độ rõ ràng phụ thuộc vào độ rộng của hạt nhân (đối với hạt nhân Gaussian) để chọn độ rộng phù hợp và sau đó tiếp tục như được mô tả trong câu trả lời của tôi.
whuber

2

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 Rgói được gọi diptest.


2
Tên đầy đủ là Dipigan of Unimodality của Hartigan. Bài báo gốc mô tả đưa ra mô tả này: Phép thử nhúng đo đa phương thức trong mẫu bằng chênh lệch tối đa, trên tất cả các điểm mẫu, giữa hàm phân phối theo kinh nghiệm và hàm phân phối không theo phương thức để giảm thiểu chênh lệch tối đa đó. Thuật toán này không tầm thường, nhưng bạn có thể dễ dàng tìm thấy các bản dịch C, Python, MATLAB và Fortran hiện đại dựa trên việc triển khai Fortran ban đầu trong Tính toán của Thống kê Dip để Kiểm tra tính không đồng nhất .
mortehu


0

Đị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.


Làm thế nào bạn sẽ xác định trung tâm của hai phân phối bình thường?
venkasub

@venkasub, trung tâm phân phối bình thường là ý nghĩa của nó. Nếu bạn biết rằng bimodality đến từ hai phân phối bình thường, bạn có thể điều chỉnh mô hình hỗn hợp để ước tính phương tiện, đó sẽ là hai chế độ.
mpiktas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.