目录:
1二分类logistic回归模型
2.手动计算OR值
3.基于autoReg包快速整理结果
目的:以性别、年龄、省份、城乡、婚姻、文化程度、个人年收入为自变量;分别以MS和MS聚集为因变量。采用相应的模型分析影响因素。
变量赋值表
变量 | 变量类型 | 赋值 | 属于 |
性别 | 2分类 | 1=男;2=女 | 自变量 |
年龄 | 连续 | | |
省份 | 无序多分类 | 21/23/32/37/41/42/43/45/52 | |
城乡 | 2分类 | 1=城市,2=农村 | |
婚姻 | 无序多分类 | 1~5 | |
文化程度 | 有序多分类 | 1~5 | |
个人年收入 | 连续 | | |
MS(含义代谢综合征) | 2分类 | 0=无; 1=有; | 因变量,用于 二分类logistic回归 |
1二分类logistic回归模型:
#导入数据和数据处理
.libPaths()#查看R包位置
.libPaths("D:/Program File/R/R-4.3.2/library")#定义包安装位置
setwd("E:/02学习/经验/01医学统计/回归模型大荟萃-多重线性回归")#设置工作空间
getwd()#加载工作空间
library(readxl)
mydata<-read_excel("多重线性回归.xlsx")
#分类变量因子化
a<-c("性别","省份","城乡","婚姻")#填入需要转化的变量
mydata[,a]<-lapply(mydata[,a],as.factor)#转因子
#设置分类变量的参照组
mydata$性别<-relevel(mydata$性别, ref="1")
mydata$省份<-relevel(mydata$省份, ref="21")
mydata$城乡<-relevel(mydata$城乡, ref="1")
mydata$婚姻<-relevel(mydata$婚姻, ref="1")
#二分类logistic回归模型
fit<- glm(MS~性别+年龄+省份+城乡+婚姻+文化程度+个人年收入,
data=mydata,family=binomial(link = "logit"))
summary(fit)
解释:上述模型结果无logistic模型的OR值及置信区间,需要自己手动整理计算
2手动计算OR值:
fitsum<-summary(fit)
#计算回归系数的OR值,注意这里是fitsum
OR<-exp(fitsum$coef[,'Estimate'])
#OR值的置信区间,注意这里是fit
OR_CI<-exp(confint(fit))
#paste函数合并OR和置信区间
paste(OR,"(",OR_CI[,1],"~",OR_CI[,2],")")
解释:手动整理计算的OR值还得自己再整理,不是特别方便。
3基于autoReg快速整理结果
#下载包
library(autoReg)
#autoReg函数功能介绍
autoReg(fit,#代表模型
uni=TRUE,#代表显示单因素分析结果
threshold=0.1#代表进入多因素分析的p阈值=0.1,当设定为1时代表所有变量均进入多因素模型
)
#功能1:三线表输出
result<-autoReg(fit, uni=TRUE) %>% myft()
result
library(rrtable)
table2pptx(result)
table2docx(result)
解释:可以看出上面的表格基本就和我们的表格2很类似的,既有各分组的基本描述、还有单因素和多因素的结果。美中不足的是小数位好像无法调整。基本描述保留1位小数、OR值是2位小数,P值是3位小数。
#功能2:森林图输出
#modelPlot函数功能介绍
modelPlot(fit,#模型
uni=TRUE,#是否展示单因素
threshold=1,#进入多因素的阈值
show.ref=FALSE)#是否展示参照
#森林图导出
p1=modelPlot(fit,uni=F)
rrtable::plot2pptx(print(p1))#将森林图导出至ppt编辑
rrtable::plot2docx(print(p1))#保存结果至word
解释:森林图导出至ppt可以进行编辑。有个缺点就是同时显示单因素的结果貌似会重叠,大家可以自己尝试一下。