查看原文
其他

R语言和医学统计学系列(8):logistic回归

阿越就是我 医学和生信笔记 2023-02-25


前言

这是R语言和医学统计学的第8篇内容。

第1篇请见:R语言和医学统计学系列(1):t检验

第2篇请见:R语言和医学统计学系列(2):方差分析

第3篇请见:R语言和医学统计学系列(3):卡方检验

第4篇请见:R语言和医学统计学系列(4):秩和检验

第5篇请见:R语言和医学统计学系列(5):多因素方差分析

第6篇请见:R语言和医学统计学系列(6):重复测量方差分析

第7篇请见:R语言和医学统计学系列(7):多元线性回归

主要是用R语言复现课本中的例子。我使用的课本是孙振球主编的《医学统计学》第4版,封面如下:

logistic回归

使用课本例16-2的数据,直接读取:

df16_2 <- foreign::read.spss("E:/各科资料/医学统计学/研究生课程/12 Logistic Regression18-9/12 Logistic Regression18-9/例16-02冠心病.sav"
                             to.data.frame = T,
                             reencode  = "utf-8")
## re-encoding from utf-8

str(df16_2)
## 'data.frame': 54 obs. of  10 variables:
##  $ 序号: num  1 2 3 4 5 6 7 8 9 10 ...
##  $ x1  : Factor w/ 4 levels "<45","45~","55~",..: 3 2 2 2 3 3 2 3 2 1 ...
##  $ x2  : Factor w/ 2 levels "无","有": 2 1 2 1 1 1 1 1 1 1 ...
##  $ x3  : Factor w/ 2 levels "无","有": 1 2 1 1 1 2 2 2 1 1 ...
##  $ x4  : Factor w/ 2 levels "不吸","吸": 2 2 2 2 2 2 1 2 1 2 ...
##  $ x5  : Factor w/ 2 levels "无","有": 1 1 1 1 1 1 1 2 1 1 ...
##  $ x6  : Factor w/ 2 levels "低","高": 1 1 1 1 2 1 1 1 1 1 ...
##  $ x7  : Factor w/ 3 levels "<24","24~","26~": 1 1 1 1 1 2 1 1 1 1 ...
##  $ x8  : Factor w/ 2 levels "否","是": 2 1 1 1 2 2 1 1 2 1 ...
##  $ y   : Factor w/ 2 levels "对照","病例": 1 1 1 1 1 1 1 1 1 1 ...
##  - attr(*, "variable.labels")= Named chr [1:10] "" "年龄(岁)" "高血压史" "高血压家族史" ...
##   ..- attr(*, "names")= chr [1:10] "序号" "x1" "x2" "x3" ...
##  - attr(*, "codepage")= int 65001

数据一共10列,第1列是编号,第2-9列是自变量,第10列是因变量。

image-20220124205233335

数据结构见上图,只截取了一部分。

进行logistic回归(逐步回归):

f <- glm(y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8, data = df16_2, family = binomial())

f1 <- step(f, direction = "forward")
## Start:  AIC=64.03
## y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8

summary(f1)
## 
## Call:
## glm(formula = y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8, family = binomial(), 
##     data = df16_2)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.1727  -0.4719  -0.1409   0.5315   2.5914  
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)   
## (Intercept) -5.46026    2.07370  -2.633  0.00846 **
## x145~        0.85285    1.54399   0.552  0.58070   
## x155~        0.47754    1.59320   0.300  0.76438   
## x165~        3.44227    2.10985   1.632  0.10278   
## x2有         1.14905    0.93176   1.233  0.21750   
## x3有         1.66039    1.16857   1.421  0.15535   
## x4吸         0.85994    1.32437   0.649  0.51613   
## x5有         0.73600    0.97088   0.758  0.44840   
## x6高         3.92067    1.57004   2.497  0.01252 * 
## x724~       -0.03467    1.13363  -0.031  0.97560   
## x726~       -0.38230    1.61710  -0.236  0.81311   
## x8是         2.46322    1.10484   2.229  0.02578 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 74.786  on 53  degrees of freedom
## Residual deviance: 40.028  on 42  degrees of freedom
## AIC: 64.028
## 
## Number of Fisher Scoring iterations: 6

因为实际采用的方法略有不同,结果和课本也不完全一样,不过并不影响结果。

欢迎关注我的公众号:医学和生信笔记

医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!


往期精彩内容:

R语言ggtern包画三元图详解


R语言ggsci配色包详解


R语言生信图表学习之网络图


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存