“医学和生信笔记,专注R语言在临床医学中的使用、R语言数据分析和可视化。主要分享R语言做医学统计学、临床研究设计、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。
R语言二项逻辑回归: R语言logistic回归的细节解读
R语言多项逻辑回归: R语言多项逻辑回归-因变量是无序多分类
R语言有序逻辑回归:R语言有序logistic回归-因变量为等级资料
条件逻辑回归
conditional logistic regression是针对配对数据资料分析的一种方法。在一些病例-对照研究中,把病例和对照按照年龄、性别等进行配对,形成多个匹配组,各匹配组的病例数和对照数是任意的,并不是1个对1个,常用的是每组中有一个病例和多个对照,即1:M配对研究。
使用孙振球医学统计学第4版例16-3的数据。某北方城市研究喉癌发病的危险因素,用1:2配对研究,现选取了6个可能的危险因素并记录了25对数据,试做条件logistic回归。
代码语言:javascript复制df <- foreign::read.spss("./例16-03.sav",to.data.frame = T)
psych::headtail(df)
## i y x1 x2 x3 x4 x5 x6
## 1 1 1 3 5 1 1 1 0
## 2 1 0 1 1 1 3 3 0
## 3 1 0 1 1 1 3 3 0
## 4 2 1 1 3 1 1 3 0
## ... ... ... ... ... ... ... ... ...
## 72 24 0 1 1 2 3 2 0
## 73 25 1 1 4 1 1 1 1
## 74 25 0 1 1 1 3 2 0
## 75 25 0 1 1 1 3 3 0
str(df)
## 'data.frame': 75 obs. of 8 variables:
## $ i : num 1 1 1 2 2 2 3 3 3 4 ...
## $ y : num 1 0 0 1 0 0 1 0 0 1 ...
## $ x1: num 3 1 1 1 1 1 1 1 1 1 ...
## $ x2: num 5 1 1 3 1 2 4 5 4 4 ...
## $ x3: num 1 1 1 1 1 1 1 1 1 1 ...
## $ x4: num 1 3 3 1 3 3 3 3 3 2 ...
## $ x5: num 1 3 3 3 2 2 2 2 2 1 ...
## $ x6: num 0 0 0 0 0 0 0 0 0 1 ...
i
是配对的对子数。
不需要变成因子型。
使用survival::clogit
进行条件逻辑回归:
library(survival)
fit <- clogit(y ~ x1 x2 x3 x4 x5 x6 strata(i), data = df, method = "exact")
summary(fit)
## Call:
## coxph(formula = Surv(rep(1, 75L), y) ~ x1 x2 x3 x4 x5
## x6 strata(i), data = df, method = "exact")
##
## n= 75, number of events= 25
##
## coef exp(coef) se(coef) z Pr(>|z|)
## x1 2.58880 13.31380 2.50172 1.035 0.3008
## x2 1.68796 5.40843 0.68545 2.463 0.0138 *
## x3 2.31944 10.16995 1.26096 1.839 0.0659 .
## x4 -3.88886 0.02047 1.90656 -2.040 0.0414 *
## x5 -0.49102 0.61200 1.19020 -0.413 0.6799
## x6 3.50899 33.41447 2.13723 1.642 0.1006
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## exp(coef) exp(-coef) lower .95 upper .95
## x1 13.31380 0.07511 0.0988170 1793.7921
## x2 5.40843 0.18490 1.4112830 20.7266
## x3 10.16995 0.09833 0.8589963 120.4056
## x4 0.02047 48.85506 0.0004878 0.8589
## x5 0.61200 1.63399 0.0593818 6.3074
## x6 33.41447 0.02993 0.5066653 2203.6771
##
## Concordance= 0.91 (se = 0.064 )
## Likelihood ratio test= 42.21 on 6 df, p=2e-07
## Wald test = 7.71 on 6 df, p=0.3
## Score (logrank) test = 29.13 on 6 df, p=6e-05
结果非常齐全,β值,OR值,P值等信息都有了。
参考资料
- https://blog.csdn.net/weixin_41744624/article/details/105506951
- https://zhuanlan.zhihu.com/p/113403422
- https://duanku.pai-hang-bang.cn/kuzi_1046977453210716059
- https://bookdown.org/chua/ber642_advanced_regression/
- https://peopleanalytics-regression-book.org/