options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")))

在医学科研、特别是观察性研究领域,无论是现况调查、病例对照研究、还是队列研究,经常遇到分类的健康结局,包括二分类(如:生存与死亡、阳性与阴性、发病与未发病)或者一些可进行分类的生理生化指标等(如:血压值、血镁值、血脂和胆固醇等)时,线性回归分析往往无法进行,此时可以考虑Logistic回归模型

logistic回归分析报告的统计模块主要包括3部分内容:统计描述差异性分析logistic回归。完成这三步,基本就可以形成一份统计报告了!

实际中,许多人习惯性使用SPSS进行回归分析,但是SPSS无法进行批量单因素分析,还需要手动绘制三线表,费时又费力。下面通过一份实操数据为大家展示R语言操作过程!

风暴统计!一键搞定logistic回归

{width="1080"}

一、案例介绍

数据集来源于R自带MASS数据集birthwt,这是一份于1986年在在马萨诸塞州收集的与婴儿出生体重低相关的危险因素的数据。根据婴儿出生体重是否小于2.5kg,分为低出生组(59例)与正常组(130例)。研究的暴露因素见下表。

变量名称变量类型变量赋值
low二分类变量0:出生体重不小于2.5kg,1:出生体重小于2.5kg
age连续型变量母亲的年龄,取值范围:14~45
lwt连续型变量母亲最后一次月经时的体重(磅),取值范围:80~250
race无序多分类变量1:白种人,2:黑种人,3:其他种族
smoke二分类变量0:怀孕期间不吸烟,1:怀孕期间吸烟
ptl多分类变量早产次数,取值0,1,2,3
ht二分类变量0:没有高血压病史,1:有高血压病史
ui二分类变量0:不存在子宫易怒,1:存在子宫易怒

二、 R语言软件复现

1.安装并加载R包

tableone 包,简化了"表 1"的构建,可以将生物医学研究论文中常见的患者数据汇总成一个表中混合的连续变量和分类变量。分类变量可以概括为计数和/或百分比。连续变量可以用"正态"(平均值和标准差)或"非正态"(中位数和四分位距)来描述。

compareGroups包,可以按组对多个变量进行描述。根据这些变量的性质,酌情计算不同的检验(t检验、方差分析、Kruskall-Wallis、Fisher、秩和...),从而可以很轻松的制作出SCI论文基线资料表或单因素分析表,也能做出SCI论文中多个模型比较的多因素分析表,甚至是线性趋势(P for trend)。今天的文章主要通过这个R包来进行差异性分析,是文章中的表二。

autoReg包,一款功能十分强大的R包,不仅可以快捷完成基线表的制作,还可以直接一行代码输出回归分析(支持线性模型、广义线性模型和比例风险模型)的表格。

install.packages("tableone")
install.packages("compareGroups")
install.packages("autoReg")
library(tableone)
library(compareGroups)
library(autoReg)
install.packages("tableone")
install.packages("compareGroups")
install.packages("autoReg")
library(tableone)
library(compareGroups)
library(autoReg)

2.读取示例数据

library(MASS)
data(birthwt)
library(MASS)
data(birthwt)

3.描述性统计

采用tableone包

①对定量数据进行正态性检验,本案例的样本量较小(n=189),采用W检验

shapiro.test(birthwt$lwt) #结果为偏态

②nonnormal = c("lwt")此处指定了偏态数据,那么在数据分析中会对偏态数据采用中位数,四分位数进行描述,未指定连续变量会采用均数±标准差,分类变量采用%进行描述。

vs<- c("low","age","lwt","race","smoke","ptd","ht","ui","ftv")
tableone <- CreateTableOne(vars = vs,data = birthwt)
table1<-print(tableone, nonnormal = c("lwt"),showAllLevels = TRUE)

4.差异性分析

采用compareGroups包,也可以使用autoreg包

base_tab <- descrTable(low ~ age + lwt + race + smoke + ht + ui+ ftv,
                       data=birthwt,method = c (lwt=2)) 
print(base_tab)

代码解读:descrTable(y~x1+x2+x3+x4+x......,data=数据集名,method = c (偏态数据=2)),指定因变量与自变量,设置数据集名。最后的method对指定偏态数据采用秩和检验,未指定连续变量采用t检验,分类数据采用卡方检验。

5.logisitic回归

