《Discovering Statistics Using R》笔记4-正态性检验

笔记说明

读《Discovering Statistics Using R》第五章 Exploring assumptions做的笔记。本笔记对应章节为5.6,主要介绍正态性检验。
《Discovering Statistics Using R》书中只介绍了Shapiro-Wilk检验这一种正态性检验方法,本笔记参考其他资料补充了一些内容(其实补充的内容比书里的内容还多了)。
推荐阅读:SPSS教程:判断数据正态分布的超多方法!

正态性检验

正态性检验属于非参数检验。正态性检验的无效假设为:样本数据来自正态分布总体。因此正态性检验结果为P<α时拒绝无效假设,认为样本数据来自的总体和正态分布之间的差别有统计学意义,检验结果为P≥α时不拒绝无效假设,可以认为样本数据来自的总体符合正态分布。
正态性检验有很多种,常用的正态性检验有Shapiro-Wilk检验、Kolmogorov–Smirnov检验、Epps-Pulley检验等。
我国有关于正态性检验的推荐性国家标准《GB/T4882-2001数据的统计处理和解释:正态性检验》。在无方向的检验方法中,国标推荐使用Shapiro–Wilk检验和Epps-Pulley检验,Shapiro–Wilk检验适用于8≤n≤50的样本资料,Epps-Pulley检验适用于n≥8的样本资料。
在SPSS中,Shapiro-Wilk检验适用于3≤n≤5000的的小样本资料;Kolmogorov–Smirnov检验适用于n>5000的大样本资料。
在SAS中,Shapiro-Wilk检验适用于n≤2000的的小样本资料;Kolmogorov–Smirnov检验适用于n>2000的大样本资料。

示例数据

示例数据RExam记录了学生在R考试中的表现。

library(rio)

# 数据导入
rexam <- import("data/RExam.dat")
str(rexam)
## 'data.frame':    100 obs. of  5 variables:
##  $ exam    : int  18 30 40 30 40 15 36 40 63 31 ...
##  $ computer: int  54 47 58 37 53 48 49 49 45 62 ...
##  $ lectures: num  75 8.5 69.5 67 44.5 76.5 70 18.5 43.5 100 ...
##  $ numeracy: int  7 1 6 6 2 8 3 7 4 6 ...
##  $ uni     : int  0 0 0 0 0 0 0 0 0 0 ...

数据中的uni变量是一个分类变量,0表示该条观测的学生来自Duncetown University 1表示该条观测的学生来自Sussex University。
对uni变量进行编码:

rexam$uni<-factor(rexam$uni, levels = c(0:1), 
                             labels = c("Duncetown University", "Sussex University"))
str(rexam)
##  'data.frame':   100 obs. of  5 variables:
##   $ exam    : int  18 30 40 30 40 15 36 40 63 31 ...
##   $ computer: int  54 47 58 37 53 48 49 49 45 62 ...
##   $ lectures: num  75 8.5 69.5 67 44.5 76.5 70 18.5 43.5 100 ...
##   $ numeracy: int  7 1 6 6 2 8 3 7 4 6 ...
##   $ uni     : Factor w/ 2 levels "Duncetown University",..: 1 1 1 1 1 1 1 1 1 1 ...

Shapiro-Wilk检验

可以用shapiro.test()实现Shapiro-Wilk检验。Shapiro-Wilk检验的统计量为W。

shapiro.test(rexam$exam)
##  Shapiro-Wilk normality test
## 
## data:  rexam$exam
## W = 0.96131, p-value = 0.004991

如果涉及分组的分析,需要看各组数据的正态性,可以使用by()进行分组的正态性检验,比如按照uni变量进行分组正态性检验:

by(rexam$exam, rexam$uni, shapiro.test)
## rexam$uni: Duncetown University
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.97217, p-value = 0.2829
## 
## ---------------------------------------------------------------------------- 
## rexam$uni: Sussex University
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.98371, p-value = 0.7151

Kolmogorov–Smirnov检验

Kolmogorov–Smirnov检验简称k-s检验。它基于累计分布函数,用于检验两个经验分布是否不同或一个经验分布与一个理想分布是否不同。统计量为D。在R中可以用ks.test()来实现k-s检验。其用法为:

ks.test(x, y, …,
        alternative = c("two.sided", "less", "greater"),
        exact = NULL)

其中x,y即为需要比较的两组数据,在进行单样本的检验时x为单样本数据,y为与数据进行比较的累计分布函数。例如检验x是否与正态分布相符则填入“pnorm”(表示正态分布的累积分布函数),...中填入y分布所需的参数比如正态分布的均值和标准差。
基于示例数据,用k-s检验检验exam变量的正态性会发现报错:

ks.test(rexam$exam,"pnorm",mean=mean(rexam$exam), sd=sd(rexam$exam))
## Warning message:
## In ks.test(rexam$exam, "pnorm", mean = mean(rexam$exam), sd = sd(rexam$exam)) :
##   Kolmogorov - Smirnov检验里不应该有连结

这是因为数据中有重复值。k-s检验采用秩统计量,在排序过程中若有重复值的话就会显示警告。
可以用jitter()给为数据加上噪音来解决这个问题:

ks.test(jitter(rexam$exam),"pnorm",mean=mean(rexam$exam), sd=sd(rexam$exam))
##  One-sample Kolmogorov-Smirnov test
## 
## data:  jitter(rexam$exam)
## D = 0.099817, p-value = 0.272
## alternative hypothesis: two-sided

Epps-Pulley检验

Epps-Pulley检验虽然被纳入我国正态性检验的推荐国标,但我真没在实际中看到有人用过,就不展开了。。。
搜索后发现Epps-Pulley正态性检验可以使用nortsTest包的normal.test()实现:

library(nortsTest)
normal.test(rexam$exam,normality = "epps",
            alpha = 0.05) 
##  Epps test
## 
## data:  y
## epps = 20.731, df = 2, p-value = 3.151e-05
## alternative hypothesis: y does not follow a Gaussian Process

正态性检验注意事项

大样本数据中,即使样本数据分布与正态分布只有微小的不同,也会在正态性检验中出现统计学意义。微小的不同并不会破坏正态性假设。因此考察数据正态性假设时,正态性检验的结果应该结合直方图、Q-Q图、偏度系数、峰度系数等的结果,综合考量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容