前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据科学22 | 统计推断-多重检验

数据科学22 | 统计推断-多重检验

作者头像
王诗翔呀
发布2020-07-03 16:52:09
9070
发布2020-07-03 16:52:09
举报
文章被收录于专栏:优雅R优雅R

如果进行m次假设检验, :?=0, :?≠0。可能出现的结果如下:

?=0

?≠0

HYPOTHESES

Claim ?=0

U

T

?-R

Claim ?≠0

V

S

R

Claim

?0

?-?0

?

?0为H0为真的次数,R为拒绝H0的次数。 I型错误或假阳性错误:?=0时判断结果为?≠0,发生V次。 II型错误或假阴性错误:?≠0时判断结果为?=0,发生T次。

  • 假阳性率FPR(False positive rate):误报率,将阴性结果(?=0)称为阳性的概率, 。
  • FWER(Family-Wise Error Rate):出现至少一次假阳性错误的概率,Pr(V≥1)。
  • FDR(False Discovery Rate):所有判断结果为阳性的次数中,判断错误(假阳性)的比例 。

如果P值计算正确,所有P值小于?时被称为阳性,假阳性率FPR即 =?。

假设进行10000次假设检验,其中所有P<0.05的认为阳性,?=0.05,预期出现的假阳性次数为10000×0.05=500。所以如果进行了10000次假设检验并获得500个阳性结果,其中很有可能有大部分是假阳性结果。

在统计分析时进行多次假设检验,多重检验校正可以降低假阳性结果的发生。

➢校正显著性水平?
控制FWER——Bonferroni 校正

控制FWER的典型方法是Bonferroni 校正 ,它拒绝了所有的假阳性结果发生的可能性。

基本思路

进行?次假设检验,希望控制FWER使Pr(V≥1)<?,将每次检验的I型错误率控制在?/?之内。经过Bonferroni校正, =?/?,每次检验的P值小于 时认为结果是阳性。

进行10000检验, =0.05/10000=0.000005,当P<0.000005时认为结果是阳性,假阳性结果出现的次数为10000×0.000005=0.5,不到1次。

优点:便于计算,犯I型错误的概率很小;

缺点:过于保守,犯II型错误的概率(假阴性率)增大,很多阳性结果无法被检测出来。
‍‍‍‍控制FDR——BH校正‍‍‍‍

FDR校正没有FWER法那么保守严苛,但又不像未经校正的t检验有很高的假阳性率FPR。常用的方法为BH(Benjaminiand Hochberg)校正

基本思路

假设进行?次检验,控制FDR使 <?。计算每次检验的P值,结果按由小到大进行排序 ,…, ,找到第?个P值,当 ≤?× 时,认为结果是阳性,此时第1到第?个P值对应的检验都认为结果是阳性的。

进行10000次检验,控制 <0.05,如果得到500个阳性结果(R),其中假阳性结果(V)小于500×0.05=25个。

优点:便于计算,不会过于保守;
缺点:允许较Bonferroni校正更多的假阳性结果。
➢校正P值(Adjusted P-values)

除了校正?水平,另一种多重检验校正方式是校正P值。

控制 FWER

假设进行m次检验,P值为 ,…, ,校正的P值 =min ?× , 1。校正P值不大于1,?× 大于1时校正P值取值为1。

回顾Bonferroni校正, =?/?。

当 <?时,认为结果是阳性的,即把FWER控制在?水平。

控制FDR

假设进行?次检验,计算每次检验的P值,结果按由小到大进行排序 ,…, ,校正的P值 = × ,此时校正的P值又称为Q值。

回顾BH校正, =?× 。

当 <?时,认为结果是阳性的,即把 FDR控制在?水平。

例:模拟生成1000个没有阳性结果的数据集

代码语言:javascript
复制
set.seed(1010093) 
pValues <- rep(NA, 1000) 
for (i in 1:1000) {
  y <- rnorm(20)
  x <- rnorm(20) 
  pValues[i] <- summary(lm(y ~ x))$coeff[2, 4]
}

生成1000个数据集,每个数据集中生成互不相关的正态随机数y和x。建立变量x和y之间的线性相关模型,并得到它们的相关系数矩阵,矩阵的第二行第四列的元素即为P值。

没有校正,查看小于0.05的P值的数量:

代码语言:javascript
复制
sum(pValues < 0.05)
[1] 51

实际上所有数据集中变量x和y是不相关的,但仍有51个数据集得到x与y相关的结论,即有51个假阳性结果。

Bonferroni校正控制FWER:

代码语言:javascript
复制
sum(p.adjust(pValues, method = "bonferroni") < 0.05)
[1] 0

BH校正控制FDR:

代码语言:javascript
复制
sum(p.adjust(pValues, method = "BH") < 0.05)
[1] 0

经过两种方法校正之后,减少了假阳性结果。

例:模拟生成1000个有50%阳性结果的数据集

代码语言:javascript
复制
set.seed(1010093) 
pValues <- rep(NA, 1000) 
for (i in 1:1000) {
  x <- rnorm(20)
  # First 500 beta=0, last 500 beta=2 
  if(i<=500){
    y <- rnorm(20) }
  else{
    y<-rnorm(20,mean=2*x) 
  }
  pValues[i] <- summary(lm(y ~ x))$coeff[2, 4] 
}
trueStatus <- rep(c("zero", "not zero"), each = 500)

生成1000个数据集,前500个仍旧包含不相关的随机变量x和y,后500个生成y的均值为x的2倍,y和x之间存在关系。前500个?等于零,而后500个?等于2,trueStatus变量声明实际?前500个为"zero",后500个"not zero"。

没有校正,查看小于0.05的P值的数量:

代码语言:javascript
复制
table(pValues < 0.05, trueStatus)
       trueStatus
        not zero zero
  FALSE        0  476
  TRUE       500   24

500个阳性结果全部被检测到;但实际x与y不相关时,有24个数据集得到x与y相关(阳性TRUE)的结论,即有24个假阳性结果。

Bonferroni校正控制FWER:

代码语言:javascript
复制
table(p.adjust(pValues, method = "bonferroni") < 0.05, trueStatus)
       trueStatus
        not zero zero
  FALSE       23  500
  TRUE       477    0

经过Bonferroni校正之后,没有假阳性结果,但出现了23个假阴性结果。

BH校正控制FDR:

代码语言:javascript
复制
table(p.adjust(pValues, method = "BH") < 0.05, trueStatus)
       trueStatus
        not zero zero
  FALSE        0  487
  TRUE       500   13

经过BH校正之后,500阳性结果全部被检测到,假阳性结果较校正前减少到13个。

代码语言:javascript
复制
par(mfrow = c(1, 2))
plot(pValues, p.adjust(pValues, method = "bonferroni"), pch = 19) 
plot(pValues, p.adjust(pValues, method = "BH"), pch = 19)

Bonferroni校正(图左),校正P值?×P?不大于1,故图的上方可以看到一条水平为1的线。

BH校正(图右),校正P值是关于P值的递增函数,校正P值比实际P值本身稍大,但并没有特别大,因为需要得到较多阳性结果。

编辑:李雪纯 冯文清

校审:张健 罗鹏

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ➢校正显著性水平?
    • 控制FWER——Bonferroni 校正
      • 基本思路
        • 缺点:过于保守,犯II型错误的概率(假阴性率)增大,很多阳性结果无法被检测出来。
      • ‍‍‍‍控制FDR——BH校正‍‍‍‍
        • 基本思路
          • 优点:便于计算,不会过于保守;
          • 缺点:允许较Bonferroni校正更多的假阳性结果。
      • ➢校正P值(Adjusted P-values)
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档