您好,欢迎您

连续型变量的离散化(5)——R软件segmented包

2017年10月05日
作者:袁联雄 中山大学附属第三医院(微信:boy_for_)
来源:微信公众号“郑正有词”

还记得上一个帖子,在用R软件strucchange函数包做Chow test的时候,结果显示的是“Optimal 2-segment partition”吗,实际上关于连续型变量的离散化,R软件中还有1个函数包可供使用,那就是segmented包。那这一期袁老师就给大家介绍一下segmented包的使用方法。

首先看看segmented包的简介:

Package segmented is aimed to estimate linear and generalized linear models (and virtually any regression model) having one or more segmented relationships in the linear predictor. Estimates of the slopes and breakpoints are provided along with standard errors.

从中我们可以看到,几乎对于任意的回归模型(目前最主要还是线性回归、logistics回归等,对于COX回归尚不完善)当自变量有1个或多个分段函数关系时,segmented包都是适用的,而且,对于breakpoints还提供了标准误,有了标准误就代表着置信区间,从此我们高歌在breakpoints的道路上又多了一个亮点了。

那么具体如何使用呢,还是以上个帖子提到的JCO文章的数据为例,在上个帖子中我们已经提取到了ELN、原始的OR,并得到了LOWESS平滑处理后的OR。Segmented计算breakpoint的过程如下

图像 2017-10-5,上午11.51.jpg

结果显示break point为16.6,95%置信区间为16.04~17.17,与Chow test的结果接近!

图像 2017-10-5,上午11.52.jpg

上图左侧是segmented包得到的结果,黑色线条和红色线图表示两条不同的回归直线,横坐标上绿色点的代表的是break point,两侧伸出来的线条表示95%置信区间;图中右侧是JCO文章中的原图,黄色曲线为LOWESS曲线,对应左图中的散点,蓝色的折线为两条回归直线,对应作图中黑色和红色线条,可以看出两个图形基本一致!

尽管segmented包使用方便,但在实际应用中,与Chow test一样,更适用于明显只有1个拐点的情况,当LOWESS平滑曲线提示存在多个拐点时,segmented包也许就不灵了。

此外对于上一期的帖子,如果读者模仿JCO的文章进行统计分析,需要注意原文中能通过分别计算各个ELN数量相对于1个ELN的OR值,构建OR关于ELN的函数关系,有两个重要的数据特点支撑:第一,ELN是整数型取值,便于计算各个ELN数量相对于1个ELN的OR值,如果数据是血糖这种指标,那就没办法直接计算了,折中的方法是把两个连续整数之间的数统一按某个值处理;第二,原文中的样本量相对较大,因此各个ELN都能有一定的患者数量,计算得到的OR估计值相对来说较为可靠,若样本量较小,计算得到的OR置信区间很宽,OR估计值本身就不太可靠,此时构建的OR关于ELN的函数关系很可能也是有问题的。但是不用气馁,细心的读者可能会发现本期帖子提到的segment包好像可以直接处理logistics回归模型,也就是说可以不用通过计算各个ELN数量相对于1个ELN的OR值来构建OR关于ELN的函数关系,而是直接通过模型获得结局变量的函数与ELN的关系,从而探索拐点,是不是有种“柳暗花明又一村”的感觉呢!

责任编辑:肿瘤资讯-Ruby