2013-05-08 20 views
10

Tôi muốn tìm Ước tính khả năng tối đa cho một số dữ liệu có thể được điều chỉnh bởi một bản phân phối riêng biệt. Nhưng trong scipy.stats chỉ các lớp đại diện cho các bản phân phối liên tục có một hàm phù hợp để làm điều đó. Lý do các lớp đại diện cho các bản phân phối rời rạc là gì?Trong scipy.stats rv_continuous có một phương thức phù hợp để tìm MLE, nhưng rv_discrete thì không. Tại sao?

Trả lời

7

Câu trả lời ngắn: vì không ai viết mã cho nó, hoặc thậm chí đã cố gắng, theo như tôi biết.

Câu trả lời dài hơn: Tôi không biết chúng ta có thể nhận được bao xa bằng các mô hình rời rạc với phương pháp khả năng tối đa chung cho các bản phân phối liên tục.

Hầu hết các bản phân phối rời rạc có những hạn chế mạnh mẽ trên các thông số, và nhiều khả năng nhất trong số họ sẽ cần một phương pháp phù hợp với đặc trưng cho sự phân bố

>>> [(f, getattr(stats, f).shapes) for f in dir(stats) if isinstance(getattr(stats, f), stats.distributions.rv_discrete)] 
[('bernoulli', 'pr'), ('binom', 'n, pr'), ('boltzmann', 'lamda, N'), 
('dlaplace', 'a'), ('geom', 'pr'), ('hypergeom', 'M, n, N'), 
('logser', 'pr'), ('nbinom', 'n, pr'), ('planck', 'lamda'), 
('poisson', 'mu'), ('randint', 'min, max'), ('skellam', 'mu1,mu2'), 
('zipf', 'a')] 

statsmodels đang cung cấp một vài trong số các mô hình rời rạc nơi các thông số cũng có thể phụ thuộc vào một số biến giải thích. Hầu hết trong số đó, như mô hình tuyến tính tổng quát, cần một hàm liên kết để hạn chế các giá trị cho các tham số trong phạm vi hợp lệ, ví dụ khoảng (0, 1) cho xác suất, hoặc lớn hơn 0 cho các tham số trong mô hình đếm.

Sau đó, tham số "n" trong nhị thức và một số khác được yêu cầu là số nguyên, điều này làm cho không thể sử dụng các trình giảm thiểu liên tục thông thường từ scipy.optimize.

Một giải pháp tốt là dành cho ai đó để thêm phương thức phù hợp với phân phối cụ thể, để chúng tôi có ít nhất các phương thức dễ dàng hơn có sẵn.

+0

Tôi hiểu. Cảm ơn câu trả lời hữu ích. Để bắt đầu với vấn đề của tôi sẽ được di chuyển về phía trước nếu tôi có thể từ chối hoặc cũng không từ chối Zipf như là một phân phối ứng cử viên để điều chỉnh một số dữ liệu vì vậy tôi có thể phải tự mình viết. Điều thú vị là, Mathematica có ấn tượng tốt về việc có thể tìm thấy MLE cho các bản phân phối rời rạc. Nhưng tôi tin rằng các hàm M'matica có xu hướng có rất nhiều trường hợp đặc biệt được mã hóa cứng vào chúng. –

+0

Statsmodels có một lớp khả năng tối đa chung có thể hữu ích trong một số trường hợp, xem câu trả lời của tôi ở đây https://groups.google.com/d/msg/pystatsmodels/GZ8kXoFitn0/9ve8GVOwl1kJ MLE có thể hoạt động với Zipf (Tôi chưa bao giờ xem nó) http://stats.stackexchange.com/questions/6780/how-to-calculate-zipfs-law-coefficient-from-a-set-of-top-frequencies – user333700

Các vấn đề liên quan