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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/652016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

###C语言程序设计-----C语言学习(5)#

前言:感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步! 一. 主干知识的学习 1.switch语句 switch语句可以处理多分支选…

Linux详细笔记大全

第0章 Linux基础入门 什么是计算机 计算机的组成: 控制器,是整个计算机的中枢神经,根据程序要求进行控制,协调计算机各部分工作及内存与外设的访问等。 运算器,功能是对数据进行各种算术运算和逻辑运算。 存储器,功能是存储程序、数据和各种信号、命令等信息。 输入设备…

第二模块 函数模块

第二模块 函数&模块 day09 文件操作相关1. 文件操作1.1 读文件1.2 写文件1.3 文件打开模式1.4 常见功能1.5 上下文管理练习题 2.csv格式文件3.ini格式文件4.XML格式文件4.1 读取文件和内容4.2 读取节点数据4.3 修改和删除节点4.4 构建文档 5.Excel格式文件5.1 读Excel5.1 写…

微信小程序之页面导航、生命周期和WXS脚本

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

Python 使用重构重命名一键更改变量名的方法

一个变量有多处引用的情况下,需要重命名,可以使用重构重命名进行一键更改。 方法是:选择变量名–>右键–>Refactor–>Rename(也可以使用快捷:选择变量后按下ShiftF6),然后直接输入新的变量名即可…

基于Matlab/Simulink直驱式风电储能制氢仿真模型

接着还是以直驱式风电为DG中的研究对象,上篇博客考虑的风电并网惯性的问题,这边博客主要讨论功率消纳的问题。 考虑到风速是随机变化的,导致风电输出功率的波动性和间歇性问题突出;随着其应用规模的不断扩大以及风电在电网中渗透率…

[echarts] 图表工具栏 toolbox

option{// 工具栏配置toolbox:{id:1, // 组件IDshow:true, // 是否显示工具栏orient:horizontal, // 工具栏 icon 的布局朝向itemSize:15, // 工具栏 icon 的大小itemGap:10, // 工具栏…

DjangoURL调度器(二)

一、默认值与额外参数 1.1、默认值 1.1.1、urls.py from django.urls import pathfrom . import viewsurlpatterns [# http://127.0.0.1:8000/polls/blog/ 等同于 # http://127.0.0.1:8000/polls/blog/1/path(blog/, views.page),# http://127.0.0.1:8000/polls/blo…

springboot项目开发,使用thymeleaf前端框架的简单案例

springboot项目开发,使用thymeleaf前端框架的简单案例!我们看一下,如何在springboot项目里面简单的构建一个thymeleaf的前端页面。来完成动态数据的渲染效果。 第一步,我们在上一小节,已经提前预下载了对应的组件了。 如图&#x…

vue之pinia存储和读取数据

我们已经搭建好了pinia的环境,现在我们使用pinia来存储和读取数据。Pinia是Vue的状态管理库,允许在Vue组件之间共享状态。 vue的pinia环境搭建 创建一个store文件,包含count.ts和lovetalk.ts,存储数据 import { defineStore }…

签到业务流程

1.技术选型 Redis主写入查询,Mysql辅助查询,传统签到多数都是直接采用mysql为存储DB,在大数据的情况下数据库的压力较大.查询速率也会随着数据量增大而增加.所以在需求定稿以后查阅了很多签到实现方式,发现用redis做签到会有很大的优势.本功能主要用到r…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-自定义帖子管理实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…

Django学习之小试牛刀

六、Django学习之小试牛刀 其他关于Python Web开发笔记:(如果遇到问题可以一起交流~) 一、Flask学习之HTML-CSDN博客 二、Flask学习之CSS-CSDN博客 【接上篇】二、Flask学习之CSS(下篇)-CSDN博客 三、Flask学习之B…

面试题:Spring在多线程环境下如何确保事务一致性

文章目录 问题在现如何解决异步执行多线程环境下如何确保事务一致性事务回顾事务实现方式回顾编程式事务那么编程式事务是什么样子呢? 利用编程式事务解决问题问题分析完了,那么如何解决问题呢?总结 问题在现 我先把问题抛出来,大…

LandrayOA内存调优 / JAVA内存调优 / Tomcat web.xml 超时时间调优实战

目录 一、背景说明 二、LandrayOA / Tomcat 内存调优 2.1 \win64\tomcat\conf\web.xml 文件调优 2.2 \win64\tomcat\bin\catalina64.bat 文件调优 一、背景说明 随着系统的使用时间越来越长,数据量越多,发现系统的有些功能越来越慢&…

基于InceptionV2/InceptionV3/Xception不同参数量级模型开发构建中草药图像识别分析系统,实验量化对比不同模型性能

最近正好项目中在做一些识别相关的内容,我也陆陆续续写了一些实验性质的博文用于对自己使用过的模型进行真实数据的评测对比分析,感兴趣的话可以自行移步阅读即可: 《移动端轻量级模型开发谁更胜一筹,efficientnet、mobilenetv2、…

ubuntu 22 安装 node,npm,vue

1:安装 nodejs sudo apt update curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt update && sudo apt install -y nodejs node -v 2:安装npm sudo npm install n -g npm -v 3:安装vite npm install vite -g 4:运行vue 把项目拷贝到…

OpenAI正式推出GPT商店 ChatGPT团队订阅服务一并推出

2024年1月11日消息,据外媒报道,如上周在给开发者的邮件中所宣布的一样,因ChatGPT而名声大噪的人工智能公司OpenAI,在本周正式推出了GPT商店,供用户分享和发现个性化的ChatGPT,同时他们也推出了面向各种不同…

用C语言实现贪吃蛇游戏!!!

前言 大家好呀,我是Humble,不知不觉在CSND分享自己学过的C语言知识已经有三个多月了,从开始的C语言常见语法概念说到C语言的数据结构今天用C语言实现贪吃蛇已经有30余篇博客的内容,也希望这些内容可以帮助到各位正在阅读的小伙伴…

雨云VPS搭建PalWorld服务器,幻兽帕鲁开服联机教程(Windows),0基础保姆级教程

雨云VPS用Windows系统搭建幻兽帕鲁私服,PalWorld开服联机教程,零基础保姆级教程,本教程使用一键脚本来搭建幻兽帕鲁服务端,并讲了如何配置游戏参数,如何更新服务端等。 最近这游戏挺火,很多人想跟朋友联机…