笔记说明
读《Discovering Statistics Using R》第五章 Exploring assumptions做的笔记。本笔记对应章节为5.5.2,主要介绍使用偏度系数和峰度系数考察正态性假设。
上一篇笔记《Discovering Statistics Using R》笔记-图示法考察正态性假设中介绍了用图示法考察正态性假设,图示法考察的较大弊端是比较主观。我们可以用偏度系数和峰度系数来定量考察数据分布的形状。
示例数据
一个生物学家怀疑音乐节会对人的健康产生影响,他找了810个音乐会观众,收集了音乐节三天他们的卫生情况,卫生情况得分0-4.我们使用该数据的去除极端值后的版本DownloadFestival(No Outlier).dat
# 数据导入
library(rio)
dlf <- import("data/DownloadFestival_no_outlier.dat")
head(dlf)
## ticknumb gender day1 day2 day3
## 1 2111 Male 2.64 1.35 1.61
## 2 2229 Female 0.97 1.41 0.29
## 3 2338 Male 0.84 NA NA
## 4 2384 Female 3.03 NA NA
## 5 2401 Female 0.88 0.08 NA
## 6 2405 Male 0.85 NA NA
计算峰度系数和偏度系数
使用psych
包的describe()
可以生包括峰度系数、偏度系数在内的一系列统计量。
# 峰度系数偏度系数
library(psych)
library(pastecs)
describe(dlf[,c("day1","day2","day3")])
## vars n mean sd median trimmed mad min max range skew kurtosis se
## day1 1 810 1.77 0.69 1.79 1.77 0.70 0.02 3.69 3.67 0.00 -0.42 0.02
## day2 2 264 0.96 0.72 0.79 0.87 0.61 0.00 3.44 3.44 1.08 0.76 0.04
## day3 3 123 0.98 0.71 0.76 0.90 0.61 0.02 3.41 3.39 1.01 0.59 0.06
skew即为偏度系数,krutosis即为峰度系数。
- 正态分布的偏度系数和峰度系数均为0.
- 偏度系数为正表示分布中低值较多;偏度系数为负表示分布中高值较多。
- 峰度系数为正表示分布峰的形状较正态分布更尖、分布形状相对“陡峭”;峰度系数为负表示分布峰的形状较正态分布更平、分布形状相对“矮胖”。
- 峰度系数和偏度系数离0越远,表明数据越不太可能符合正态分布。
另外也可以使用pastecs
包的stat.desc()
来完成同样的任务。
实际上在R中,总可以找到两个甚至更多个方法来完成同一个任务。
round(stat.desc(dlf[,c("day1","day2","day3")], basic = FALSE, norm = TRUE), digits=3)
## day1 day2 day3
## median 1.790 0.790 0.760
## mean 1.771 0.961 0.977
## SE.mean 0.024 0.044 0.064
## CI.mean.0.95 0.048 0.087 0.127
## var 0.481 0.520 0.504
## std.dev 0.694 0.721 0.710
## coef.var 0.392 0.750 0.727
## skewness -0.004 1.083 1.008
## skew.2SE -0.026 3.612 2.309
## kurtosis -0.422 0.755 0.595
## kurt.2SE -1.228 1.265 0.686
## normtest.W 0.996 0.908 0.908
## normtest.p 0.032 0.000 0.000
因为stat.desc()
原始的输出用科学计数法来显示,不太好看,用round()
调整了输出数字显示的位数。
对偏度系数和峰度系数进行假设检验
我们可以把偏度系数和峰度系数转换为标准正态分布的Z值。准换为Z值后,
- (1)可以比较不同样本的不同单位数据的偏度系数和峰度系数。
- (2)可以根据Z值表计算出如果数据符合分布,出现目前样本偏度系数/峰度系数或更极端值的可能性大小,也就是可以对偏度系数或者峰度系数是否为0做假设检验。
将某统计量转换为标准正态分布Z值,只需要将该统计量减去该统计量分布的均值后再除以该统计量的标准差(标准误)就行了。这里我们假设检验中原假设是系数为0,所以减去的均值用0来带入。对应标准误可以由R来计算。
标准正态分布下双侧尾部面积0.05对应Z值为1.96。因此转换后的Z值如果绝对值大于1.96,对应P值就小于0.05.
应用时需要注意:大样本量下标准误会较小,即使系数距离0很近得到的Z值也会很大,容易拒绝原假设。因此在较大样本量下,检验水准的标准应当提高(比如说0.01,对应Z值为2.58)。样本量如果非常大(书中说是大于200,但我觉得具体样本量多大算非常大要结合具体假设检验考察的问题),这种显著性检验意义就不大了(因为即使很小的差异也很容易有统计学意义),更重要的是作图观察数据分布的形状。
在上面stat.desc()
的运行结果中有skew.2SE和kurt.2SE。分别对应偏度系数除以2倍标准误和峰度系数除以2倍标准误。即转换后的Z值再除以2(这里将1.96近似为2处理了).因此skew.2SE绝对值大于1,就意味着偏度系数为0的差异性检验具有统计学意义。kurt.2SE同理。
注意到stat.desc()
的运行结果中还给出了正态性检验的结果,在之后的笔记中再详细介绍。