在进行两组数据间的差异分析时,我们通常会想到使用t检验。但若数据不满足执行t检验的参数假设(例如数据分布不符合正态性,变量在本质上就严重偏倚或呈现有序关系),无法使用t检验分析时,可以考虑使用非参数的方法来完成。
就两组数据的比较而言,wilcox秩和检验(或称Mann-Whitney U检验)是常见的非参数检验方法之一。本文简介怎样在R中进行wilcox秩和检验,以实现两组间非参数差异分析。
wide_data=read.csv('wide_data.txt',sep = " ")
shannon_2 shannon_3
9.716 10.025
9.615 9.811
9.611 9.808
9.797 9.686
9.745 9.802
9.605 9.748
9.406 9.806
9.732 9.799
wilcox_test <- wilcox.test(wide_data$shannon_2,wide_data$shannon_3)#宽数据数据形式
wilcox_test
##
## Wilcoxon rank sum test
##
## data: wide_data$shannon_2 and wide_data$shannon_3
## W = 5, p-value = 0.002953
## alternative hypothesis: true location shift is not equal to 0
wilcox_test$p.value
## [1] 0.002952603
注意
虽然wilcox检测不需要考虑方差齐性,但是作为非参数检测,其计算出的P值较t.test.偏大,有时候t.test很显著,但是wilcox检测可能不显著,使用时候要注意!此外,wilcox检测比较适合重复很多的样本,比如10个以上的,这样检测效果比较准确!
For循环批量计算p值,这里只考虑了两组生物学重复的
> data=read.csv('total.csv')
> data#查看数据
WT WT.1 Mut Mut.1
1 12 13 23 22
2 12 14 33 32
3 15 13 40 39
4 21 23 23 22
> p_value=c() #设置一个空数组用于储存p值
> for (i in 1:nrow(data))
+ {
+ data_new<-melt(data[i,])
+ data_new$variable=as.factor(data_new$variable)
+
+ data_new$variable<-c("WT","WT","Mu","Mu")
+ P=wilcox.test(value~variable,data_new)
+ p_value[i]=P$p.value
+ p_value[i]<- round(p_value[i],3) #设置小数点位数
+ }
No id variables; using all as measure variables
No id variables; using all as measure variables
No id variables; using all as measure variables
No id variables; using all as measure variables
Warning message:
In wilcox.test.default(x = 23:22, y = c(21L, 23L)) :
无法精確計算带连结的p值
> data<-data.frame(data,p_value) #添加p值到数据最后一列
> data
WT WT.1 Mut Mut.1 p_value
1 12 13 23 22 0.333
2 12 14 33 32 0.333
3 15 13 40 39 0.333
4 21 23 23 22 1.000
>
转载本文请联系原作者获取授权,同时请注明本文来自刘尧科学网博客。
链接地址:</label>http://blog.sciencenet.cn/blog-3406804-1172341.html
网友评论