开头先更新一个新的短视频,感兴趣的可以关注公众号的同名视频号“Michael科研代码”。考虑到短视频的传播特点,不仅会更新R,Python教程,还会更新有关“科研代码”宇宙的科研心理学,职业规划等内容。希望通过幽默的手段传播一种科研方式。
好了,接下来让我们进入今天的正题:限制性立方样条教程。
前言
限制性立方样条(Restricted Cubic Spline, RCS)是一种强大的统计方法,用于灵活地建模变量之间的非线性关系。通过在数据范围内引入若干节点,RCS能够有效地捕捉变量之间的复杂关系,同时保持模型的解释性。
RCS常被用于流行病学、医学统计、经济学等领域。例如,在流行病学研究中,RCS可用于探索环境暴露量与疾病发生风险之间的非线性关系;在经济学中,它可以帮助分析投资收益随时间的动态变化。
在R语言中,有多种包可以实现RCS分析与绘图,包括splines
、rms
和plotRCS
等。今天的更新将比较这些包的使用体验和可视化效果,展示如何生成符合发表标准的高质量曲线。
1. 使用rms
包实现RCS曲线
rms
包封装了节点选择和模型拟合,减少了部分手动工作,并支持添加置信区间。然而,其默认绘图功能较为基础,需要结合其他工具增强可视化效果。
library(rms)
library(ggplot2)
# 数据生成
set.seed(123)
x <- runif(100, 1, 10)
y <- 2 * log(x) + rnorm(100, sd = 0.5)
dd <- datadist(x)
options(datadist = "dd")
# 模型拟合
fit <- ols(y ~ rcs(x, knots = c(3, 6, 8)))
# 获取预测数据
pred_data <- as.data.frame(Predict(fit, x))
# 绘图
ggplot(pred_data, aes(x = x, y = yhat)) +
geom_line(color = "#D55E00", size = 1.2) +
geom_ribbon(aes(ymin = lower, ymax = upper), fill = "#F0E442", alpha = 0.3) +
labs(
title = "Restricted Cubic Spline Curve",
subtitle = "Using rms package with confidence intervals",
x = "Predictor (X)",
y = "Predicted Response (Y)"
) +
theme_classic() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
plot.subtitle = element_text(size = 12, hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10),
legend.position = "none"
)
2. 使用plotRCS
包实现RCS曲线
plotRCS
包为RCS分析与绘图提供了一站式解决方案。只需5行代码即可完成曲线绘制,其默认图形风格美观大方,适合直接用于学术报告和论文发表。原作者是Rongrui Huo,大家可以在其Github主页看到更完整的教程:https://github.com/KunHuo/plotRCS
library(plotRCS)
# View data
head(cancer)
## id age sex race size metastasis status time
## 1 10274 53 Male White 27 No Censored 12
## 2 56998 32 Male Black 185 No Dead 5
## 3 60010 69 Male White 51 No Dead 13
## 4 24307 61 Male White 37 No Censored 50
## 5 5253 53 Female White 25 No Censored 27
## 6 39685 56 Male Other 38 No Censored 17
# RCS curves for a liear regression model
rcsplot(data = cancer,
outcome = "size",
exposure = "age",
covariates = c("sex", "race", "metastasis"))
##
## Figure: Association Between age and size Using a Restricted Cubic Spline Regression Model.
## Graphs show β for size according to age adjusted for sex, race, metastasis. Data were fitted by a linear regression model, and the model was conducted with 4 knots at the 5th, 35th, 65th, 95th percentiles of age (reference is the 5th percentile). Solid lines indicate β, and shadow shape indicate 95% CIs. CI, confidence interval.
小结
在本文的比较中,我们发现:rms
包封装了建模与预测过程,但默认绘图能力较弱,仍需额外的美化处理。plotRCS
包以其代码的简洁性和绘图的优雅性脱颖而出。它集成了RCS建模与高质量可视化,是快速生成专业图形的首选工具。
特别感谢plotRCS
包的作者为R语言用户提供了如此高效的工具。通过该包,很多同学可用极低的学习成本生成符合期刊风格的图形,极大地增强了科研效率。
感谢关注,你的支持是我不懈的动力!