[R语言统计]秩转换的非参数检验
来源:互联网 发布:matlab 矩阵转置 编辑:程序博客网 时间:2024/05/01 04:56
非参数检验(non-parametric test)是相对于参数检验(parametric test)而言的。如果总体分布为已知的数学形式,用参数检验,反之用非参数检验。当总体分布不能由已知的数学形式表达,没有总体参数时,就无法用参数检验,两个或多个正态总体方差不等,也不能用t检验或F检验的参数检验。对于不满足参数检验条件的数据,一是进行变量变换,使其满足参数检验条件,另外就是用非参数检验。
非参检验对总体分布不作严格假定,又称任意分布检验(distribution-free test),《医学统计学》(第三版,孙振球)书中采用的是秩转换的非参数检验,即将数值变量从小到大排列,再计算检验统计量。
目录
配对Wilcoxon符号秩检验
独立样本Wilcoxon检验(Mann-Whitney U检验)
Kruskal-Wallis H检验(完全随机)
多个独立样本两两比较的Nemenyi检验法
Friedman M检验法
多个相关样本两两比较的q检验法(不会)
配对Wilcoxon符号秩检验
例8-1
# 源代码:
old
new
wilcox.test(old,new,paired
# 运行结果
>
data:
V
alternative hypothesis:
Warning messages:
1:
2:
结果分析: p-value=0.06175,因此不能认为两法测谷丙转氨酶有差别。
例8-2
# 源代码:
data82
wilcox.test(data82-45.30)
# 运行结果:
>
data:
V
alternative hypothesis:
Warning message:
In wilcox.test.default(data82, mu
结果分析:p值小于0.01,可以视为该工厂的工人尿氟含量高于正常人。
例8-3
# 源代码:
lc
si
wilcox.test(lc,si)
#运行结果:
>
data:
W
alternative hypothesis:
在R中,wilcox.test()函数可以用来做Wilcoxon秩和检验,也可以用于做Mann-Whitney U检验。当参数为单个样本,或者是两个样本相减,或者是两个参数,paired=F时,是Wilcoxon秩和检验。当paired = FALSE(独立样本)时,就是Mann-Whitney U检验,在这个题目中,用的就是Mann-Whitney U检验,虽然结果中W=86.5与书中的T=141.5不一样,但本质上是一样的,换算如下:W1=141.5-10*(10+1)/2=86.5;W2=111.5-12*(12+1)/2=33.5
例8-4
答:本题书中用的是wilcox检验,其实用Ridit分析更合适一些,下面分别用这两种方法进行检验:
# 1. Wilcox.test(或Kruskal检验)
smoke <- c(1,8,16,10,4)
no.smoke <-c(2,23,11,4,0)
rank.c <- c(1:5)
group1 <- rep(rank.c,smoke)
group2 <- rep(rank.c,no.smoke)
data84 <- c(group1,group2)
group.f <-factor(c(rep(1,length(group1)),rep(2,length(group2))))
wilcox.test(data84~group.f)
# 或者进行kruskal.test检验
kruskal.test(data84~group.f)
# 运行结果:
> wilcox.test(data84~group.f)
Wilcoxon rank sum test with continuity correction
data: data84 by group.f
W = 1137, p-value = 0.0002181
alternative hypothesis: true location shift is not equal to 0
Warning message:
In wilcox.test.default(x = c(1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, :
cannot compute exact p-value with ties
> # 或者进行kruskal.test检验
> kruskal.test(data84~group.f)
Kruskal-Wallis rank sum test
data: data84 by group.f
Kruskal-Wallis chi-squared = 13.707, df = 1, p-value = 0.0002137
# 2. 此题用Ridit检验更合适一些。
data84 <- matrix(c(1,8,16,10,4,2,23,11,4,0),nrow=5)
dimnames(data84) <- list(cone=c("very low","low","median","a bit high","high"),
worker=c("smoker","no-smoker"))
library(Ridit)
ridit(data84,2)
chisq.test(data84)
# 运行结果:
> library(Ridit)
> ridit(data84,2)
Ridit Analysis:
Group Label Mean Ridit
----- ----- ----------
1 smoker 0.6159
2 no-smoker 0.387
Reference: Total of all groups
chi-squared = 13.707, df = 1, p-value = 0.0002137
> chisq.test(data84)
Pearsons Chi-squared test
data: data84
X-squared = 15.0785, df = 4, p-value = 0.004541
三、Kurskal-Wallis检验
Kurskal-Wallis检验是Wilcoxon方法(其实是Mann-Whitney检验)用于多于两个样本的时候的升级版。当对两个样本进行比较的时候,Kurskal-Wallis检验与Mann-Whitney检验是等价的。
例8-5
# 源代码:
drug
data
data85
kruskal.test(data85$data~data85$drug)
# 运行结果:
>
data:
Kruskal-Wallis chi-squared
结果分析:Kruskal-Wallis的统计量是H值。
例8-6
# 源代码:
mice
data86
data86
kruskal.test(data86$data~data86$mice)
# 运行结果:
>
data:
Kruskal-Wallis chi-squared
例8-7
白细胞
支气管扩张
肺水肿
肺癌
病毒性呼吸道感染
-
0
3
5
3
+
2
5
7
5
++
9
5
3
3
+++
6
2
2
0
# 源代码:
x1
x2
x3
x4
freq
count
for(i
count1
count
}
return(count)}
data87
group
kruskal.test(data87~group)
# 运行结果:
>
data:
Kruskal-Wallis chi-squared
例8-8
# 源代码:
# 需要安装下列包:
# install.packages("pgirmess")
# install.packages("coin")
# install.packages("multcomp")
# library(pgirmess)
# library(coin)
# library(multcomp) # 安装并加载要用到的包
mice
data
data88
kruskal.test(data~mice,data=data88)
kruskalmc(data~mice, data=data88, probs=0.05)
# 下面构建函数计算具体的p值
mult
ytrafo
xtrafo
model.matrix(~x
teststat
pvalue(mult, method
# 运行结果:
>
data:
Kruskal-Wallis chi-squared
>
Multiple comparison test after Kruskal-Wallis
p.value:
Comparisons
11C-9D
11C-DSC1
9D-DSC1
>
9D
DSC1
DSC1
例8-9
# 源代码:
freA
freB
freC
freD
matrix89
friedman.test(matrix89)
运行结果:
>
data:
Friedman chi-squared
例8-10
还没有查到关于Friedman检验的两两比较方法,以后补充。
参考资料:
关于Nemenyi检验的方法是参照丁香园的,原贴地址如下,帖子的作者有把写过《医学统计学及SAS应用》之R语言实现这本电子书,下载地址如下。
Nemenyi检验方法:http://www.dxy.cn/bbs/thread/26928446#26928446
《医学统计学及SAS应用》之R语言实现:http://d.dxy.cn/detail/6143147
- [R语言统计]秩转换的非参数检验
- R语言之非参数检验篇
- R语言_非参数检验
- R语言_参数检验
- R语言与非参数统计(核密度估计)
- R语言与非参数统计(核密度估计)
- R语言与非参数统计(核密度估计)
- R语言:常用统计检验方法
- 非参数回归和相关统计检验
- 非参数回归和相关统计检验
- 统计学习(五):非参数检验
- 非参数统计中t检验与符号检验的正确性判断
- 7.MATLAB参数统计与假设检验-常用非参数检验
- R语言t检验,秩和检验,fdr的案例分析
- R语言Fisher检验的workspace问题
- 两独立样本的非参数检验(Mann-Whitney U 秩和检验)
- (笔记)spss的非参数检验
- R语言t检验
- HDOJ3555 Bomb
- 组队赛3-B ,HDU 4961 Boring Sum(数学题)
- 使用BigDecimal进行精确运算
- SQL Server 基础之增删查改
- 冒泡排序,简单选择排序
- [R语言统计]秩转换的非参数检验
- linux时间编程学习
- Python1
- 关于java的深克隆与浅克隆
- openVR驱动接口之ITrackedDeviceServerDriver简介
- 蓝桥 切面条
- OpenMPI, LSF, InfiniBand, Mellanox OFED and Intel MPI Benchmark: what is going on ?
- 数据库
- NYOJ-258/POJ-2559/HDU-1506 Largest Rectangle in a Histogram,最大长方形,dp或者单调队列!