分享

R数据分析:临床研究样本量计算、结果解读与实操

 CodewarCodewar 2024-06-13 发布于山东

很久之前给大家写过一篇文章详细介绍了样本量计算的底层逻辑,不过那篇文章原理是依照卡方比较来写的,可以拓展到均值比较,但视角还是比较小,今天从整个临床研究的角度结合具体的例子谈谈大家遇到的样本量的计算方法。有操作,有原理,有比较,认真阅读下来应该会大有裨益。

统计课上都讲过:我们做统计推断无外乎两个目的:一个是估计总体参数(一般是均值和率),一个是假设检验:

Inferential statistics has two parts: estimation of population parameter and testing of hypothesis. According to the type of medical research, any one of them can be adopted. The estimation method is used in prevalence/descriptive studies and the testing of hypothesis is used for cohort/case control/clinical trials.

估计参数的研究中能尽可能地把总体参数估计得准,假设检验过程能尽可能地少犯错误是我们计算样本量要达到的终极目标。

临床研究

新药或者新的治疗方式开发的临床研究一般分为四期:

每一期都涉及统计操作,也都涉及样本量的计算。统的看下来还是在做统计推断,计算逻辑依然在假设检验(所以本文将估计总体参数的样本计算略过),核心就目的一个:要正确的拒绝零假设:

本身我们做假设检验的时候客观的就会出现上表的情况,天然会犯两类错误,所以我们考虑样本量的目的就是尽可能减少犯错误的概率,对照上表可以从两个方面考虑,就是减小α和β。根据假设检验的原理实际操作中我们通常会把α设定为0.05,所以剩下的操作空间就是β,唯一的做法就是减小β从而增大统计效能(1-β)。

One of the most popular approaches to sample size determination involves studying the power of a test of hypothesis

而统计效能的重要影响因素之一就是样本量。所以我们要去计算样本量这里一定要注意是样本量影响了统计效能所以样本量重要(根源还是统计效能重要)。而不是常常听到的“样本量的影响因素包括β”,“计算样本量的时候要考虑统计效能”,这种表述统统都是错误的。统计效能我们永远是希望越大越好。我们是为了寻求更大的统计效能,减小犯二类错误所以我们才要去要寻求一个合适的样本量。逻辑不能搞反了。我们是Determines the minimum number of subjects for adequate study power。

当然,样本量是统计效能重要的影响因素但并非唯一的,α和效应量等也会对统计效能造成影响:

With continuous outcomes, 4 main components impact power: the specified effect size, the significance level, the sample size n, and the population variance σ2. Specifically, power increases with larger effect sizes, higher values of α, larger sample sizes, and less variability within the sample

比如对于一个两样本t检验,我们设定好α和β,效应量设定为Cohen·d0.5,就可以得到样本量为64的时候统计效能就可以超过0.8了。如果你觉得统计效能0.8够了,那么64个样本就够。

上面只是一个例子,临床研究的实验设计种类有很多,可以归结为下表:

对于上述研究设计,涉及到的假设检验如下面2张表:

总之我们要理解:我们计算样本量的目的就是尽可能减少上面的假设检验的犯错误情况。

我们再具体看计算思路和方法。

RCT研究的样本量计算

实验性研究中RCT是大家经常会做的,或者是经常需要计算样本量的研究类型。具体到统计比较又有三种情况了,分别叫做优效性实验,等效性实验和非劣效性实验:

在计算之前需要明确下面几个事情

所涉及到的公式可以参考下面文章:

Zhong B. How to calculate sample size in randomized controlled trial? J Thorac Dis. 2009 Dec;1(1):51-4. PMID: 22263004; PMCID: PMC3256489.

我们依然是来看例子,下面例子详细展示了一个连续变量为结局的优效性研究的例子:

就是我们预计一种新治疗能减少收缩压10mmhg,在实验组中130mmhg,对照组中140mmHg,优效性界值我们取-5mmHg,α和β取0.05和0.2,那么按照上面的公式可以计算得到每组样本是50人,共计需要样本100人。当然我们实际操作不会傻到对照公式一个一个去算,直接在R中使用下面代码即可:

TwoSampleMean.NIS(alpha=0.05, beta=0.2, sigma=10 , k=1, delta=-10, margin=-5)

输出如下,同样是50个样本:

结局为二分类变量的优效性研究的例子也给大家放一个:

就是我们预计新的治疗方法可以降低卒中的发病率,假设实验组发病率为0.338,对照组率为0.564,设定优效界值为-0.05,取α和β分别为0.05和0.2,按照上面公式可以计算得到91个样本每组,共需要样本182个。在R中使用下面代码:

TwoSampleProportion.NIS(  alpha=0.05, beta=0.2, 
p1=0.338, p2=0.564, k=1, delta=-0.226, margin=-0.05)

