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

新版亚组交互效应函数(P for interaction)newscitb5 1.3版本发布--用于一键生成交互效应表

在SCI文章中,交互效应表格(通常是表五)能为文章锦上添花,增加文章的信服力,增加结果的可信程度,还能进行数据挖掘。什么是亚组,通常就是特殊类型人群,比如男女,种族等,就是说你的数据放入特殊人群中结果还可靠吗?如果在各个特殊人群中,你的结果很稳定,说明你的结论很可靠。如果亚组的结论和你的数据数据结论相反,你可以拿来做个新论题。还可以比较不同亚组之间有无区别,比如做了心脏支架和没做支架的区别,可以发现很多新思路,易于数据挖掘。

在这里插入图片描述
目前不少粉丝私信问我,上面这种亚组交互的表格怎么做,
在既往咱们已经在文章《scitb5函数2.1版本(交互效应函数P for interaction)发布----用于一键生成交互效应表、森林图》中已经介绍了可以生成亚组交互表格的scitb5函数,但是在X为分类变量的时候,生成的亚组交互函数是如下图所示这样的
在这里插入图片描述
这两个表格是有区别的,主要是参照物不同,就拿第一个表格的SEX这栏来说,第一个表格主要是两个亚组男和女的情况,在男的这个亚组中,Q2-4是和Q1进行比较,女的亚组中也是一样,Q2-4是和Q1进行比较。因此会有两个Ref,因为分成了两个层。
在第二个表格进行了另外一种方式对数据的处理,等于是把数据分层了8个亚组,女性Q1组,女性Q2组,女性Q3组,女性Q4组,男性Q1组,男性Q2组,男性Q3组,男性Q4组,以女性女性Q1组为参考,其他数据和它进行了参考。
两种方法各有所长,都有文章进行发表,既往的scitb5函数生成的是第二种表格。
应粉丝的要求,我又编写了新的亚组交互函数用于生成下图也就是第一张图的这种表格,就叫newscitb5函数,想要取个响亮的名字真费劲

在这里插入图片描述

下面我来给大家演示一下,这种表格我们Y只能是二分类的,X可以是连续的和分类的,但最后都按分类的来处理。
咱们先导入数据和我写的函数,需要survival包和lmtest支持,这两个包要先安装

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)
bc$smoke<-factor(bc$smoke)

导入我写的函数,导入成功的话应该左下角出现13个函数

source("E:/r/myfit/newscisub13.R")

在这里插入图片描述
接下来咱们需要定义协变量和分层因子,cov1就是你模型中的协变量,Interaction就是你的分层变量

cov1<-c("age")
Interaction<-c("ht","ui","smoke")

生成数据,data就是你的数据,x就是你研究的变量,y就是你的结局变量,结局变量必须是分类变量,Interaction就是你的分层变量,cov就是你的协变量,family="glm"这里是固定的

out<-newscitb5(data=bc,x="race",y="low",Interaction=Interaction,cov = cov1,family="glm")

在这里插入图片描述
这样表格就可以轻松生成了。下面咱们来手动检验一下咱们的结果对不对,以ht为例子,如果你购买了既往的scitb5函数,也可以这样做出上面表格
先把数据分层ht的两个亚组数据

dat1<-subset(bc,bc$ht==0)
dat2<-subset(bc,bc$ht==1)

生成两个亚组的数据模型

fit1<-glm(low~race+age,family = "binomial",data = dat1)
fit2<-glm(low~race+age,family = "binomial",data = dat2)

生成两个模型结果

在这里插入图片描述
咱们可以看到手动手动算出来和咱们的表格一模一样,如果你购买了是scitb5,再把做出来的交互值填进去就做好啦。

下面咱们来做一个下图这样带有 p for trend的
在这里插入图片描述
做出这样p for trend的必须有两个条件,第一个是我们观察的变量X必须是连续变量,2是转换后的分类必须大于3个等级,就是像上图一样必须有G0,G1和G2一共3个,只有2个是做不出来趋势的。你看第一张图的时候它的X变量也是一个连续变量,做了分位数后再行亚组比较的

cov1<-c("ui")
Interaction<-c("ht","race","smoke")
out<-newscitb5(data=bc,x="age",y="low",Interaction=Interaction,cov = cov1,family="glm",contain=F)

在这里插入图片描述
出现下面红字并不是报错,而是提醒你观察变量X是个连续变量

在这里插入图片描述
有些细心的粉丝可能发现了ht等于1的时候有个p for trend的值没有算出来,是缺失的,为什么会这样呢?下面我来手动算下给大家看看,方法是参照了文章《手把手教你R语言计算校正混杂因素后的P for trend》,我这里就不解释了,直接算了
咱们先要把年龄进行分段然后进行标识

fenwei<-quantile(bc$age,c(0,.25,.50,.75,1))
Q<-cut(bc$age,breaks=c(fenwei),right = F,labels = c(0,1,2,3))#把 age 划分为 4 个等分到区间

在这里插入图片描述
但是传统方法算出来有个小缺点,它的最右侧不算进去,所以咱们可以看到有一个缺失,这里我使用我自编小程序转换一下

Q<-rankvar(bc$age,4)
bc$Q<-Q

