Le test de Shapiro-Wilk

add

Samuel Sanford Shapiro (à gauche) et Martin Bradbury Wilk (à droite)

 

\bullet Historique:

\begin{tabular}{|l|c|c|} \hline Bloc & 11/05/2013-V1 & 20/09/2019-V2 \\ \hline Historique &  & Cr\'eation \\ \hline Sommaire &  & Cr\'eation \\ \hline Pr\'esentation & Cr\'eation & MAJ \\ \hline Le test & Cr\'eation, appelation: le test / indice-corr\'elation & Devient: le test et sa variance, Shapiro-Francia, calcul p-valeur \\ \hline Tendance lorsque... & Cr\'eation & MAJ \\ \hline Annexe th\'eo... & Cr\'eation & MAJ \\ \hline Exemple & Cr\'eation & Shapiro-Francia \\ \hline Appli... info... & Cr\'eation & Devient Appli... sous R \\ \hline Appli... sous SAS &  & Cr\'eation \\ \hline Bibliographie & Cr\'eation & MAJ \\ \hline \end{tabular}

\bullet Sommaire:

  • Présentation
  • Le test et sa variante
    • Le test de Shapiro-Wilk
      • La table de Shapiro-Wilk
      • Calcul de la p-valeur exacte
      • Conditions pour le rejet de H_0
    • Le test de Shapiro-Francia
      • La table de la loi normale centrée-réduite
      • Calcul de la p-valeur exacte
      • Conditions pour le rejet de H_0
  • Tendance lorsque n \rightarrow + \infty
  • Annexe théorique
    • Formule matricielle des coefficients de Shapiro-Wilk
    • Algorithme de calcul des coefficients de Shapiro-Wilk
  • Exemple
    • Test de Shapiro-Wilk
    • Test de Shapiro-Francia
  • Application sous R
    • Test de Shapiro-Wilk
    • Test de Shapiro-Francia
  • Application sous SAS
    • Test de Shapiro-Wilk
    • Test de Shapiro-Francia
  • Bibliographie

\bullet Présentation:

Publié en 1965 par Samuel Sanford Shapiro et Martin Bradbury Wilk, le test de Shapiro-Wilk est une approche non paramétrique permettant de tester si une variable continue X suit une loi normale.

A l’origine, le test ne pouvait s’appliquer que sur des échantillons de taille comprise entre 3 et 50 observations. En 1972, les travaux de Shapiro et Francia ont permis d’étendre cette contrainte à des échantillons inférieurs à 100. C’est en 1982, grâce à J. P. Royston, que le test devient utilisable sur des tailles plus grandes comprises entre 3 et 2 000. Enfin, en 1997, M. Mahibbur Rahman et Z. Govindarajulu repoussent la limite à 5000.

Actuellement, le test de Shapiro-Wilk et sa variante le test de Shapiro-Francia, qui sera présentée dans cet article, demeurent les tests de détection de la normalité les plus efficaces pour des échantillons incluant jusqu’à 5000 observations.

\bullet Le test et sa variante:

Hypothèse préliminaire: Variable X continue, n \leq 5 000.

Le test de Shapiro-Wilk

On pose a_i le coefficient de pondération associé à l’individu i \in [1, n] et n la taille de X. En notant E[c] la partie entière de c et en partant du principe que X est ordonnée de manière croissante, la statistique du test W de Shapiro-Wilk est:

W = \frac{(\sum_{i = 1} ^{E[\frac{n}{2}]} a_i \times (X_{n - i + 1} - X_i))^2}{\sum_{i = 1} ^n (X_i - \overline{X}) ^2}

Elle suit une loi de Shapiro-Wilk et l’hypothèse H_0 est:

X suit une loi normale / F_X = F_{L(\mu_X,\sigma_X)}

Avec W_{1 - \alpha} la valeur seuil de la distribution de la statistique de test  W pour une confiance \alpha, l’hypothèse alternative est alors,

H_1: F_X \neq F_{L(\mu_X,\sigma_X)}, soit W < W_{1 - \alpha}

La table de Shapiro-Wilk:

Dans un premier temps, on trouvera la table des coefficients (a_1, \cdots, a_{E[\frac{n}{2}]}):

FIGURE23

Puis celle de la loi de Shapiro-Wilk:

add

Calcul de la p-valeur exacte:

Le calcul de la p-valeur exacte associée au test de Shapiro-Wilk se fait au travers de l’algorithme proposé par J. P. Royston et connu sous le nom de AS 181.2. Il s’articule autour de la résolution des polynômes algébriques d’ordre 3 et 4. On note W_{obs} la statistique de test de Shapiro-Wilk et :

– Si n = 3, alors p = \frac{6}{\pi} \cdot [arcsin(W_{obs}) - arcsin(\sqrt{0.75})] ;

