非参数检验-计算部分

非参数检验,一般是在分布未知的情况下使用。我们首先会先对数据进行正态检验和方差齐性分析,如果均不服从,则对数据进行变化,如果还是不服从,则进行非参数检验。
首先输入数据进行变换

library(reshape2)
ano = read.table("statistic.txt",header = T, sep = "\t",quote = "")
head(ano)

原始输入数据如下

Samples L2.L2 L2.L4 L2.L6 L4.L2 L4.L4 L4.L6 L6.L2 L6.L4 L6.L6
S1 10 5 6 6 10 6 10 6 11
S2 8 6 5 7 11 5 9 9 12
S3 10 7 11 8 8 8 11 9 8
S4 9 6 9 7 8 9 6 9 13
S5 12 9 7 9 10 8 12 11 11
S6 10 8 8 6 10 11 9 11 12
... ... ... ... ... ... ... ... ... ...

使用reshape2包进行数据变换,将多列组合成一列变量模式。

library(reshape2)
a = melt(ano,id.vars = "Samples")

将多列合并到variable列上。变换后结果如下

Samples variable value
S1 L2.L2 10
S2 L2.L2 8
S3 L2.L2 10
S4 L2.L2 9
S5 L2.L2 12
S6 L2.L2 10
  1. 正态检验:
    使用shapiro.test()进行检验
shapiro.test(a$value)

结果如下:

Shapiro-Wilk normality test
data: a$value
W = 0.94081, p-value = 5.945e-09

p-value = 5.94e-09 < 0.05,拒绝原假设,数据不服从正态分布。

  1. 方差齐性检验:
    使用bartlett.test()进行检验
bartlett.test(value~variable, data = a)

Bartlett test of homogeneity of variances
data: value by variable
Bartlett's K-squared = 29.636, df = 8, p->value = 0.0002451

结果显示,p-value = 0.0002451 < 0.05,拒绝原假设,数据方差不齐。

  1. 非参数多重检验Kruskal-Wallis H test
    使用kruskal.test()进行检验:
kruskal.test(value~variable, data = a)

Kruskal-Wallis rank sum test
data: value by variable
Kruskal-Wallis chi-squared = 85.493, df = 8, p-value = 3.808e-15

结果显示,p-value = 3.808e-15 < 0.05,样本间存在显著差异的组合,需要进一步进行两两检验。

  1. nemenyi两两检验
    使用kruskalmc(value~variable, data = a, probs = 0.05)进行检验,结果不能得到具体p-value值,因此设定多个probs进行区分。
library(multcomp)
library(pgirmess)
library(coin)
kruskalmc(value~variable, data = a, probs = 0.05)
kruskalmc(value~variable, data = a, probs = 0.01)
kruskalmc(value~variable, data = a, probs = 0.001)
kruskalmc(value~variable, data = a, probs = 0.0001)

Multiple comparison test after Kruskal-Wallis
p.value: 0.05
Comparisons

Comparing group obs.dif critical.dif difference
L2.L2-L2.L4 102.700000 64.45642 TRUE
L2.L2-L2.L6 96.150000 64.45642 TRUE
L2.L2-L4.L2 82.183333 64.45642 TRUE
L2.L2-L4.L4 9.250000 64.45642 FALSE
L2.L2-L4.L6 88.416667 64.45642 TRUE
L2.L2-L6.L2 43.500000 64.45642 FALSE

TRUE表示p-value < 0.05, FALSE则表示p-value > 0.05。可以通过设定多个Probs来界定p-value的范围

你可能感兴趣的:(非参数检验-计算部分)