《白话统计》笔记

正态性和方差齐性

正态性和方差齐性是经典的统计模型应用的前提条件:t检验,方差分析以及线性回归等都需要满足这两个条件

正态性检验

统计方法判断正态性
  • 所有正态统计的无效假设都是:数据服从正态分布。即P<0.05的时候代表不服从正态分布

  • 目前常用的用于判断正态的统计方法有:Shapiro-Wilk(SW);Kolmogorov-Smirnov(KS); Cramer-von Mises(CVM); Anderson-Darling(AD)检验四种。根据他们的思想,可以分为两类

  1. 基于峰度和偏度的SW检验 SW检验是基于峰度和偏度来进行分析的方式。峰度是来讲分布是尖峰还是平坦。偏度则是看分布是否对称。其中正态分布的时候,峰度和偏度均为0。如果峰度>0则为尖峰。如果峰度<0则为平坦峰。如果偏度>0提示右偏,如果偏度<0提示左偏 我们可是使用shapiro.test来进行SW检验
set.seed(2019)
shapiro.test(runif(100, min = 2, max = 4))
## 
##  Shapiro-Wilk normality test
## 
## data:  runif(100, min = 2, max = 4)
## W = 0.94061, p-value = 0.0002101

数据不符合正态分布。

  1. 基于拟合优度的KS;CVM;AD检验

三个检验的基本思想是:计算理论正态分布和数据得到的分布之间的差异。 - 我们可以使用nortest::lillie.test;nortest::ad.test以及nortest::cvm.test来分别执行KS;AD;CVM检验

example <- runif(100, min = 2, max = 4)
library(nortest)
lillie.test(example)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  example
## D = 0.098768, p-value = 0.01761
ad.test(example)
## 
##  Anderson-Darling normality test
## 
## data:  example
## A = 1.131, p-value = 0.005579
cvm.test(example)
## 
##  Cramer-von Mises normality test
## 
## data:  example
## W = 0.17431, p-value = 0.01118

PS:由于不同统计方法可能结果不同。在选择的时候,如果是2000以内的数据;优先使用SW检验。如果是2000以上的数据,则考虑使用AD检验的效率最高

用描述的方法判断正态性

在做正态性检验的时候,有时候统计学检验判断的正态性不一定准确,尤其是大数据的时候,在统计检验的角度来看,你的数据是永远不服从正态分布的。因此,不少人建议使用图形等描述性方法来进行判断。常用的方法有

  1. Q-Q图:全称为,分位数图-分位数图。其横坐标是正态分布的分位数,纵坐标是实际数据的分位数。因此如果两者数据在一条对角线上,那么就说明是正态分布
qqnorm(example)
qqline(example, col = "blue")

  1. P-P图:和QQ图类似,这个图比较的是理论上正态分布的累积概率和实际数据的累积概率。如果服从正态分布。则是一个左下到右上的直线。
library(StatDA)
## Loading required package: geoR
## --------------------------------------------------------------
##  Analysis of Geostatistical Data
##  For an Introduction to geoR go to http://www.leg.ufpr.br/geoR
##  geoR version 1.7-5.2.1 (built on 2016-05-02) is now loaded
## --------------------------------------------------------------
## Loading required package: sgeostat
ppplot.das(example)

方差齐性判断

  • 所有的检验方法的无效假设:数据方差齐 在各种实际应用中,如果数据符合正态分布,那么可以使用Barlett法进行检测方差齐性。如果偏态分布,则建议使用Levene法 我们可以使用Bartlett.test来进行Barlett检验。使用leveneTest进行Levene检验
require(graphics)
plot(count ~ spray, data = InsectSprays)

bartlett.test(InsectSprays$count, InsectSprays$spray)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  InsectSprays$count and InsectSprays$spray
## Bartlett's K-squared = 25.96, df = 5, p-value = 9.085e-05
library(car)
## Loading required package: carData
leveneTest(InsectSprays$count, InsectSprays$spray)
## Levene's Test for Homogeneity of Variance (center = median)
##       Df F value   Pr(>F)   
## group  5  3.8214 0.004223 **
##       66                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1