Supponiamo che ho un po 'di dati che ho ottenuto empiricamente:Come eseguire un test di qualità del chi quadrato utilizzando le librerie scientifiche in Python?
from scipy import stats
size = 10000
x = 10 * stats.expon.rvs(size=size) + 0.2 * np.random.uniform(size=size)
Si esponenzialmente distribuita (con un po' di rumore) e voglio verificare questo utilizzando una bontà chi-quadrato di adattamento di prova (GoF). Qual è il modo più semplice per farlo usando le librerie scientifiche standard in Python (ad esempio scipy o statsmodels) con il minor numero di passi e assunzioni manuali?
posso montare un modello con:
param = stats.expon.fit(x)
plt.hist(x, normed=True, color='white', hatch='/')
plt.plot(grid, distr.pdf(np.linspace(0, 100, 10000), *param))
E 'molto elegante per calcolare il Kolmogorov-Smirnov test.
>>> stats.kstest(x, lambda x : stats.expon.cdf(x, *param))
(0.0061000000000000004, 0.85077099515985011)
Tuttavia, non riesco a trovare un buon metodo per calcolare il test del chi quadrato.
C'è un chi-squared GoF function in statsmodel, ma si presuppone una distribuzione discreta (e la distribuzione esponenziale è continua).
Il official scipy.stats tutorial copre solo un caso per una distribuzione personalizzata e le probabilità sono create giocando con molte espressioni (npoint, npoints, nbound, normbound), quindi non mi è chiaro come farlo per altre distribuzioni. chisquare examples presuppone che i valori previsti e DoF siano già stati ottenuti.
Inoltre, non sto cercando un modo per eseguire "manualmente" il test come era already discussed here, ma vorrei sapere come applicare una delle funzioni di libreria disponibili.
Per quanto ne so, non esiste una funzione "ufficiale" libreria Python per il test CHISQUARE che include categorizzazione per distribuzione continua. Consiglierei di usare Anderson-Darling, scipy's anderson, che dovrebbe avere un potere migliore, se non ricordo male. – user333700
OK, ma da quello che posso vedere l'implementazione ['anderson' in SciPy] (http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.anderson.html#scipy.stats.anderson) supporta solo 5 distribuzioni. – metakermit
Sì, ma anderson supporta la distribuzione esponenziale che si sta utilizzando. Se si stimano i parametri della distribuzione e si desidera che funzioni per qualsiasi distribuzione, si torna al binning per la chisquare o all'avvio di un altro dei test gof. – user333700