在许多研究中,识别、呈现和讨论定量或连续协变量(也称为预测变量、自变量或解释变量)与响应变量之间的估计关系非常重要。临床上,因变量和临床的结局有时候不是线性关系,而回归模型有一个重要的假设就是自变量和因变量呈线性关联,因此非线性关系模型用回归分析来拟合受到限制。因此,一个更好的解决方法是拟合自变量与因变量之间的非线性关系,限制性立方(Restricted cubic spline,RCS)就是分析非线性关系的最常见的方法之一。

既往文章《stata两种方法制作限制立方条图》中,我们已经介绍了怎么使用stata包绘制限制立方条图,但是由于xblc升级后,有部分代码无效了,部分粉丝说不会求P值,做不出来等等。今天我们重新来聊一聊,继续使用我们的乳腺癌数据。Xblc包要提前安装好,没有升级的要进行升级,怎么安装看我上一篇文章,这里不多说了。先导入数据,

python 限制性立方样条图 限制性立方样条解读_限制立方条图


我们先来看看数据:

age表示年龄,pathsize表示病理肿瘤大小(厘米),lnpos表示腋窝淋巴结阳性,histgrad表示病理组织学等级,er表示雌激素受体状态,pr表示孕激素受体状态,status结局事件是否死亡,pathscat表示病理肿瘤大小类别(分组变量),ln_yesno表示是否有淋巴结肿大,time是生存时间,后面的agec是我们自己设定的,不用管它。

假设我们想看年龄和死亡率的关系:

首先使用使用四分位数来设置样条的节点, 根据上面的四分位进行设置节点,46 56 67 78就是这么来的

generate all=1
table all, c(freq p25 age p50 age p75 age p95 age)
mkspline age = age, knots(46 56 67 78) cubic

由此得到age1-age3等3个节点

python 限制性立方样条图 限制性立方样条解读_数据_02


然后建立COX回归模型,如果你是其他模型的话就在这一步建立其他模型

python 限制性立方样条图 限制性立方样条解读_拟合_03


通过菜单和命令都可以建模,我就不详细说了,可以看我的其他文章有详细说明

stset time, failure(status==1)
stcox age1 age2 age3 i.ln_yesno

python 限制性立方样条图 限制性立方样条解读_stata_04


然后通过下面命令得到一个年龄和HR的表, reference要指派一个参考指标,一般选临床有意义的指标,我这里选50岁为参考

python 限制性立方样条图 限制性立方样条解读_拟合_05


接下来做出立方条图,更新xblc包主要在这个命令变化了,所以有些人做不出来

levelsof age if inrange(age, 35,79)

python 限制性立方样条图 限制性立方样条解读_stata_06


在at里面要把上个命令生成的数字全部复制进去

xblc age1-age3, covname(age) at(35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79) eform reference(50) line generate(pa hr lb ub)

python 限制性立方样条图 限制性立方样条解读_python 限制性立方样条图_07


除了生成图,还生成了pa hr lb ub这几个指标

python 限制性立方样条图 限制性立方样条解读_拟合_08


我们可以通过这几个指标进一步做图

twoway (line hr pa, sort) (line lb ub pa, sort lc(black black) lp(- -)),legend(off) yscale(log) ylab(0.25 .5 1 2 5) xtitle(Age) ytitle(Hazard ratio) yline(1) title(Effect of age) subtitle (Adjusted for treatment)

python 限制性立方样条图 限制性立方样条解读_python 限制性立方样条图_09


很多人不会求P值,其实是用到testparm函数

testparm age2 age3

python 限制性立方样条图 限制性立方样条解读_数据_10


P值为0.0488,原假设是线性关系,我这里有点尴尬,到底是算小于0.05还是等于0.05呢,看临床需要吧有些人不会怎么把P值添加到stata图片中,其实非常简单,stata有个图片编辑器,我们打开它

点反键调出菜单

python 限制性立方样条图 限制性立方样条解读_stata_11


点击文字编辑

python 限制性立方样条图 限制性立方样条解读_拟合_12


填入P值

python 限制性立方样条图 限制性立方样条解读_数据_13


最后成图

python 限制性立方样条图 限制性立方样条解读_python 限制性立方样条图_14


觉得有用的话请把它分享给有需要的人