Załóżmy mam pewne dane uzyskane empirycznie I:Jak wykonać chi-kwadrat dobroci testu dopasowania za pomocą bibliotek naukowych w Pythonie?
from scipy import stats
size = 10000
x = 10 * stats.expon.rvs(size=size) + 0.2 * np.random.uniform(size=size)
Jest wykładniczo rozproszonych (z niektórych hałas) i chcę, aby to sprawdzić przy użyciu chi-kwadrat dobroci dopasowania (GOF) testu. Jaki jest najprostszy sposób robienia tego przy użyciu standardowych bibliotek naukowych w Pythonie (np. Scipy lub statsmodels) z najmniejszą ilością ręcznych kroków i założeń?
mogę dopasować model z:
param = stats.expon.fit(x)
plt.hist(x, normed=True, color='white', hatch='/')
plt.plot(grid, distr.pdf(np.linspace(0, 100, 10000), *param))
Jest bardzo elegancki obliczyć Kolmogorov-Smirnov test.
>>> stats.kstest(x, lambda x : stats.expon.cdf(x, *param))
(0.0061000000000000004, 0.85077099515985011)
Jednak nie mogę znaleźć dobrego sposobu na obliczenie testu chi-kwadrat.
Istnieje chi-squared GoF function in statsmodel, ale zakłada on dyskretną dystrybucję (a rozkład wykładniczy jest ciągły).
Tylko official scipy.stats tutorial obejmuje tylko przypadek dla niestandardowej dystrybucji i prawdopodobieństwa są budowane przez manipulowanie wieloma wyrażeniami (npoints, npointsh, nbound, normbound), więc nie jest dla mnie jasne, jak to zrobić dla innych dystrybucji. Model chisquare examples zakłada, że oczekiwane wartości i DoF są już uzyskane.
Ponadto, nie szukam sposobu, aby "ręcznie" wykonać test, tak jak było already discussed here, ale chciałbym wiedzieć, jak zastosować jedną z dostępnych funkcji bibliotecznych.
O ile mi wiadomo, nie ma "oficjalnej" funkcji biblioteki pythonowej dla testu chisquare, która obejmuje binning dla ciągłej dystrybucji. Polecam używać Andersona-Darlinga, smes andersa, który powinien mieć lepszą moc, jeśli dobrze pamiętam. – user333700
OK, ale z tego co widzę implementację ['anderson' w SciPy] (http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.anderson.html#scipy.stats.anderson) obsługuje tylko 5 dystrybucji. – metakermit
Tak, ale anderson obsługuje dystrybucję wykładniczą, której używasz. Jeśli oszacujesz parametry rozkładu i chcesz, aby działał dla każdej dystrybucji, powracasz do binningu dla chisquare lub ładowania kolejnego z testów gof. – user333700