rcs限制性立方样条越来越成为顶刊神器,重要性不言而喻。
尤其是BMJ 预测模型也强烈推荐,连续变量进入预测模型需要rcs拟合,效果比单纯线性、gam都要强,见之前推文https://mp.weixin.qq.com/s/9RhVE0AYDtZk8Bsg8_8JGA, https://mp.weixin.qq.com/s/Rn4uOsJbOhzdzSmsRZm9Bg。
rcssci系列,陪伴了很多小伙伴的成长,从0.1.0到0.4.0,后来很长一段时间没有更新。期间有很多小伙伴总是私聊不知道一键输出PDF版怎么导出PPTX。还有一些图形错误的问题,我花了些时间修复并且分享出来。下面是一些rcs系列的总结。
公众号总结了个帖子,https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzAxNTUzNDMyNQ==&action=getalbum&album_id=3015203637993930755#wechat_redirect
许多小伙伴不知道如何写论文,可以参考下面3篇文章成文,lancet的不错的。Rcssci包发表在medicine research上,也欢迎大家引用,https://doi.org/10.1002/mdr2.70015
0.4.0以及之前版本可以一键导出PDF,不知道技巧的朋友可以学下。通过adobe acrobat 等PDF编辑器另存为PPTX,就可以编辑了。缺点是有时候,图片需要去母版视图里面找背景图再复制出来。
不知不觉从2022年1月介绍rcs开始,已经过去了4个年头。真的一晃居然整整过去了4年!时光飞逝,我心已老。趁着记忆力还在,于是利用间隙学习空挡更新了rcssci V0.5.0,这次代码修复了很多内容,更严谨了。
2系列后缀包括一键输出rcssci_logistic2、rcssci_cox2、rcssci_linear2,以及相应的子函数,不喜欢一键4图的可以针对性的先运行.prob 再视非线性P和overall P来判定后续的图形是线性、L形、U 形、n形。Rcs曲线的切点cutoff内置 “segmented”包,并且进行bootstrap 95%CI估计。需要方法学的可以去看论文原文,模板见lancet那篇。
思维导图,设计见图。
下面是预期的代码,更新2系列。
setwd("D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变")
# 0) 安装/加载包
pacman::p_load("rcssci", "dplyr", "ggplot2", "tidyr", "rms", "officer", "rvg", "mschart")
# 新增函数 rcs_logistic.prob2
data(sbpdata, package = "rcssci")
library(rcssci)
data(sbpdata, package="rcssci")
#----旧版PDF
library(rcssci)
data(sbpdata, package="rcssci")
#----测试logistic 系列----
rcs_logistic.prob2(
data = sbpdata, y = "status", x = "sbp",
covs = c("age","gender"),
prob = 0.5,
filepath = "D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "type3" # type1/type2/type3/type4/all
)
rcs_logistic.prob2(
data = sbpdata, y = "status", x = "sbp",
covs = c("age","gender"),
prob = 0.5,
filepath = "D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "type1" # type1/type2/type3/type4/all
)
rcs_logistic.prob2(
data = sbpdata, y = "status", x = "sbp",
covs = c("age","gender"),
prob = 0.5,
filepath = "D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
##pptx = TRUE,
#?? pptx = TRUE或者自定义名字,
pptx = "./OR推荐款.pptx",
plot_type = "type2" # type1/type2/type3/type4/all
)
rcs_logistic.prob2(
data = sbpdata, y = "status", x = "sbp",
covs = c("age","gender"),
prob = 0.5,
filepath = "D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
##pptx = TRUE,
#?? pptx = TRUE或者自定义名字,
pptx = T,
plot_type = "type3" # type1/type2/type3/type4/all
)
rcs_logistic.prob2(
data = sbpdata, y = "status", x = "sbp",
covs = c("age","gender"),
prob = 0.5,
filepath = "D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "all" # type1/type2/type3/type4/all
)
rcs_logistic.lshap2(
data = sbpdata, y = "status", x = "sbp",
covs = c("age","gender"),
prob = 0.5,
filepath = "D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "all" # type1/type2/type3/type4/all
)
rcs_logistic.nshap2(
data = sbpdata, y = "status", x = "sbp",
covs = c("age","gender"),
prob = 0.5,
filepath = "D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "all" # type1/type2/type3/type4/all
)
rcs_logistic.ushap2(
data = sbpdata, y = "status", x = "sbp",
covs = c("age","gender"),
prob = 0.5,
filepath = "D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "all" # type1/type2/type3/type4/all
)
rcssci_logistic2(
data = sbpdata,
y = "status",
x = "sbp",
covs = c("age", "gender"),
prob = 0.5,
filepath = "./Logistic_Results",
pptx = TRUE, # 自动导出4份PPT
plot_type = "type2" # 使用推荐的样式
)
#plot_type = "type1" # 柱状分布 + 虚线CI(图例两条线)
#plot_type = "type2" # 柱状分布 + ribbon CI(图例红线+浅红矩形)
#plot_type = "type3" # 竖线ref + ribbon CI(图例红线+浅红矩形)
#plot_type = "type4" # 密度曲线 + ribbon CI(图例红线+浅红矩形)
#plot_type = "all" # 2×2 拼图(PDF固定导出这个)
# 定义输出路径 (例如输出到当前工作目录下的 Results 文件夹)
out_path <- "./Results_Cox_Demo"
# 运行总函数
rcssci_cox2(
data = sbpdata,
y = "status", # 结局变量 (事件状态)
x = "sbp", # 主要暴露变量
time = "time", # 生存时间变量
covs = c("age", "gender"), # 需要调整的协变量
prob = 0.5, # 参考值位置 (中位数)
filepath = out_path, # 结果保存路径
pptx = TRUE, # ? 开启 PPT 自动导出
plot_type = "type1" # ? 选用最美观的 Type 2 风格 (带色带)
)
#----测试cox 系列----
rcs_cox.prob2(data=sbpdata, y = "status",x = "sbp",time = "time",
covs = c("age","gender"),
prob=0.1,filepath="D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "all" # type1/type2/type3/type4/all
)
rcs_cox.lshap2(data=sbpdata, y = "status",x = "sbp",time = "time",
covs = c("age","gender"),
prob=0.1,filepath="D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "all" # type1/type2/type3/type4/all
)
rcs_cox.nshap2(data=sbpdata, y = "status",x = "sbp",time = "time",
covs = c("age","gender"),
prob=0.1,filepath="D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "all" # type1/type2/type3/type4/all
)
rcs_cox.ushap2(data=sbpdata, y = "status",x = "sbp",time = "time",
covs = c("age","gender"),
prob=0.1,filepath="D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "all" # type1/type2/type3/type4/all
)
#----测试linear 系列----
rcs_linear.prob2(data=sbpdata, y = "sbp",x = "age",
prob=0.1,filepath="D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = TRUE,
#?? pptx = TRUE或者自定义名字,pptx = "./my_rcs_plot.pptx",
plot_type = "all" # type1/type2/type3/type4/all
)
rcs_linear.prob2(data=sbpdata, y = "sbp",x = "age",
prob=0.1,filepath="D:/聂个人文件/我的公众号/中英文字体混排/ppt字体不变",
pptx = "./linear自定义.pptx",
plot_type = "all" # type1/type2/type3/type4/all
)
V0.5.0 版目前还不完善,有空再上传cran上。目前制作了logistic、cox系列的糖果色智荟shiny版本,直接使用获取pptx足够常规分析。可是花费了我不少精力啊,希望大家喜欢这个配色和风格。
注意:
1、ref prob可以自由调节,推荐0.1或0.5,原则看历史推文合集。
2、Knot默认是AIC最小原则自动判定,当然图片多可以统一选择knot=4,如果样本量太小推荐选knot=3,3~4最常见。
3、rcs图片可点放大按钮。
4、下载报告,包括pptx、pdf、png,其中pptx是用rvg重写的字体保持了times 格式,且pptx的备注信息有AIC和方程说明。
5、无损矢量图pptx可编辑,请自由发挥你的配色想象力。
扫下面二维码,https://niezhiqiang.shinyapps.io/rcssci050/,都可以用。网页版细节很多,bug也多修改都零零散散的耗费了几天,成品还是挺满意的。
风格蓝紫色渐进内涵又热情,按钮都是冰激凌味,心情不好的时候来看看吧。
1 rcssci一键保存pptx绘图版。shiny网页,请保存,用起来!
2 优先prob图,再看趋势选择非线性,思维导图有P值细节说明
3 niezhiqiang.shinyapps.io/rcssci050
喜欢就多多分享,多多点??和??哦。