限制性立方样条图
限制性立方样条(Restricted Cubic Splines, RCS) 是一种在回归模型中用于处理非线性关系的灵活方法。传统的线性回归往往假设自变量和因变量呈单调直线关系,这在实际研究中可能过于简化,无法准确捕捉真实的非线性变化。而 RCS 则通过在自变量的取值范围内设置若干个“节点”(knots),将一系列三次多项式片段拼接成一条平滑、连续的曲线,从而更精确地反映出自变量与结局变量可能存在的复杂关系。
线性均匀尺度 | 对数尺度 | 伪对数尺度 | |
---|---|---|---|
OR值 | |||
RR值 | |||
HR值 | |||
Beta值 | ////////////////// ////////////////// ////////////////// ////////////////// |
////////////////// ////////////////// ////////////////// ////////////////// |
Piecewise 线性回归 | Piecewise Cox 回归 | Piecewise Poisson 回归 |
---|---|---|
1. RCS 的基本原理
分段三次样条
RCS 的核心思想是将自变量区间划分为若干段,每段都用三次多项式进行拟合。各段多项式在交界处(节点处)不仅函数值相等,而且在一阶、二阶导数上也保持连续,这样就保证了整体曲线的光滑度。“限制性”处理
与一般的三次样条(Cubic Splines)相比,RCS 会在自变量区间的两端添加约束,避免在数据稀少的边缘区域出现过度振荡的情况。这种“限制性”可有效提高曲线在边缘的稳定性,也使结果更容易解释和呈现。节点数与位置
RCS 需要用户事先指定节点的数量(knots),以及如何放置这些节点。常见做法有:固定 knot 数量(如 3~7 个),将节点等分或放置在数据分布的分位数(quantiles)处;
通过模型比较(例如 AIC、BIC)或交叉验证自动寻找最优 knot 数与位置。
参考点(Reference Value)
RCS 在可视化时,通常需要选定一个参考点(如中位数或某一临床上关注的值)。模型估计出的曲线即代表:当自变量在其他值时,相对于这个参考点的效果量(如 OR、HR、RR 或回归系数)的变化情况。
2. 在医学科研中的应用及优势
多因素回归中的非线性处理
许多医学指标(如血压、血糖、BMI、实验室指标等)与预后并非简单的直线关系,往往存在某些阈值或上下限效应。通过 RCS,可以更好地识别并展示这些潜在的非线性趋势。寻找“拐点”与阈值效应
医学上常关心某些关键数值,例如“当血压高于某点后,心血管事件风险突然上升”。RCS 曲线可在直观上提示是否存在拐点;若拐点明显,还可进一步做分段回归(Piecewise 回归)来量化不同区间的影响强度。对流行病学大数据的灵活拟合
在流行病学和公共卫生研究中,样本量大且变量复杂,RCS 可在不损失太多自由度的情况下提供更准确的拟合,同时也避免将连续变量武断地分组(如分成“高、中、低”),从而减少信息损耗。可视化优势
RCS 所绘制的曲线可以同时显示置信区间并与自变量的实际分布相结合,让读者更直观地理解某个风险因素的“安全区间”或“高风险区间”。
3. 举例说明
例 1:BMI 与心血管疾病风险
研究背景:在大量的队列研究中,体重指数(BMI)与心血管事件风险并非简单的线性正相关。有些人观察到当 BMI 过低时,风险同样升高,出现 U 型关系。
方法:采用 RCS 在 Cox 回归模型中,将 BMI 作为连续变量引入,并设置 4 个节点(默认放置在 5%、35%、65%、95% 分位数)。结果发现,BMI≈22 kg/m² 左右时心血管风险最低,过高或过低都增加事件发生率。
意义:帮助临床或公共卫生人员确定 BMI 更精确的风险趋势范围。
例 2:肿瘤标志物水平与预后
研究背景:肿瘤患者常做血清或组织标志物检测(如 CA125、AFP 等),其与生存结局(如总体生存期 OS 或无进展生存期 PFS)之间的关系可能呈复杂曲线。
方法:将标志物值作为自变量进入 Cox 回归模型时,用 RCS 检测可能的拐点。
结果:发现标志物水平特别低时,风险稍高,中等范围内相对风险最低,而超过某一阈值后风险又明显攀升,呈 U 型或 J 型曲线。
意义:为个体化治疗或随访策略提供参考:如果在“中等安全区间”则随访频率可适当减少;而当标志物升至阈值以上,就应及时干预或加强随访。
总结:RCS 对于有理由怀疑“自变量-结局”存在非线性关系的医学研究而言,是一项既灵活又实用的方法。它能帮助我们更准确地呈现真实世界的复杂关联,避免线性假设带来的偏误。在临床和流行病学的高分论文中,RCS 越来越成为一种常见且被审稿人认可的分析手段。
本模块让您能够快速、高效地生成符合高分SCI期刊要求的RCS图像和相应的论文描述:
多回归类型一站式支持
适用于 线性回归(连续结局)、Logistic 回归(二分类结局)、Ordinal Logistic 回归(有序多分类结局)、Cox 回归(生存数据)、以及 Poisson/Quasipoisson 回归(计数数据)等多种模型场景。
只需在侧边栏菜单选择对应的结局类型,即可自动匹配相应回归方法。
智能节点(knot)选择及灵活配置
可使用“根据最小 AIC 自动计算”让软件自动在 3~7 个节点之间迭代选择最优解;或直接手动设置节点数(knot)以满足特定研究需求。
节点位置和数量在结果中会清晰呈现,便于论文中汇报和解释。
支持多种风格的限制性立方样条(RCS)图
风格一:基础 R 绘图(Base Graphics)简洁直观;
风格二:华丽版(ggplot2 + 自定义配色),可调节对数刻度、直方图高度、整体背景,适合杂志对美观的要求;
风格三:朴素版(ggplot2),尤其适合黑白刊物或需简洁风格的场合。
全程只需在右侧的“图像外观设置”中滑动或下拉选择,即可实时预览并下载高清图。
自动与手动相结合的拐点探索
可根据眼见的曲线形状(U 型、∩ 型或其他)自动定位最高点/最低点为拐点,也可手动拖拽滑块精确设置任意折点值。
对于明显的阈值或转折位置,可直接在图像中标记并输出,用于后续分段回归或论文讨论。
一键分段(Piecewise)回归
结合拐点结果,可自动对自变量进行分段,使用传统 GLM 或 segmented 包进行分段回归。
分段后可得到各区间的斜率、OR/HR/RR 等信息,以及置信区间,帮助揭示不同数值区间下的差异。
自动生成符合论文格式的图文报告
系统可一键导出 Word 文档,包含 “Objective, Methods, Results” 等方法学描述,以及高质量 RCS 曲线插图。
无需反复手工排版,大大节省在撰写 SCI 论文或课题报告时的时间与精力。
R 源代码及数据一键查看或下载
提供完整的 R 代码自动生成功能,包含 RCS 或分段回归分析的全部脚本,便于审稿人或课题组成员在本地 R 环境中复现结果。
数据集 (
dt.RData
) 同样可一并下载,实现无缝对接与二次开发。
通过以上功能,用户能在可视化、拐点探索、分段分析、以及论文写作方面实现全面助力,轻松生成符合高分期刊要求的精美 RCS 图和配套报告。
准备数据
首先务必按照下面的格式准备数据(网站上可下载,下载后在此基础上修改):
打开如下图:
本样例数据的规则:
一个患者一行(这是准备数据最重要的前提)。
每个患者准备两大类数据,影响因素变量和结局变量:
如图所示,hospital, treatment, age, age2, sex, obstruct, prfor, adhear, differ, extent 为影响因素(自变量),而blood, effect, status, time, occurrence在本例中是结局变量。
影响因素变量有两种,连续性变量(值是连续数据,它可以在变量值所属区间内任意进行取值,如年龄[岁]、血糖值、人的身高、智商等)以及分类变量(是说明事物类别的一个名称,其取值是分类数据。如”性别”就是一个分类变量,其变量值为”男”或”女”;“行业”也是一个分类变量,其变量值可以为”零售业”、“旅游业”、“汽车制造 业”等),在本例中 age是连续性变量(numeric), 其他的是分类变量(factor)。age单位为”岁”时为连续变量,而age2为年龄段分组,这时候为分类变量。
以上概念很重要,后面有一个页面专门设置连续变量和分类变量。
结局变量在本工具中分为几类:
连续型结局变量
如本例中的blood(某血液检测指标)
二分类结局变量
如本例中的effect(疗效)为二分类变量(Good,Bad)
生存型结局变量
需要用两个变量组合来表示,如本例中的status和time。
status代表患者在研究结束时的状态,在本工具中只能取0和1两个数字,不要用字符文本,否则会出错。0 代表没观察到事件发生(如没死或者失访),1 代表观察到了事件发生(如已经死亡且录入了死亡日期)。
time代表从开始日期(开始日期的定义由你的研究目的决定,如随机对照研究往往取随机化入组的那一天为开始日期,而观察性研究可以取首次诊断日期或首次治疗日期等等根据研究目的而定)到结局日期的时间差。当status=1时,结局日期为发生事件(如死亡)的日期,当status=0时,结局日期为最后一次活着的日期(如研究结束日,或随后一次随访日)。
总之,time是一个数值型变量,您需要填入患者从开始到死亡或者随后一次随访时,一共活着的天数。如time为56,status为1时代表患者从开始到死亡活了56天;当time为56,status为0时代表患者没观察到死亡,从开始到最后一次随访,活了56天。
准备数据时,time填入一个非负的整数,status填入0或1,time和status都不能为空,每个患者都必须填入数字。time或status不确定(缺失)时,该患者最好不要放入本数据库。
计数型结局变量
例如occurrence
,指患者在观测期内某事件发生的次数(如发作次数、复发次数等),必须是 非负整数。
软件操作说明书
绘制 RCS 曲线
点击上方第二个 Tab “生成限制性立方样条图” 进入主功能界面。此界面又分为 左右两大区域:
左侧侧边栏(Sidebar):主要用于设置模型参数(如结局变量、协变量、结局类型、Knot 节点数等),以及最基础的图形外观(如对数刻度、参考值设置等)。
右侧主区域(Main Panel):展示 RCS 模型输出、以及三种风格的 RCS 图像。
下面详细介绍侧边栏的各项配置:
模型设置
回归类型:根据结局变量的类型,选择 “二分类变量(Logistic 回归)”、“生存变量(Cox 回归)”、“有序多分类(Ordered Logistic)”、“连续型变量(Linear 回归)”或“计数资料(Poisson/Quasipoisson)” 等。
选择结局变量:如果选择 Logistic 回归,需要指定二分类结局(如“是否好转”),同时在下拉菜单中选中哪个水平代表“事件=1”;若是 Cox 回归,需要依次指定 time、status;若是线性回归则直接选一个数值型变量等。
选择自变量(X):只能选择一个数值型变量用于做 RCS 曲线。如果你在菜单里找不到想要的变量,说明它在“数据准备”模块中尚未被设置成 numeric。
选择协变量(Covariates):可多选或不选,用于做多因素回归时的调整。建议不要一次性选过多协变量,以免共线性。
设置节点数(Knot)
- 可选择“根据最小 AIC 自动计算”(系统会在 3-7 个节点内自动迭代并选出 AIC 最小的方案),或者“手动设置”为 3-7。
设置参考点(Reference Value)
- 参照点用于计算纵坐标上每个 X 值相对这个参考值的 OR、HR、Beta 等。默认取中位数或 50% 分位数,可根据需要改为 10% 分位数等。参考点的不同只会影响曲线在纵轴上的“基准高低”,不影响曲线形状。
点击“生成/更新限制性立方样条图”:完成上述设置后,点击此按钮开始建模,随后右侧会出现分析结果。
右侧输出
- RCS 建模结果(rms 包输出):显示 knot 节点位置、AIC、P 值等模型概要信息,以及一些回归系数、模型拟合优度等。注意,这里只是基础表格,主要用于审查模型是否正常。
三种风格的 RCS 图像:
风格一:Base R Graphics(基础 R 包绘制)
相对朴素的基础绘图风格。
右侧可调节图片大小、颜色(黑白、玫瑰红、蓝色等),并决定是否在纵轴使用对数刻度等。
风格二:华丽版 RCS 曲线(ggplot2 包 + 自定义配色)
参考顶刊文献配色,带有半透明置信区间条带和直方图(表示数据分布密度)。
右侧可调节对数/伪对数坐标、直方图高度及条数、配色主题等。
可将置信区间与直方图都呈现在一幅图里,适合对外展示、发表。
风格三:朴素版 RCS 曲线(ggplot2 包,适合黑白杂志)
样式更简洁,黑白或单色系列。
同样可在右侧调节直方图外观、对数刻度等。
注意:如果本模块检验出的“P for nonlinear”较大(>0.05),可说明自变量与结局之间的关系可能更趋近于线性,此时完全可以用传统的“线性”假设进行普通回归。若 P for nonlinear < 0.05,才有必要继续深入研究它的非线性特征。
观察图像肉眼寻找折点的粗略位置(第 3 个 Tab)
在第 2 步生成的 RCS 图像中,如果曲线确实存在非线性,可以切换到本 Tab 做进一步观察。
选择拐点个数和类型:
不设置折点:如果曲线近似直线或没有明显拐点,可以停止于 RCS 阶段,不必分段。
在最低点设置折点:适用于 U 型曲线,且最低点确实在中部;若曲线两端才是最低点,不建议这样做。
在最高点设置折点:适用于 ∩ 型曲线。
手动输入折点:如果曲线呈 J 型、L 型或多段复杂变化,或者有临床/文献先验信息,可以拖拽滑块自行指定折点值。软件会在图上标记该点。
查看折点叠加后的 RCS 图:
会同时显示“华丽版”和“朴素版”两种风格,曲线上会出现一条垂直的虚线标记你选定或自动计算的拐点位置。
若要微调折点,可反复拖动滑块,直到感觉曲线上拐点位置与实际生物学意义较为匹配。
在临床研究中,折点往往用于提示“剂量或数值到了某个位置后,效果会发生转折”;如果能在文献中找到类似报道,也可直接采用既往经验折点。
阈值效应和 piecewise 回归(第 4 个 Tab)
如果确有非线性,且对折点附近的转折效应感兴趣,我们通常会做 分段回归(Piecewise regression),以量化在不同区间的回归系数(OR/HR/RR/beta)。
点击进入“阈值效应和 piecewise 回归”:侧边栏将出现以下几个关键选项:
方法选择:
segmented
包自动寻找折点- 设置一个或多个折点数量(npsi),系统会在给定数量下用迭代算法自动找最优位置;或者指定一个“起始值 psi”,让软件从该位置附近开始自动迭代定位折点。
人为指定折点
- 直接输入要分段的所有折点值,软件就会对每个区间做线性回归。
选择协变量:可与 RCS 分析时相同,也可自行更改。
生成 Piecewise 回归结果:点击“生成/更新 piecewise 回归分析结果”后,右侧会显示分段后的各区间斜率及其 95% CI、P 值等。
结果解读:
系统输出一份表格:展示每个分段区间内,该连续自变量对结局的回归系数(或 OR、HR、RR)及统计显著性。
还会给出一幅分段回归的可视化图:如果采用
segmented
包自动寻点,曲线上会以折线或分段斜率的方式显示;若是“手动指定折点”,则会显示分段后的拟合线。
提示:Piecewise 回归并不是简单地把数据按某个阈值拆分成两组后各自做单独回归,而是直接在同一个模型中通过截断函数(Truncated function)实现分段的线性拼接,因此在区间交界处保持连续,并能很好体现一条连续变量可能在不同区间中存在不同的风险趋势。
下载 word 报告(第 5 个 Tab)
在这里可一键导出 Word 文档,以便写论文或留档。下载之前需先完成前面 RCS 或 piecewise 回归的分析。文档包含以下内容:
Objective & Methods:关于本次 RCS 或 piecewise 分析的文字描述
Results:自动带入 RCS 模型结果、P 值、节点位置等
图像:自动插入一张 RCS 曲线或分段回归示意图
请注意:
下载后若用微软 Office 打开,排版能更好地保留;WPS 有时会有兼容问题。
如果希望对报告中的文字进行修改或补充,可直接在 Word 中手动编辑。
查看 R 源代码和原始输出(第 6 个 Tab)
下载 dt.RData:先点击“下载源代码配套的数据集 dt”,之后在 RStudio 等环境中执行
load("dt.RData")
即可加载同样的数据集。查看或下载 R 源代码:下方会显示两块黑底区域:
RCS 建模代码及输出:可复制到本地 R 运行。
Piecewise/segmented 代码及输出:同理。
二次验证:审稿人或课题组内成员如想复现结果,可直接在本地运行下载的 R 代码和数据。
方法学要点与软件依赖包
方法学要点
RCS 的原理:通过在自变量上设置若干节点(knots),将三次多项式片段连接成一条连续、光滑的曲线;在两端做限制,避免过度振荡。
P overall 和 P nonlinear:
P overall 主要检验“这条 RCS 曲线整体上是否与结局有显著关联”;
P nonlinear 检验曲线是否具有显著非线性(若 >0.05,则可视为线性)。
Piecewise 回归:当 P nonlinear 显著或在生物学上明确存在阈值、转折点时,可进一步做分段回归,用传统 GLM 或
segmented
包自动寻点来量化每段斜率差异。
软件和 R 包版本
后台使用:
R 4.2.2
RCS 回归分析包:
rms
图形绘制:
ggplot2
,辅助美化用ggprism
,基础绘制方式则基于Base R Graphics
P 值等统计:
rms
包分段回归:
base
中的glm()
做传统分段,或segmented
包自动寻找折点
常见问题
生成的 RCS 曲线纵坐标值的含义?
- 纵坐标是该自变量在各取值下相对于“参考点(Reference Value)”的 OR、HR、或 Beta 等。它仅表示“相对”量,不宜直接解读为绝对的危险度。
若非线性不显著该怎么办?
- 可以直接改用普通线性假设做回归。RCS 通常用于捕捉非线性;若线性更优,则使用线性模型即可。
如何处理协变量缺失?
- 建议在“数据准备”模块对缺失做适当填补(插补)或删除,以免在 RCS 或分段回归阶段产生意外报错。
曲线两端置信区间很宽怎么办?
- 这是常见现象。两端往往样本少,估计不稳定。如果不关心边缘区域,可在描述结果时稍作简化。
图中直方图显示不理想,出现空缺或严重重叠?
- 可在图像外观设置区域调整 “直方图的高度”和 “直方图的条数”,让区间分得更细或更粗,从而保证分布与曲线在视觉上对齐。