写在前面的话,本函数不适用于NHANES数据,不适用于逻辑回归,仅适用于生存分析 。请注意甄别。电子产品,不能退换。

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

在这里插入图片描述
目前不少粉丝私信问我,上面这种亚组交互的表格怎么做,
在既往咱们已经在文章《新版亚组交互效应函数(P for interaction)newscitb5 1.3版本发布–用于一键生成交互效应表》中已经介绍了可以新版生成亚组交互表格的newscitb函数,但是只能用于逻辑回归,不能用于COX回归,本次应粉丝要求特意编写了能进行生存分析的新版亚组函数newscitb5.coxph,和原来的newscitb5函数比较多了一个coxph后缀,表明它是用于生存分析的。

下面我来给大家演示一下,上面这种表格我们Y只能是二分类的,X可以是连续的和分类的,但最后都按分类的来处理。
咱们先导入数据和我写的函数,需要survival包支持,这个包要先安装,此外第一次运行的时候,函数还会安装R6,httr,base64enc这三个辅助包,要是没有安装的话需要自己手动安装一下。

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)

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

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","pr")

一键生成交互效应表。如果你使用过我写的任意一个亚组函数,使用本函数毫无压力

out<-newscitb5.coxph(data=bc,x="age",y="status",Interaction=Interaction,cov = cov1,time="time",family="cox")

在这里插入图片描述
下面我手动验算一下给大家看看,方法已经在文章《新版亚组交互效应函数(P for interaction)newscitb5 1.3版本发布–用于一键生成交互效应表》的视频讲得很清楚了,想研究方法的可以看一下,这边直接过一下代码

这样表格就可以轻松生成了。下面咱们来手动检验一下咱们的结果对不对,以ht为例子,如果你购买了既往的scitb5函数,也可以这样做出上面表格
咱们先要把年龄进行分段然后进行标识

###手动算法
Q<-rankvar(bc$age,4)
bc$Q<-Q

通过ln_yesno变量对数据分亚组

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

对每个亚组生成中位数

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

先求P值,可以看到手动算法和函数算出来基本一样。

fit1<-coxph(Surv(time,status)~Median+er,data = dat1)
fit2<-coxph(Surv(time,status)~Median+er,data = dat2)

在这里插入图片描述
查看HR

fit1<-coxph(Surv(time,status)~as.factor(Q)+er,data = dat1)
fit2<-coxph(Surv(time,status)~as.factor(Q)+er,data = dat2)

在这里插入图片描述
HR基本相同,表明得出的结果非常可靠,下面演示一下分类变量算法,和连续变量差不多,
先定义协变量和分层变量

###分类变量

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

生成结果

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

在这里插入图片描述
这样结果就轻松做出来啦。还有一些细节操作和报错的解决办法请看这篇文章《新版亚组交互效应函数(P for interaction)newscitb5 1.3版本发布–用于一键生成交互效应表》的视频,已经说得很详细了,这里就不重复了。

如果你还不会,可以看下面这个视频

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