当前位置: 首页 > article >正文

相加交互效应函数发布—适用于逻辑回归、cox回归、glmm模型、gee模型

在统计分析中交互作用是指某因素的作用随其他因素水平变化而变化,两因素共同作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。相互作用的评估是尺度相关的:乘法或加法。乘法尺度上的相互作用意味着两次暴露的综合效应大于(或小于)两次暴露单独效应的乘积。加性尺度上的相互作用意味着两次暴露的综合效应大于(或小于)两次暴露单独效应的总和。

在这里插入图片描述

目前在大量文章中只报道了乘法交互效应,而加法交互效应报道得较少。有文献表明,单单只用乘法交互效应低估了疾病协同的危险性,从而低估了发病率。

在这里插入图片描述

柳叶刀杂志:没有相乘效应并不代表没有相加效应。相乘模型,也要评估相加交互作用。

今天给大家演示一下,scitable包的scitb6函数,这是一个专门用于相加交互效应模型的函数,下面我给大家演示一下。
先导入数据和R包

setwd("E:/公众号文章2025年/一键相加交互函数")
library(interactionR)
bc<-read.csv("E:/r/test/jiaohu1.csv",sep=',',header=TRUE)

在这里插入图片描述

这个是interactionR包的示例数据,大家想必最关心的是可靠性的问题,先用两个权威的R包来生成结果,等会比较一下

model.glm <- glm(oc ~ alc * smk,
                 family = binomial(link = "logit"),
                 data = bc)
out<-interactionR(model.glm, 
                    exposure_names = c("alc", "smk"), 
                    ci.type = "mover", ci.level = 0.95, 
                    em = F, recode = F)

在这里插入图片描述
Reri:3.74,ap:0.41, si:1.87. 还是这个模型,咱们换个R包来做看,

library(epiR)
epi.interaction(model = model.glm, param = "product", coef = c(2,3,4), 
                conf.level = 0.95)

在这里插入图片描述

我们可以看到,两个R包的值都一样,但是可信区间不同,下面咱们使用scitb6函数来试一下,一句话代码出结果

library(scitable)
out<-scitb6(data=bc,x="alc",y="oc",Interaction="smk",cov = NULL,family="glm")

在这里插入图片描述
和上面2个R包基本一致,所以可靠性是绝对没有问题,其实虽然相加模型没有相乘好理解,但是毕竟公式摆在那里,基本不会算错的。

好的。下面咱们正式进入今天的主题,scitable包支持逻辑回归,cox回归,广义线性混合模型(glmm),广义估计方程(gee)的相加交互模型计算,下面我一一演示一下。

演示之前先说个题外话,我目前收集到2个文章模板觉得还行,结果是朝着这两个模板设计的
一个是下面这个文章:

在这里插入图片描述
在这里插入图片描述
另一个是文章:

在这里插入图片描述
在这里插入图片描述
怎么看这个结果,文字不怎么好说,专门在下面视频再说

正式开始,先导入我的一个不孕症数据

bc<-read.csv("E:/r/test/buyunzheng.csv",sep=',',header=TRUE)

在这里插入图片描述

数据有8个指标,最后两个是PSM匹配结果,我们不用理他,其余六个为:
Education:教育程度,age:年龄,parity产次,induced:人流次数,case:是否不孕,这是结局指标,spontaneous:自然流产次数。
有一些变量是分类变量,我们需要把它转换一下,我人为把年龄分成3段,好方便演示

bc$fage<-cut(bc$age,breaks = 3,labels = c(0,1,2))#平均分为3个区间,命名为0,1,2  可以看成低龄、中龄、高龄
##转分类变量成因子
bc$education<-ifelse(bc$education=="0-5yrs",0,ifelse(bc$education=="6-11yrs",1,2))
bc$spontaneous<-as.factor(bc$spontaneous)    # 可以看成没有流产、流产1次,流产2此以上
bc$case<-as.factor(bc$case)
bc$induced<-as.factor(bc$induced)
bc$education<-as.factor(bc$education)
bc$fage<-as.factor(bc$fage)

设置一下分层变量和协变量,方法和scitb5几乎一样,如果你用过前面的,可以轻松上手

cov1<-c("parity")
Interaction<-c("spontaneous")

一键生成表格,有两种格式,先说第一种

out<-scitb6(data=bc,x="fage",y="case",Interaction=Interaction,cov = cov1,family="glm")

在这里插入图片描述
看到这个你可能会说,这是什么呀,我知道你很懵逼,但是请你先别懵逼,我继续演示,等会再解释,绘制森林图

scitb6forest(out)

在这里插入图片描述
文章中的森林图就出来了,第二种格式

out<-scitb6(data=bc,x="fage",y="case",Interaction=Interaction,cov = cov1,family="glm",type = "B")

