R - QQPlot: comment voir si les données sont normalement distribuées


48

Je l'ai tracé après avoir fait un test de normalité Shapiro-Wilk. Le test a montré qu'il est probable que la population est normalement répartie. Cependant, comment voir ce "comportement" sur cette intrigue?entrez la description de l'image ici

MISE À JOUR

Un histogramme simple des données:

entrez la description de l'image ici

MISE À JOUR

Le test Shapiro-Wilk dit:

entrez la description de l'image ici


6
En ce qui concerne l'édition: le résultat du test SW rejette l'hypothèse selon laquelle ces données ont été extraites indépendamment d'une distribution normale commune: la valeur p est très petite. (Cela apparaît à la fois dans le graphique qq, qui présente une courte queue gauche, et dans l'histogramme, qui présente une asymétrie positive.) Cela suggère que vous avez mal interprété le test. Lorsque vous interprétez correctement le test, avez-vous encore une question à poser?
whuber

4
Au contraire: le logiciel et tous les graphes sont cohérents dans ce qu'ils disent. Le graphique qq et l'histogramme montrent comment les données s'écartent de la normalité; le test SW indique qu'il est peu probable que de telles données proviennent d'une distribution normale.
whuber

2
Pourquoi les parcelles disent-elles qu’elle n’est pas normalement distribuée? Le qqplot crée une ligne droite et l'histogramme semble également normalement distribué? Je ne comprends pas; (
Le Max

7
Le graphique qq n'est clairement pas rectiligne et l'histogramme n'est clairement pas symétrique (ce qui est peut-être le plus fondamental des nombreux critères auxquels un histogramme normalement distribué doit satisfaire). La réponse de Sven Hohenstein explique comment lire le graphique qq.
whuber

1
Vous pouvez trouver utile de générer un vecteur normal de même taille et de créer un graphique QQ avec les données normales pour voir comment il peut apparaître lorsque les données proviennent en fait d'une distribution normale.
StatsStudent

Réponses:


31

" Le test a montré qu'il est probable que la population soit normalement répartie. "

Non; ça n'a pas montré ça.

Les tests d'hypothèses ne vous disent pas quelle est la probabilité que la valeur NULL soit atteinte. En fait, vous pouvez parier que cette valeur nulle est fausse.

Le graphique QQ ne donne pas une forte indication de non-normalité (le graphique est plutôt simple); il y a peut-être une queue gauche légèrement plus courte que ce à quoi vous vous attendiez, mais cela importera peu.

L'histogramme en l'état ne dit probablement pas grand-chose non plus; cela suggère également une queue gauche légèrement plus courte. Mais voir ici

La distribution de la population à partir de laquelle vos données ne vont pas être tout à fait normale. Cependant, le graphique QQ montre que la normalité est probablement une approximation raisonnablement bonne.

Si la taille de l'échantillon n'était pas trop petite, l'absence de rejet de Shapiro-Wilk aurait probablement le même effet.

