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

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

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

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)

输出如下:

 

和文献中一模一样。

小结

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

posted @ 2024-06-13 21:10  Codewar  阅读(65)  评论(0编辑  收藏  举报