结果输出如下:

比公式多了2个,考虑约分造成的误差。

还有的时候我们单纯就是要证明差异,不考虑到底是优效性还是非劣效性的问题,这个时候可以理解为界值为0的优效性实验。看下面的例子:

就是说我们就想比较两组血压是否有差异,血压的总体标准差为20mmHg,两组的差值为15mmHg我们认为有意义,那么按照box1中的公式我们得到28个样本每组,共56个样本就可以,当然我们也可以使用下面代码直接得到结果:

pwr::pwr.t.test(
sig.level = 0.05,
type = "two.sample",
alternative = "two.sided",
power = 0.80,
d = 15/20)

得到结果也是每组29人,共需要58人(误差归因于约分):

需要注意的是函数中的d为效应量,其和绝对差异是有区别的,对于连续变量来讲,其就是绝对误差除以变异:

You need to calculate an effect size (aka Cohen’s d) in order to estimate your sample size. This effect size is equal to the difference between the means at the endpoint, divided by the pooled standard deviation.

那么对于此例子我们也可以将其看作是界值为0的优效性实验,但是根据优效和双侧假设的原理我们需要将α设定为0.025,如下代码计算后依然可以得到结果为28:

这样我们就将优效性/非劣效性实验研究的样本量计算和寻求差异的研究样本量计算统一起来了。

再看一个分类结局的例子:就是根据以往研究,治疗组的的高血压患病率是0.2,对照组是0.3,我们认为差异0.1在临床上是有意义的,那么在α为0.05,统计效能为0.8的情况下根据box2的公式可以算出每组样本应该为291,合计需要582个样本。

我们依然可以用两组率的比较的代码直接得到结果:

pwr.2p.test(h = ES.h(p1 = .2, p2 =0.3),
sig.level = .05,
power = .8,
alternative = "two.sided")

同样的我们依然可以将其看作是一个界值为0的非劣效/有效性研究,对应的样本量计算方法依然可以得到同样的的结果:

再一次巩固了将优效性/非劣效性实验研究的样本量计算和寻求差异的研究样本量计算是统一的。能看到这,其实基本的rct研究的样本量计算根本就难不住你了,恭喜你。

simon 两阶段

在新药的临床开发过程中,II期临床研究一般会初步地确定某一个药物的临床疗效,决定该药物是否值得进一步的投入和开发,这一步是失败风险最大的环节。同时,由于药物的临床疗效尚未确定,基于伦理的考虑,我们往往希望纳入的受试者控制在合理的数量,从而避免患者接受无效的治疗方案。

这个时候我们关注的重点是,及早地发现药物是否是未达到疗效,以便及早终止实验,及时止损,Simon两阶段的研究设计就实现了当药物疗效未达到预期疗效时,尽快终止试验的目的。根本思路是,将试验分为两个阶段,在第一个阶段完成时进行一次评估,如符合预期(如对治疗响应的患者达到预期人数),进行第二阶段。反之,终止试验。具体技术路线如下图:

可以看到,Simon两阶段设计是一个单臂设计并不涉及组间比较,第一阶段先来一批样本看一下药的响应情况,根据响应情况决定研究是否进入第二阶段。上图中的r1和r都是自己预先设定的标准,x1,x2是相应阶段的响应数量,还有统计中小概率事件的概率。

从上面的逻辑看,为了计算Simon两阶段设计的样本量我们需要事先设定一些值,一个是r1:第一阶段的响应标准(unacceptable response rate; baseline response rate that needs to be exceeded for treatment to be deemed promising);还有第二阶段的期望响应标准(response rate that is desirable; should be larger than pu)。Simon两阶段设计样本量的标准有两个一个叫做minimax design,另一个叫做optimal design,两种标准的逻辑是不一样的:Minimax design的目的是使使用的总样本量最少,optimal是使得第一阶段样本量最少。

Minimax design mainly aims to minimize the maximum sample size. Alternatively, optimal design aims to minimize the expected sample size

依然是看实操:下面是某篇文献中给到的在不同参数设定下两个标准下的样本量:

可以看到在第一阶段响应率设定在0.05,第二阶段不低于0.25响应率的前提下,所需要的样本量分别为Optimal:17,Minimax:16.

我们直接在R中输入下面代码:

ph2simon(0.05, 0.2, 0.05, 0.2)

输出如下:

和文献中一模一样。

小结

今天从临床研究的大的层面写了样本量计算的问题,涉及了大家经常会用到的研究设计的样本量计算,也是我经常被同学们问的,这个问题个人也认为很重要,但似乎没几个人能讲清楚,是医学研究生教育应该着力补齐的短板。这篇文章既有理论,又有实操,还有例子,实属难得。以下还有很多我写作本文时查阅的参考文献,供大家参考:

