如何计算一项研究所需的样本量,其中一组受试者将在手术时测量一个连续变量,然后在两年后将它们分类为功能性结果或受损结果。
我们想看看该测量是否可以预测不良结果。在某些时候,我们可能希望在连续变量中得出一个切点,在该切点之上我们将尝试进行干预以减少受损结果的概率。
有任何想法吗?任何 R 实现。
如何计算一项研究所需的样本量,其中一组受试者将在手术时测量一个连续变量,然后在两年后将它们分类为功能性结果或受损结果。
我们想看看该测量是否可以预测不良结果。在某些时候,我们可能希望在连续变量中得出一个切点,在该切点之上我们将尝试进行干预以减少受损结果的概率。
有任何想法吗?任何 R 实现。
逻辑回归的样本量计算很复杂。我不会试图在这里总结它。此问题的合理可访问解决方案可在以下位置找到:
谢风云。逻辑回归的样本量表。医学统计学。1989 年 7 月;8(7):795-802。
谢风云等。一种简单的线性和逻辑回归样本量计算方法。医学统计学。1998 年 7 月 30 日;17(14):1623-34。
在 Hosmer & Lemeshow 的Applied Logistic Regression的最后一章(第 8.5 节 pp 339-347)中可以找到关于示例计算问题的易于理解的讨论。
我通常发现运行模拟更容易、更快。论文需要很长时间才能阅读、理解并最终得出结论,即它们不适用于人们感兴趣的特殊情况。
因此,我会选择一些主题,模拟您感兴趣的协变量(按您认为的方式分布),根据您提出的函数形式模拟好/坏结果(协变量的阈值效应?非线性?)使用您想要检测的最小(临床上)显着效应大小,通过分析运行结果并查看是否在您的 alpha 中发现了效应。重新运行 10,000 次,看看您是否在 80% 的模拟中找到了效果(或者您需要的任何其他功能)。调整主题的数量,重复,直到你有一个你满意的力量。
这具有非常通用的优点,因此您不限于特定的函数形式或特定数量或分布的协变量。您可以随机包含辍学或受协变量或结果的影响,请参阅上面 chl 的评论。您基本上事先对最终样本的分析进行了编码,这有时有助于将我的思想集中在研究设计上。它很容易在 R 中完成(矢量化!)。
继 Stephan Kolassa 的帖子之后(我无法将其添加为评论),我有一些用于模拟的替代代码。这使用了相同的基本结构,但被分解了更多,所以可能更容易阅读。它还基于Kleinman 和 Horton的代码来模拟逻辑回归。
nn 是样本中的数字。协变量应该是连续正态分布的,并标准化为均值 0 和 sd 1。我们使用 rnorm(nn) 来生成它。我们选择一个优势比并将其存储在odds.ratio 中。我们还为拦截选择了一个数字。这个数字的选择决定了样本经历“事件”的比例(例如,0.1、0.4、0.5)。你必须玩弄这个数字,直到你得到正确的比例。以下代码为您提供了 0.1 的比例,样本大小为 950,OR 为 1.5:
nn <- 950
runs <- 10000
intercept <- log(9)
odds.ratio <- 1.5
beta <- log(odds.ratio)
proportion <- replicate(
n = runs,
expr = {
xtest <- rnorm(nn)
linpred <- intercept + (xtest * beta)
prob <- exp(linpred)/(1 + exp(linpred))
runis <- runif(length(xtest),0,1)
ytest <- ifelse(runis < prob,1,0)
prop <- length(which(ytest <= 0.5))/length(ytest)
}
)
summary(proportion)
summary(proportion) 确认比例为 ~ 0.1
然后使用相同的变量,计算 10000 次运行的功效:
result <- replicate(
n = runs,
expr = {
xtest <- rnorm(nn)
linpred <- intercept + (xtest * beta)
prob <- exp(linpred)/(1 + exp(linpred))
runis <- runif(length(xtest),0,1)
ytest <- ifelse(runis < prob,1,0)
summary(model <- glm(ytest ~ xtest, family = "binomial"))$coefficients[2,4] < .05
}
)
print(sum(result)/runs)
我认为这段代码是正确的——我对照 Hsieh, 1998 中给出的例子(表 2)检查了它,它似乎与那里给出的三个例子一致。我还针对 Hosmer 和 Lemeshow 的第 342 - 343 页上的示例对其进行了测试,发现它的功效为 0.75(与 Hosmer 和 Lemeshow 中的 0.8 相比)。因此,在某些情况下,这种方法可能低估了力量。但是,当我在这个在线计算器中运行相同的示例时,我发现它与我的一致,而不是 Hosmer 和 Lemeshow 中的结果。
如果有人能告诉我们为什么会这样,我很想知道。
关于样本量的一个简单问题是:对于数据分布的 [未知] 均值,需要多大的样本才能获得不超过 2d 的 95% 置信区间。另一个变体是:在测试 H时,需要多大的样本才能在处具有 0.9 的功效。您似乎没有指定任何选择样本量的标准。
实际上,听起来您的学习将按顺序进行。在这种情况下,将其作为实验的明确部分可能是值得的。顺序抽样通常比固定样本量的实验更有效[平均需要更少的观察]。
Farrel:我添加这个是为了回复你的评论。
为了获得样本量,通常为估计值指定某种精度标准 [例如 CI 的长度] 或在要对数据执行的指定替代测试的功率。您似乎提到了这两个标准。原则上这并没有错:您只需要进行两次样本量计算 - 一个是为了达到所需的估计精度 - 而另一个是为了在指定的替代方案下获得所需的功率。那么需要两个样本量中较大的一个。[顺便说一句 - 除了说 80% 的功率 - 你似乎没有提到你计划执行的测试 - 或者你想要 80% 的功率的替代方案。]
至于使用顺序分析:如果受试者同时参加研究,那么固定样本量是有意义的。但是,如果科目很少而且相距甚远,则可能需要一两年[或更长时间]才能获得所需的注册人数。因此,审判可能会持续三年或四年[或更长时间]。在这种情况下,顺序方案提供了比这更早停止的可能性 - 如果您正在寻找的效果在试验的早期变得具有统计学意义。