采用autoReg包

使用glm() 函数构建回归模型,glm(y~x1+x2+x3+x4+x......,data=数据集名,family="binomial"),指定因变量与自变量,设置数据集名。

logfit<-glm(low ~ age + lwt + race + smoke + ht + ui + ftv,data=birthwt,family = "binomial")
summary(logfit)

此处参数family规定了回归模型的类型:family="binomial"指适用于二元离散因变量(binary)。

(1)显示单因素及多因素回归结果
logreg1<-autoReg(logfit,uni=TRUE)#显示单因素及多因素 
logreg1 
logtable1<-myft(logreg1)
(2)只显示多因素回归结果
 logreg2<-autoReg(logfit,milti=TRUE)#只显示多因素 
 logreg2 
 logtable2<-myft(logreg2)
(3)先单后多
logreg3<-autoReg(logfit,uni=TRUE,threshold=0.05)
logreg3
logtable3<-myft(logreg3)
(4)逐步回归法
logreg4<-autoReg(logfit,uni=TRUE,threshold=0.05, final=T) #final=T逐步回归 logreg4 
logtable4<-myft(logreg4)

三、风暴统计复现

(1)统计描述+差异性分析

首先进入风暴统计网站的"风暴智能统计"模块,点击"一键生成规范三线表",这里更推荐大家使用"简单粗暴版",因为进行卡方检验时,可以自动检验变量适用于卡方检验还是fisher法,无需像SPSS一样,自行挑选结果。

比如:本例中的ht变量,应采用fisher法。

(2)导入数据集(目前支持10 M 以内的csv或excel格式)。

(3)数据整理转换

这个模块主要进行数据的预处理,比如"定量变量转分类"、"分类变量值标签设置"、"产生新变量"、"变量重命名"。

①定量变量转分类

例:例:将变量ptl以1为界,分为两组:一组"≥1",一组"<1"。在【定量变量转分类】中选择要转换的定量变量ptl,再选择分组的方法,我们选择"自定义分组",分组临界值输入"1"。

点击"开始分组"会生成新变量"ptl_group"。同样,选择"按照四分位数分组"和"按照中位数分组"也会生成新的分组变量。

注意:按照临界值分组,分组区间为左闭右合,如ptl变量以1为临界值,分为[0,1)和[1,+∞)。若分组临界值有多个,中间以英文符号","隔开即可。

②分类变量值标签设置

例:将变量race变量值打标签,"1=white","2=black","3=other"。可以在原变量基础上修改,也可生成新的变量,切记一定要点"保存"!

③产生新变量

例:将变量bwt单位有g转换为斤,即运用公式"Bwt==bwt*0.001*2"

点击确认,产生新变量"BWT"

④变量重命名

选择原变量,并在下方输入重命名名称即可。

(4)分类变量参照组设置

设置对照组,对变量race中"1=white"设置为对照组。

拖动"1","2","3"的小方块可以调换位置。排序第一位的为对照组。

(5)点击左侧"分组差异性比较",指定不同的变量类型。风暴统计可以自动检验分类变量使用卡方法或fisher法!并在"statistic"注明检验统计量。

此外,可以导出word版结果,结果直接呈现三线表形式,包括表名与表头一步到位。如需细节打磨,word形式方便进行编辑!

word版结果如下:

(6)logistic回归分析

①指定因变量与自变量的变量类型

②指定logistic回归方式

当不指定先单后多P值限制时,所有变量都可进入多因素回归模型。可点击下方菜单栏,分别查看单因素回归结果、多因素回归结果、单因素+多因素在同一表格结果。表格中的P值出现0.000时,会自动调整会规范表达:<0.001,省时又省心!

同理,可以选择先单后多的回归方式,这个方法比较传统也是大家习惯性用的比较多的。那么什么时候推荐用逐步回归呢?有以下2种情况,可以考虑使用:①探索性研究、探讨多个影响因素时,候选的影响因素实在太多(单因素分析后P值<0.05者,仍然超过10个),或者样本量不大。②构建预测模型时候,就放心大胆的用。其他场景,一般不建议用逐步回归法。可以先单因素后多因素,控制自变量个数。

这里由于自变量个数不多,我们采用先单后多的方式进行筛选。

③导出word版结果

风暴统计结果结果展示如下,直接生成word版三线表,高效快速!