在我们经常接触的统计模式中,我们是在寻求推翻原假设,证明差异,这种统计模型在传统的临床试验中,在各种统计推断中已经成为默认了。在传统的临床试验中通常会将一种新的治疗方法与标准治疗或安慰剂进行比较,从而证明这种新治疗具有更好的疗效,这类试验的原假设是这两种治疗方案的治疗效果没有差异。如果统计分析拒绝这一假设,说明这两种治疗的疗效是有差别的,即出现统计学上差异性展示出显著的P值,这个时候就证明了我们的研究目的。

Traditional statistical methods were designed to demonstrate differences and cannot easily show that a new treatment is similar to an older one.

但是,当我们开发新药或者新的治疗方法的时候,这个时候我们的目的可能并不是找到一种更有效的方法,而是找到一种与标准治疗疗效相似的新疗法,同时具有其他一些优势,如成本更低、副作用更少,或更加便捷。因其具备的这些优势,这种几乎与标准治疗一样有效的新治疗方法,在实践中对某些特定的患者来说可能是首选。换成统计语言就是我们这个时候的统计目的并不是要证明差异性,而是要证明相似性。我们要回答的问题是“这个新药或者新方法是不是不劣于现有的治疗方法”而非“新方法是否有效”。传统的统计推断证明差异存在的思路就行不通了。

上面这种情况所对应的试验设计就是非劣效性试验(等效性实验也是如此理解)。目的是严格评估一种新的治疗方案,通过与公认有效的治疗方案进行对比,来证明该治疗方案几乎与标准治疗方案的疗效一致性(即不存在劣势)。

In another context, the new treatment may offer lower cost and/or better patient compliance but might have a lower efficacy than the standard treatment. A non-inferiority study is designed to show that the new treatment is not less effective than the standard treatment to within a pre-specified margin of clinical indifference

传统统计为什么不行

为了大家更好地理解,在写非劣实验正确的统计方法之前,我们先帮助大家理解“为什么传统统计推断不能回答“非劣效”的问题”。

同学们经常有一个比较容易陷进去的逻辑是:既然统计显著可以说明两组间有差异,那么反过来一想统计不显著不就是两组差异不显著吗,这不是就是说两组效果相近----就证明了“非劣效”吗?这个逻辑似乎说的通,但是是不对的。统计不显著并不意味着没差异,并不意味着两个方法效果一样。

比如,看下图:

上图描述的是三种治疗方案ABC的效应值分布,在上图中B和C的效应相对于0效应线都是不显著的,但是其分布不同(点估计和置信区间不同),我们就不能简单说B和C都不劣于原方法。如果这样说了,和方案A比较就矛盾了(A是一定优于原方案,而且也优于B,但是不优于C,那么B个C能一样吗?);从另外的角度也可以理解这个问题:统计上不显著是没有达到小概率的标准,比如新药事实上在94%的情况下都比原药劣,但是其没达到我们设定的小概率标准,这个时候在统计上两药是没差异的,但是以此来说明新药的非劣效性肯定是错的离谱了嘛(本身新药在94%的情况下都比原药效果劣怎么能说是非劣呢)。所以直接以统计差异来证明“非劣效”是很荒唐的。

以上希望能帮助大家理解为什么统计不显著不能证明相似性。要记住:'No statistically significant difference’ can-not be used to support a conclusion of ‘no difference’ or of ‘equivalence'.

非劣效界值

上面讲过非劣效并不是一个简单的统计推断得到个显著性就行的,要说明新药不比老药差我们需要提前设定“不比老药差的标准”,然后将差异的置信区间和这个标准进行比较从而得出结论。这个标准就叫做“非劣效界值”,关于这个界值的理解,下面文献给出了很好的示例说明:

非劣效性界值的选择往往是主观的,而不是基于特定的标准,自己去文献荟萃或者自己能自圆其说就行。但一点是明确的的这个界值一定比目前方法能达到的效应值小很多。

https://support.sas.com/resources/papers/proceedings20/4641-2020.pdf

统计原理

通常在进行非劣效性试验结果分析的时候,我们会为两种药效果之间的差异构建一个单侧95%或97.5%的置信区间(从L到∞;负值代表了试验治疗的劣效性),并将下限“-L”与非劣效性界值进行比较。如果置信区间的下限值高于或位于非劣效性界值的右侧,则证明了其非劣效性。

