首页 > 其他分享 >R数据分析:临床研究样本量计算、结果解读与实操

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

时间:2024-06-13 21:23:41浏览次数:16  
标签:数据分析 研究 0.05 sample 实操 计算 样本量 我们

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

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

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)

输出如下:

 

和文献中一模一样。

小结

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

标签:数据分析,研究,0.05,sample,实操,计算,样本量,我们
From: https://www.cnblogs.com/Codewar/p/18246775

相关文章

  • python数据分析-笔记本内存和价格预测分析
    一、背景和研究意义计算机已成为现代社会不可或缺的工具,广泛应用于个人生活、学术研究和商业领域。随着科学技术的飞速发展,计算机不仅在性能上不断突破,在种类和品牌上也呈现出多样化和差异化。无论是办公、娱乐、学习还是创作,人们都离不开电脑的帮助。然而,随着电脑市场的不断......
  • python数据分析-房价数据集聚类分析
    一、研究背景和意义随着房地产市场的快速发展,房价数据成为了人们关注的焦点。了解房价的分布特征、影响因素以及不同区域之间的差异对于购房者、房地产开发商、政府部门等都具有重要的意义。通过对房价数据的聚类分析,可以深入了解房价的内在结构和规律,为相关决策提供科学依据......
  • PlugLink:让数据分析与工作流无缝连接(附源码)
    PlugLink:让数据分析与工作流无缝连接引言数据分析和自动化工作流已成为各个企业和个人提高效率的关键手段。今天,我要介绍一款名为PlugLink的工具,它不仅能帮助你轻松进行数据分析,还能将这些分析结果无缝连接到你的工作流中,实现真正的全自动化处理。本文将详细介绍如何使用......
  • 实操教程|PyTorch实现断点继续训练
    作者丨HUST小菜鸡(已授权)编辑丨极市平台最近在尝试用CIFAR10训练分类问题的时候,由于数据集体量比较大,训练的过程中时间比较长,有时候想给停下来,但是停下来了之后就得重新训练,之前师兄让我们学习断点继续训练及继续训练的时候注意epoch的改变等,今天上午给大致整理了一下,不全面......
  • MySQL实战--用户行为数据分析--8小时跟做(3)
    RFM模型_哔哩哔哩_bilibili8RFM模型{最近消费(Recency)、消费频率(Frequency)、消费金额(Monetary)三个指标)对用户黏性、忠诚度和收入这三个维度进行数值定量分析,然后和平均数(中位数)对比得到定性描述(高或低)--存储createtablerfm_model(user_idint,frequencyint,recentch......
  • 110.网络游戏逆向分析与漏洞攻防-装备系统数据分析-装备与技能描述信息的处理
    免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了内容参考于:易道云信息技术研究院上一个内容:109.商店与捨取窗口数据的处理码云版本号:4275a0966772e3fd4941ee......
  • python-数据分析-Matplotlib-1-进阶图形(气泡图-面积图-雷达图-玫瑰图-3D图)
    气泡图#-*-coding:utf-8-*-#气泡图#气泡图可以用来了解三个变量之间的关系,通过比较气泡位置和大小来分析数据维度之间的相关性。#例如在我们之前绘制的月收入和网购支出的散点图中,我们已经发现了二者的正相关关系,如果我们引入第三个变量网购次数,那么我们就需要使用气泡图......
  • python-数据分析-Matplotlib-1-基础图形(曲线图-散点-柱状-堆叠柱状-饼状图-直方图)
    曲线图#-*-coding:utf-8-*-#基础、曲线图importnumpyimportmatplotlib.pyplotasplt#设置字体SimHei:黑体#需要注意的是,使用中文字体后坐标轴上的负号将会无法显示,需要将`axes.unicode_minus`参数设置为`False`,这样才能让坐标轴上的负号正常显示plt.rcParams['f......
  • [数据分析与可视化] 基于Python绘制简单动图
    动画是一种高效的可视化工具,能够提升用户的吸引力和视觉体验,有助于以富有意义的方式呈现数据可视化。本文的主要介绍在Python中两种简单制作动图的方法。其中一种方法是使用matplotlib的Animations模块绘制动图,另一种方法是基于Pillow生成GIF动图。python学习资料已打包好,需......
  • TIKTOK海外抖音实操班:下载注册/配置/养号/引流/发视频/等等(共17课)
    这个课程教你怎样在Tiktok上注册、设置、养号、吸引流量和发布视频。内容包括市场前景、与抖音的区别、下载和设置、网络环境、注册账号、打造优质号、找热门素材、使用热门标签和音乐、保持视频清晰度、上传技巧、避免账号被降权或封禁、优化流量下降、最佳发布时间和提高完播......