查看原文
其他

R语言条件(配对)逻辑回归-因变量是配对资料

阿越就是我 医学和生信笔记 2023-06-15
关注公众号,发送R语言python,可获取资料

医学和生信笔记,专注R语言在临床医学中的使用、R语言数据分析和可视化。主要分享R语言做医学统计学、临床研究设计、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等

💡专注R语言在🩺生物医学中的使用


R语言二项逻辑回归: R语言logistic回归的细节解读

R语言多项逻辑回归: R语言多项逻辑回归-因变量是无序多分类

R语言有序逻辑回归:R语言有序logistic回归-因变量为等级资料

条件逻辑回归

conditional logistic regression是针对配对数据资料分析的一种方法。在一些病例-对照研究中,把病例和对照按照年龄、性别等进行配对,形成多个匹配组,各匹配组的病例数和对照数是任意的,并不是1个对1个,常用的是每组中有一个病例和多个对照,即1:M配对研究。

使用孙振球医学统计学第4版例16-3的数据。某北方城市研究喉癌发病的危险因素,用1:2配对研究,现选取了6个可能的危险因素并记录了25对数据,试做条件logistic回归。

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值等信息都有了。

参考资料

  1. https://blog.csdn.net/weixin_41744624/article/details/105506951
  2. https://zhuanlan.zhihu.com/p/113403422
  3. https://duanku.pai-hang-bang.cn/kuzi_1046977453210716059
  4. https://bookdown.org/chua/ber642_advanced_regression/
  5. https://peopleanalytics-regression-book.org/




咨询交流等,欢迎加入🐧QQ交流群:613637742


往期推荐



使用R语言快速绘制三线表

基于data.table的“tidyverse”?

tableone?table1?傻傻分不清楚

使用R语言创建好看的表格

gt包绘制表格详细介绍!

使用gtExtra美化表格

超强的gtSummarygt + comparegroups ??

相关矩阵的ggplot2版本,方便拼图

机器学习算法识别结直肠癌中的免疫相关lncRNA signature

corrplot包可视化相关矩阵详解

ggduo展示两组数据间的相关

ggpairs展示数据间的相关

R语言ggplot2画相关性热图

ggplot2修改坐标轴详细介绍

分组、离断式坐标轴

超详细教程:修改ggplot2图例

R语言画连线排序


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

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