前言

logistic回归分析是医学统计分析过程中常用的一种影响因素分析的方法,最常用的是二元logistic回归分析,即以二分类数据为因变量的logistic回归分析。上次已经和大家分享了批量进行logistic回归分析的代码,接下来将分享多因素logistic回归分析的代码。


一、多因素logistic回归分析

多因素logistic回归分析一般的分析思路其实就是把单因素分析过程中发现的有意义的变量同时纳入logistic回归模型,除了纳入有意义的变量之外,还可以通过强制纳入其他变量构建不同的模型。
多因素回归分析还包括逐步回归分析,以后有时间会进行整理分析,本文仅介绍全部纳入的代码。

1. 数据准备

首先,我们构建一个数据集供我们进行分析,同时方便大家复制学习:

set.seed(1234)#设置随机种子,保证生成数据一致

log_data<- data.frame(Y = sample(0:1, 600, replace = T),
                      sex=sample(1:2, 600, replace = T),
                      edu=sample(1:4, 600, replace = T),
                      BMI=rnorm(600, mean = 22, sd = 3),
                      白蛋白=rnorm(600, mean = 35, sd = 6),
                      随机血糖=rnorm(600, mean = 4.75, sd = 1.2))

Y为我们要研究的二分类因变量,sex、edu、BMI、白蛋白和随机血糖为自变量数据。
在这里插入图片描述

使用summary()函数查看一下数据特征:

> summary(log_data)
       Y               sex             edu            BMI            白蛋白         随机血糖    
 Min.   :0.0000   Min.   :1.000   Min.   :1.00   Min.   :13.21   Min.   :16.27   Min.   :1.036  
 1st Qu.:0.0000   1st Qu.:1.000   1st Qu.:2.00   1st Qu.:20.18   1st Qu.:30.94   1st Qu.:3.956  
 Median :1.0000   Median :1.000   Median :3.00   Median :22.17   Median :34.78   Median :4.816  
 Mean   :0.5017   Mean   :1.467   Mean   :2.57   Mean   :22.05   Mean   :35.04   Mean   :4.778  
 3rd Qu.:1.0000   3rd Qu.:2.000   3rd Qu.:4.00   3rd Qu.:23.98   3rd Qu.:39.19   3rd Qu.:5.579  
 Max.   :1.0000   Max.   :2.000   Max.   :4.00   Max.   :30.07   Max.   :54.01   Max.   :8.377 

此处我们可以看到Y、sex、edu在本数据中被标记为计量资料了,所以我们需要利用as.factor()函数对数据进行因子化,当变量数较多时可以结合for循环可以批量处理:

#因子化
VarsC<-c("Y","sex","edu")#分类变量

for(i in VarsC){
  log_data[,i] <- as.factor(log_data[,i])
}#利用循环因子化

然后再使用summary()函数查看一下数据特征:

summary(log_data)
Y       sex     edu          BMI            白蛋白         随机血糖    
 0:299   1:320   1:145   Min.   :13.21   Min.   :16.27   Min.   :1.036  
 1:301   2:280   2:142   1st Qu.:20.18   1st Qu.:30.94   1st Qu.:3.956  
                 3:139   Median :22.17   Median :34.78   Median :4.816  
                 4:174   Mean   :22.05   Mean   :35.04   Mean   :4.778  
                         3rd Qu.:23.98   3rd Qu.:39.19   3rd Qu.:5.579  
                         Max.   :30.07   Max.   :54.01   Max.   :8.377

此时,分类变量已被标记为因子,可以作为分类变量进行后续的回归分析。

2. 回归分析

代码如下:

#多因素logistic回归
varsMul<-c("sex","edu","BMI","白蛋白")#需要进行多因素分析的变量,随机生成的数据单因素无意义,故强制纳入
dataAM<-data.frame(subset(log_data,select=c("Y",varsMul[1:length(varsMul)])))#将因变量和要分析的自变量单独建库
fitMul<-glm(Y~.,data=dataAM,family=binomial())#行多因素logistic回归分析
fitSum<-summary(fitMul)
ResultMul<-c()#准备空向量,用来储存结果
ResultMul<-rbind(ResultMul,fitSum$coef)
OR<-exp(fitSum$coef[,'Estimate'])
ResultMul<-cbind(ResultMul,cbind(OR,exp(confint(fitMul))))

查看一下结果

> ResultMul
                Estimate Std. Error    z value  Pr(>|z|)        OR     2.5 %   97.5 %
(Intercept) -0.746063145 0.78794724 -0.9468440 0.3437183 0.4742299 0.1005306 2.216905
sex2         0.087257938 0.16446588  0.5305534 0.5957283 1.0911781 0.7904863 1.506749
edu2         0.157835294 0.23672211  0.6667535 0.5049296 1.1709733 0.7364382 1.864612
edu3        -0.158957902 0.23887554 -0.6654424 0.5057676 0.8530323 0.5333995 1.362035
edu4         0.151528355 0.22543231  0.6721679 0.5014768 1.1636113 0.7481041 1.811931
BMI          0.024530343 0.02876339  0.8528322 0.3937523 1.0248337 0.9687230 1.084545
白蛋白       0.003616099 0.01319647  0.2740201 0.7840692 1.0036226 0.9779787 1.029981

将结果输出为csv文件,方便制作三线表。

write.csv(ResultMul,file="Mul_log.csv")

输出的csv文件如下:
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