https://www./doi/JPMER/pdf/10.5005/jp-journals-10028-1623

https://www.ncbi.nlm./pmc/articles/PMC3148614/

http:///Calculators/Compare-2-Means/2-Sample-Equality

https://www./sample_size_t_z.html

https://www.ncbi.nlm./pmc/articles/PMC10020745/

https://www./power/binary-noninferior/

Sample Size Estimation in Clinical Research - CHEST (chestnet.org)

Sample Size Estimation in Clinical Research: From Randomized Controlled Trials to Observational Studies - PubMed ()

floppybunny.org/robin/web/virtualclassroom/stats/basics/articles/gpower/Gpower_tutorial_Prajapati_2010-.pdf

https://eprints./97113/8/WRRO_97113.pdf

https://www./calculators/power-sample-size-calculator.php

感谢大家耐心看完,自己的文章都写的很细,重要代码都在原文中,希望大家都可以自己做一做。如果对您有用请先记得收藏,再点赞分享。也欢迎大家的意见和建议,大家想了解什么统计方法都可以在文章下留言,说不定我看见了就会给你写教程哦,有疑问欢迎私信,有合作意向请直接滴滴我。

如果你是一个大学本科生或研究生,如果你正在因为你的统计作业、数据分析、模型构建,科研统计设计等发愁,如果你在使用SPSS, R,Mplus中遇到任何问题,都可以联系我。因为我可以给您提供最好的,最详细和耐心的数据分析服务。

如果你对Z检验,t检验,方差分析,多元方差分析,回归,卡方检验,相关,多水平模型,结构方程模型,中介调节,量表信效度等等统计技巧有任何问题,请私信我,获取详细和耐心的指导。

如果你或你的团队需要专业的科研数据清洗,建模服务,教学培训需求等等。请联系我。

If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #Reports, #Composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.

Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??

Then Contact Me. I will solve your Problem...

If You or Your Research Team Need Professional Scientific Data Cleaning, Model Building Services or Statistical Consulting... Please Contact Me.

往期精彩

R数据分析:网状meta分析的理解与实操

R数据分析:非劣效性研究设计的统计处理方法,原理和实例

R数据分析:集成学习方法之随机生存森林的原理和做法,实例解析

R数据分析:净重新分类(NRI)和综合判别改善(IDI)指数的理解

R数据分析:反事实框架和因果中介的理论理解

R数据分析:解决科研中的“可重复危机”,理解Rmarkdown

R数据分析:多项式回归与响应面分析的理解与实操

R数据分析:生存数据的预测模型建立方法与评价(二)

R数据分析:生存数据的预测模型建立方法与评价

R数据分析:生存分析的列线图的理解与绘制详细教程

R数据分析:结合APA格式作图大法讲讲ggplot2和ggsci,请收藏

R数据分析:变量间的非线性关系,多项式,样条回归和可加模型

Mplus数据分析:性别差异gendergap的相关研究如何做?

R机器学习:分类算法之logistics回归分类器的原理和实现

R数据分析:PLS结构方程模型介绍,论文报告方法和实际操作

R数据分析:跟随top期刊手把手教你做一个临床预测模型

R数据分析:如何用层次聚类分析做“症状群”,实例操练

R数据分析:工具变量回归与孟德尔随机化,实例解析

R数据分析:潜类别轨迹模型LCTM的做法,实例解析

R文本挖掘:中文词云生成,以2021新年贺词为例

R机器学习:分类算法之判别分析LDA,QDA的原理与实现

R机器学习:重复抽样在机器学习模型建立过程中的地位理解

R数据分析:用lme4包拟合线性和非线性混合效应模型

R数据分析:孟德尔随机化中介的原理和实操

R数据分析:生存分析的列线图的理解与绘制详细教程

R数据分析:cox模型如何做预测,高分文章复现

R数据分析:广义估计方程式GEE的做法和解释

R数据分析:潜类别轨迹模型LCTM的做法,实例解析

R数据分析:潜变量与降维方法(主成分分析与因子分析)

R数据分析:如何给结构方程画路径图,tidySEM包详解

R数据分析:生存分析与有竞争事件的生存分析的做法和解释

R机器学习:朴素贝叶斯与支持向量机的原理与实现

R数据分析:混合效应模型的可视化解释,再不懂就真没办法

R数据分析:tableone包的详细使用介绍

R数据分析:如何用lavaan包做结构方程模型,实例解析

R机器学习:分类算法之K最邻进算法(KNN)的原理与实现

R数据分析:潜增长模型LGM的做法和解释,及其与混合模型对比

R数据分析:论文中的轨迹的做法,潜增长模型和增长混合模型

R数据分析:纵向分类结局的分析-马尔可夫多态模型的理解与实操

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多