精华内容
下载资源
问答
  • R语言详解参数检验和非参数检验二、参数检验R语言实现2.1 单样本t检验2.2 独立样本t检验2.3 配对样本t检验2.4方差分析2.5 pearson相关性检验三、非参数检验R语言实现3.1单样本wilcoxon检验3.2 Mann-Whitney检验3.3...

    一、前言

    数据基本属于两种类型:定性数据(类别变量,数字只有标签含义)及定量数据(数值型变量,每个数值有实际的含义)。

    常用的方法有正态分布检验(KM检验,shipro检验),t检验,方差分析,还有一些没那么常见的Wilcoxon秩和检验,Mann-Whitney检验及Kruskal-wallis检验等。

    本文对各种统计检验方法进行梳理、总结,帮大家省却一小部分时间,。同时,本文也将涉及到的统计检验方法的R语言实现代码罗列出来,让大家能够简单的检验自己的数据集。

    首先还是说明一下参数检验和非参数检验的区别,见下表:
    在这里插入图片描述

    我们首先会对样本数据做一个最基本的正态分布检验,以此决定,该选用参数检验派的一箩筐检验方法还是非参数检验派的方法。我们肯定是希望用参数检验,因为参数检验用的信息是真实的数据,而非参数检验用到的信息是将这些真实值,转换为秩(理解为位置,或者排序)了,检验过程中损失了大量的有效信息,除此以外还有一些其他原因共同导致了他的检验效能较低。

    正态分布检验的实现方法有很多,本文总结几种常见的,详情看下表:

    在这里插入图片描述

    • shapiro.test()
      一个参数:数值型数据,理解为你数据集的任何一列:
      Shp <- shapiro.test(test)
      小样本时使用,可以存在缺失值,非缺失样本量大于3即可
      fBasics
      基础包无需加载,函数直接用就行

    • ks.test()
      三个参数:一列数据,均值,方差
      KS <- ks.test(test,0,1)
      非参数检验方法,适用范围广。
      需要包 fBasics

    • lillie.test()
      一个参数:数值型数据
      Li <- lillie.test(test)
      基于KS的正态性检验,非缺失样本量大于4
      非基础包需要library(nortest)后,才能使用检验函数

    • ad.test()
      一个参数
      Ad <- ad.test(test)
      可以有缺失值,但非缺失样本量必须大于7
      需要加载包 nortest

    test测试数据是通过rnorm(100)随机生成的100个服从正态分布的数据,所有以上方法的统计检验结果P值都大于0.05,说明数据服从正态分布。平时见到的KS检验用的最多,非参数检验门槛低。如果数据有一两百例,就别考虑Shapiro.test()了。一般认为n>30,可以认为是大样本。

    讲了正态分布后,还需要再说一个检验:方差齐性检验。不管是t检验还是方差分析,比较的都是均值有无差异。Fisher先生在推导F分布的时候,是基于样本满足正态分布及方差同质(方差齐性)两个基础假设来的,如果两个条件不满足,F分布就会出现偏差。与此类似,双样本T检验中,如果方差不齐,合并方差需要做一定的修正,才能很好的满足t分布。但实际中的样本,大多数情况是异方差,同方差的情况才是少见。有实验表明,当样本量足够大,且两组样本量差距比较小时,可以忽略异方差的影响。如果样本量较小,且两组数据的样本差异较大时,还是老老实实按照书上的步骤,一步步把检验做了。

    本文对常见的方差齐性的检验方法总结如下:

    • bartlett.test()
      2个参数:数值型数据,因子型数据:
      Bar <- bartlett.test(count ~ spray, data = InsectSprays)
      样本服从正态分布时使用
      基础包无需加载,函数直接用即可

    • leveneTest()
      2个参数:数值型数据,因子型数据:
      Lev <-car:: leveneTest(count ~ spray, data = InsectSprays)
      相较于Bartlett检验,这一方法更为稳健
      car,这个包不是基础包,需要library加载下哦

    • fligner.test()
      2个参数:数值型数据,因子型数据:
      Fli <- stats::fligner.test(count ~ spray, data = InsectSprays)
      非参数的检验方法,完全不依赖于对分布的假设
      Stats

    在这里插入图片描述

    本表中,输入列的data通过函数“require(graphics)”获得,采用“str(InsectSprays)”函数可以看到InsectSprays数据集中的所有指标及其数据类型。

    讲了正态分布和方差齐性的检验,我们就可以进入正题了。你的数据,满足正态分布假设检验的,就进入参数检验方法,否则,选择非参数检验。本文所讲的内容基本如下:
    在这里插入图片描述

    二、参数检验R语言实现

    以下案例,均默认随机获得的样本服从正态分布,也满足方差齐性。

    2.1 单样本t检验

    案例:我有点矮,身高只有1.55米。我想知道,在广大群众之中,我的身高是不是处于一个正常水平,我能说大家的平均身高就是1.55米吗?于是,我在1.3米到2.2米的人中,随机选取100个人:

    Height <- sample(seq(1.3,2.2,by=0.1),100,replace=T) 。
    

    我对这100个人的身高进行t检验:

    Tsingle <- t.test(Height, alternative = "greater", mu =1.55 )
    

    结果如下:
    在这里插入图片描述

    P值近乎为0了,备择假设是真是均值大于1.55。So,我,太矮了.

    2.2 独立样本t检验

    案例:听说南方人普遍较北方人矮,那矮的明显吗?差异真的很大?我要验证一下,选择100个南方人,80个北方人(假设在重庆,北方人相对还是太少了),进行我的检验。

    South <- sample(seq(1.3,1.9,by=0.1),100,replace=T)
    North <- sample(seq(1.3,2.2,by=0.1),80,replace=T)
    #检验代码如下:
    IndT <- t.test(South ,North ,paired = F)
    

    结果如下:
    图片

    结果P值远低于0.05,接收备择假设:均值的真实差异不等于0.

    2.3 配对样本t检验

    案例:患者入院时和出院时均进行了各临床指标的检验,比如NLR、CRP、White Blood Cell等。按理说,其中,多项研究证明,NLR和肺损伤程度是高度正相关的,所以,入院时和出院时的NLR值,应该不在一个水平。现在,用你的100个病人,来证明它!

    Getin <- sample(seq(3.22,14.9,by=0.1),100,replace=T)
    Getout <- sample(seq(1.22,9.9,by=0.1),100,replace=T)
    #检验代码如下:
    PairT <- t.test(Getin ,Getout ,paired = T)
    

    结果如下:
    图片
    P 值远低于0.05,拒绝原假设,接受备择假设:均值的真实差异不等于0。说明治疗前后,患者的NLR指标有明显变化。

    2.4方差分析

    案例:这批新冠肺炎患者,他们有NLR、CRP、White Blood Cell等指标,还有性别、年龄等基本信息。通过核酸检测,我知道他们的病情是何情况(轻型,重型,危重型)。现在,我要看这些指标在不同病情患者中是否存在差异。此时,我们就可以使用方差分析进行检验。
    首先,还是准备数据(做三因素方差分析吧)

    NLR <- sample(seq(3.22,14.9,by=0.1),100,replace=T)
    CRP <- sample(seq(0.06,190,by=0.1),100,replace=T)
    Age <- sample(seq(20,70,by=1),100,replace=T)
    COVID_Type <- sample(c(1,2,3),100,replace=T) # 1:Mild,2:Moderate,3:Severe
    AovData <- data.frame(Type=COVID_Type,NLR=NLR,CRP=CRP,Age =Age )
    #方差分析:
    Aov <- aov(Type~.,data=AovData )  
     #Type~.是一个公式,意味着我要对AovData 表格里的所有临床指标与Type进行方差分析,如果不用~.表示的话,就得写成Type~NLR+CRP+Age。
    #查看方差分析的结果
    summary(Aov ):
    

    图片

    可以看到,3个指标的P值均大于0.05,说明这三个指标在不同的Type病人下,没有显著差异。

    2.5 pearson相关性检验

    案例:长得越好看的人(颜值评分越高,10分就是李东旭那样子的),追求者越多。

    Face_score <- sample(seq(1,10,by=1),100,replace=T)
    Admirers <- sample(seq(1,5,by=1),100,replace=T)
    #检验函数,明确method为pearson:
    Cor <- cor.test(Face_score,Admirers,method="pearson")
    

    图片

    检验结果中,P值大于0.05,不能拒绝原假设,因此认为,并不是长得越好看的人,追的人就越多(Pearson相关用于双变量正态分布的资料,其相关系数称为积矩相关系数(coefficient of product-moment correlation);当两变量不符合双变量正态分布的假设时,需用Spearman秩相关来描述变量间的相互变化关系。)

    三、非参数检验R语言实现

    本节的数据与第二节完全一致,所以,就省去编案例和随机造数据这两步过程了。

    3.1单样本wilcoxon检验

    检验代码:

    Wilsingle <- wilcox.test(Height)
    

    检验结果:
    图片

    P值小于0.05,接收备择假设:位置(中位数)差异不等于0,说明在非参数检验的情况下,我的身高也还是和锅锅姐姐们有差异的。

    3.2 Mann-Whitney检验

    检验代码:

    ManWit <- wilcox.test(South,North,paired = F)
    

    检验结果:
    图片

    同上,P值小于0.05,说明两组数据是有显著性差异的。北方人普遍就是比南方人高鸭~

    3.3配对样本wilcoxon检验

    检验代码:

    PairWil <- wilcox.test(Getin,Getout,paired = T)
    

    检验结果:
    图片

    P值小于0.05,COVID患者入院时和出院时的NLR值有显著性差异。

    3.4 Kruskal-wallis和置换多元方差分析检验

    Kruskal-wallis用于单因素方差分析:

    KS <- kruskal.test(Type~NLR,data=AovData)
    

    P值大于0.05,说明NLR在各组之间没有显著性差异。

    置换多元方差分析用于多因素方差分析

    AD <- adonis(Type~.,data=AovData)
    

    在这里插入图片描述

    可以看到,NLR,CRP和Age的P值均大于0.05,说明他们在各组之间均没有显著性差异。

    3.5 spearman相关性检验

    检验代码,明确方法用spearman:

    SCor <- cor.test(Face_score,Admirers,method="spearman")
    

    检验结果:
    图片

    P值大于0.05,不能拒绝原假设,所以不能认为长得越好看,追求者越多。

    四、列联表检验(定性资料)

    4.1 pearson卡方检验

    适合性检验:
    案例:高中学了孟德尔豌豆杂交实验,二代分离的结果为:黄圆315、黄皱101、绿圆108、绿皱32,共556粒。这个结果符合自由组合定律9:3:3:1吗?
    检验数据:

    F2split <- c(315,101,108,32)
    Ratio <- c(9/16,3/16,3/16,1/16)
    Fit <- chisq.test(F2split , p = Ratio )
    

    检验结果:
    P值大于0.05,因此不能拒绝原假设,认为二代分离结果符合自由组合定律。

    独立性检验
    案例:大学及研究生阶段,发现班上总是女生入社团很积极,男生很一般。所以,性别和加入社团与否有关系吗?
    检验数据:

    CHi <- as.table(rbind(c(62, 37), c(48, 23)))
    dimnames(CHi ) <- list(gender = c("F", "M"),
                    party = c("InParty","Notinparty"))
    Chiq <- chisq.test(CHi )
    

    检验结果:
    图片

    P值大于0.05,说明性别和加不加入社团没关系哦~

    4.2 Fisher精确检验

    案例:单身与否和化妆有关系吗?
    数据准备:

    Fisher<- rbind(c(28 ,42), c(35, 27))
    dimnames(Fisher) <- list(gender = c("Single", "Mate"),
                    party = c("Makeup","NoeMakeup"))
     
    #检验代码:
    Fish <- fisher.test(Fisher)
    

    检验结果:
    图片

    P值大于0.05,拒绝原假设,接受备择假设:真实比值不等于1 ,说明化妆对找男朋友还是有用的。Wu~

    4.3 Cochran-Mantel–Haensze卡方检验

    案例:肖战和王一博的男粉和女粉有明显差别不?在不用地区分布咋样(比如在重庆,是不是肖战的粉丝明显更多)?
    数据准备(五个城市不同男女喜欢肖战王一博的统计数据):

    Fans<- array(c(100,200,28,320,
               253,230,113,376,
               116,452,320,414,
                     123,23,456,311,
                     234,452,145,264),
               dim = c(2,2,5),
               dimnames = list(
               Sex= c('Female','Male'),
               Response = c('XZ','WYB'),
                Penicillin.Level = c('CQ','BJ','SH','GZ','CD')))
    

    检验代码:

    FanTest <- mantelhaen.test(Fans)
    

    检验结果:
    图片

    P值小于0.05,接收备择假设:两个人被喜欢的程度,还是会受到城市的影响的~

    五、一致性检验

    5.1 Kappa一致性检验(定性数据)

    一致性检验也分两组比较及多组比较。在irr包里,有一个diagnoses数据集,这里面包含了6个医生多30个病人的诊断结果。
    如果只是对其中两个医生进行一致性检验,采用Cohen’s Kappa法;如果是多个医生一起比较一致性,采用 Fleiss’s Kappa法。以上两种方法的代码及结果如下:

    Cohen’s Kappa:
    install.packages('irr')
    library(irr)
    require(irr)
    data(diagnoses)
    dat=diagnoses[,c(1,2)]
     
    #检验代码:
    kap2 <- kappa2(dat[,c(1,2)],'unweighted')
    

    检验结果:
    图片

    P值小于0.05 ,说明这两个医生的诊断结果具有一致性。

    Fleiss’s Kappa:
    检验代码:

    Flesi <- kappam.fleiss(dat)
    

    检验结果:
    图片

    P值为0,kappa值0.43,说明这六个医生的评价仍然具有显著的一致性。

    5.2 配对χ2检验(McNemar检验)

    数据准备:

    Performance <- matrix(c(794, 86, 150, 570),
          nrow = 2,
          dimnames = list("1st Survey" = c("Approve","Disapprove"),
                           "2nd Survey" =c("Approve", "Disapprove")))
    #检验代码:
    mcnemar.test(Performance)
    
    

    检验结果:
    P值小于0.05,说明第一次调查和第二次调查的支持者及反对者具有一致性,第一次调查中支持的人,在第二次调查也支持。

    5.3 ICC组内相关系数

    ICC一般是具体的值,认为大于0.8,则前后一致性好。没有碰到过像上面一样的检验函数。由于放射组学前后两次勾画ROI,需要进行提取后特征值的一致性分析,所以,作者自己有写相关的ICC批量计算代码,如下

    ICC <- function(Data){
       if(unique(Data[,1]==unique(Data[,2]))){
        ICC <- 1
        ICC
      }
      else{
        n <- nrow(Data);k <- ncol(Data)
        mean_r <- apply(Data,1,mean)
        mean_c <- apply(Data,2,mean)
        mean_all <- mean(c(Data[,1],Data[,2]))
       
    l_all <- sum((Data-mean_all)^2)
        l_r <- sum((mean_r-mean_all)^2)*k
        l_c <- sum((mean_c-mean_all)^2)*n
        l_e = l_all-l_r-l_c
       
        v_all = n*k-1
        v_r = n-1
        v_c = k-1
        v_e = v_r*v_c
       
        MSR = l_r/v_r
        MSC = l_c/v_c
        MSE = l_e/v_e
       
        ICC = (MSR-MSE)/(MSR+(k-1)*MSE+k*(MSC-MSE)/n)
        ICC
      }
     
    }
     
    ICC1 <- DataFeature;ICC2 <- DataFeature2
     
    ICCvalue <- c()
    for(i in 2:ncol(ICC1)){
      data1 <- ICC1[,i];data2 <- ICC2[,i]
      Data <- data.frame(data1=data1,data2=data2)
      Value <- ICC(Data)
      ICCvalue <- c(ICCvalue,Value)
    }
     
    length(which(ICCvalue>=0.8))# %>% length() # 哪些特征的ICC系数大于0.8,则说明这些特征的可重复性好。
    

    附录

    正文所有用到的代码皆在此处~

    ## 随机生成服从均值为0,方差为1的100个正态分布数据
    test <- rnorm(100,0,1)
     
    ## 正态分布检验
    Shp <- shapiro.test(test)
    KS <- ks.test(test,0,1)
     
    library(nortest)
    Li <- lillie.test(test)
    Ad <- ad.test(test)
     
    ## 方差齐性检验
    require(graphics)
    str(InsectSprays)
    Bar <- bartlett.test(count ~ spray, data = InsectSprays);Bar
     
    library(car)
    Lev <- car::leveneTest(count ~ spray, data = InsectSprays);Lev
    Fli <- stats::fligner.test(count ~ spray, data = InsectSprays);Fli
     
    ## 单样本t检验
    Height <- sample(seq(1.3,2.2,by=0.1),100,replace=T)
    Tsingle <- t.test(Height, alternative = "greater", mu =1.55 );Tsingle
    Wilsingle <- wilcox.test(Height )
     
    ## 独立样本t检验
    South <- sample(seq(1.3,1.9,by=0.1),100,replace=T)
    North <- sample(seq(1.3,2.2,by=0.1),80,replace=T)
    IndT <- t.test(South ,North ,paired = F);IndT
    ManWit <- wilcox.test(South,North,paired = F);ManWit
     
    ## 配对样本t检验
    Getin <- sample(seq(3.22,14.9,by=0.1),100,replace=T)
    Getout <- sample(seq(1.22,9.9,by=0.1),100,replace=T)
    PairT <- t.test(Getin ,Getout ,paired = T);PairT
    PairWil <- wilcox.test(Getin,Getout,paired = T);PairWil
    ## 方差分析
    NLR <- sample(seq(3.22,14.9,by=0.1),100,replace=T)
    CRP <- sample(seq(0.06,190,by=0.1),100,replace=T)
    Age <- sample(seq(20,70,by=1),100,replace=T)
    COVID_Type <- sample(c(1,2,3),100,replace=T)
     
    AovData <- data.frame(Type=COVID_Type,NLR=NLR,CRP=CRP,Age =Age )
    Aov <- aov(Type~.,data=AovData )
    summary(Aov )
    ## 单因素
    KS <- kruskal.test(Type~NLR,data=AovData);KS
    ## 多因素
    library(vegan)
    AD <- adonis(Type~.,data=AovData);AD
     
    ## 相关性分析
    Face_score <- sample(seq(1,10,by=1),100,replace=T)
    Admirers <- sample(seq(1,5,by=1),100,replace=T)
    Cor <- cor.test(Face_score,Admirers,method="pearson");Cor
    SCor <- cor.test(Face_score,Admirers,method="spearman");SCor
     
     
    ## 列联表检验
    ## chisq.test
    ## 适合性检验
    F2split <- c(315,101,108,32)
    Ratio <- c(9/16,3/16,3/16,1/16)
    Fit <- chisq.test(F2split , p = Ratio );Fit
     
    ## 独立性检验
    Chi <- as.table(rbind(c(62, 37), c(48, 23)))
    dimnames(Chi ) <- list(gender = c("F", "M"),
                    party = c("InParty","NotinParty"))
    Chiq <- chisq.test(Chi );Chiq
     
    ## fisher exact test
    Fisher<- rbind(c(28 ,42), c(35, 27))
    dimnames(Fisher) <- list(gender = c("Single", "Mate"),
                    party = c("Makeup","NoeMakeup"))
    Fish <- fisher.test(Fisher);Fish
     
    ## 分层检验
    Fans<- array(c(100,200,28,320,
               253,230,113,376,
               116,452,320,414,
                  123,23,456,311,
                  234,452,145,264),
               dim = c(2,2,5),
               dimnames = list(
               Sex= c('Female','Male'),
               Response = c('XZ','WYB'),
                Penicillin.Level = c('CQ','BJ','SH','GZ','CD')))
    FanTest <- mantelhaen.test(Fans);FanTest
     
    ## 一致性检验
    install.packages('irr')
    library(irr)
    require(irr)
    data(diagnoses)
    dat=diagnoses[,c(1,2)]
    kap2 <- kappa2(dat[,c(1,2)],'unweighted');kap2
     
    Flesi <- kappam.fleiss(diagnoses);Flesi
     
    ## mcnemar 检验
    Performance <- matrix(c(794, 86, 150, 570),
          nrow = 2,
          dimnames = list("1st Survey" = c("Approve","Disapprove"),
                           "2nd Survey" =c("Approve", "Disapprove")))
    Performance
    mcnemar.test(Performance)
    
    展开全文
  • R语言笔记1:t检验和Wilcoxon检验

    万次阅读 2017-09-11 18:24:51
    转自新浪博客,转载地址:http://blog.sina.com.cn/s/blog_427c24ae0102wg7n.html1、t检验数据是高血压患者治疗前后舒张压的变化,这个内容最熟悉不过了吧,虽然采用t检验的方法目前有争议,我们后面再讨论。...

    转自新浪博客,转载地址:http://blog.sina.com.cn/s/blog_427c24ae0102wg7n.html

    1、t检验

    数据是高血压患者治疗前后舒张压的变化,这个内容最熟悉不过了吧,虽然采用t检验的方法目前有争议,我们后面再讨论。treat 1为处理组,treat 2是对照组。显然,要比较两组的dd(血压下降值)。

    这里写图片描述

    # 读入SPSS格式的数据
    
    setwd("C:/R/R语言笔记")
    
    library(Hmisc)
    
    dat<-spss.get("Hypertension.sav") 
    
    # t检验其实就下面这一行
    
    t.test(dd~treat,dat)

    结果:

         WelchTwo Sample t-test
    

    data: dd by treat

    t = 4.3326, df = 11.671, p-value = 0.001038

    alternative hypothesis: true difference inmeans is not equal to 0

    95 percent confidence interval:

    5.847287 17.752713

    sample estimates:

    mean in group 1 mean in group 2

          16.0             4.2
    

    结果出来了,差异是有统计学意义的,P=0.001038。有些过于简单了,是吧?等等,结果中的Welch是什么东西?这是假设两个变量方差不齐,对自由度进行校正的t检验。如果方差齐呢?

    t.test(dd~treat,dat,var.equal=TRUE)

    结果

         TwoSample t-test
    

    data: dd by treat

    t = 4.3326, df = 18, p-value = 0.0004011

    alternative hypothesis: true difference inmeans is not equal to 0

    95 percent confidence interval:

    6.078013 17.521987

    sample estimates:

    mean in group 1 mean in group 2

          16.0             4.2
    

    结果是一致的,只是P值更小了些。

    这里给出t检验的语法:

    t.test(x, y = NULL,alternative = c("two.sided", "less", "greater"),mu = 0, paired = FALSE, var.equal = FALSE,conf.level = 0.95, ...)

    或者:

    t.test(formula, data, subset, na.action,...)

    2、统计描述

    那怎么知道方差齐不齐,对了,还有要符合正态分布呢?好,看一下计量资料的统计描述吧。如果summary(dat)不够用的话(您自己试试吧,此处略去),看一下fBasics包里basicStats的威力:

    dat1<-subset(dat, treat==1)
    
    dat2<-subset(dat, treat==2)
    
    library(fBasics)
    
    basicStats(dat1$dd)
    
    basicStats(dat2$dd)   

    看其中第1组的结果,连可信限、偏度系数、峰度系数都有了:

           X..dat1.dd
    

    nobs 10.000000

    NAs 0.000000

    Minimum 10.000000

    Maximum 20.000000

    1. Quartile 14.500000

    2. Quartile 18.000000

    Mean 16.000000

    Median 17.000000

    Sum 160.000000

    SE Mean 0.988826

    LCL Mean 13.763119

    UCL Mean 18.236881

    Variance 9.777778

    Stdev 3.126944

    Skewness -0.627973

    Kurtosis -1.025207

    3、正态性检验

    先来正态性检验。看一下直方图,QQ图,似乎不是特别正态,可能是因为样本量较小,但shapiro检验是OK的。

    opar<-par(no.readonly = TRUE)
    par(mfrow=c(1,2))
    hist(dat1$dd)
    hist(dat2$dd)
    qqnorm(dat1$dd)
    qqnorm(dat2$dd)
    par(opar)
    shapiro.test(dat1$dd)
    shapiro.test(dat2$dd)

    结果:
    这里写图片描述
    这里写图片描述
    Shapiro-Wilknormality test

    data: dat1$dd

    W = 0.89893, p-value = 0.2132

    Shapiro-Wilknormality test

    data: dat2$dd

    W = 0.92674, p-value = 0.4166
    顺便看一下箱线图,没有离群值。有人喜欢均数标±准差的图,也来一个(目前的版本不太好看呀,有机会再改进吧);或者有想使用标准误的,自己应该能仿一个了吧。

    boxplot(dd~treat,dat,main="两组血压下降值")
    
    library(Hmisc)
    
    x<-c(mean(dat1$dd),mean(dat2$dd))
    
    mp<-barplot(x)
    
    errbar(mp,x,x+c(sd(dat1$dd),sd(dat2$dd)),x-c(sd(dat1$dd),sd(dat2$dd)),xaxt="n",xlab="Groups",main="两组血压下降值")
    
    title(main="两组血压下降值")

    结果:
    这里写图片描述

    4、方差齐性检验

    levenTest一看,原来方差不齐,因此第一步的默认t检验设置正好是正确的。

    library(car)
    
    leveneTest(dat$dd,dat$treat,median)

    结果:

    Levene’s Test for Homogeneity of Variance(center = median)

     Df F value   Pr(>F)  
    

    group 1 8.5909 0.008926 **

     18                   
    

    Signif. codes:

    0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘’ 1

    5、非参数检验

    如果连正态都不满足呢?那就Wilcoxon非参数秩检验了,wilcox.test同样显示两组有显著性差异。

    wilcox.test(dd~treat, dat)

    结果:

         Wilcoxonrank sum test with continuity correction
    

    data: dd by treat

    W = 91.5, p-value = 0.001698

    alternative hypothesis: true location shiftis not equal to 0

    6、配对t检验与非参数秩检验

    问第2组治疗前后血压是否有变化(治疗是否有效)?t检验在这里使用是有问题的,我们以后讨论,先看方法。

    7、单样本t检验与非参数秩检验

    问第1组的基线血压值是否大于140?

    展开全文
  • Student t检验(Student’s t test),亦称T检验,是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著,主要用于样本含量较小...Wilcoxon检验(Wilcoxon rank-sum test),也叫曼-惠特尼U...
    1. Student t检验(Student’s t test),亦称T检验,是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著,主要用于样本含量较小(例如n<30),总体标准差σ未知的正态分布数据。
    2. Welch T检验(Welch’s t test)在两组数目方差不相等时可选择该检验。
    3. Wilcoxon秩和检验(Wilcoxon rank-sum test),也叫曼-惠特尼U检验(Mann–Whitney U test),是两组独立样本非参数检验的一种方法。
    展开全文
  • 文章目录前言一、为什么t检验和wilcoxon秩和检验要二选一?二、使用步骤1.引入库2.读入数据总结 前言 所谓显著性差异,就是证明数据的差异不是偶然发生的。 一、为什么t检验和wilcoxon秩和检验要二选一? 示例:...
    
    
    


    前言

    所谓显著性差异,就是证明数据的差异不是偶然发生的。生信分析中九成以上的问题,本质上就是寻找差异或者证明差异。


    一、T 检验和wilcoxon秩和检验,怎么选?

    简单的说,T检验主要关注样本平均数的差异,而wilcoxon秩和检验是基于样本内数据的秩(排序)与值,关注中位数的差异。T检验的前提是数据正态分布,如何判断,见R语言检验数据正态分布

    二、T 检验

    1. 单一样本t检验

    单一样本t检验(One-sample t test),是用来比较一组数据和一个特定数值有无显著性差异。应用场景:20个肿瘤样本中,判断某个基因X测序后来的count数是否高于、低于还是等于25(前提是count符合正态分布)。

    2. 配对样本t检验

    配对样本t检验(paired-samples t test),要求两组数据每对之间要有一定的对应关系。比如:(1)同一组样本在处理前后的平均值有无显著性差异(这个好理解,处理前样本与处理后对应,比如一个人饭前饭后的体重)。(2)癌和癌旁(一定是对应的样本)某些特征的显著性差异。(3)有配对关系的样本,用不同处理方式处理。

    3. 独立样本t检验

    独立样本t检验(independent t test),比较两组独立数据有无显著性差异。应用场景:(1)TCGA数据库中的肿瘤样本与正常样本(他们来自不同patients,与癌与癌旁不一样)。(2)不同分子分型的肿瘤样本比较。

    4. 检验方向

    单尾检验和双尾检验的区别在于是否拒绝H0标准。单尾需要选择方向,假设包含一个<小于符号,则使用左尾;假设包含一个>大于符号,则使用右尾。双尾检验即拒绝域一分为二位于数据集的两侧,两侧各占α/2,总和为α。

    4. 用R语言来做t检验

    # One sample t test : 单一样本t检验
    # Comparison of an observed mean with a
    # a theoretical mean
    t.test(x, mu=0) 
    # Paired t test :配对样本t检验
    t.test(x, y, paired=TRUE)
    # Independent t test:独立样本t检验
    # Comparison of the means of two independent samples (x & y)
    t.test(x, y)
    # Paired t test
    t.test(x, y, paired=TRUE)
    

    Arguments
    x
    a (non-empty) numeric vector of data values.

    y
    an optional (non-empty) numeric vector of data values.

    alternative
    a character string specifying the alternative hypothesis, must be one of “two.sided” (default), “greater” or “less”. You can specify just the initial letter.

    mu
    a number indicating the true value of the mean (or difference in means if you are performing a two sample test).

    paired
    a logical indicating whether you want a paired t-test.

    var.equal
    a logical variable indicating whether to treat the two variances as being equal. If TRUE then the pooled variance is used to estimate the variance otherwise the Welch (or Satterthwaite) approximation to the degrees of freedom is used.

    alternative是用来假设方向的参数。“two.sided”, “less”, “greater” 双尾 左尾 右尾
    t.test(x, y, alternative=c(“two.sided”, “less”, “greater”))
    双尾,左尾,右尾,假设不同,P值不同,得出的显著性结论不同。

    > t.test(1:10, y = c(7:20, 200))
    
    	Welch Two Sample t-test
    
    data:  1:10 and c(7:20, 200)
    t = -1.6329, df = 14.165, p-value = 0.1245
    alternative hypothesis: true difference in means is not equal to 0
    95 percent confidence interval:
     -47.242900   6.376233
    sample estimates:
    mean of x mean of y 
      5.50000  25.93333 
    
    > t.test(1:10, y = c(7:20, 200), alternative = "less")
    
    	Welch Two Sample t-test
    
    data:  1:10 and c(7:20, 200)
    t = -1.6329, df = 14.165, p-value = 0.06226
    alternative hypothesis: true difference in means is less than 0
    95 percent confidence interval:
         -Inf 1.588745
    sample estimates:
    mean of x mean of y 
      5.50000  25.93333 
    
    > t.test(1:10, y = c(7:20, 200), alternative = "great")
    
    	Welch Two Sample t-test
    
    data:  1:10 and c(7:20, 200)
    t = -1.6329, df = 14.165, p-value = 0.9377
    alternative hypothesis: true difference in means is greater than 0
    95 percent confidence interval:
     -42.45541       Inf
    sample estimates:
    mean of x mean of y 
      5.50000  25.93333 
    
    

    三、wilcoxon秩和检验

    直接上马

    > x <- c(1.83,  0.50,  1.62,  2.48, 1.68, 1.88, 1.55, 3.06, 1.30)
    > y <- c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29)
    > wilcox.test(x, y, paired = TRUE, alternative = "greater")
    
    	Wilcoxon signed rank exact test
    
    data:  x and y
    V = 40, p-value = 0.01953
    alternative hypothesis: true location shift is greater than 0
    
    > wilcox.test(x, y, paired = TRUE, alternative = "less")
    
    	Wilcoxon signed rank exact test
    
    data:  x and y
    V = 40, p-value = 0.9863
    alternative hypothesis: true location shift is less than 0
    
    > wilcox.test(x, y, paired = TRUE, alternative = "two.sided")
    
    	Wilcoxon signed rank exact test
    
    data:  x and y
    V = 40, p-value = 0.03906
    alternative hypothesis: true location shift is not equal to 0
    
    > wilcox.test(x, y, paired = F, alternative = "greater")
    
    	Wilcoxon rank sum test with continuity correction
    
    data:  x and y
    W = 58, p-value = 0.06646
    alternative hypothesis: true location shift is greater than 0
    
    Warning message:
    In wilcox.test.default(x, y, paired = F, alternative = "greater") :
      无法精確計算带连结的p值
    

    四、可视化画图(boxplot 箱图)

    library(ggplot2)
    library(ggsignif)
    library(ggpubr)
    library(RColorBrewer)
    A <- c(1.83,  0.50,  1.62,  2.48, 1.68, 1.88, 1.55, 3.06, 1.30)
    B <- c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29)
    C <- A+1
    D <- B+1
    plot_data <- data.frame(A,B,C,D)
    require(tidyr)
    plot_data <- gather(plot_data)
    colnames(plot_data) <- c("group","test_data")
    
    #-----------------------
    p<- ggplot(data=plot_data)+ 
      geom_boxplot(mapping=aes(x=group,y=test_data,colour = group ), #箱线图
                   alpha = 0.5,
                   size=1.5,
                   width = 0.6)+ 
      geom_jitter(mapping=aes(x=group,y=test_data,colour = group), #散点
                  alpha = 0.3,size=3)+
      scale_color_manual(limits=c("A","B","C","D"), 
                         values=c("#85B22E","#5F80B4","#E29827","#922927"))+ #颜色
      geom_signif(mapping=aes(x=group,y=test_data), # 不同组别的显著性
                  comparisons = list(c("A", "B"), # 哪些组进行比较
                                     c("A", "C"),
                                     c("A", "D"),
                                     c("B", "C"),
                                     c("B", "D"),
                                     c("C", "D")),
                  map_signif_level=T, # T显示显著性,F显示p value
                  tip_length=c(0,0,0,0,0,0,0,0,0,0,0,0), # 修改显著性线两端的长短
                  y_position = c(2.9,3.6,3.8,3.4,3.2,2.9), # 设置显著性线的位置高度
                  size=1, # 修改线的粗细
                  textsize = 4, # 修改显著性标记的大小
                  test = "t.test")+ # 检验的类型
      theme_classic(  # 主题设置,这个是无线条主题
        base_line_size = 1 # 坐标轴的粗细
      )+
      labs(title="EXAMPLE A",x="",y="test_data")+ # 添加标题,x轴,y轴内容
      theme(plot.title = element_text(size = 15,
                                      colour = "black",
                                      hjust = 0.5),
            axis.title.y = element_text(size = 15, 
                                        # family = "myFont", 
                                        color = "black",
                                        face = "bold", 
                                        vjust = 1.9, 
                                        hjust = 0.5, 
                                        angle = 90),
            legend.title = element_text(color="black", # 修改图例的标题
                                        size=15, 
                                        face="bold"),
            legend.text = element_text(color="black", # 设置图例标签文字
                                       size = 10, 
                                       face = "bold"),
            axis.text.x = element_text(size = 13,  # 修改X轴上字体大小,
                                       color = "black", # 颜色
                                       face = "bold", #  face取值:plain普通,bold加粗,italic斜体,bold.italic斜体加粗
                                       vjust = 0.5, # 位置
                                       hjust = 0.5, 
                                       angle = 0), #角度
            axis.text.y = element_text(size = 13,  
                                       color = "black",
                                       face = "bold", 
                                       vjust = 0.5, 
                                       hjust = 0.5, 
                                       angle = 0) 
      )
    p
    

    在这里插入图片描述

    展开全文
  • 阅读期刊文献时,各种统计检验(T检验wilcoxon检验、方差分析…)方法让人眼花缭乱,分不清它们之间的区别;当处理自己数据时,又面临着不知道如何挑选合适的检验方法,学习操作那些复杂的生信软件等等挑战。 ...
  • Wilcoxon符合秩和检验

    千次阅读 2020-12-23 14:32:19
    注意单样本t检验不同,该检验检查是否有差异: (rank, pVal) = stats.wilcoxon(data-checkValue) 该方法有3个步骤: 计算每个观测值感兴趣的值的差异; 忽略差异的符号,将他们按照大小排序; 将所有负(或正...
  • 在这篇文章中,我们将探索比较两组依赖(即成对)定量数据的测试:Wilcoxon符号秩检验和配对学生t检验。这些测试之间的关键区别在于Wilcoxon的测试是非参数测试,而t测试是参数测试。在下文中,我们将探讨这种差异的...
  • Wilcoxon符号秩检验

    千次阅读 2018-08-14 11:52:36
     它适用于T检验中的成对比较,但并不要求成对数据之差服从正态分布,只要求对称分布即可。检验成对观测数据之差是否来自均值为0的总体(产生数据的总体是否具有相同的均值)。 在Matlab中,秩检验由函数ranksum...
  • wilcoxon符号秩检验和wilcoxon秩和检验有3点不同,具体介绍如下:两者的特点不同:1、wilcoxon符号秩检验的特点:正负符dao号检验和威尔科克森符号秩检验,都可看作是就成对观察值而进行的参数方式的T检验的代用品,...
  • 配对T检验和Wilcoxion配对非参数检验的图形可视化均可以应用ggpubr包,简单好用。可达到如下效果哟~ 安装包 install(ggpubr) 数据整理 data &amp;amp;amp;lt;- data.frame(before = datapairCC,after=datapairCC...
  • 1.成组设计一元定量资料t检验 1.1 问题与数据 例:一个小麦新品种经过6代选自,从第5代(A组)中抽出10株,株高为66、65、66、68、62、65、63、66、68、62(cm),又从第6代(B组)中抽出10株,株高为64、61、57、65、65、...
  • 该文件执行非参数 Mann-Whitney-Wilcoxon 检验来评估未配对样本之间的差异。 如果组合数小于20000,算法计算出准确的秩分布; 否则它使用正态分布近似。 结果跟不一样RANKSUM MatLab函数,但有更多输出信息。 该测试...
  • 1. 什么是t检验 2. 如何正确应用t检验 3. t检验用于回归系数的检验 4. Wilcoxon检验
  • 假设检验

    2018-05-14 09:54:32
    假定总体服从哪种分布非参数假设检验:不假定总体服从的分布,从数据本身出发来获得所需信息参数类型-----非参数类型单一样本检验t检验-----中位数的符号检验,Wilcoxon符号秩检验两样本的检验t检验-----Wilcoxon秩...

空空如也

空空如也

1 2 3 4
收藏数 61
精华内容 24
关键字:

wilcoxon检验和t检验