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.

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

临床研究

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

[图片上传失败...(image-e99ac7-1718283688417)]

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

[图片上传失败...(image-c18a0d-1718283688417)]

本身我们做假设检验的时候客观的就会出现上表的情况,天然会犯两类错误,所以我们考虑样本量的目的就是尽可能减少犯错误的概率,对照上表可以从两个方面考虑,就是减小α和β。根据假设检验的原理实际操作中我们通常会把α设定为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个样本就够。

[图片上传失败...(image-8a6fd1-1718283688417)]

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

[图片上传失败...(image-8ae282-1718283688417)]

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

[图片上传失败...(image-e15667-1718283688417)]

[图片上传失败...(image-56d6ac-1718283688417)]

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

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

RCT研究的样本量计算

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

[图片上传失败...(image-67e5d8-1718283688417)]

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

[图片上传失败...(image-4b155c-1718283688417)]

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

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

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

[图片上传失败...(image-2755c9-1718283688417)]

就是我们预计一种新治疗能减少收缩压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个样本:

[图片上传失败...(image-48ab93-1718283688417)]

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

[图片上传失败...(image-f44bf6-1718283688417)]

就是我们预计新的治疗方法可以降低卒中的发病率,假设实验组发病率为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) 

结果输出如下:

[图片上传失败...(image-54258b-1718283688416)]

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

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

[图片上传失败...(image-a2ed15-1718283688416)]

[图片上传失败...(image-6694e4-1718283688416)]

就是说我们就想比较两组血压是否有差异,血压的总体标准差为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人(误差归因于约分):

[图片上传失败...(image-3bbf4e-1718283688416)]

需要注意的是函数中的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:

[图片上传失败...(image-52b48-1718283688416)]

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

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

[图片上传失败...(image-4cb9e4-1718283688416)]

[图片上传失败...(image-4f8bd4-1718283688416)]

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

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

[图片上传失败...(image-423871-1718283688416)]

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

[图片上传失败...(image-2fcd42-1718283688416)]

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

simon 两阶段

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

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

[图片上传失败...(image-df05dd-1718283688416)]

可以看到,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

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

[图片上传失败...(image-d274a2-1718283688416)]

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

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

ph2simon(0.05, 0.2, 0.05, 0.2)

输出如下:

[图片上传失败...(image-f8ea1f-1718283688416)]

和文献中一模一样。

小结

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容