### 8.5.4 chisquaret

chisquaret a pour arguments :

- la liste des données d’un échantillon,
- une loi de distribution ou la liste des données d’un autre échantillon,
- les paramètres de cette loi de distribution ou les paramètres : classes suivi de class_min et de class_dim.

chisquaret est le test du Chi2 d’adéquation entre 2 (or n) échantillons ou entre un échantillon et une loi de distribution (multinomiale ou donnée par une fonction).
chisquaret renvoie la valeur d2 de la statistique D2 où :
D2=∑j=1k(nj−ej)2/ej avec
k est le nombre de classes de l’échantillon, n1...nk les effectifs de chaque classe de l’échantillon et e1,..,ek sont les effectifs théoriques (si chaque valeur xj est obtenue avec la probabilité théorique pj on a ej=npj) On tape :

chisquaret([57,54])

On obtient :

0.0810810810811

avec en vert le résumé du test :
On suppose que les données sont des effectifs de classes, adéquation à la distribution uniforme.
Adéquation d’un échantillon à une distribution discrète Résultat du test du Chi2 0.0810810810811.
On rejette l’adéquation si supérieur à chisquare_icdf(1,0.95) qui vaut 3.84145882069 or chisquare_icdf(1,1-alpha) si alpha!=5%.
On tape :

chisquaret([1,1,1,1,1,0,0,1,0,0,1,1,1,0,1,1,0,1,1,0,0,0,0],[.4,.6])

On obtient :

0.115942028986

avec en vert le résumé du test :
Adéquation d’un échantillon à une distribution discrète
Résultat du test du Chi2 0.115942028986,
On rejette l’adéquation si supérieur à chisquare_icdf(1,0.95) qui vaut 3.84145882069 or chisquare_icdf(1,1-alpha) si alpha!=5%.
On tape :

chisquaret(ranv(1000,binomial,10,.5),binomial)

On obtient :
en commentaire (en vert) le résumé du test :
Loi binomiale: estimation de n et p par les donnees 10 0.4988 Adéquation d’un echantillon a binomial(10,0.4988,.), resultat du test du Chi2 4.26407473988, On rejette l’adequation si superieur a chisquare_icdf(7,0.95)=14.0671404493 or chisquare_icdf(7,1-alpha) if alpha!=5%

4.26407473988

On tape :

chisquaret(ranv(1000,binomial,10,.5),binomial,11,.5)

On obtient :
en commentaire (en vert) le résumé du test :
Adéquation d’un echantillon a binomial(11,0.5,.), resultat du test du Chi2 109.868860498, On rejette l’adequation si superieur a chisquare_icdf(9,0.95)=16.9189776046 or chisquare_icdf(9,1-alpha) if alpha!=5%

109.868860498

On régle dans la configuration graphique les valeurs de class_min et de class_dim à -2 et 0.25 et on tape :

L:=ranv(1000,normald,0,.2)
chisquaret(L,normald)

Ou on tape :

chisquaret(L,normald,classes,-2,.25)

On obtient par exemple :

3.7961112714

avec en vert le résumé du test :
Densité normale, estimation de la moyenne et de l’ecart-type par les données0.00109620704977 0.201224413347
Adéquation d’un échantillon à normald_cdf(.00109620704977,0.201224413347), résultat du test du Chi2 3.7961112714,
On rejette l’adéquation si supérieur à chisquare_icdf(4,0.95) qui vaut 9.48772903678 ou chisquare_icdf(4,1-alpha) si alpha!=5%.
Vérifions :
On tape :

size(classes(L))

Ou on tape :

size(classes(L,-2,.25))

On obtient par exemple :

6

On tape :

C:=classes(L)

Ou on tape :

C:=classes(L,-2,.25)

On obtient par exemple :

[[(-0.75) .. -0.5,3],[(-0.5) .. -0.25,113],[(-0.25) .. 0,382],[0 .. 0.25,393],[0.25 .. 0.5,102],[0.5 .. 0.75,7]]

On a bien : n=3+113+382+393+102+7=1000
On compare cette distribution empirique L à une distribution théorique d’effectifs e1,..,ek (si chaque valeur xj est obtenue avec la probabilité théorique pj on a ej=npj).
Calculons la valeur d2 de la statistique :
D2=∑j=1k(nj−ej)2/ej
On estimer les paramètres µ et σ à partir de l’échantillon (µ par la moyenne m de l’échantillon et σ par s√n/n−1 où s est l’écart-type de l’échantillon et n vaut ici 1000) :
On tape :

mu:=mean(L);s:=stddev(L)

On obtient par exemple :

0.00109620704977,0.201123775974

On tape :

sigma:=s*sqrt(1000/999)

On obtient par exemple :

0.201224413347

On tape :

p1:=normal_cdf(mu,sigma,-0.75,-0.50)

On obtient :

0.00628817561212

On tape :

p2:=normal_cdf(mu,sigma,-0.5,-0.25)

On obtient :

0.0996616023075

On tape :

p3:=normal_cdf(mu,sigma,-0.25,0)

On obtient :

0.391782175726

On tape :

p4:=normal_cdf(mu,sigma,0,0.25)

On obtient :

0.394119790487

On tape :

p5:=normal_cdf(mu,sigma,0.25,0.5)

On obtient :

0.101472226962

On tape :

p6:=normal_cdf(mu,sigma,0.5,0.75)

On obtient :

0.00648235374944

On calcule la valeur d2 de la statistique D2, on tape :

P:=[p1,p2,p3,p4,p5,p6]:;
sum((C[k,1]-P[k]*1000)`^`2/(P[k]*1000),k=0..5)

On obtient bien :

3.79611127141