本文使用随機生成的數據集進行批量單因素logistic回歸分析,并提取P<0.05的變量以供後續多因素logistic回歸。後續會繼續分享一些R語言分析代碼,歡迎大家一起讨論學習。
構建數據,Y為因變量,其他為自變量構建數據
生成随機數據的代碼截圖
#0.構建數據,Y為因變量,其他為自變量
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))
描述數據
對生成的數據進行描述
可以看到sex與edu變量顯示的“數值型”,因此需要進行一下轉化:
數據處理,因子化
因子化
VarsC<-c("Y","sex","edu")
for(i in VarsC){
log_data[,i] <- as.factor(log_data[,i])
} # 利用循環因子化
然後我們再描述一下數據:
可以看到sex與edu已經變成分類變量,這樣繼續進行接下來的分析。
準備進行分析的自變量varsU<-names(log_data[,2:6]) # 自變量
批量單因素logistic回歸
批量單因素logistic回歸 代碼截圖
Result<-c()
for (i in 1:length(varsU)){
fit<-glm(substitute(Y~x,list(x=as.name(varsU[i]))),data=log_data,family=binomial())
fitSum<-summary(fit)
result1<-c()
result1<-rbind(result1,fitSum$coef)
OR<-exp(fitSum$coef[,'Estimate'])
result1<-data.frame(cbind(result1,cbind(OR,exp(confint(fit)))))
result1$Characteristics<-varsU[i] #添加變量名
Result<-rbind(Result,result1[-1,])#[-1,],删除常數項
}
提取制表變量重命名,提取有意義的變量
Uni_log<-data.frame(Result[,c(1,4:8)]) #提取"P","OR","CIlower","CIupper"和變量名
colnames(Uni_log)[2:5]<-c("P","OR","CIlower","CIupper")#變量重命名
ExtractVar<-unique(Uni_log$Characteristics[Uni_log$"P"<0.05])#提取有意義的變量
查看結果,輸出文檔
Uni_log
write.csv(Uni_log,file="Uni_log.csv")#輸出文檔
Uni_log結果
輸出的csv文件截圖,方便制作三線表
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!