天天看点

Restricted cubic splines

本文主要译自:Restricted cubic splines, 翻译加上自己的理解,整理如下。

在统计学里,splines 技术用来对变量进行转换。有时候我们会将连续性变量转化为分类变量(哑变量化),因为该连续性变量与结局变量之间的线性关系比较差。比如建立疾病预后模型时,年龄这个变量通常会被通过选取一个合适的界值转化为分类变量。然而,很多大佬并不推荐使用分类变量。生统大佬 Frank Harrell 教授在 Regression Modeling Strategies 一书中就有专门一个小标题是 Avoiding Categorization,并指出推荐使用splines 技巧。很多大佬都认为 categorizing (which is the dummy variable method) isn’t a good method. 转为分类变量的这种方法主要有2个缺陷:第一是会压缩变量的效应(损失了大量方差信息),第二是会出现跳跃(界点附近的跳跃会使模型拟合变差)。Restricted cubic splines (RCS) 可以很好地解决这些问题,但是RCS有个最大的缺陷就是,生物学解释性较差。

处理非线性关系的方法有很多,rms包中rms.trans提供的方法就有好几种,其中RCS是最常用的策略,以下表格进行了大致汇总:

Restricted cubic splines

RCS有个问题:选择多少个knots(节点)以及选择哪些位置作为 knots。Frank Harrell 教授的推荐如下:

N<100 时,选择4个knots,分别选定在:5%, 35%, 65% 和 95% 这4个百分位点处。

N≥100 时,选择5个knots,分别选定在:5%, 27.5%, 50%, 72.5% 和 95% 这5个百分位点处。

Restricted cubic splines

哑变量化(直接转成分类变量)的效果:

Restricted cubic splines

解决“效应压缩”问题(恢复方差),效果:

Restricted cubic splines

解决“跳跃”问题(界点前后保持连续),即采用 restricted linear spline 变换,效果:

Restricted cubic splines

用曲线技术平滑化(多项式平滑),效果:

Restricted cubic splines

笔者曾试图自己写函数变换(包括多项式变换、指数变换等)进行预处理,但是比较麻烦,需要预先评估变换的类型,而RCS这种方式,通常都比较有效,还是回归到用RCS策略吧。

RCS相关的工具包:rms包的rcs函数、splines包的bs函数等。

参考资料

Restricted cubic splines

Frank Harrell. Regression Modeling Strategies. Springer

Restricted Cubic Spline Regression: A Brief Introduction