设定好非劣效界值之后我们判断结果时遇到的可能性有三个,像下图中一样,蓝色的情况就是新药与老药效应差的效应置信区间全部在非劣效界值区域,效应的置信区间低点都在非劣效界值内,就意味着A是非劣效的;同理绿色的就是可能非劣效也可能不是;红色则是劣效。

实际例子

下图中是一个简明的非劣效性试验结果分析的实际例子:

上面的例子的效应是连续的,整个统计分析过程已经写的非常清楚了,我们再来看一个分类变量的做法,依然是做差比置信区间的思想:

在上面的例子中,依然是将效应差值的置信区间求出来,将区间和非劣效界值进行对比。

但是很多的时候对于分类结局很多的时候我们的效应表示是OR或者RR,这个时候就不是做差了,而是直接将OR或RR和界值进行比较,如下:

那么这个时候我们需要计算OR或RR的置信区间,示例如下:

可以看到这个时候我们是估计的RR的置信区间,然后和界值比较得到的非劣效结论。

实际上有学者提出来,做差好一点,建议大家还是去做差。

testing NI using RD not only controls well the Type I error and achieves the highest statistical power but also requires the smallest sample size compared to RR and OR

We performed a search for non-inferiority trials with binary outcomes reported in the New England Journal of Medicine between 2016 and 2019. Of the 24 randomized controlled trial (RCTs) found, 16 used an RD to specify the non-inferiority margin. Two used RR and six used OR.

实操

在弄明白原理并且看到了实际例子之后我们再来看操作。RD的置信区间计算,我们来看一个分类结局的置信区间的计算实例

下面的统计结果表达来自The Lancet。结果变量是分类变量,使用的率差来进行非劣效性的判断,方法就是得到两组率差的置信区间,将置信区间下限和非劣效界值进行对比从而得到结论。

我们来实操一波,在R语言的dani包中test.NI函数是专门用来进行非劣实验的数据法分析的。

还有我们也可以使用catfun包中的riskdiff函数

我们按照相应的参数说明,写出分类变量的四格表,运用两函数后两函数结果一模一样,结果如下:

推荐阅读:

Walker J. Non-inferiority statistics and equivalence studies. BJA Educ. 2019 Aug;19(8):267-271. doi: 10.1016/j.bjae.2019.03.004. Epub 2019 Apr 24. PMID: 33456901; PMCID: PMC7808096.

Tunes da Silva G, Logan BR, Klein JP. Methods for equivalence and noninferiority testing. Biol Blood Marrow Transplant. 2009 Jan;15(1 Suppl):120-7. doi: 10.1016/j.bbmt.2008.10.004. PMID: 19147090; PMCID: PMC2701110.

Testing Hypotheses for Equivalence and Non-inferiority with Binary and Survival

Outcomes. Joseph C. Gardiner, Department of Epidemiology and Biostatistics,

