Mi piacerebbe trovare lo stimatore di massima verosimiglianza per alcuni dati che possono essere regolati da una distribuzione discreta. Ma in scipy.stats solo le classi che rappresentano distribuzioni continue hanno una funzione adatta per farlo. Qual è la ragione per cui le classi che rappresentano le distribuzioni discrete no?In scipy.stats rv_continuous ha un metodo di adattamento per trovare gli MLE, ma rv_discrete no. Perché?
risposta
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.
- 1. Perché Iterator ha un metodo contiene ma Iterable no, in Scala 2.8?
- 2. Perché Collections.Generic.Queue non ha il metodo sincronizzato ma Collections.Queue ha?
- 3. scipy.stats seed?
- 4. Perché Eclipse lo compila, ma javac no?
- 5. Chiamare il metodo di adattamento più vicino
- 6. Perché ObservableCollection non ha un metodo RemoveAll?
- 7. Adattamento di un coffeescript per utilizzare window.onload
- 8. Perché Map non ha un metodo mappa?
- 9. Perché NSArray non ha un metodo firstObject?
- 10. Perché Scala ha SeqView ma non SetView?
- 11. perché impostare il nascondiglio di MBProgressHUD su SÌ, ma il metodo isHidden è NO?
- 12. Perché ARC mantiene gli argomenti del metodo?
- 13. Esiste un metodo per trovare gli attributi modificati per gli oggetti?
- 14. Perché Android Wear DataMap non ha un metodo putIntArray?
- 15. Perché "a + + b" funziona, ma "a ++ b" no?
- 16. Jasmine per verificare se un oggetto ha un certo metodo o no
- 17. Perché le tuple hanno use_allocator ma le coppie no?
- 18. Perché "<! -" commenta una regola di stile, ma "<! -" no?
- 19. STL C++ - Perché il metodo forward_list no size()?
- 20. React-redux aggiorna gli aggiornamenti ma React no
- 21. Perché JAXB ha bisogno di un costruttore no arg per il marshalling?
- 22. Perché Unix ha fork() ma non CreateProcess()?
- 23. Perché alcune richieste JSON tra domini falliscono ma altre no?
- 24. jquery filtering ha + no
- 25. Perché java.util.HashSet non ha un metodo get (Object o)?
- 26. Java: Qualcuno ha un metodo per trovare la migliore corrispondenza di stringa nell'array?
- 27. Ha senso sovrascrivere un metodo in un'interfaccia
- 28. Android Studio Impossibile trovare il metodo runProguard() per gli argomenti?
- 29. Perché un const int esegue implicitamente il cast in un byte, ma una variabile int no?
- 30. Perché le funzioni rispondono a .prototype ma gli oggetti normali no?
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. –
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