在这里插入图片描述
大家看下我这里是没有缺失值的,其他都一样,然后和刚才一样把数据分组

dat1<-subset(bc,bc$ht==0)
dat2<-subset(bc,bc$ht==1)

再dat1中把中位数加进去

library(dplyr)
dat1<-dat1 %>% group_by(Q) %>%mutate(Median= median(age,na.rm=TRUE))%>%ungroup()

在这里插入图片描述
上图可以看到中位数已经生成,带入模型就可以了

f<-glm(low~Median+ui,family = "binomial",data = dat1)
summary(f)

在这里插入图片描述
最后咱们可以看到P值是0.361和咱们计算的一模一样,如果你是手动计算有缺失值的话可能会和我算的差一点,但是也应该差不多
接下来咱们来看看为什么 ht==1这组跑不出来,主要再数据结构上ui这里只有一个分类
在这里插入图片描述
我们可以看到只有一个分类是组成不了模型的

dat2<-dat2 %>% group_by(Q) %>%mutate(Median= median(age,na.rm=TRUE))%>%ungroup()
f<-glm(low~Median+ui,family = "binomial",data = dat2)

在这里插入图片描述
所以有时候不是数据多少的问题,结构也很重要。接着这个问题,如果使用函数过程中遇到这个报错
Error in getpfi(xlv, xxname, yvname, Interaction, flmadj, tmp0, xvname_, :
找不到对象’mdli’
在这里插入图片描述
也是一模一样的情况,你的代码没错,函数也没错,就是你的交互变量的亚组数据太少,生成不了模型,处理就是:可以删除莫格数据过少的亚组变量,或者增加数据量。

最后介绍一下怎么调节分位数回归的个数,默认是4个,我换个大点的数据来演示一下

library(foreign)
bc <- read.spss("E:/r/Breast cancer survival agec.sav",use.value.labels=F, to.data.frame=T)
bc <- na.omit(bc)

在这里插入图片描述
我们先来看看数据(公众号回复:乳腺癌,可以获得数据):
age表示年龄,pathsize表示病理肿瘤大小(厘米),lnpos表示腋窝淋巴结阳性,histgrad表示病理组织学等级,er表示雌激素受体状态,pr表示孕激素受体状态,status结局事件是否死亡,pathscat表示病理肿瘤大小类别(分组变量),ln_yesno表示是否有淋巴结肿大,time是生存时间,后面的agec是我们自己设定的,不用管它。
分类变量转成因子

bc <- na.omit(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("ln_yesno","histgrad")

生成数据,默认是4个分组

out<-newscitb5(data=bc,x="age",y="status",Interaction=Interaction,cov = cov1,family="glm")

在这里插入图片描述
想要调节成5个只需调节num参数

out<-newscitb5(data=bc,x="age",y="status",Interaction=Interaction,cov = cov1,family="glm",num=5)

在这里插入图片描述
这样就轻松生成了。这个过程还生成了每个分位数的P值,但是不知道怎么做表格,所以没有导出来。COX回归版本正在写,还要等一等。

如果还是不会可以看下面视频操作。

新版亚组交互效应函数(P for interaction)newscitb5 1.3版本发布--用于一键生成交互效应表

有问题可以私信我。获取新版亚组交互函数,可以看下面这篇文章

新版亚组交互效应函数(P for interaction)newscitb5 1.3版本发布–用于一键生成交互效应表

http://www.lryc.cn/news/395419.html

相关文章:

  • gpt讲 Observable 对象
  • STM32的SPI接口详解
  • 谷歌+火狐浏览器——实现生成二维码并实现拖动——js技能提升
  • 128陷阱详解(从源码分析)
  • 点云处理实操 基于多项式重构的平滑和法线估计
  • MongoDB在Linux下的安装与基本操作指南
  • 端口占用快速解决
  • 普中51单片机:矩阵按键扫描与应用详解(五)
  • SQLite Glob 子句
  • Redis基础教程(十七):Redis数据备份与恢复
  • 基于FPGA的千兆以太网设计(1)----大白话解释什么是以太网
  • wordpress的restfull API使用教程,之如何用postman调试API,以便能使用vue等前端框架开发主题
  • 刷题刷题刷题
  • 【Spring Boot】统一异常处理
  • java —— tomcat 部署项目
  • 数据库的优点和缺点分别是什么
  • 考研数学暑期规划|50天吃透1000+660!
  • GPT-5 一年半后发布?我们可能所受影响与应用领域
  • CSS上下悬浮特效
  • Knife4j的原理及应用详解(三)
  • Android约束布局的概念与属性(1)
  • 阿里巴巴开源自然语音交互框架;在抱抱脸上使用LivePortrait;58种提示技术的工具库
  • 《算法笔记》总结No.5——递归
  • 鸿蒙小练习
  • 谷粒商城-个人笔记(集群部署篇二)
  • Python面试题-7
  • 微信⼩程序的电影推荐系统-计算机毕业设计源码76756
  • 理解与解读李彦宏在2024世界人工智能大会的发言:应用优先于技术
  • 数字化打破传统,引领企业跨界经营与行业生态盈利
  • 【链表】- 链表相交