好了,两者结果都出来了,我来解释一下,我们先把第一个表格导出来

putoutdata(out)

查看一下生成结果

在这里插入图片描述
我们对这个结果手动改一下,这样感觉是不是就很熟悉了

在这里插入图片描述
还是不明白咱们再对比一下,

在这里插入图片描述
在这里插入图片描述

手动改一下就直接可以投稿了。下面介绍一下cox回归,差不多的,导入并整理数据

library(foreign)
library(survival)
bc <- read.spss("E:/r/test/Breast cancer survival agec.sav",
                use.value.labels=F, to.data.frame=T)
bc <- na.omit(bc)
names(bc)
bc$er<-as.factor(bc$er)
bc$pr<-as.factor(bc$pr)
bc$ln_yesno<-as.factor(bc$ln_yesno)
bc$histgrad<-as.factor(bc$histgrad)
bc$pathscat<-as.factor(bc$pathscat)

设置协变量和分层变量

cov1<-c("er")
Interaction<-c("histgrad")

生成结果

out<-scitb6(data=bc,x="ln_yesno",y="status",Interaction=Interaction,cov = cov1,family="cox",time="time")
scitb6forest(out)

在这里插入图片描述
下面来个广义混合线性模型的,生成一个数据,其实就是前面的数据加个随机项

##先生成一个数据
can <- c(rep(1, times = 231), rep(0, times = 178), rep(1, times = 11), 
         rep(0, times = 38))
smk <- c(rep(1, times = 225), rep(0, times = 6), rep(1, times = 166), 
         rep(0, times = 12), rep(1, times = 8), rep(0, times = 3), rep(1, times = 18), 
         rep(0, times = 20))
alc <- c(rep(1, times = 409), rep(0, times = 49))
dat.df01 <- data.frame(alc, smk, can)
dat.df01$d <- rep(NA, times = nrow(dat.df01))
dat.df01$d[dat.df01$alc == 0 & dat.df01$smk == 0] <- 0
dat.df01$d[dat.df01$alc == 1 & dat.df01$smk == 0] <- 1
dat.df01$d[dat.df01$alc == 0 & dat.df01$smk == 1] <- 2
dat.df01$d[dat.df01$alc == 1 & dat.df01$smk == 1] <- 3
dat.df01$d <- factor(dat.df01$d)
set.seed(1234)
dat.df01$inst <- round(runif(n = nrow(dat.df01), min = 1, max = 5), digits = 0)

在这里插入图片描述
做法差不多的,就是加个ID和改下family

bc<-dat.df01
bc$alc<-as.factor(bc$alc)
bc$smk<-as.factor(bc$smk)
out<-scitb6(data=bc,x="alc",y="can",Interaction="smk",id="inst",cov = NULL,family="lme4")

在这里插入图片描述
最后就是gee模型

#######gee模型
out<-scitb6(data=bc,x="alc",y="can",Interaction="smk",id="inst",cov = NULL,family="gee")
scitb6forest(out)

在这里插入图片描述
可以看到gee和glmm模型算出来的东西基本一样。

看文字理解有点费劲,下面还有视频,欢迎观看

相加效应交互函数发布—适用于逻辑回归、cox回归、glmm、gee模型


http://www.kler.cn/a/502838.html

相关文章:

  • T-SQL编程
  • 龙蜥Linux系统部署docker21.1.3版本
  • 在 Linux 下Ubuntu创建同权限用户
  • CVE-2025-22777 (CVSS 9.8):WordPress | GiveWP 插件的严重漏洞
  • Blazor开发复杂信息管理系统的优势
  • Attention计算中的各个矩阵的维度都是如何一步步变化的?
  • RabbitMQ 在 Spring Boot 项目中的深度应用与实战解析
  • Java异步任务
  • 2024 年 3 月青少年软编等考 C 语言二级真题解析
  • IP层之分片包的整合处理
  • 【优选算法篇】:模拟算法的力量--解决复杂问题的新视角
  • Frp工具配置内网穿透
  • 基于SpringBoot的中华诗词赏析文化交流平台
  • 组织切片配准(切割角度校正)
  • 【IDEA】配置篇
  • JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)
  • strace、ltrace、ftrace 和 dtrace
  • 科技赋能:多功能气膜综合馆引领场馆新革命—轻空间
  • 基于springboot+vue+微信小程序的宠物领养系统
  • 深度学习模型代码书写指导和建议
  • 数据结构重要概念清单
  • 【Linux】正则表达式的使用
  • Linux(Centos7)安装Mysql/Redis/MinIO
  • MySQL 学习指南与资料分享
  • mysql的mvcc理解
  • Redis数据结构服务器