– Si n \in [4,11], alors on applique le changement de variable: W' = log(1 - W_{obs}) et on calcul dans un premier temps le polynôme suivant:

g = -2.273 + 0.459 \cdot n

  • Si y > g alors: p < 0.0001
  • Sinon on applique le second changement de variable: W'' = -log(g - W'). On calcul les deux polynômes suivants qui permettront de déterminer les paramètres adéquats de la loi de distribution (normale) de la statistique de test:

\mu_W = 0.544 - 0.39978 \cdot n + 0.025054 \cdot n ^2 - 0.0006714 \cdot n ^3

\sigma_W = exp(1.3822 - 0.77857 \cdot n + 0.062767 \cdot n ^2 - 0.0020322 \cdot n ^3)

Alors, p = F_{L(\mu_W,\sigma_W^2)} (W'') = F_{L(0,1)} (\frac{W'' - \mu_W}{\sigma_W}) et dont on trouvera une méthode de calcul dans la section réservée au test de Shapiro-Francia.

– Si n \geq 12, alors on applique le changement de variable: W' = log(1 - W_{obs}). On calcul les deux polynômes suivants qui permettront de déterminer les paramètres adéquats de la loi de distribution (normale) de la statistique de test:

\mu_W = -1.5861 - 0.31082 log(n) - 0.083751 log(n) ^2 + 0.0038915 log(n) ^3

\sigma_W = exp(-0.4803 - 0.082676 log(n) + 0.0030302 log(n) ^2)

Alors, p = F_{L(\mu_W,\sigma_W^2)} (W') = F_{L(0,1)} (\frac{W' - \mu_W}{\sigma_W}) et dont on trouvera une méthode de calcul dans la section réservée au test de Shapiro-Francia.

A noter que, par construction, le test de Shapiro-Wilk est unilatéral à droite.

Conditions pour le rejet de H_0:

Plus la statistique de test s’éloigne de 1 et plus grande sont les chances de rejeter H_0. Finalement W \longrightarrow 0,

– quand le numérateur, c’est-à-dire la combinaison linéaire non-biaisée optimale,

\sum_{i = 1} ^{E[\frac{n}{2}]} a_i \times (X_{n - i + 1} - X_i))^2 \longrightarrow 0 \Rightarrow \forall i \in [1,\delta],  X_{n - i + 1} - X_i \rightarrow 0

, \delta correspondant au terme à partir duquel les coefficients de Shapiro-Wilk deviennent particulièrement proche de 0. Ce résultat équivaut à dire que la différence entre les valeurs les plus petites de X et celles les plus grandes sont particulièrement proches, ce qui est à l’opposé de la configuration de la loi normale ;

– quand le dénominateur \sum_{i = 1} ^n (X_i - \overline{X}) ^2 \longrightarrow \infty, c’est-à-dire quand la variance empirique est trop forte.

La distribution normale peut alors être vue comme une pente de coefficient 1 sur un diagramme P-P et la statistique de test de Shapiro-Wilk permet de mesurer de combien les données s’éloignent de cette droite.

Le test de Shapiro-Francia

Samuel Sanford Shapiro et R. S. Francia développent en 1972 une version simplifiée du test de Shapiro-Wilk en remplaçant les coefficients (a_1, \cdots, a_{E[\frac{n}{2}]}) par les quantiles normaux. Son principal apport est de permettre d’appliquer l’idée du test de Shapiro-Wilk sur des échantillons de taille plus grande ainsi qu’un gain de puissance en présence de certaines configurations des données.

La formule de la statistique de test de Shapiro-Francia est:

z = \frac{log(1 - W_{SF}) - \mu}{\sigma}

Avec:

n la taille d’échantillon de X ;

Q = (m_1, \cdots, m_n), vecteur des moments d’ordre 1 à n dans le cadre d’une loi normale et de formule la fonction quantile: \forall i \in [1,n], m_i = F_X ^{-1} (\frac{i - 0.375}{n + 0.25}) ;

W_{SF} = cor(X,Q) ^2, coefficient de corrélation de Pearson entre notre variable X et Q ;

\mu = -1.2725 + 1.0521 \cdot [log(log(n)) - log(n)] ;

\sigma = 1.0308 - 0.26758 \cdot [log(log(n)) - \frac{2}{log(n)}].

La statistique de test de Shapiro-Francia suit une loi normale centrée-réduite et l’hypothèse H_0 est:

X suit une loi normale / F_X = F_{L(\mu,\sigma)}

Afin d’être comparable au test de Shapiro-Wilk, celui de Shapiro-Francia se base également sur une approche unilatérale à gauche. Soit z_{1 - \alpha} la valeur seuil de la distribution de la statistique de test z pour une confiance \alpha, l’hypothèse alternative est alors,

