上一篇文章中我们已经介绍了使用ems计算标准化死亡率 (SMR),但是它需要两个率,一个实际死亡率,一个估计死亡率,我们平时使用生存数据数据中没有估计死亡率,估计死亡率需要自己计算。
本章我们来介绍使用R语言计算估计死亡率并行标准化死亡率 (SMR)计算。需要使用到我们的一个SMR数据(公众号回复:SMR1可以获得该数据),我们先把数据导入并查看该数据结构。
library(survival)
bc<-read.csv("E:/r/test/smr1.csv",sep=',',header=TRUE)
这个数据很简单sex为性别,age是年龄,entry_date为诊断也就是进入这个队列的时间,status为结局变量,futime为生存时间
我们首先要算出它的haz, 每人年的平均人口死亡率(d/(pyrs),其中 d 是死亡人数,pyrs 是人年),可以通过survival包的survexp函数计算
haz <- survexp(futime ~ 1, data=bc,
rmap = list(year=entry_date, age=age,sex=sex),
method='individual.h')## sex这个指标不能少,如果全是女的也要设置
显示
这里出错了,因为entry_date格式要为一个日期,在这里它为字符格式,所以我们要对它进行转换一下
class(bc$entry_date)
bc$entry_date<-as.Date(bc$entry_date)
转换好以后就可以继续了,得到结果
bc$haz <- survexp(futime ~ 1, data=bc,
rmap = list(year=entry_date, age=age,sex=sex),
method='individual.h')
得到haz后我们就可以通过泊松回归计算它的标准化死亡率 (SMR),
先建立方程
fit2<-glm(status~ 1+ offset(log(haz)) , family=poisson,data = bc)
summary(fit2)
通过提取系数就可以得到SMR值了
exp(coef(fit2))
所以它的SMR为6.317
由于计算出了haz,得到了两个率,我们也可以使用上一章用的ems包来计算
library(ems)
SMR(bc$status, bc$haz)
OK,两个方法的结果一致。