将“二八法则”运用到我们的统计学习中,就是用20%的时间精力去习得最重要最常用80%的技巧和能力。统计学的东西很多很繁杂,如果面面俱到的话,精力不够,时间不足,还不一定能用的到。所以这里写到的就是最常用的医学统计能用到的,争取是能够学的到,用的上的统计方法。
首先先用上一副从别处习得的统计方法选择的图
这幅图可以说从问题入手,去选择相应的方法,相比于教科书,确实思维方式上就有所不同。更符合平时问题遇到的情况。
1. 数据分布检验
首先需要确定数据的情况,是否符合正态分布,是否符合方差齐性。什么是正态分布比较好理解,不赘述。何为方差齐性,我们依然是用例子来说明一下,方差是什么,方差是在概率论和统计方差衡量随机变量的统计值,统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,计算公式为那么为什么要在比较之前考虑方差是否齐性呢。用R来做两组数据,进行比较。
> a <- c(-5,-4,-3,-2,-1,1,2,3,4,5)
> b <- c(-50,-40,-30,-20,-10,10,20,30,40,50)
> var(a)
[1] 12.22222
> var(b)
[1] 1222.222
> mean(a);mean(b)
[1] 0
[1] 0
两组数据a,b平均数都是0,但是能够说两组数据一致吗,二者的方差前者12,后者1222 是完全不同,所以必须要进行方差比较,比较二者是否一致。
所以第一步就是检验是否为正态分布和方差齐性,二者的检验同样都可以在R中完成。
1.1 正态分布检验
在R中可以使用如下函数进行正态分布检验。
> d <- rnorm(n = 10,mean = 0)
> shapiro.test(d)
Shapiro-Wilk normality test
data: d
W = 0.9598, p-value = 0.7836
通过R生成随机数组d,使用shapiro.test()函数检验,p值大于0.05,不拒绝原假设,即就是数组符合正态分布。
1.2 方差齐性检验
方差齐性检验可以通过R软件的car包中的bartlett.test函数输出Bartlett检验,使用leveneTest()函数输出Levene检验。
> data("InsectSprays")
> head(InsectSprays)
count spray
1 10 A
2 7 A
3 20 A
4 14 A
5 14 A
6 12 A
> 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
使用"InsectSprays"数据集中的数据进行检验分析,可发现Bartlett检验的p值小于0.05,拒绝,即就是两组数据的方差不齐。我们作图观察。
plot(count ~ spray, data = InsectSprays)
可以看出组别之间的方差确实差异比较大。
继续使用LeveneTest包进行检验。
> head(Moore)
partner.status conformity fcategory fscore
1 low 8 low 37
2 low 4 high 57
3 low 8 high 65
4 low 7 low 20
5 low 10 low 36
6 low 6 low 18
> with(Moore, leveneTest(conformity, fcategory))
Levene's Test for Homogeneity of Variance (center = median)
Df F value Pr(>F)
group 2 0.046 0.9551
42
> with(Moore, leveneTest(conformity, interaction(fcategory, partner.status)))
Levene's Test for Homogeneity of Variance (center = median)
Df F value Pr(>F)
group 5 1.4694 0.2219
39
检验conformity, fcategory两组数据是否方差齐性,得到的p值大于0.05,不能拒绝原假设,即数据方差齐。conformity,fcategory, partner.status两组数据同样方差齐性。作图观察。
> plot(Moore$conformity ~ Moore$fcategory, data = InsectSprays)
> plot(Moore$conformity ~ interaction(Moore$fcategory, Moore$partner.status), data = InsectSprays)
好了,通过上面的一系列检验,对数据的分布情况有了了解,下一步就可以根据是否正态分布及是否符合方差齐性选择参数检验或者非参数检验。
参考文章及书目
R语言统计分析与应用-汪海波
白话统计-冯国双
一张图说明统计方法的选择
R语言中方差齐性检验丨数析学院
方差分析与R实现