一、现状与问题 样本量估算是医学相关研究必不可少的一个环节,临床预测模型研究也不例外。那么如何计算临床预测模型开发样本量呢? 据我检索,国内很多预测模型研究沿用了一些样本量估算经验方法,其中最为常用的方法就是确保每个预测参数至少有10个事件,也被称为十分之一法则,即10 EPV(Events per variable),就是说要确保每个预测参数(即回归方程中的每个β项)至少有 10 个事件被考虑纳入预测模型方程中。 另外,孙振球教授主编的《医学统计学(第四版)》也给出了一些常用的经验方法,比如:自变量个数的15~20倍(logistic回归分析)、自变量个数的5~10倍(多元线性回归)、自变量个数的15~20倍(Cox回归)。个人认为这些可以看作是10 EPV的扩展。 但是,上述估算方法仅仅是经验做法,只是考虑了最终纳入模型的变量个数(实际上考虑的是系数β的个数),没有考虑到多分类、交互作用、非线性关系等方面的影响,因此,最好是使用每个候选预测因子参数的事件数(EPP)来进行预测。候选参数很重要,因为模型过拟合的程度取决于所考虑的预测参数总数,而不仅仅是最终模型方程中包含的预测参数。 此外,实际所需的样本量取决于具体情况,不仅取决于事件数量与候选预测参数数量的关系(EPP),还取决于参与者总数、研究人群中的结果比例(发生率)以及模型的预期预测性能。 二、更推荐的方法 Richard D Riley等学者推出了一种专用于开发临床预测模型的样本量估算方法,并开发出了实用的计算工具,近年来被广泛使用。该方法以论文的形式发表在2020年的BMJ杂志上,即:Calculating the sample size required for developing a clinical prediction model。 具体是怎么回事呢?我们一起学习下吧。 Richard D Riley等设计了4个步骤来估算预测模型的样本量,每个步骤都是根据特定的问题算得一个样本量,然后采用4个样本中最大者作为最后确定的样本量,下面是4个步骤的大概描述,仅列出步骤1的公式图。 第1步:多大的样本量才能精确估计总体结果风险或平均结果值? 第2步:多大的样本量可以得到所有个体平均误差较小的预测值? 第3步:多大的样本量可以产生较小的所需预测效应收缩? 第4步:多大的样本量可以使模型拟合度达到较小的乐观程度? 这4个步骤适用范围广,不论是连续、二元分类的结局指标,还是时间到事件(time-to-event)的结局指标,都可以用。 Richard D Riley等还设计了一个成熟的Stata和R包,名字就叫做:pmsampsize。利用这个包,研究者就可以在特定的研究环境中计算预测模型所需的最小样本量,该包的目的是最大限度地降低模型过拟合的可能性,同时对关键参数进行精确估计。 最后,Richard D Riley等学者在论文中给出了一些建议,我个人觉得很实用,分享给大家。 1、上述方法仅计算所需最小的样本量,实际上样本量越大,模型越可靠; 2、数据应具有足够的质量,并能代表目标人群和应用环境,否则预测将不精准; 3、最好使用所有可用数据进行模型开发(即避免数据分割),并使用重采样方法(如bootstrap)进行内部验证。 4、采用机器学习开发预测模型不仅要计算样本量,而且样本量通常更大,数据少了很容易过拟合。 5、外部验证也可以用上述方法计算样本量,如果只涉及模型小幅度更新,样本量可以更小。 当然,该论文还描述了更多细节与实用的建议,如果大家感兴趣的话,可以看看原论文。 三、用R语言计算样本量 我们来体验下R语言版的pmsampsize包,先安装pmsampsize包,打开帮助文档,可以看到有关pmsampsize包的描述,我把它翻译了下: pmsampsize可用于计算连续、二元或生存(时间到事件)结果模型开发所需的最小样本量。Riley等人提出了一系列样本量应满足的标准。这些标准旨在将过拟合降到最低,并确保预测模型中关键参数的精确估计。 对于连续性结果,有4个标准: 1) 过拟合程度小,即预测效应预期缩小10%或更小。(注:对应前面介绍的步骤3) 2) 模型的表观R方值和调整R方值的绝对差值小于0.05。(对应步骤4) 3) 精确估计残差标准差。(对应步骤2) 4) 精确估计平均结果值。(对应步骤1) 样本量计算要求用户预先指定(例如,根据以前的证据)模型的预期R方,以及相关人群的平均结果值和结果值的标准差。 对于二元或生存(时间到事件)结果,有3个标准: 1) 过拟合程度小,即预测效应的预期缩减不超过10%。(对应步骤3) 2) 模型的表观R方值和调整后的Nagelkerke's R方值绝对差值小于0.05。(对应步骤4) 3) 精确估计(在 /- 0.05范围内)预测关键时间点的人群平均结果风险。(对应步骤1) 四、代码演示 1、二分类资料(logistic回归预测模型) library(pmsampsize) pmsampsize(type = 'b', rsquared = 0.288, parameters = 24, prevalence = 0.174) 解读:使用 24 个候选预测参数建立二元结果多变量预测模型所需的最小样本量。根据以往的证据,假设发生率预计为0.174(17.4%),现有预测模型的(取自现有预测模型的校正Cox-Snell R方)R方值下限为0.288。 还有另一种情况,假设我们无法从现有的预测模型中获得Cox-Snell R平方估计值,但有报告称现有预测模型的C统计量为(0.89)。我们可以使用这个 C 统计量和患病率,用 Riley 等人(2020)的方法近似计算 Cox-Snell R 平方。用法简单,使用cstatistic() 选项代替 rsquared() 选项即可。
2、连续结果(线性预测模型) 以连续变量为例,计算使用 20 个候选预测因子建立连续性结果多变量预测模型所需的最小样本量。我们假设该领域现有的预测模型的调整R平方为0.9,人群中该连续变量的平均值为26.7,SD为8.7。 pmsampsize(type = 'c', rsquared = 0.9, parameters = 20, intercept = 26.7,sd = 8.7) 3、生存分析(Cox预测模型) 计算使用30 个候选预测因子建立生存结果多变量预测模型所需的最小样本量。假设我们知道现有的同领域预测模型的调整R平方为0.051。此外,在之前的研究中,平均随访时间为2.07年,总体事件发生率为0.065。我们选择一个感兴趣的时间点,使用新开发的2年模型进行预测。
结果就不贴了,这个包的用法挺简单,大家可以自由体验。 |
|
来自: 昵称69125444 > 《科研》