R-QQPlot:如何查看数据是否正态分布


47

在进行了Shapiro-Wilk正态性检验后,我已对此进行了绘制。测试表明,总体上可能呈正态分布。但是,如何在此情节中看到这种“行为”?在此处输入图片说明

更新

数据的简单直方图:

在此处输入图片说明

更新

Shapiro-Wilk测试表明:

在此处输入图片说明


6
重新编辑:SW检验结果拒绝了以下假设:这些数据是从共同的正态分布中独立得出的:p值非常小。(这在显示短尾巴的qq图和显示正偏度的直方图中都很明显。)这表明您误解了该测试。当您正确解释测试时,您还有问题要问吗?
ub

4
相反:软件和所有图解都说的一致。qq图和直方图显示了数据偏离正态的特定方式。SW测试表明,此类数据不太可能来自正态分布。
ub

1
为什么这些图说它不是正态分布的?qqplot创建一条直线,直方图看起来也呈正态分布?我不明白;(
Le Max

7
qq图显然不是直线的,直方图显然不是对称的(这也许是正态分布直方图必须满足的许多标准中最基本的)。 Sven Hohenstein的答案说明了如何阅读qq图。
ub

1
您可能会发现,生成相同大小的法线向量并用该法线数据创建QQ图很有用,以查看当数据实际上来自法线分布时该法线将如何显示。
StatsStudent

Answers:


31

测试表明,人口很可能呈正态分布。

没有; 它没有显示出来。

假设检验不能告诉您空值的可能性。实际上,您可以打赌此null为false。

QQ图不能很好地表明异常情况(该图很直)。左尾巴也许比您期望的短一些,但这确实无关紧要。

直方图可能也没有说太多。它的确也暗示左尾巴稍短。但是看这里

您的数据所来自的总体分布将不完全正常。但是,QQ图显示正态性可能是一个不错的近似值。

如果样本量不太小,那么缺少对Shapiro-Wilk的拒绝可能会说出差不多的话。

更新:包含实际Shapiro-Wilk p值的编辑很重要,因为实际上这表明您会拒绝典型有效水平的空值。该测试表明您的数据不是正态分布的,并且图所示的轻微偏斜可能是测试所拾取的。对于可能假设变量本身具有正态性的典型程序(一个样本t检验是我想到的),在看起来相当大的样本量的情况下,这种轻微的非正态性几乎不会产生任何后果。所有-拟合优度检验的问题之一是,它们在不重要的时候(当样本量足够大以检测一些适度的非正态性时)更可能拒绝。同样,在最重要的时候(样本量较小时),他们更有可能无法拒绝。


实际上,这使我误解了OP的声明:我以为他说不太可能。请注意,我稍微不同意您的意见:虽然测试通常会告诉您,如果原假设是真实的,那么观察将不太可能,但我们以此为理由,因为我们确实得到了该观察,所以原假设不太可能是真实的。
Nick Sabbe

谢谢你的回答!我对所有指向另一个方向的陈述感到困惑。明确地说,我的专长是对样本的正态性作出说明。那么,您建议对我的教授说些什么呢?以及即使样本量很大也如何显示正态性?; S
Le Max

2
关于最强的信息,您可能会说:-“ QQ曲线与正常水平相当一致,但左尾巴有点'短';有轻微的偏斜迹象。”
2013年

37

如果数据是正态分布的,则QQ正态图中的点位于对角直线上。您可以使用命令将这条线添加到QQ图中qqline(x),其中x是值的向量。

正态分布和非正态分布的示例:

正态分布

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

带有以下行的QQ正态图:

qqnorm(x); qqline(x)

在此处输入图片说明

与直线的偏差很小。这表明正态分布。

直方图:

hist(x)

在此处输入图片说明

非正态(Gamma)分布

y <- rgamma(100, 1)

QQ正态图:

qqnorm(y); qqline(y)

在此处输入图片说明

这些点显然遵循直线以外的其他形状。

直方图确认了非正态性。分布不是钟形,而是正偏(即,大多数数据点在下半部分)。正态分布的直方图显示了分布中心的最高频率。

hist(y)

在此处输入图片说明


我发现将置信区间放在qqplot上很有用。没有什么是“完全”正常的,样本大小可以驱动某些东西不精确并且仍在正常范围之内。
EngrStudent

@EngrStudent您是否可以共享代码以将置信区间包括在qqplot中?
danno

1
@danno检查软件包中的qqPlot功能car
Sven Hohenstein

@danno-查看“汽车”库中的“ qqPlot”。它已经存在了一段时间,但我没有做到。它增加了置信区间。您还可以为一些非正态分布指定基本分布。这是我在下面的答案。
EngrStudent

1
我认为对于新手来说,指出点必须位于一条直线上以使正态性假设真正生效,可能也更好。approximately
StatsStudent

23

一些检查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

目视检查您的直觉是否与某些测试的结果相匹配是一个好主意,但您不能期望每次都如此简单。如果试图检测希格斯玻色子的人们只相信他们的结果,只要他们可以在视觉上对其进行评估,那么他们将需要非常敏锐的眼睛。

尤其是对于大型数据集(因此,通常具有增强的功能),即使用肉眼很难辨别出差异,统计数据也往往会占据最小的差异。

话虽如此:为了正常起见,您的QQ图应显示一条直线:我会说没有。尾巴上有明显的弯曲,甚至在中部附近也有一些骚动。从视觉上看,我仍然可能愿意(取决于检查正常性的目标)说这些数据是“合理地”正常的。

但是请注意:对于大多数要检查正态性的目的,您只需要均值的正态性而不是观测值的正态性,因此中心极限定理可能足以救您。另外:虽然正常性通常是您需要“正式”检查的一种假设,但是许多测试表明,对于不满足这种假设,它并不敏感。


2

我喜欢'R'库'car'中的版本,因为它不仅提供了集中趋势,而且还提供了置信区间。它提供视觉指导,以帮助确认数据的行为是否与假设分布一致。

library(car)

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

一些链接:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.