2013-05-08 6 views

risposta

7

Risposta breve: perché nessuno ha scritto il codice per questo, o addirittura provato, per quanto ne so.

Risposta più lunga: non so fino a che punto possiamo arrivare con i modelli discreti con un metodo generico di massima verosimiglianza, come invece accade per le distribuzioni continue, che funzionano per molti ma non per tutti.

La maggior parte delle distribuzioni discrete hanno forti restrizioni sui parametri, e molto probabilmente la maggior parte di loro avrà bisogno di un metodi adatti specifici per la distribuzione

>>> [(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 sta fornendo alcuni dei modelli discreti dove i parametri possono anche dipende da alcune variabili esplicative. Molti di questi, come i modelli lineari generalizzati, necessitano di una funzione di collegamento per limitare i valori dei parametri all'intervallo valido, ad esempio intervallo (0, 1) per le probabilità o superiore a zero per i parametri nei modelli di conteggio.

Quindi il parametro "n" nel binomio e alcuni degli altri devono essere numeri interi, il che rende impossibile l'uso dei soliti minimizzatori continui da scipy.optimize.

Una buona soluzione potrebbe essere per qualcuno aggiungere metodi di adattamento specifici per la distribuzione, in modo che siano disponibili almeno quelli più facili.

+0

Vedo. Grazie per una risposta utile. Per cominciare, il mio problema verrà spostato in avanti se posso rifiutare o rifiutare Zipf come distribuzione candidata per governare alcuni dati, quindi potrei dover provare a scriverlo da solo. È interessante notare che Mathematica ha una buona impressione di essere in grado di trovare MLE per distribuzioni discrete. Ma credo che le funzioni di M'matica tendano ad avere un sacco di casi speciali codificati in loro. –

+0

Statsmodels ha una classe generica di massima verosimiglianza che può essere utile in alcuni casi, vedere la mia risposta qui https://groups.google.com/d/msg/pystatsmodels/GZ8kXoFitn0/9ve8GVOwl1kJ MLE potrebbe funzionare per Zipf (non l'ho mai guardato http://stats.stackexchange.com/questions/6780/how-to-calculate-zipfs-law-coefficient-from-a-set-of-top-frequencies – user333700