文献中常看到的P for trend,到底是个啥,该怎么操作实现?
提到趋势性检验,我们在前期的内容中,介绍过了Cochran-Armitage趋势检验
,用于检验两个分类变量之间是否存在一定的变化趋势。但是我们在阅读文献时,也常常会看到文章结果展示的表格中,给出了P for trend的检验结果,如下表所示。
针对上表内容,首先复习一下我们前期介绍的有关回归模型中设置哑变量的内容,对于连续性变量,可以考虑将其转化为哑变量后带入到回归模型中,详见:想将连续变量转化为哑变量纳入回归模型,咋分组?
在本例中不难理解,研究人员将每一个自变量按照一定的切点分为3组,并以水平最低的一组作为参照,设置了2个哑变量带入到模型中,分别求出其对应的OR值及P值。同时在表格中每一个变量分组下又列出了一行P for trend的结果,那么问题来了,这个P for trend代表的是什么意义呢,它有什么作用呢?我们在实际的分析中怎样才能求得P for trend的结果呢?
今天我们将结合几篇发表的文献,来向大家介绍一下回归模型中趋势性检验的魅力。
研究实例一
JAMA Oncology期刊(影响因子:16.56)2017年10月在线发表了一篇文章《Dose-Response Association of CD8+ Tumor-Infiltrating Lymphocytes and Survival Time in High-Grade Serous Ovarian Cancer》,研究人员探讨了高级别浆液性卵巢癌患者生存时间与CD8+肿瘤浸润性淋巴细胞(TIL)水平之间的剂量反应关系,部分结果如下表所示。
我们可以看出,研究人员将CD8+ TIL按照其计数水平分为阴性Negative(计数为0)、低水平Low(1-2 TILs)、中水平Moderate(3-19 TILs)和高水平High(≥20 TILs)共4组,在构建Cox回归模型时,以Negative组为参照组,其余3组设定为3个哑变量进入回归模型。
结果显示,在病理分型为高级别浆液性卵巢癌的患者中,设定CD8+ TIL阴性组患者为参照(HR=1),低水平组、中水平组和高水平TIL组的患者死亡风险比值HR分别为0.86(0.75-0.99)、0.77(0.69-0.87)、0.57(0.49-0.65),提示与CD8+ TIL阴性组患者相比,其余3组患者的死亡风险分别下降14%、23%、43%。
根据HR值的变化可以看出,从CD8+ TIL阴性组到高水平组,HR值逐渐降低,提示随着CD8+ TIL水平的升高,患者死亡风险呈现下降的趋势,那么这个变化趋势是否有统计学显著性呢?
研究人员在结果中同时给出了趋势性检验的结果P Value for Trend=4.2×10-16,提示CD8+ TIL水平每增加一个等级,患者死亡风险呈现出的这种逐渐降低的趋势具有统计学显著性。
研究实例二
我们再来看一个研究实例加深一下对P for trend的理解。例如Am J Clin Nutr在2015年发表的一篇文章,《Carbohydrate quality and quantity and risk of type 2 diabetes in US women》,研究人员探讨了在美国女性中,各种营养素的摄入量与2型糖尿病发病风险的关联性。部分结果如下表所示。
研究人员将不同的营养素按照其摄入水平的5分位进行分组,在构建Cox回归模型时,以水平最低的1组为参照组,其余4组设定为4个哑变量进入回归模型。
结果显示,对于水果纤维的摄入量,5分位分组的中位摄入水平分别为1.45、2.55、3.55、4.69、6.68 g/d,随着水果纤维摄入水平的升高,研究对象2型糖尿病的发病相对风险RR值分别为1、0.93、0.91、0.82、0.73(Model 1),RR值呈现一个下降的趋势,发病风险分别降低0、7%、9%、18%、27%。说明随着水果纤维摄入量的升高,研究对象发生2型糖尿病的风险呈现下降的趋势,趋势性检验P-trend<0.0001,提示该下降趋势具有统计学显著性。
P for Trend的意义解读
通过以上两个研究实例,相信大家已经对P for trend有了一定的理解,P for trend是回归模型中线性趋势性检验的结果,简单来说,在构建回归模型时,例如最常用到的多重线性回归、Logistic回归以及Cox回归中,P for trend主要是用来检验自变量X的变化(一般是指转换后的哑变量的变化)与因变量Y的变化之间是否存在一定的线性变化趋势。
那么就会有同学问到,对于原始变量本身即为连续型变量时,为什么不将原始变量直接带入到模型中进行分析呢?为什么还要大费周折将其转化为哑变量,然后再做一遍趋势性检验呢?直接带入原始变量时所得的P值不是能更好的说明该变量与因变量之间的变化趋势么?
诚然,如果只是想把原始的连续型变量作为一个混杂因素进行调整的话,直接将它带入模型即可;但是,如果作为研究所关注的影响因素的话,那么从统计学和实际临床意义的角度考虑,直接带入原始的连续型变量往往也存在一些不足:
1. 我们在介绍有关回归模型中设置哑变量的内容时已经提到,为什么我们有时需要将连续型变量转化为哑变量,是因为当自变量以连续型变量的形式引入模型时,其意义解释为该自变量每增加1个单位,所引起的因变量Y的变化(β),或结局发生风险的变化(OR/HR),但实际上这种变化效应有时是很微弱的,并没有太大的临床意义,因此需要对连续型变量进行适当的转化。
2. 如果直接将原始的连续型变量带入到回归模型中,其前提是已经假定该连续型自变量与因变量之间存在着一定的线性关系。但是,当自变量与因变量之间的相互变化关系不明确时,以连续型变量带入模型会遗漏一些很重要的信息。
例如上述研究实例二中,研究人员在分析蔬菜纤维摄入量与2型糖尿病发病风险的关联性时,结果显示随着蔬菜摄入量的升高,2型糖尿病发病风险RR值分别为1、1.01、1.04、1.06、0.98,P-trend=0.78(Model 1),提示蔬菜摄入量和2型糖尿病发病风险之间的线性趋势不具有统计学显著性,但是从RR值的变化中我们可以推测,两者之间可能存在“抛物线(倒U字型)”的关系,而此时如果仅仅是带入原始的连续型变量,就无法从结果中看出这样的变化关系。
P for Trend的实现
了解了回归模型中趋势性检验P for trend的重要意义,那么我们在构建模型进行统计分析时,应该如何求得P for trend的检验结果呢?其实很简单,我们还是回到今天介绍的两个研究实例中,看看大牛们都是怎么分析的。
一、等级变量转换
在研究实例一中,研究人员将CD8+ TIL按照其计数水平分为阴性Negative(计数为0)、低水平Low(1-2 TILs)、中水平Moderate(3-19 TILs)和高水平High(≥20 TILs)共4组。
研究人员按照此分组标准,将CD8+ TIL转为为等级变量,分别赋值为0、1、2、3,随后将该等级变量再次带入到回归模型中,所求得的该等级变量对应的P值即为P for trend的检验结果。
这个方法是我们最常用到的方法,但是该方法有一定的局限性,因为赋值为0、1、2、3的前提,是假定每个分组内相邻两组之间的间距是相等的,但是多数情况下无法满足这一等距的条件,因此我们需要用到第二种方法。
二、组内中位数转换
在研究实例二中,研究人员在表格的标注中已经明确指出:Test for trend based on variable containing median value for each quintile。
在Ann Inter Med期刊(影响因子:17.14)2017年8月份发表的一篇文章《Association of Coffee Consumption With Total and Cause-Specific Mortality Among Nonwhite Populations》中也提到:We performed tests for linear trend by entering the median value of each category of coffee consumption as a continuous variable in the models。
即此时不再将原始的连续型变量赋值为0、1、2、3,而是用每组的中位数进行重新赋值,然后将重新赋值的变量以连续型变量的形式带入到模型中,所求得的该变量的P值即为P for trend的检验结果。
通过本期内容的介绍,相信大家已经对P for trend有了一定的了解,如果在以后阅读文献的过程中再次遇到P for trend时应该就不会感到陌生了吧。是不是有种跃跃欲试的感觉,想要拿自己的数据亲自操作一遍呢,还等什么,Go ahead,Just do it!
参考文献:
[1] Clin Nutr Res. 2015 Apr;4(2):110-23
[2] JAMA Oncol. 2017 Oct 12:e173290
[3] Am J Clin Nutr. 2015 Dec;102(6):1543-53
[4] Ann Intern Med. 2017 Aug 15;167(4):228-235
更多阅读
关注医咖会,轻松学习统计学~
有临床研究设计或统计学方面的难题?快加小咖个人微信(xys2016ykf),拉你进统计讨论群和众多热爱研究的小伙伴们一起交流学习。如果想进群,添加小咖时请注明“加群”二字。
点击左下角“阅读原文”,看看医咖会既往推送了哪些统计教程。