本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。
文章目录
前言
这是R语言和医学统计学的第8篇内容。
主要是用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列是因变量。
数据结构见上图,只截取了一部分。
进行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
因为实际采用的方法略有不同,结果和课本也不完全一样,不过并不影响结果。
本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。