R语言手把手教你制作一个交互效应表

本文介绍了如何使用R语言来分析和可视化交互作用效应,特别是在科学论文中的应用。通过对早产低体重儿数据的处理,将分类变量转化为因子,并基于不同种族划分亚组,构建逻辑回归模型(glm)来研究母亲年龄与早产之间的交互影响。虽然文章未直接提供交互作用的P值计算过程,但展示了如何提取模型系数和构建相关表格,以增强结果的可靠性。
摘要由CSDN通过智能技术生成

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技,几乎在高分的SCI中必出现,因为把人群分为亚组后再进行统计可以增强文章结果的可靠性.
在这里插入图片描述
在这里插入图片描述
今天我们使用R语言来绘制上图这样一个表格,继续使用的是我们的早产数据,我们先导入数据

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

在这里插入图片描述
这是一个关于早产低体重儿的数据(公众号回复:早产数据,可以获得该数据),低于2500g被认为是低体重儿。数据解释如下:low 是否是小于2500g早产低体重儿,age 母亲的年龄,lwt 末次月经体重,race 种族,smoke 孕期抽烟,ptl 早产史(计数),ht 有高血压病史,ui 子宫过敏,ftv 早孕时看医生的次数
bwt 新生儿体重数值。
我们先把分类变量转成因子

bc$race<-ifelse(bc$race=="black",1,ifelse(bc$race=="white",2,3))
bc$smoke<-ifelse(bc$smoke=="nonsmoker",0,1)
bc$low<-factor(bc$low)
bc$race<-factor(bc$race)
bc$ht<-factor(bc$ht)
bc$ui<-factor(bc$ui)

假设我们想研究母亲年龄和早产关系的影响,我们需了解不同种族间年龄和早产的交互影响。
先要把年龄分成3组数据

dat1<-subset(bc,bc$race==1)
dat2<-subset(bc,bc$race==2)
dat3<-subset(bc,bc$race==3)

分别使用这3个数据建立模型,注意一下模型是没有race这个指标的

f1<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat1,
    family=binomial(link = "logit"))
f2<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat2,
        family=binomial(link = "logit"))
f3<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat3,
        family=binomial(link = "logit"))

接下来需要对每个模型提取系数,我们先对模型f1进行提取

b<-summary(f1)$coeff[2,1]#提取系数
se<-summary(f1)$coeff[2,2]#提取标准误
OR<-round(exp(b),2)
ll<-round(exp(b-1.96*se),2)
ul<-round(exp(b+1.96*se),2)

在这里插入图片描述
接下来需要对其他模型进行一样的提取系数,我这里写成一个循环来跑,先设定一个输出函数

jj<-function(data) {
  dat<-data
  fit<-glm(low~age + lwt + smoke + ptl + ui + ftv, data=dat,
           family=binomial(link = "logit"))
  b<-summary(fit)$coeff[2,1]#提取系数
  se<-summary(fit)$coeff[2,2]#提取标准误
  OR<-round(exp(b),3)
  ll<-round(exp(b-1.96*se),3)
  ul<-round(exp(b+1.96*se),3)
  d<-data.frame(OR,ll,ul)
}

把3个数据整成一个列表

dt<-list(dat1,dat2,dat3)

使用sapply函数来跑

out<-sapply(dt,jj)

在这里插入图片描述
需要对生成结果转置一下

out1<-as.data.frame(t(out))

在这里插入图片描述
这样结果OR值和可信区间就生成了,交互效应的P值需要另外计算,我这里就不演示了,有兴趣的看我既往文章,我这里P值是0.7358

p<-0.7358

接下来设置一下表格,现增加一行空值

out2<-rbind(c("","",""),out1)

在这里插入图片描述
放入我们的结果并重新命名

out2$p.for.Interaction<-c(0.075,"","","")
rownames(out2)<-c("race","black","white","other")

最后结果展示
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值