You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的多变量回归模型中使用受限三次样条(restricted cubic splines)

多变量回归引入受限三次样条的R实现方法

依赖包准备

常用两种实现方案,按需选择:

  • 基础实现:用R内置splines包的ns()函数(自然三次样条,即受限三次样条),无需额外安装
  • 进阶实现:用rms包的rcs()函数,配套的检验、可视化功能更完善,安装命令为install.packages("rms")

具体操作步骤

场景1:仅单个变量存在非线性关联

假设经检验只有bloodtest和因变量存在曲线关系,其余变量保持线性:

  1. 若使用rms包实现:
    首先需要提前声明数据分布,避免后续绘图、预测报错:
library(rms)
dd <- datadist(df)
options(datadist = "dd")
# 构建模型,4为节点数,可按需调整为3-5
fit <- ols(imaging ~ rcs(bloodtest, 4) + age + sex + timetoblood + timetoimage, data = df)
  1. 若使用基础splines包实现:
library(splines)
# df=3对应3个节点,自由度与节点数的对应关系为 节点数=自由度
fit <- lm(imaging ~ ns(bloodtest, df = 3) + age + sex + timetoblood + timetoimage, data = df)

场景2:多个变量存在非线性关联

如果同时有多个变量(比如bloodtest和age)都存在曲线关系,直接给所有非线性变量套样条函数即可:

# rms包示例,bloodtest用4个节点,age用3个节点
fit <- ols(imaging ~ rcs(bloodtest, 4) + rcs(age, 3) + sex + timetoblood + timetoimage, data = df)

结果检验与可视化

  • 拟合后可通过anova(fit)查看样条项的显著性,若非线性部分的p值小于0.05,说明引入样条的拟合效果显著优于线性假设
  • 若使用rms包,可直接通过Predict函数绘制调整其他协变量后的变量关联曲线:
# 绘制bloodtest和imaging的调整后关联曲线
plot(Predict(fit, bloodtest))

注意事项

  • 节点数通常选择3-5即可,节点越多曲线灵活性越高,但也越容易出现过拟合,小样本优先选3个节点
  • 受限三次样条的外推稳定性差,预测新数据时,新样本的自变量不要超出建模数据的取值范围
  • 样条仅用于连续变量,分类变量(如sex)无需也不能套样条函数

内容的提问来源于stack exchange,提问作者DW1310

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:24:07