以framingham数据为例,先建立模型

load("framingham.Rdata")

#哑变量
framingham$male<-factor(framingham$male,
                        levels = c(0,1),
                        labels = c("女性","男性"))
framingham$education<-factor(framingham$education,
                             levels = c(1,2,3,4),
                             labels = c("高中以下","高中","大学","大学以上"))
framingham$currentSmoker<-factor(framingham$currentSmoker,
                                 levels = c(0,1),
                                 labels = c("不吸烟","吸烟"))
framingham$BPMeds<-factor(framingham$BPMeds,
                          levels = c(0,1),
                          labels = c("不服用","服用"))
framingham$prevalentStroke<-factor(framingham$prevalentStroke,
                                   levels = c(0,1),
                                   labels = c("无脑卒中家族史","有脑卒中家族史"))
framingham$prevalentHyp<-factor(framingham$prevalentHyp,
                                levels = c(0,1),
                                labels = c("无高血压家族史","有高血压家族史"))
framingham$diabetes<-factor(framingham$diabetes,
                            levels = c(0,1),
                            labels = c("不患糖尿病","患糖尿病"))
framingham$TenYearCHD<-factor(framingham$TenYearCHD,
                              levels = c(0,1),
                              labels = c("未来10年无冠心病风险","未来10年有冠心病风险"))
#建立模型
framinghamLog<-glm(formula=TenYearCHD ~., data = framingham, family = binomial)
summary(framinghamLog)

第一种:根据OR值的计算原理

coef<-coef(framinghamLog)    #提取各变量的偏回归系数
coef_CI<-confint(framinghamLog)    #提取各变量的偏回归系数的95%可信区间

#通过cbind()将偏回归系数、偏回归系数下限、偏回归系数上限组合,通过exp()计算三者的以e为底的指数函数
OR_Results<-exp(cbind("OR"=coef,"LL"=coef_CI[,1],"UL"=coef_CI[,2]))  
round(OR_Results,3)    #保留3位小数

结果如下图所示:

 第二种:直接生成表格

#生成包含OR、CI、P值的表格
install.packages("gtsummary")
library("gtsummary")
library("dplyr")
logit_table<-glm(formula=TenYearCHD ~., data = framingham, family = binomial) %>%
  tbl_regression(exponentiate = TRUE)       #exponentiate = TRUE 增加OR值


#把表格导出到Word中
install.packages("gdtools")
install.packages("flextable")
library("flextable")
my_flex<-as_flex_table(logit_table)
save_as_docx(my_flex, path = "mylogittable.docx")

这种方法直接生成表格,可直接导出使用,结果如下表所示:

第三种 logistic.display()函数

library(foreign)
library(survival)
library(MASS)
library(nnet)
library(epiDisplay)

logistic.display(framinghamLog,
                 crude=TRUE,
                 crude.p.value=TRUE,
                 simplified=FALSE) 
#crude=TRUE,显示各自变量单因素分析结果的OR及95%CI
#crude.p.value=TRUE,显示各自变量单因素分析结果的P值
#simplified=FALSE,不显示简化结果

 

Logo

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

更多推荐