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

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

时间:2024-01-27 22:12:46浏览次数:43  
标签:数据分析 置信区间 效界值 治疗 非劣 效性 统计

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

标签:数据分析,置信区间,效界值,治疗,非劣,效性,统计
From: https://www.cnblogs.com/Codewar/p/17992254

相关文章

  • 分钟级实时数据分析的背后——实时湖仓产品解决方案
    随着信息技术的深入应用,企业对市场的响应速度也在不断提升,而且这种响应速度正在变得越来越快,没有最快只有更快。对数据实时性要求的提高,是眼下很多企业遇到的一个新的挑战。从生产侧的视角来看,系统实时监控与实时健康状态检测已成为确保系统稳定性和可靠性不可或缺的关键功能。它们......
  • 分钟级实时数据分析的背后——实时湖仓产品解决方案
    随着信息技术的深入应用,企业对市场的响应速度也在不断提升,而且这种响应速度正在变得越来越快,没有最快只有更快。对数据实时性要求的提高,是眼下很多企业遇到的一个新的挑战。从生产侧的视角来看,系统实时监控与实时健康状态检测已成为确保系统稳定性和可靠性不可或缺的关键功能。它......
  • github在线python数据分析JupyterLite配置
    1、登录个人github账号访问jupyterlite在github的网站,https://github.com/jupyterlite/demo,并将该仓库克隆到个人账户下;Usethistemplate --> ... 2、转到个人github界面下,点击图中设置部分 3、然后选择Pages选项,将默认行为改为GithubActions 4、接下来还需要......
  • 灌区信息化系统介绍(大数据分析为农业决策提供支持)
    智慧灌区平台由数据监测系统、设备控制系统和决策支持系统三部分组成。数据监测系统集成了水位计、流量计等传感设备,实时监测灌区的水文信息,并利用气象站和土壤探测器监测气象、土壤数据。设备控制系统实现了泵站、闸门等设备的远程监控和智能化操作。决策支持系统根据收集的数......
  • 数据分析
    数据分析03-通过直接分析端口得出黑客ip:192.168.1.25服务器ip:192.168.1.5做个过滤,查看一下ip.src==192.168.1.25flag:1使用过滤ip.src==192.168.1.25andtcp.connection.syn没查看的修改下参数ip.src==192.168.1.25andtcp.connection.rstflag:21,23,80,445,3306......
  • 数据分析01
    数据分析-01http.request.method==POST筛选出采用http协议的post方式的数据包,发现请求都是172.16.1.110,发送到172.16.1.18黑客IP是172.16.1.110或者使⽤过滤规则tcp.connection.syn过滤出所有带有SYN标志位的数据包,发现IP为172.16.1.110的易受攻击端⼝短时间内发送了⼤......
  • CRM系统数据分析功能有哪些?如何使用CRM系统进行数据分析
    CRM的数据分析功能可以对企业的各项数据进行分析和梳理,管理者通过直观的报表和图表,能够预测市场需求,以便企业随时调整营销策略。如何使用CRM做数据分析?我们以CRM系统为例,企业可以借助AI助手预测异常、同类群组分析、绩效管理、图表比较器以及漏斗图做数据分析。CRM数据分析的价......
  • Python Pandas 数据分析项目实例
    ​ 假设我们有一个电子商务公司的销售数据,包含了客户购买记录、商品价格、购买日期等信息。我们的目标是分析这些数据,提取有价值的信息,例如总销售额、最畅销的产品、销售趋势等。1、安装引用Pandas如没有安装Pandas,可以通过pip安装它。参考下面的文档。然后在Python脚本......
  • 方法论:仓储物流规划--数据分析(转)
     老K-LaoK专栏同名微信公众号:智能仓储物流技术研习社。​关注他 8人赞同了该文章导语大家好,我是智能仓储物流技术研习社的社长,你的老朋友,老K。知识星球 * 原创电子书 * 深海社区 * 微信群文:尹军琪在做物流规划设计时,人们往往对设计指标......
  • 快乐学Python,数据分析之使用爬虫获取网页内容
    在上一篇文章中,我们了解了爬虫的原理以及要实现爬虫的三个主要步骤:下载网页-分析网页-保存数据。下面,我们就来看一下:如何使用Python下载网页。1、网页是什么?浏览器画网页的流程,是浏览器将用户输入的网址告诉网站的服务器,然后网站的服务器将网址对应的网页返回给浏览器,由浏览器将......