J'essaye d'écrire un test de bonté de l'ajustement de bêta pour la distribution bêta à partir de rien, sans utiliser de fonctions externes. Le code ci-dessous signale '1' pour un ajustement, même si kstest de scipy.stats renvoie un zéro. Les données sont distribuées normalement, donc ma fonction devrait aussi retourner zéro.Test du Chi carré en utilisant les fréquences, les bins, le CDF, le Python
import numpy as np
from scipy.stats import chi2
from scipy.stats import beta
from scipy.stats import kstest
from scipy.stats import norm
preds = norm.rvs(5,2,size=200)
preds.sort()
bin_size = 30
bins = np.linspace(0,10,bin_size)
counts = np.digitize(preds, bins)
mean = 5
var = 2
sum = 0
for i in range(len(bins)-1):
p = beta.cdf(bins[i+1], mean, var) - beta.cdf(bins[i], mean, var)
freq = len(counts[counts==i])/float(len(counts))
sum = sum + ((freq - p)**2)/p
dof = len(counts)-2
pval = 1 - chi2.cdf(sum, dof)
print pval
Dans le code, je crée des bacs, des fréquences de mesure sur la base des bacs, calculer la fréquence attendue en utilisant la distribution Beta CDF et résumer pour résultat la statistique de test X^2.
L'appel kstest est
print kstest(preds, 'beta', [mean, var])
Qu'est-ce que je fais mal ici?
Merci,
Quelle est la sortie actuelle? – Wok
La sortie est '1' pour ma fonction et (0,97653486524680988, 0,0) pour l'appel kstest. – user423805