Michigan State University, East Lansing, MI 48824

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

  1. R数据分析:样本量计算的底层逻辑与实操,pwr包

    样本量问题真的是好多人的老大难,是很多同学科研入门第一个拦路虎,今天给本科同学改大创标书又遇到这个问题,我想想不止是本科生对这个问题不会,很多同学从上研究生到最后脱离科研估计也没能把这个问题弄得很明白 ...

  2. 大数据分析的下一代架构--IOTA架构设计实践[下]

    大数据分析的下一代架构--IOTA架构设计实践[下] 原创置顶 代立冬 发布于2018-12-31 20:59:53 阅读数 2151  收藏 展开 IOTA架构提出背景 大数据3.0时代以前,Lam ...

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

    最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...

  4. Everspin非易失性MRAM切换技术

    切换MRAM技术 切换MRAM使用1个晶体管,1个MTJ单元来提供简单的高密度存储器.Everspin使用获得专利的Toggle电池设计,可提供高可靠性.数据在温度下20年始终是非易失性的. 在读取期 ...

  5. 航空航天专用Everspin非易失性MRAM存储器

    TAMU是由瑞典乌普萨拉的Ångström航空航天公司(ÅAC)开发的高级磁力计子系统.TAMU的目的是提供地球磁场的磁力计数据,以便与子画面观测相关.实验性TAMU由使用领先技术制造的四种类型的设备 ...

  6. R数据分析:如何简洁高效地展示统计结果

    之前给大家写过一篇数据清洗的文章,解决的问题是你拿到原始数据后如何快速地对数据进行处理,处理到你基本上可以拿来分析的地步,其中介绍了如何选变量如何筛选个案,变量重新编码,如何去重,如何替换缺失值,如何 ...

  7. R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法

    之前给大家写过一个临床预测模型:R数据分析:跟随top期刊手把手教你做一个临床预测模型,里面其实都是比较基础的模型判别能力discrimination的一些指标,那么今天就再进一步,给大家分享一些和临 ...

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

    中介本身就是回归,基本上我看到的很多的调查性研究中在中介分析的方法部分都不会去提混杂,都是默认一个三角形画好,中介关系就算过去了,这里面默认的逻辑就是前两步回归中的混杂是一样的,计算中介效应的时候就自 ...

  9. Non-Volatile Register 非易失性寄存器 调用约定对应寄存器使用

    非易失性寄存器(Non-volatile register)是它的内容必须通过子程序调用被保存的一个寄存器.如果一个程序改变了一个非易失性寄存器的值,它必须保存在改变这个寄存器之前堆栈中保存旧的值和在 ...

  10. 解决CsvWriter:中文乱码、末尾行多一行空格(/r)、非第一列空字符串""显示null问题

    一:主要内容 解决CsvWriter存csv,csv文件打开后中文乱码问题 解决CsvWriter存csv,csv文件最后一行总是多一行空行的问题 解决CsvWriter存csv,csv文件不是第一列 ...

随机推荐

  1. .NET周刊【10月第1期 2024-10-06】

    国内文章 基于DPAPI+RDP技术实现本地打开远程程序,并映射到本地机器桌面上 https://www.cnblogs.com/weskynet/p/18445584 该教程讲述如何使用Remote ...

  2. webgl和canvas的区别

    webgl和canvas的区别 WebGL和Canvas的主要区别在于它们的渲染方式.功能复杂性.以及编程难度.12 渲染方式:Canvas使用2D渲染上下文来绘制图形和图像,基于像素的绘图系统, ...

  3. Math 数学库

    Math.random()  随机数字 Math.PI  圆周率

  4. (系列九)使用Vue3+Element Plus创建前端框架(附源码)

    说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...

  5. Python-提高-2

    阅读目录 1.多继承以及MRO顺序 2.再论静态方法和类方法 3.property属性-讲解 4.property属性-应用 5.魔法属性 6.面向对象设计 7.with与"上下文管理器&q ...

  6. 需求解决 _按需要对控件进行禁用和解除禁用 _CSS _20210922

    需求解决 _按需要对控件进行禁用和解除禁用 _CSS _20210922 通过JQuery 或者其他方式的选择器 获取DOM节点 再通过一下的方式 设置 disabled属性为 true 即可禁用,为 ...

  7. JS实现斐波那契数列的几种方法及代码优化

    一.斐波那契数定义 斐波那契数列又被称为黄金分割数列,指 1,1,2,3,5,8,13,21,... 等数列. 在数学中有递推的方法定义: F(0)=0,F(1)=1, F(2)=1,F(n)=F(n ...

  8. LLM论文研读: GraphRAG的替代者LightRAG

    1. 背景 最近有一个很火的开源项目LightRAG,Github6.4K+星※,北邮和港大联合出品,是一款微软GraphRAG的优秀替代者,因此本qiang~得了空闲,读读论文.跑跑源码,遂有了这篇 ...

  9. Reviewbot 开源 | 为什么我们要打造自己的代码审查服务?

    Reviewbot 是七牛云开源的一个项目,旨在提供一个自托管的代码审查服务, 方便做 code review/静态检查, 以及自定义工程规范的落地. 静态检查不是个新鲜事. 我记得早在几年前,我们就 ...

  10. 一文搞懂 ARM 64 系列: PACISB

    1 PAC AMR64提供了PAC(Pointer Authentication Code)机制. 所谓PAC,简单来说就是使用存储在芯片硬件上的「密钥」,一个「上下文」,与「指针地址」进行加密计算, ...