Sto tentando di ricreare la massima distribuzione di verosimiglianza, posso già farlo in Matlab e R, ma ora voglio usare scipy. In particolare, vorrei stimare i parametri di distribuzione di Weibull per il mio set di dati.Adattamento di una distribuzione di Weibull utilizzando Scipy
Ho provato questo:
import scipy.stats as s
import numpy as np
import matplotlib.pyplot as plt
def weib(x,n,a):
return (a/n) * (x/n)**(a - 1) * np.exp(-(x/n)**a)
data = np.loadtxt("stack_data.csv")
(loc, scale) = s.exponweib.fit_loc_scale(data, 1, 1)
print loc, scale
x = np.linspace(data.min(), data.max(), 1000)
plt.plot(x, weib(x, loc, scale))
plt.hist(data, data.max(), normed=True)
plt.show()
E ottenere questo:
(2.5827280639441961, 3.4955032285727947)
E una distribuzione che assomiglia a questo:
Sono stato con la exponweib
dopo aver letto questo http://www.johndcook.com/distributions_scipy.html. Ho anche provato le altre funzioni di Weibull in Scipy (solo nel caso!).
In Matlab (utilizzando lo Strumento di distribuzione - vedi screenshot) e in R (utilizzando sia la funzione della libreria MASS fitdistr
e il pacchetto GAMLSS) Ottengo i parametri (loc) eb (scala) più come 1.58463497 5.93030013. Credo che tutti e tre i metodi utilizzino il metodo della massima verosimiglianza per il fitting di distribuzione.
ho pubblicato i miei dati here se si desidera avere un andare! E per completezza sto usando Python 2.7.5, Scipy 0.12.0, R 2.15.2 e Matlab 2012b.
Perché sto ottenendo un risultato diverso !?
Per la massima verosimiglianza montaggio, utilizzare il metodo 'fit', e utilizzare la parola chiave argomenti' 'f0' e floc' per fissare il primo parametro di forma e la posizione. Vedi la risposta di @ user333700. –
Non riesco a ottenere la parte piatta all'inizio del grafico pdf con weibull_min o exponweib, (né frechet o simili). Forse c'è un'ulteriore differenza nella parametrizzazione. – user333700
@ user333700: Hai trovato il parametro di forma da 1.855.La pendenza del PDF su 0 è 0 solo quando il parametro shape è maggiore di 2. –