生物标志物研究的功效计算/样本量

机器算法验证 r 统计能力
2022-03-13 08:07:31

我们有一个潜在的生物标志物来预测患者是否患有癌症。生物标志物测试结果是阳性或阴性的二进制。我们想了解需要测试的患者数量,以确定该生物标志物是否是一个好的预测指标。

从互联网上阅读看来,要走的路是看敏感性(病例数)和特异性(对照数)。建议您将这种情况视为单样本比例测试,但目前尚不清楚您应该如何估计灵敏度以及您准备排除的范围。如果说我认为任何灵敏度大于 0.8 的生物标志物都是“好”的,那么您将如何设置这两个变量?我希望我的零假设是生物标志物并不比随机分配好,即灵敏度为 0.5。任何人都可以举一个最好的例子来做到这一点(特别是如果它在 R 中)。

1个回答

让我们谈谈敏感性(我们将用表示),特异性是相似的。以下是一种常客方法;如果这里的一位贝叶斯主义者可以添加另一个答案来讨论另一种解决方法,那就太好了。p

假设你招募了癌症患者。您将您的生物标志物测试应用于每个,因此您将获得一系列 0 和 1,我们将其称为的条目将具有成功概率的伯努利分布。的估计希望的置信区间来判断您的估计精度nxxppp^=x/np^p

你的问题是说你想知道应该有多大。要回答这个问题,您需要查阅生物标志物文献以确定“大”有多大,以及由于采样错误您可以容忍的灵敏度有多低。假设如果一个生物标志物的灵敏度大于(实际上并不是那么好),您就认为它是“好”的,并且您希望足够大,因此有 90% 的机会检测到 . 假设您想将显着性水平控制在np=0.5np=0.57α=0.05

至少有两种方法——分析和模拟。中的pwrR已经存在以帮助进行此设计 - 您需要先安装它。接下来你需要一个效果大小,然后你想要的功能是pwr.p.test.

library(pwr)
h1 <- ES.h(0.57, 0.5)
pwr.p.test(h = h1, n = NULL, sig.level = 0.05, power = 0.9, alt = "greater")

     proportion power calculation for binomial distribution (arc... 

              h = 0.1404614
              n = 434.0651
      sig.level = 0.05
          power = 0.9
    alternative = greater

因此,当您的显着性水平为时,您需要大约名癌症患者才能检测到的灵敏度,功效 为我也尝试过模拟方法,它给出了类似的答案。当然,如果真正的灵敏度高于(您的生物标志物更好),那么您需要更少的人来检测它。4350.570.900.050.57

获得数据后,运行测试的方法是(为了论证,我将模拟数据)。

n <- 435
sens <- 0.57
x <- rbinom(n, size = 1, prob = sens)
binom.test(sum(x), n, p = 0.5, alt = "greater")

    Exact binomial test

data:  sum(x) and n 
number of successes = 247, number of trials = 435,
p-value = 0.002681
alternative hypothesis: true probability of success is greater than 0.5 
95 percent confidence interval:
 0.527342 1.000000 
sample estimates:
probability of success 
             0.5678161 

敏感性估计为真正重要的是的置信区间,在这种情况下为0.568p[0.527,1]

编辑:如果您更喜欢模拟方法,那么您可以这样做:设置

n <- 435
sens <- 0.57
nSim <- 1000

让我们runTest成为

runTest <- function(){
  x <- rbinom(1, size = n, prob = sens)
  tmp <- binom.test(x, n, p = 0.5, alt = "greater")
  tmp$p.value < 0.05
}

所以功率的估计是

mean(replicate(nSim, runTest()))
[1] 0.887