H_1: F_X \neq F_{L(\mu,\sigma)}, soit z > z_{1 - \alpha}

La table de la loi normale centrée-réduite:

add

Calcul de la p-valeur exacte:

La loi à laquelle reporter la statistique de test z de Shapiro-Francia est celle de la loi normale centrée-réduite. Étant donné que sa fonction de répartition est basée sur la fonction erreur erf(.), il conviendra de passer par la méthode analytique proposée par Abramowitz et Stegun et permettant une estimation fiable à 10 ^{-7} prés. Soit le changement de variable suivant,

t = \frac{1}{1 + 0.2316419 \cdot z}

La formule d’usage et faisant intervenir aussi bien z que sa transformée t est,

p = 1 - F_{L((0,1)} (Z) = 1 - \frac{1}{\sqrt{2 \pi}} e ^{-\frac{z ^2}{2}} \sum_{k = 1} ^5 t ^k C_k

Avec,

C_1 = 0.319381530 ;

C_2 = -0.356563782 ;

C_3 = 1.781477937 ;

C_4 = -1.821255978 ;

C_5 = 1.330274429.

Par construction analogue au test de Shapiro-Wilk, le test de Shapiro-Francia est unilatéral.

Condition pour le rejet de H_0:

La statistique de test z = \frac{log(1 - W_{SF}) - \mu}{\sigma} dépend du coefficient de corrélation W_{SF} entre X et les quantiles théoriques. Ainsi,

– Si W_{SF} \rightarrow 0 \Rightarrow z \rightarrow \frac{log(1 - 0) - \mu}{\sigma} = - \frac{\mu}{\sigma}, correspondant au cas où X ne suit pas une loi normale.

– Si W_{SF} \rightarrow 1 \Rightarrow z \rightarrow \frac{log(1 - 1) - \mu}{\sigma} \rightarrow - \infty, correspondant au cas où X suit une loi normale.

La distribution normale peut alors être vue comme une pente de coefficient 1 sur un diagramme P-P et la statistique de test de Shapiro-Francia permet de mesurer de combien les données s’éloignent de cette droite.

\bullet Tendance lorsque n \longrightarrow \infty:

On s’intéresse désormais à la résistance du test de Shapiro-Wilk au fur et à mesure que la taille d’échantillon croît. On fixe une statistique de test W_{test} = 0.998, soit un cas fictif correspondant à un ratio variance pondérée et variance empirique équivalente. Le résultat attendu sera donc que quelque soit la taille de l’échantillon, l’on ne devrait pas rejeter  l’hypothèse H_0 d’inégalité de la fonction de répartition de X avec celle de la loi normale. Le graphique ci-dessous montre l’évolution de la p-valeur p associée à W_{test} fixée lorsque n croît de 10 à 5000 observations.

add

De manière hâtive, on reste en adéquation avec l’hypothèse de construction de la statistique de test de Shapiro-Wilk W_{test} jusqu’à n = 1 123 (p > 20 \%). En montant à n = 1 585, on se forcera à rejeter H_0 avec un risque assez fort compris entre  5 \% et 20 \%. Enfin, à n = 2 110 la p-valeur passe en dessous des 1 \%.

Cette simulation montre que le test de Shapiro-Wilk est atteint par la malédiction des grands échantillons.

\bullet Annexe théorique: 

Formule matricielle des coefficients de Shapiro-Wilk:

On présentera ici une esquisse de la démonstration de la méthode de calcul des coefficients (a_1, \cdots, a_n) de Shapiro-Wilk.

Soit X variable aléatoire et m^t = (E[X_1], \cdots, E[X_n]), avec \forall i \in [1,n], E[X_i] la valeur correspondant au quantile à \frac{i - 0.375}{n + 0.25} \% dans le cas hypothétique où X suit une loi normale. Et \mathbf{V} matrice de covariance de taille n \times n tel que \forall i_1, i_2 \in [1, n], v_{i_1, i_2} = cov(X_{i_1}, X_{i_2}).

L’approche se fonde donc sur le ratio entre combinaison linéaire non-biaisée optimale dans le cadre d’une loi normale et variance empirique observée, ce qui donne à la statistique W de Shapiro-Wilk sa forme suivante:

W = \frac{b ^2}{S_X ^2}

, avec b = \frac{m^t V^{-1} m \hat{\sigma_X}}{C}, C = m^t V^{-1} V^{-1} m constante de normalisation et \hat{\sigma_X} estimateur non biaisé de la variance. Chaque terme est connu à part \hat{\sigma_X} que l’on doit donc déterminer.

Étant donné que X peut être de loi indéfinie, on appliquera le théorème de la limite centrale pour créer une variable de substitut qui suit obligatoirement une loi normale: \forall i \in [1,n], X_i = \frac{Y_i - \mu_X}{\sigma_X} \Rightarrow Y_i = \sigma_X X_i + \mu_X. Et d‘après le Théorème des moindres carrés généralisés d’Aitken (1935) et Lloyd (1952), le meilleur couple d’estimateurs non biaisés (\hat{\mu_X}, \hat{\sigma_X}) de (\mu_X, \sigma_X) est de la forme:

\hat{\mu_X} =\frac{m^t V^{-1} (m 1^t - 1 m^t) V ^{-1} Y}{1^t V^{-1} 1 m^t V^{-1} m - (1^t V^{-1} m)^2}

= \frac{m^t V^{-1} m 1^t V^{-1}Y - m^t V^{-1} 1 m^t V^{-1} Y}{1^t V^{-1} 1 m^t V^{-1} m - (1^t V^{-1} m)^2}

= \frac{m^t V^{-1} m 1^t V ^{-1} Y}{1^t V^{-1} 1 m^t V^{-1} m}, puisque la distribution d’une loi normale est symétrique alors 1^t V^{-1} m = 0,

= \frac{1^t V^{-1} Y}{1^t V^{-1} 1}, par simplification,

=  \frac{Y}{1}, puisque issue d’observations d’ordre venant d’une loi normale alors 1^t V^{-1} = 1^t,

= \frac{1}{n} \sum_{i = 1} ^n y_i, d’après le théorème de Balakrishnan et Cohen (1991).

\hat{\sigma_X} = \frac{1^t V^{-1} (1 m^T - m 1^t) V ^{-1} Y}{1^t V^{-1} 1 m^t V^{-1} m - (1^t V^{-1} m)^2}

= \frac{1^t V^{-1} 1 m^T V ^{-1} Y - 1^t V^{-1} m 1^t V ^{-1} Y}{1^t V^{-1} 1 m^t V^{-1} m - (1^t V^{-1} m)^2}

= \frac{1^t V^{-1} 1 m^T V ^{-1} Y }{1^t V^{-1} 1 m^t V^{-1} m}, puisque la distribution d’une loi normale est symétrique alors 1^t V^{-1} m = 0,

= \frac{m^T V ^{-1} Y }{m^t V^{-1} m}, par simplification.

De ces deux quantités désormais définies, c’est de \hat{\sigma_X} dont on va pouvoir se servir dans la formule de la statistique de test W de Shapiro-Wilk. On a alors:

W = \frac{b^2}{S^2}

= \frac{(m^t V^{-1} m) (m^t V^{-1} m) \frac{}{} \frac{m^t V^{-1} Y}{m^t V^{-1} m} \frac{m^t V^{-1} Y}{m^t V^{-1} m}}{m^t V^{-1} V^{-1} m S^2}

= \frac{1}{S ^2} \frac{m^t V^{-1} Y m^t V^{-1} Y}{(m^t V^{-1} V^{-1} m) ^{\frac{1}{2}} (m^t V^{-1} V^{-1} m) ^{\frac{1}{2}}}, par simplification,

, on sépare alors les éléments qui constituent les coefficients de Shapiro-Wilk a^t = \frac{m^t V^{-1}}{(m^t V^{-1} V^{-1} m) ^\frac{1}{2}} et on obtient,

W = \frac{1}{S ^2} a^t Y a^t Y = \frac{(a^t Y) ^2}{S ^2} = \frac{(\sum_{i=1}^n a_i y_i) ^2}{\sum_{i=1} ^n (y_i - \overline{Y})^2}

Algorithme de calcul des coefficients de Shapiro-Wilk:

Maintenant que l’on a la formule générale des coefficients de Shapiro-Wilk, on en présente un algorithme de calcul.

1. On calcul dans un premier temps les coefficients bruts : a_k,

\forall k \in [1,E[\frac{n}{2}]], a_k = Q(\frac{i - 0.375}{n + 0.25})

, Q(.) fonction quantile associée à la loi normale centrée-réduite, et E = \sum_{k = 1} ^{\delta} a_i ^2.

2. Calcul des premiers facteurs de normalisation des coefficients : a_1 ^N, a_2 ^N en fonction de n. L’approche se base sur la résolution du polynôme algébrique d’ordre 5,

a_1 ^N = \sum_{p = 1} ^6 (\frac{1}{\sqrt{n}}) ^{p-1} C_p ^{(1)} - \frac{a_1}{\sqrt{2 E}}

, avec C ^{(1)} = (0,0.221157,-0.147981,-2.07119,4.434685,-2.706056).

  • Si n \leq 5 alors on fixe a_2 ^N = 0, sinon,

a_2 ^N = - \frac{a_2}{\sqrt{2 E}} + \sum_{p = 1} ^6 (\frac{1}{\sqrt{n}}) ^{p-1} C_p ^{(2)}

, avec C ^{(2)} = (0,0.042981,-0.293762,-1.752461,5.682633,-3.582633).

On calcul maintenant le coefficient de normalisation:

D = \sqrt{\frac{2 E - 2 a_1 ^2 - 2 a_2 ^2}{1 - 2 (a_1 ^N) ^2 -2 (a_2 ^N)}}

3. Calcul des coefficients de Shapiro-Wilk finaux:

a_{SW} = (a_1 ^N, a_2 ^N, \frac{a_3}{D}, \cdots, \frac{a_{E[\frac{n}{2}]}}{D}) tel que \forall k \geq 3, a_k ^N = \frac{a_k}{D}

A noter que cet algorithme est à utiliser si n \geq 3, dans le cas où il n’y a que trois observations, le coefficient de Shapiro-Wilk vaut: a = \sqrt{\frac{1}{2}}.

\bullet Exemple:

Soit la variable aléatoire X suivante:

\begin{tabular}{|c|} \hline X \\ \hline 0.9754 \\ \hline 1.2699 \\ \hline 1.4189 \\ \hline 1.5761 \\ \hline 2.7850 \\ \hline 4.2176 \\ \hline 4.8538 \\ \hline 5.4688 \\ \hline 6.3236 \\ \hline 7.9221 \\ \hline 8.0028 \\ \hline 8.1472 \\ \hline 9.0579 \\ \hline 9.1338 \\ \hline 9.1574 \\ \hline 9.5717 \\ \hline 9.5751 \\ \hline 9.5949 \\ \hline 9.6489 \\ \hline 9.7059 \\ \hline \end{tabular}

Le QQplot construit à partir de X permet de voir que visuellement l’échantillon ne suit pas une loi normale. On affiche également la pente théorique à laquelle adhérer afin de s’approcher d’une loi normale  (droite en bleu) ainsi que les points observés (point noir).

add

Test de Shapiro-Wilk

Visuellement, on voit que X s’écart globalement de la distribution théorique attendue dans le cadre d’une loi normale.

On a \mu_X = 6.42039. Afin de déterminer la statistique de test de Shapiro-Wilk associée à l’exemple, on va présenter les différentes phases de calcul de la formule.

Soit le vecteur:

D = (X_{20} - X_1, X_{19} - X_2, \ldots, X_{11} - X_{10})

= (8.7305, 8.379, 8.176, 7.999, 6.7867, 4.9398, 4.28, 3.3891, 1.8236, 0.0807)

et \sum_{i = 1} ^n (X_i - \mu_X) ^2 = 206.8246.

Afin de récupérer les coefficients (a_1, \cdots, a_{10}), on se reporte à la table de Shapiro-Wilk pour n = 20 (nombre d’observations dans notre exemple), et l’on trouve le vecteur:

a = (0.4734, 0.3211, 0.2565, 0.2085, 0.1686, 0.1334, 0.1013, 0.0711, 0.0422, 0.0140)

Que l’on peut retrouver également par le calcul manuel suivant:

– Coefficients bruts: a = (Q(\frac{1 - 0.375}{20.25}), Q(\frac{2 - 0.375}{20.25}), \cdots, Q(\frac{10 - 0.375}{20.25}))

= (Q(0.0308642), Q(0.08024691), \cdots, Q(0.4753086))

=(-1.868242,-1.403413,\cdots,-0.06193162)

Et,

E = (-1.868242 ^2 + (-1.403413) ^2 + \cdots + (-0.06193162) ^2) = 8.816784

– Calcul du coefficient normalisé:a_1 ^N

On a t = \frac{1}{1 + 0.2316419 \times \frac{1}{\sqrt{20}}} = \frac{1}{1.051797} = 0.9507538

Et, a_1 ^N = (0 + 0.9507538 \times (-0.147981) + \cdots + 0.9507538 ^5 \times (-2.706056)) - \frac{-1.868242}{\sqrt{2 E \times 8.816784}}

= 0.02847053 + 0.4449006

= 0.4733711

– Calcul du coefficient normalisé: a_2 ^N

a_2 ^N = - \frac{-1.403413}{\sqrt{2 E\times 8.816784}} + (0 + 0.9507538 \times 0.042981 + \cdots + 0.9507538 ^5 \times (-3.582633))

= 0.3342068 - 0.01246654

= 0.3217403

– Calcul du coefficient de normalisation pour les termes a_3, a_4, a_5 et a_6: D = \sqrt{\frac{2 \times 8.816784 - 2 \times (-1.868242) ^2 - 2 \times (-1.403413) ^2}{1 - 2 \times 0.4733711 ^2 - 2 \times 0.3217403 ^2}}

= \sqrt{\frac{17.63357 - 6.980654 - 3.939134}{1 - 0.4481604 - 0.2070336}}

= \sqrt{\frac{6.713782}{0.344806}}

= \sqrt{19.47119}

= 4.412616

– Calcul des coefficients de Shapiro-Wilk:

a_{SW} = (0.4733711,0.3217403,\frac{-1.128144}{4.412616},\frac{-0.9191355}{4.412616},\frac{-0.7441427}{4.412616},\frac{-0.5894558}{4.412616},\frac{-0.4477675}{4.412616},\frac{-0.3145723}{4.412616},\frac{-0.1867561}{4.412616},\frac{-0.06193162}{4.412616})

= (0.4733711,0.3217403,0.2556632,\cdots, 0.04232322,0.01403513)

On a donc la statistique de test:

W = \frac{(0.4734 \times 8.7305 + \cdots + 0.0807 \times 0.0140) ^2}{206.8246} = 0.837162

Si l’on se compare à la table de la loi de Shapiro-Wilk, on a:

W_{20,5 \%} = 0.908 > W_{20,1 \%} = 0.868 > W_{obs} = 0.837162

Enfin, on calcul la p-valeur exacte associée à la statistique de test W_{obs}. Etant donné que n = 20 on utilisera le troisième cas de l’algorithme. On a alors:

\mu_W

= -1.5861 - 0.31082 \times log(20) - 0.083751 \times log ^2 (20) + 0.0038915 \times log ^3 (20)

= -3.164227

\sigma_W = exp(-0.4803-0.082676 \times log(20) + 0.0030302 \times log ^2 (20))

= e ^{-0.7007809}

= 0.4961977

– Et W_{obs} ' = log(1 - 0.837162) = -1.814999

Par conséquent,

p = 1 - F_{L(\mu_X = -3.164227,\sigma_X = 0.4961977)} (-1.814999)

= 1 - F_{L(0,1)} (\frac{-1.814999 + 3.164227}{0.4961977})

= 1 - F_{L(0,1)} (2.719134), et t = \frac{1}{1 + 0.2316419 \times 2.719134} = \frac{1}{1.629865} = 0.6135477,

= \frac{1}{\sqrt{2 \pi}} e ^{-\frac{2.719134 ^2}{2}} \times (0.31938153 \times 0.6135477 + \cdots + 1.330274429 \times 0.6135476 ^5)

= 0.3989423 \times 0.02480166 \times 0.3307625

= 0.003272707 < 1 \%

, ce qui implique le rejet de l’hypothèse H_0 au risque de 1 \%. On en conclut que l’échantillon étudié en guise d’exemple ne suit pas une loi normale, ce qui est en adéquation avec ce que l’on a pu observer sur le QQplot ci-avant.

Test de Shapiro-Francia

Dans un premier temps on construit le tableau permettant de comparer la valeur de X avec celle attendue dans le cadre d’une loi normale de paramètres \mu_X = 6.42039 et \sigma_X = 3.299319.

\begin{tabular}{|c|c|} \hline X & QQ \\ \hline 0.9754 & -1.86824165 \\ \hline 1.2699 & -1.40341264 \\ \hline 1.4189 & -1.12814365 \\ \hline 1.5761 & -0.91913552 \\ \hline 2.7850 & -0.74414274 \\ \hline 4.2176 & -0.58945580 \\ \hline 4.8538 & -0.44776752 \\ \hline 5.4688 & -0.31457229 \\ \hline 6.3236 & -0.18675612 \\ \hline 7.9221 & -0.06193162 \\ \hline 8.0028 & 0.06193162 \\ \hline 8.1472 & 0.18675612 \\ \hline 9.0579 & 0.31457229 \\ \hline 9.1338 & 0.44776752 \\ \hline 9.1574 & 0.58945580 \\ \hline 9.5717 & 0.74414274 \\ \hline 9.5751 & 0.91913552 \\ \hline 9.5949 & 1.12814365 \\ \hline 9.6489 & 1.40341264 \\ \hline 9.7059 & 1.86824165 \\ \hline \end{tabular}

On calcul alors le coefficient de corrélation,

W_{SF} = cor(X,QQ) ^2 = 0.9272738 ^2 = 0.8598367

Ainsi que les paramètres par lesquels centrer-réduire \rho_p,

\mu = -1.2725 + 1.0521 \times (log(log(20)) - log(20))

= -1.2725 + 1.0521 \times (-1.898544)

= -3.269958

\sigma = 1.0308 - 0.26758 \times (log(log(20)) - \frac{2}{log(20)})

= 1.0308 - 0.26758 \times 1.764805

= 0.558735

On obtient alors la statistique de test,

z_{obs} = \frac{log(1 - 0.8598367) + 3.269958}{0.5585735}  = \frac{1.305011}{0.5585735} = 2.336328

Si l’on se compare à la table de la loi normale centrée-réduite, on a en unilatéral:

L_{\mu = 0, \sigma = 1,20 \%, \mbox{unilat\'eral}} = 0.8416212 < L_{\mu = 0, \sigma = 1,10 \%, \mbox{unilat\'eral}} = 1.281552 < L_{\mu = 0, \sigma = 1,5 \%, \mbox{unilat\'eral}} = 1.644854 < L_{\mu = 0, \sigma = 1,1 \%, \mbox{unilat\'eral}} = 2.326348 < z_{obs} = 2.336328

Enfin, on calcul la p-valeur exacte associée à la statistique de test z_{obs}. On a alors:

= 1 - F_{L(0,1)} (2.336328), et t = \frac{1}{1 + 0.2316419 \times 2.336328} = \frac{1}{1.541191} = 0.6488488,

= \frac{1}{\sqrt{2 \pi}} e ^{-\frac{2.336328 ^2}{2}} \times (0.31938153 \times 0.6488488 + \cdots + 1.330274429 \times 0.6488488 ^5)

= 0.3989423 \times 0.06527056 \times 0.3739388

= 0.009737081 < 1 \%

, ce qui implique le rejet de l’hypothèse H_0 au risque de 1 \%. On en conclut que l’échantillon étudié en guise d’exemple ne suit pas une loi normale, ce qui est en adéquation avec ce que l’on a pu observer sur le QQplot ci-avant.

\bullet Application sous R:

Soit l’exemple suivant:

X = c(0.9754,1.2699,1.4189,1.5761,2.7850,4.2176,
4.8538,5.4688,6.3236,7.9221,8.0028,8.1472,9.0579,
9.1338,9.1574,9.5717,9.5751,9.5949,9.6489,9.7059)

Test de Shapiro-Wilk

Package et fonction R: http://stat.ethz.ch/R-manual/R-patched/library/stats/html/shapiro.test.html

La fonction shapiro.test du package stats permet d’appliquer le test de Shapiro-Wilk. Le package se charge automatique lorsque l’on lance R, il n’est donc pas utile de charger la librairie.

On applique le test de Shapiro-Wilk afin de savoir si X suit une loi normale. On procède de la manière suivante:

shapiro.test(X)

L’unique élément à insérer est le nom de l’échantillon utilisé: X. On obtient alors les résultats suivants:

add

On vérifie:

– Les données utilisées: « data:X » ;

– La statistique de test: « W = 0.8371 » , qui est la même que celle obtenue lors des calculs manuels (cf section « Exemple ») ;

– La p-valeur: « p-value = 0.003265 » , qui diffère légèrement de celle obtenue lors des calculs manuels (cf section « Exemple ») étant donné que basée sur un arrondi à 10 ^{-4} prés.

Test de Shapiro-Francia

Package et fonction R: https://rdrr.io/cran/DescTools/man/ShapiroFranciaTest.html

La fonction ShapiroFranciaTest du package DescTools permet d’appliquer le test de Shapiro-Francia.

On applique le test de Shapiro-Francia afin de savoir si X suit une loi normale. On procède de la manière suivante:

library(DescTools)
ShapiroFranciaTest(X)

L’unique élément à insérer est le nom de l’échantillon utilisé: X. On obtient alors les résultats suivants:

add

On vérifie:

– Les données utilisées: « data:X » ;

– La statistique de test: « W = 0.85984 » , qui est la même que celle obtenue lors des calculs manuels (cf section « Exemple ») ;

– La p-valeur: « p-value = 0.009737 » , qui est la même que celle obtenue lors des calculs manuels (cf section « Exemple »).

\bullet Application sous SAS:

Soit l’exemple suivant:

data E;
input X;
cards;
0.9754
1.2699
1.4189
1.5761
2.7850
4.2176
4.8538
5.4688
6.3236
7.9221
8.0028
8.1472
9.0579
9.1338
9.1574
9.5717
9.5751
9.5949
9.6489
9.7059
;
run;

Test de Shapiro-Wilk

Procédure SAS : http://www.stattutorials.com/SAS/TUTORIAL-PROC-UNIVARIATE.htm

On applique le test de Shapiro-Wilk afin de savoir si X suit une loi normale.  On procède de la manière suivante:

proc univariate data = E normaltest;
var X;
ods exclude Moments BasicMeasures TestsForLocation Quantiles ExtremeObs MissingValues;
run;

Parmi les éléments à insérer les plus importants il faut relever:

– La table contenant nos données: « data = E » ;

– L’échantillon que l’on veut comparer à la loi fixée: « var X » ;

– L’ods output est utilisé afin de filtrer les résultats et n’afficher que ceux auxquels l’on s’intéresse.

On obtient alors les résultats suivants:

add

En se concentrant sur les sorties associées au test de Shapiro-Wilk (colonne « Test ») dans le tableau « Goodness-of-Fit Tests for Normal Distribution » , on vérifie:

– Dans la colonne « Statistique », la statistique de test « W = 0.837097 » , qui est la même que celle obtenue lors des calculs manuels (cf section « Exemple ») ;

– Dans la colonnes « P-value », la p-valeur : « Pr < W = 0.0033 » , qui est la même que celle obtenue lors des calculs manuels (cf section « Exemple »).

Test de Shapiro-Francia

Le logiciel SAS n’offre pas de procédure permettant d’appliquer directement le test de Shapiro-Francia. Par conséquent, on proposera le macro-programme suivant:

%macro shapiro_francia(Table=,X=);
/* Macro pour appliquer le test de Shapiro-Francia */
/* Paramètres:
– Table indique le nom de la matrice sur laquelle on veut travailler ;
– X indique le nom de la variable à traiter.
/* Renvoi: la fonction retourne la taille de l’échantillon, la valeur du coefficient de corrélation de Pearson, celle de la statistique z et sa p-valeur associée */
/* Options permettant d’éviter de saturer la log */
options nonotes spool;
/* Sortie de la taille d’échantillon n */
proc sql noprint;
select count(*) into: n from &Table.;
quit;
/* Sortie de la statistique de test F de Fisher-Snedecor */
data Calc;
set &table.;
z = (_n_ – 0.375)/(&n. + 0.25);
QQz = quantile(‘NORMAL’,z);
run;
/* Calcul du coefficient de corrélation de Pearson */
proc corr data = Calc outP = Corr;
var &X. QQz;
ods exclude VarInformation SimpleStats PearsonCorr;
run;
data _null_;
set Corr;
if _NAME_ = « QQz »;
call symputx(« rho_p »,&X.);
run;
/* Création de la table de résultats et des paramètres pour la détermination de la p-valeur */
data Resultats;
Var = « &X. »;
N = « &n. »;
r = &rho_p.;
mu = -1.2725 + 1.0521 * (log(log(&n.)) – log(&n.));
sd = 1.0308 – 0.26758 * (log(log(&n.)) + 2/log(&n.));
z_score = (log(1 – r**2) – mu)/sd;
p_valeur = 1 – cdf(« Normal »,z_score,0,1);
run;
/* Suppression des tables inutiles */
proc datasets lib = work nolist;
delete Calc Corr;
run;
/* Reset des options */
options nonotes spool;
%mend;

Après compilation de la macro sous l’environnement SAS, la fonction se lance ainsi,

%shapiro_francia(table = E,X =X)

Parmi les paramètres à insérer les plus importants, il faut relever:

– La table contenant nos données: « table = E » ;

– La variable étudiée: « X = X » ;

On obtient alors les résultats suivants dans la table générée en fin de procédure:

add

Dans la table renvoyée par la fonction, on vérifie:

– Le nom de la variable sur laquelle on a appliqué le test: « Var = X » ;

– La taille d’échantillon: « N = 20 » ;

– Le coefficient de corrélation: « r = 0.9272738235 » ;

– Les paramètres permettant de centrer-réduire la statistique de test: « mu = -3.269957693 » et « sd = 0.5585734509 » ;

– La statistique de test: « z_score  = 2.3363270697 » , qui est la même que celle obtenue lors des calculs manuels (cf section « Exemple ») ;

– La p-valeur: « p_valeur= 0.0097371009 » , qui est la même que celle obtenue lors des calculs manuels (cf section « Exemple »).

\bullet Bibliographie:

– An Analysis of Variance Test for Normality de Samuel Shapiro et Martin Bradbury Wilk

– Data mining et statistiques décisionnelles: l’intelligence des données de Stéphane Tufféry

– Probabilité, analyse des données et statistique de Gilbert Saporta

– Tests de normalité: Techniques empiriques et tests statistiques de Ricco Rakotomalala

– Algorithm AS 181: The W Test for Normality de J. P. Royston

– A modification of the test of Shapiro and Wilk for normalité de M. Mahibbur Rahman et Z. Govindarajulu

– Normal probability plots and tests for normality de Thomas A. Ryan, Barbara Ryan et Brian L. Joiner

– Comparison of Common Tests for Normality de Johannes Hain

– Conditions d’application des méthodes statistiques paramétriques : applications sur ordinateur de R. Glele Kakaï, E. Sodjinou et N. Fonton

– Evaluation of thechniques for Univariate Normality test using Monte-Carlo Simulation de Ukponwan H. Nosakhare et Ajibade F. Bright