单变量逻辑回归的样本量计算


11

如何计算一项研究所需的样本量,在该研究中,一组受试者将在手术时测量一个连续变量,然后在两年后将其分类为功能预后或预后不良。

我们想看看这种测量是否可以预测出不良的结果。在某个时候,我们可能想在连续变量中得出一个切入点,在该切入点之上,我们将尝试进行干预以减少结果受损的可能性。

有任何想法吗?任何R实现。


您是否希望在随访期间会有一些辍学?您的模型中还有其他协变量吗?
chl 2010年

让我从我的拇指中吸取辍学率-20%。实际上,我们将收集许多变量,例如年龄,创伤得分,但我想使计算力的过程尽可能简单。我经常发现讨论一个主要模型,然后讨论包含更多技巧和细微差别的次要模型很有用。
Farrel

好的,但是通常期望的百分比下降,协变量的数量以及协变量的度量是否有误差(例如,参见j.mp/9fJkhb)都输入公式(在所有情况下,都会增加样本量)。
chl

Answers:


7

用于逻辑回归的样本量计算很复杂。我不会尝试在这里进行总结。在以下方面找到了针对此问题的合理可行的解决方案:

谢风云 逻辑回归的样本量表。医学统计学。1989年7月; 8(7):795-802。

谢风云,等。线性和逻辑回归的简单样本量计算方法。医学统计学。1998年7月30日; 17(14):1623-34。

关于示例计算问题的无障碍讨论,可以在Hosmer&Lemeshow的Applied Logistic回归的最后一章(第8.5页339-347节)中找到。


7

我通常发现更容易,更快地运行模拟。论文需要花费大量时间阅读,理解和最终得出结论,认为它们不适用于人们感兴趣的特殊情况。

因此,我只选择一些主题,模拟您感兴趣的协变量(按您认为的那样分布),根据您提出的函数形式模拟好/坏结果(协变量的阈值效应?非线性?)使用您想要检测的最小(临床)显着效应大小,通过分析运行结果,并查看是否在alpha处找到了该效应。重新运行10,000次,看看是否在80%的仿真中找到了效果(或您需要的任何其他功能)。调整主题的数量,重复进行直到您拥有满意的能力。

这具有非常通用的优点,因此您不必局限于特定的函数形式或特定数量的协变量或分布。您可以随机包含或受协变量或结果影响而包含辍学,请参阅上面的chl评论。您基本上可以事先对要在最终样本上进行的分析进行编码,这有时有助于我将注意力集中在研究设计上。它很容易在R中完成(向量化!)。


您在R中有可行的案例吗?
Farrel

1
@Farrel-这是一个非常简短的脚本,它假定[0,1]-均匀分布的协变量,在协变量的第一和第三四分位数与标准正态噪声之间的OR为2,导致n = 100时的幂为0.34。我会试着看看一切对我的假设有多敏感:运行<-1000;运行<-1000;运行<-1000。nn <-100; set.seed(2010); 检测<-复制(n =运行,expr = {协变量<-符(nn);结果<-符(nn)<1 /(1 + exp(-2 * log(2)*协变量+ rnorm(nn))) ); summary(glm(结果〜协变量,家族=“ binomial”))$ coefficients [“协变量”,“ Pr(> | z |)”] <.05})cat(“ Power:”,sum(detections) / runs,“ \ n”)
斯蒂芬·科拉萨

1
如果您觉得更方便,可以将其附加为粘贴(pastebin.com)或Gist(gist.github.com),然后在评论中链接回该代码。
chl 2010年

@chl:+1,非常感谢!要点如下:gist.github.com/607968
Stephan Kolassa 2010年

很棒的代码,但是有问题。我不像你那么聪明。我需要逐步分解它。我认为是运行多少次模拟?什么是nn?是研究中的科目数量吗?然后,我看到您创建了协变量分布,并使它们根据阈值确定是或否。
Farrel

4

在斯蒂芬·科拉萨(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的结果。

如果有人可以告诉我们为什么会这样,我很想知道。


如果您不介意,我确实有2个问题。1)比例函数是否只是为了使截距正确?2)使用ytest的逻辑是什么(将概率与随机单次抽奖比较)?
B_Miner 2011年

@B_Miner 1)另一种方法-要正确获得比例,您需要正确设置截距-因此请调整截距,直到获得期望的比例。2)ytest的逻辑是,我们需要获得二或零的结果。因此,我们将每个样本从均匀分布与概率(概率)进行比较,以获得二分法的结果。不必从随机均匀分布中得出“ runis”-二项分布或其他分布可能对您的数据更有意义。希望这对您有所帮助(抱歉,回复延迟)。
安德鲁

3

关于样本大小的一个简单问题是:对于[未知]数据分布的平均值,要获得不超过2d的95%置信区间需要多大的样本。另一个变体是:在测试H时,需要一个多大的样本才能在时具有0.9的。您似乎并未指定任何选择样本量的标准。0θ = 0θ=10:θ=0

实际上,这听起来像您的学习将按顺序进行。在这种情况下,可能需要将其作为实验的明确部分。顺序采样通常比固定样本大小的实验[平均所需的观察次数更少]效率更高。

farrel:我添加此内容是为了回复您的评论。

为了获得样本量,通常会指定某种精确度标准,以特定估计值(例如CI的长度)或在要对数据进行测试的指定替代条件下的功效。您似乎已经提到了这两个条件。原则上,这没有什么不对:您只需要进行两次样本大小计算即可-一种可以达到所需的估计精度,另一种可以通过上述方法获得所需的功效。则需要两个样本中较大的一个。[顺便说一句-除了说80%的功率-您似乎没有提到计划执行的测试-或想要80%的功率的替代方案。]

关于使用顺序分析的方法:如果同时将受试者全部纳入研究,则固定样本量是有意义的。但是,如果受试者人数很少且相距甚远,则可能需要一两年或更长时间才能获得所需的人数。因此,审判可能会持续三到四年[或更长时间]。在这种情况下,序贯方案可提供比该方案更早停止的可能性-如果您要寻找的作用在试验的早期就具有统计学意义。


判断标准是好结果与坏结果的概率相差10%。或可以说,由于这将是逻辑回归,优势比=2。α= 0.05,功效= 80%,我尚不知道连续变量上的合并方差是多少,但让我们假设标准偏差为7mmHg。顺序分析会很好,但最终结果是在进行测量后的两年。
Farrel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.