Nous avons mis en œuvre quelques types de tests d'hypothèses statistiques, dont l'un est le test de modèle adapté au chi carré - un test du chi carré du nombre d'échantillons dans des casiers déterminé à partir du CDF inverse de la distribution de probabilité donnée. Ainsi, par exemple, pour tester la génération d'échantillons de distribution de Cauchy, je lance quelque chose comme
with(Statistics):
infolevel[Statistics] := 1:
distribution := CauchyDistribution(2, 3):
sample := Sample(distribution, 10^6):
ChiSquareSuitableModelTest(sample, distribution, 'bins' = 100, 'level' = 0.001);
Parce que je peux générer un échantillon aussi grand que je le souhaite, je peux rendre assez petit.α
Pour les distributions à moments finis, je calcule d'une part un certain nombre d'exemples de moments, et d'autre part, je calcule symboliquement les moments de distribution correspondants et leur erreur standard. Ainsi, par exemple pour la distribution bêta:
with(Statistics):
distribution := BetaDistribution(2, 3):
distributionMoments := Moment~(distribution, [seq(1 .. 10)]);
standardErrors := StandardError[10^6]~(Moment, distribution, [seq(1..10)]);
evalf(distributionMoments /~ standardErrors);
Cela montre une liste décroissante de nombres, dont le dernier est 255.1085766. Ainsi, même pour le 10e moment, la valeur du moment est plus de 250 fois la valeur de l'erreur standard du moment d'échantillon pour un échantillon de taille . Cela signifie que je peux implémenter un test qui s'exécute plus ou moins comme suit:dix6
with(Statistics):
sample := Sample(BetaDistribution(2, 3), 10^6):
sampleMoments := map2(Moment, sample, [seq(1 .. 10)]);
distributionMoments := [2/5, 1/5, 4/35, 1/14, 1/21, 1/30, 4/165, 1/55, 2/143, 1/91];
standardErrors :=
[1/5000, 1/70000*154^(1/2), 1/210000*894^(1/2), 1/770000*7755^(1/2),
1/54600*26^(1/2), 1/210000*266^(1/2), 7/5610000*2771^(1/2),
1/1567500*7809^(1/2), 3/5005000*6685^(1/2), 1/9209200*157366^(1/2)];
deviations := abs~(sampleMoments - distributionMoments) /~ standardErrors;
Les chiffres distributionMoments
et standardErrors
proviennent de la première manche ci-dessus. Maintenant, si la génération d'échantillon est correcte, les nombres d'écarts devraient être relativement petits. Je suppose qu'ils sont à peu près normalement distribués (ce qui n'est pas vraiment le cas, mais cela se rapproche suffisamment - rappelez-vous que ce sont des versions à l'échelle des exemples de moments, pas les échantillons eux-mêmes) et ainsi je peux, par exemple, signaler un cas où une déviation est supérieur à 4 - correspondant à un moment d'échantillon qui s'écarte de plus de quatre fois l'erreur standard du moment de distribution. Il est très peu probable que cela se produise au hasard si la génération d'échantillon est bonne. D'un autre côté, si les 10 premiers moments de l'échantillon correspondent aux moments de distribution à moins d'un demi pour cent, nous avons une assez bonne approximation de la distribution.