如何计算一项研究所需的样本量,在该研究中,一组受试者将在手术时测量一个连续变量,然后在两年后将其分类为功能预后或预后不良。
我们想看看这种测量是否可以预测出不良的结果。在某个时候,我们可能想在连续变量中得出一个切入点,在该切入点之上,我们将尝试进行干预以减少结果受损的可能性。
有任何想法吗?任何R实现。
如何计算一项研究所需的样本量,在该研究中,一组受试者将在手术时测量一个连续变量,然后在两年后将其分类为功能预后或预后不良。
我们想看看这种测量是否可以预测出不良的结果。在某个时候,我们可能想在连续变量中得出一个切入点,在该切入点之上,我们将尝试进行干预以减少结果受损的可能性。
有任何想法吗?任何R实现。
Answers:
用于逻辑回归的样本量计算很复杂。我不会尝试在这里进行总结。在以下方面找到了针对此问题的合理可行的解决方案:
谢风云 逻辑回归的样本量表。医学统计学。1989年7月; 8(7):795-802。
谢风云,等。线性和逻辑回归的简单样本量计算方法。医学统计学。1998年7月30日; 17(14):1623-34。
关于示例计算问题的无障碍讨论,可以在Hosmer&Lemeshow的Applied Logistic回归的最后一章(第8.5页339-347节)中找到。
我通常发现更容易,更快地运行模拟。论文需要花费大量时间阅读,理解和最终得出结论,认为它们不适用于人们感兴趣的特殊情况。
因此,我只选择一些主题,模拟您感兴趣的协变量(按您认为的那样分布),根据您提出的函数形式模拟好/坏结果(协变量的阈值效应?非线性?)使用您想要检测的最小(临床)显着效应大小,通过分析运行结果,并查看是否在alpha处找到了该效应。重新运行10,000次,看看是否在80%的仿真中找到了效果(或您需要的任何其他功能)。调整主题的数量,重复进行直到您拥有满意的能力。
这具有非常通用的优点,因此您不必局限于特定的函数形式或特定数量的协变量或分布。您可以随机包含或受协变量或结果影响而包含辍学,请参阅上面的chl评论。您基本上可以事先对要在最终样本上进行的分析进行编码,这有时有助于我将注意力集中在研究设计上。它很容易在R中完成(向量化!)。
在斯蒂芬·科拉萨(Stephan Kolassa)发表文章之后(我不能添加它作为评论),我还有一些用于模拟的替代代码。它使用相同的基本结构,但分解得更多,因此也许更容易阅读。它还基于Kleinman和Horton的代码来模拟逻辑回归。
nn是样本中的数字。协变量应连续正态分布,并标准化为均值0和sd1。我们使用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)
摘要(比例)确定比例为〜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的p 342-343上的示例对其进行了测试,该示例得出0.75的功效(而Hosmer和Lemeshow则为0.8)。因此,在某些情况下,这种方法可能会低估功率。但是,当我在此在线计算器中运行相同的示例时,我发现它与我一致,而不是Hosmer和Lemeshow的结果。
如果有人可以告诉我们为什么会这样,我很想知道。
关于样本大小的一个简单问题是:对于[未知]数据分布的平均值,要获得不超过2d的95%置信区间需要多大的样本。另一个变体是:在测试H时,需要一个多大的样本才能在时具有0.9的。您似乎并未指定任何选择样本量的标准。0:θ = 0
实际上,这听起来像您的学习将按顺序进行。在这种情况下,可能需要将其作为实验的明确部分。顺序采样通常比固定样本大小的实验[平均所需的观察次数更少]效率更高。
farrel:我添加此内容是为了回复您的评论。
为了获得样本量,通常会指定某种精确度标准,以特定估计值(例如CI的长度)或在要对数据进行测试的指定替代条件下的功效。您似乎已经提到了这两个条件。原则上,这没有什么不对:您只需要进行两次样本大小计算即可-一种可以达到所需的估计精度,另一种可以通过上述方法获得所需的功效。则需要两个样本中较大的一个。[顺便说一句-除了说80%的功率-您似乎没有提到计划执行的测试-或想要80%的功率的替代方案。]
关于使用顺序分析的方法:如果同时将受试者全部纳入研究,则固定样本量是有意义的。但是,如果受试者人数很少且相距甚远,则可能需要一两年或更长时间才能获得所需的人数。因此,审判可能会持续三到四年[或更长时间]。在这种情况下,序贯方案可提供比该方案更早停止的可能性-如果您要寻找的作用在试验的早期就具有统计学意义。