筛选变量新方法-利用chest包对效应值变化进行估计
Editor's Note
这个包挺不错的
The following article is from 灵活胖子的进步之路 Author 灵活胖子1988
白话Change-in-estimate Approach原理
多元回归是目前调整混杂因素的常用方法,具体在实施中纳入哪些自变量进入方程是一个问题。除了根据背景知识纳入排除外,目前最常用的方法是通过单因素-多因素这种筛选方法,除此之外,根据效应值的改变也是常用的一种方法。具体是指纳入或者排除一个自变量,目前方程的效应值(比如OR或者HR)改变10%以上,这种情况下会认为该自变量对最终结果的影响较大,需要进行混杂因素的调整。这种方法在应用时应该结合DAG图联合使用。
比如吸烟对于肺癌的HR是2,目前发现性别也是患者发生肺癌的混杂因素,纳入时吸烟相对于非吸烟患者的HR为3,这时候HR这种效应值的改变量为(3-2)/2=50%,说明这个混杂因素对于最终结果的影响很大,不管其单因素分析的P值是否小于0.05,都应该纳入最终的回归方程。
官网教程地址:https://rdrr.io/cran/MatchIt/f/vignettes/MatchIt.Rmd
官网资料
官网教程地址:https://cran.r-project.org/web/packages/chest/vignettes/chest-vignette.html
代码示例
#构建测试数据集
names(diab_df)
str(diab_df)
#二元逻辑回归效应值改变计算
results <- chest_speedglm(
crude = "Endpoint ~ Diabetes",#初步方程
#待调整混杂因素
xlist = c("Age", "Sex", "Married", "Smoke", "Cancer", "CVD","Education", "Income"),
data = diab_df)#数据集
#可视化结果
chest_plot(results)
#调整可视化结果图标位置
p <- chest_plot(results, nudge_y = 0, value_position = 5)
p + scale_x_continuous(breaks = c(0.5, 1:4), limits = c(0.5, 8))
#可视化为森林图
chest_forest(results)
其实就是逐渐增加引起效应值改变的因素到方程中
#当需要调整的混杂因素较多时,可以把他们组成字符串向量后传入函数
vlist <- c("Age", "Sex", "Married", "Smoke", "Cancer", "CVD","Education", "Income")
results <- chest_speedglm(
crude = "Endpoint ~ Diabetes",
xlist = vlist, data = diab_df)
#导出数据为表格
results$data->res
#计算交互作用及二次项混杂因素的效应量改变
diab_df$Age_Sex <- diab_df$Age*diab_df$Sex
diab_df$Age2 = diab_df$Age^2
vlist_1<-c("Age", "Sex", "Age2", "Age_Sex", "Married", "Cancer", "CVD", "Education", "Income")
results <- chest_speedglm(crude = "Endpoint ~ Diabetes", xlist = vlist_1, data = diab_df)
chest_forest(results)
#生存资料的效应值改变估计
results <- chest_cox(crude = "Surv(t0, t1, Endpoint) ~ Diabetes",
xlist = vlist, data = diab_df)
chest_plot(results)
#条件逻辑回归的效应值改变估计
results <- chest_clogit(crude = "Endpoint ~ Diabetes + strata(mid)",
xlist = vlist, data = diab_df)
chest_forest(results)
#线性回归的效应值改变估计
vlist<-c("Age", "Sex", "Married", "Cancer", "CVD","Education", "Income")
results <- chest_lm(crude = "BMI ~ Diabetes", xlist = vlist, data = diab_df)
chest_plot(results)
总结
个人推荐还是应该先用DAG法确定混杂因素后再用chest包筛选需要调整的混杂因素,另外,考虑到实际上很多混杂因素有缺失值的情况,效应值改变幅度小有可能是因为缺失值引起,而不是本身这个混杂因素的重要性低,这种情况作者推荐删除缺失数据,不过这种方法对于样本量小的数据集会有比较大的影响,可以考虑用插补的方法进行分析。
关注下方公众号,分享更多更好玩的R语言知识。
点个在看,SCI马上发表。