Mise à jour: votre modification pour inclure la valeur p réelle de Shapiro-Wilk est importante, car cela indiquerait que vous rejetteriez la valeur nulle à des niveaux significatifs typiques. Ce test indique que vos données ne sont pas distribuées normalement et que l’asymétrie légère indiquée par les graphiques est probablement ce qui est détecté par le test. Pour les procédures typiques qui peuvent supposer la normalité de la variable elle-même (le test t à échantillon unique en est un qui nous vient à l’esprit), à ce qui semble être une taille d’échantillon assez grande, cette légère non-normalité n’aura presque aucune conséquence tous - un des problèmes avec les tests de qualité de l'ajustement est qu'ils sont plus susceptibles de rejeter juste quand cela n'a pas d'importance (lorsque la taille de l'échantillon est suffisamment grande pour détecter une légère non-normalité); de même, ils sont plus susceptibles de ne pas rejeter quand c'est le plus important (lorsque la taille de l'échantillon est petite).


En fait, cela m'a fait mal interpréter la déclaration du PO: je pensais qu'il était improbable. Notez que je suis en désaccord un peu avec vous: alors qu'un test vous indique normalement comment peu probable une observation serait si l'hypothèse nulle était vraie, nous l' utilisons pour faire valoir que depuis que nous avons fait faire cette observation, l'hypothèse nulle est peu susceptible d'être vrai.
Nick Sabbe

Merci pour votre réponse! Je suis un peu dérouté par toutes les déclarations qui vont dans la direction opposée. Pour le dire clairement, mon exercice consiste à faire une déclaration sur la normalité de l'échantillon. Alors, que suggéreriez-vous comme réponse à mon professeur? Et comment montrer la normalité même si la taille de l'échantillon est énorme?;
Le Max

2
Le plus fort que vous puissiez dire serait quelque chose comme: "Le graphique QQ est raisonnablement compatible avec la normalité, mais la queue de gauche est un peu" courte "; il y a une légère indication d'asymétrie."
Glen_b

38

Si les données sont distribuées normalement, les points du tracé QQ-normal sont situés sur une droite diagonale. Vous pouvez ajouter cette ligne à votre tracé QQ avec la commande qqline(x), où xest le vecteur de valeurs.

Exemples de distribution normale et non normale:

Distribution normale

set.seed(42)
x <- rnorm(100)

Le graphique QQ-normal avec la ligne:

qqnorm(x); qqline(x)

entrez la description de l'image ici

Les déviations par rapport à la ligne droite sont minimes. Cela indique une distribution normale.

L'histogramme:

hist(x)

entrez la description de l'image ici

Distribution non normale (gamma)

y <- rgamma(100, 1)

Le graphique QQ-normal:

qqnorm(y); qqline(y)

entrez la description de l'image ici

Les points suivent clairement une autre forme que la ligne droite.

L'histogramme confirme la non-normalité. La distribution n'est pas en forme de cloche, mais positivement asymétrique (c'est-à-dire que la plupart des points de données se trouvent dans la moitié inférieure). Les histogrammes des distributions normales montrent la fréquence la plus élevée au centre de la distribution.

hist(y)

entrez la description de l'image ici


Je trouve que mettre les intervalles de confiance sur le qqplot est utile. Rien n’est "parfaitement" normal, et la taille de l’échantillon peut conduire jusqu’à quel point quelque chose peut être inexact et toujours dans la normale.
EngrStudent - Réintégrer Monica le

@EngrStudent Avez-vous du code à partager pour inclure l'intervalle de confiance dans le qqplot?
danno

1
@danno Découvrez la qqPlotfonction dans le carpackage.
Sven Hohenstein

@danno - regardez "qqPlot" dans la bibliothèque "voiture". Il existe depuis un moment et je n'y suis pas parvenu. Il ajoute les intervalles de confiance. Vous pouvez également spécifier la distribution de base de certaines distributions non normales. C'est dans ma réponse ci-dessous.
EngrStudent

1
unepproXjemunetely

23

Quelques outils pour vérifier la validité de l'hypothèse de normalité dans R

library(moments)
library(nortest)
library(e1071)

set.seed(777)
x <- rnorm(250,10,1)

# skewness and kurtosis, they should be around (0,3)
skewness(x)
kurtosis(x)

# Shapiro-Wilks test
shapiro.test(x)

# Kolmogorov-Smirnov test
ks.test(x,"pnorm",mean(x),sqrt(var(x)))

# Anderson-Darling test
ad.test(x)

# qq-plot: you should observe a good fit of the straight line
qqnorm(x)
qqline(x)

# p-plot: you should observe a good fit of the straight line
probplot(x, qdist=qnorm)

# fitted normal density
f.den <- function(t) dnorm(t,mean(x),sqrt(var(x)))
curve(f.den,xlim=c(6,14))
hist(x,prob=T,add=T)

11

Bien que ce soit une bonne idée de vérifier visuellement si votre intuition correspond au résultat de certains tests, vous ne pouvez pas vous attendre à ce que cela soit facile à chaque fois. Si les personnes essayant de détecter le boson de Higgs ne faisaient confiance à leurs résultats que si elles pouvaient les évaluer visuellement, elles auraient besoin d'un œil très vif.

Surtout avec de grands ensembles de données (et donc, généralement, avec une puissance croissante), les statistiques ont tendance à prendre en compte les différences les plus minimes, même lorsqu'elles sont à peine perceptibles à l'œil nu.

Cela étant dit: pour la normalité, votre graphique QQ devrait afficher une ligne droite: je dirais que ce n'est pas le cas. Il y a des courbes claires dans les queues et même près du milieu, il y a une certaine agitation. Visuellement, je serais peut-être encore disposé à dire (en fonction de l'objectif de vérification de la normalité) que ces données sont "raisonnablement" normales, cependant.

Remarquez cependant: dans la plupart des cas où vous souhaitez vérifier la normalité, vous n'avez besoin que de la normalité des moyens plutôt que de la normalité des observations. Le théorème de la limite centrale peut donc suffire à vous sauver. De plus, alors que la normalité suppose souvent que vous devez vérifier "officiellement", il a été démontré que de nombreux tests étaient assez insensibles pour que cette hypothèse ne soit pas remplie.


2

J'aime la version 'voiture' de la bibliothèque 'R' car elle fournit non seulement la tendance centrale, mais aussi les intervalles de confiance. Il fournit des indications visuelles pour vous aider à vérifier si le comportement des données est cohérent avec la distribution hypothétique.

library(car)

qqPlot(lm(prestige ~ income + education + type, data=Duncan), 
       envelope=.99)

quelques liens:

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.