生物统计——假设检验

作者: Dawn_WangTP | 来源:发表于2019-07-29 21:42 被阅读0次

    本文是对 孟浩巍
    生物信息学入门课:学习生信你需要了解的统计学课程的学习。

    五. 假设检验

    1. 假设检验基本介绍

    K.Pearson——Sir Ronald Aylmer Fisher(女士品茶,Fisher线性判别,极大似然估计,试验设计)——Neyman and E Pearson.

    Fisher的女士品茶提出来的小概率标准为0.05。

    什么是假设?:通过MT和TM的假设确定总体的一些参数;什么是检验:判断假设是否成立,是否为小概率事件。

    假设检验基本思想

    假设检验的一般步骤

    1. 提出原假设H0和备择假设H1
    2. 确定适当的检验统计量(t检验/卡方/F检验)
    3. 计算出抽样结果的PValue
    4. 如果PValue很小(0.01/0.05),拒绝H0接受H1

    2. PValue的计算

    R中计算PValue的相关函数:

    R中各个分布函数名称
    • Beta分布——二项分布——柯西分布——卡方分布——指数分布——F分布——Gamma分布——几何分布——超几何分布——逻辑斯特分布——Log Normal分布——负二项分布——正态分布——泊松分布——T分布——均匀分布——威泊尔分布
    • p(probability)概率分布,累计分布概率
    • q(quantile)分位数计算,确定99%的分位数
    • d(density)概率密度函数(概率密度函数y轴坐标取值)
    • r(random)取对应分布的随机数
    ##确定分位数
    qnorm(0.99,mean=0,sd=1) ##确定99%的分位数值
    
    ## 确定概率
    pnorm(-1.96,mean = 0, sd =1) ## 0.024
    pnorm(0,mean = 0, sd =1) ## 0.5
    
    ##概率密度函数曲线
    plot(dnorm(seq(-10,10,length.out = 1000),mean = 0,sd = 1))
    
    ##模拟取值
    rnorm(10,mean=5,sd=2)
    
    ###设置随机种子保证rnorm里取值一致。
    sed.seed(2019)
    rnorm(10,mean=5,sd=2)
    
    

    在生物信息里的例子:

    1. 某次测序全基因组平均突变率为0.003,某个位点中检测到带有C的reads10条,带有T的reads为3条,那么该位点是否为一个甲基化位点?(background:原始的C,被清洗后不带甲基化位点为T,带甲基化(C被保护)位点为C)

      • 二项分布:n=13, p=0.003
      • 具体R中pbinom(q=3,size = 13,prob = 0.003)
    2. MACS2中call peak认为reads count在基因组某个区域的分布服从泊松分布,估算某一段区域中的Possion分布的参数?假设已经估算出lambda=5,如果一段区域内出现了20条reads,那么pvalue应该是多少?

      • lambda估算:一段区域的reads count数出来,平均?或者估算整体基因组的lambda。
      • x=20,21,22...出现抽样结果或者比抽样结果更极端的情况。加起来一起的pvalue即为次pvalue
      • 具体R中计算ppois(20,lambda=5)为累计概率。>20的pvalue1-ppois(20,lambda=5)

    3. 统计功效和假设检验的两类错误

    两类错误和统计功效

    image

    1类错误假阳性,2类错误假阴性。α去真概率,β纳伪概率。

    当样本量确定时,α和β是一个balance。α是定义的显著性水平,如0.01,pvalue实际是很小。而α定的十分小的情况下,β的犯错概率就大了。所以具体再平衡的过程中需要进一步考虑。例如在癌症检测时,会尽可能把H1都找出来,所以宁愿假阳性高,假阴性低,cutoff 甚至0.1。而相反的在call peak时要找到最真的peak

    提高统计功效:加大样本量(较简单),更改统计方法。

    4. 使用Pvalue常见的错误

    1. 在任何时候都以0.05或者0.01作为金标准

    • 有些统计检验如Fisher Exact test类(GO/KEGG/Motif计算)容易出现非常小的pvalue。一般会取10-4,认为取小于10e-4才算显著。

    2. 设定Pvalue阈值时忽略了2类错误的犯错可能。

    • 比如在病理确诊时 H0代表没病,H1代表有病。二类错误的假阴性更严重,所以设置α提高0.1/0.2,假阴性β就会降低。

    3. 计算Pvalue过程中,忽略了使用假设检验的基本条件。

    • 比如t检验(服从正态分布,两个样本方差齐。如果不服从原假设基本要求,而应用其它的如非参数检验)

    4. 在使用PValue的时候,会忽略了假设检验的原假设。

    image
    • 仅能说是根据Pvalue发现有相关关系,但相关关系不大。

    回归分析时,原假设的两个变量是不是有相关关系(没有/有 ),而具体相关关系的大小,归到回归中解释。

    4. T检验相关内容

    主要围绕正态分布进行。大样本Z-test,小样本T-test

    1. Z-score和Z变换

    Z-score和Z变换
    • Z变换是已知了总体方差和总体均值的情况。其中在α=0.05时,Z=+-1.96,所以按公式计算完Z值之后再通过pnorm(z,mean=0,sd=1)转换。

    2. 为什么有了Z test之后还要T test?:因为通常情况下我们很难获得总体方差(最多获得总体均值的估计),往往就想通过样本方差来代替总体方差。

    ## R中T-test值转换为Pvalue
    1-pt(q=14.16,df=10-1)
    
    
    小样本检验T-test
    • (当X均值-样本均值)/(样本方差/根号n),它是服从自由度n-1的student-T-test。自由度越高越服从正态分布,n越大越服从z test大样本统计。
    • 大样本统计的n至少>=30(50),所以在一般情况下大都是进行T-test

    3. T-test两种最常见的情况

    • 有一组试验样本数据,与已知标准均值去做比较
    ### 已知A基因在总体均值中为15,观察5个人中A(13.1,16.2,14.9,15.8,17.7),分析该病人基因A有无显著升高。
    res <- c(13.1,16.2,14.9,15.8,17.7)
    t.test(res,mu = 15,alternative = "greater") ##单端变大,所以alternative="greater"
    
    
    • 两批独立随机试验结果,需要比较是否有差异(已知样本均值,样本方差相等)
      • 两个样本是独立的随机样本(一般仪器测量的属于正态分布,有多个因素影响,而没有主效因素影响同属于正态分布)
      • 两个总体都是正态分布
      • 两个总体方差未知但相等(两批实验组内的variation不能过大)


        两批实验结果,比较是否有差异
    ### 2. compare two sample
    geneB.ctrl <- c(12.33,7.56,11.47,9.82,9.14)
    geneB.deoxy <- c(10.41,14.82,14.13,15.81,13.62)
    t.test(geneB.ctrl,geneB.deoxy)
    
    
    • 配对样本的均值比较T-test(如同组实验样本的前后进行比较,一个group比较用药前和用药后)作差,如果没差异的话是根0比较接近。即可根据公式进行检验。得出的T-test值后查表
    ### 3. paired t.test
    before.fitness=c(94,101,110,103,97,88,96,101,104,116.5)
    after.fitness <-
    
    
    
    • 2组独立随机试验结果,在方差不相等的情况下做比较(应该首先用F检验来检查方差是否相等,在方差不相等的情况下,应该使用t'检验或者是Wilcox秩和检验)
    ### 4. compare two sample ,方差不相等
    geneB.ctrl <- c(12.33,7.56,11.47,9.82,9.14)
    geneB.deoxy <- c(3.41,14.82,14.13,15.81,4.62)
    
    ## 先F检验var.test检测两个样本内方差是否相等
    var.test(geneB.ctrl,geneB.deoxy)
    
    ## t.test
    t.test(geneB.ctrl,geneB.deoxy,var.equal = F)
    
    ## wilcox test
    wilcox.test(geneB.ctrl,geneB.deoxy)
    

    5. 列联表检验

    生物信息中常见的列联表检验问题即GO/KEGG富集分析问题


    GO/KEGG的列联表检验 K.Pearson与拟合优度检验
    • 利用R语言中的chisq.test函数
    # chisq test 2 
    ratio_vec = c(335,125,160)
    prob_vec = c(9,3,4) / 16
    chisq.test(ratio_vec,p = prob_vec)
    
    列联表检验问题
    • 大样本水平下,我们认为K近似服从卡方分布,从而进行卡方检验。小样本情况,即表格中理论频数小于5,加和样本总数n<40,应该使用Fisher exact test精准检验。而当理论频数大于5时,进行卡方检验
    • Fisher exact test本质上是超几何分布检验,在生物信息上如富集分析,判断某位点是否为突变位点。
    # fisher test 
    test_mat = matrix(c(55,200,200,19800),ncol = 2,nrow = 2)
    fisher.test(test_mat)
    

    相关文章

      网友评论

        本文标题:生物统计——假设检验

        本文链接:https://www.haomeiwen.com/subject/kezirctx.html