分析队列人群有无死亡人数超额,通常应用标准人群死亡率来校正,即刻观察到中的实际死亡数(D)与定一个标准的死亡人数(E),D与E之比称为死亡比(standarized Mortality ratio,SMR). 标准化死亡率 (SMR) 是观察到的病例与预期病例的比率
因此计算SMR需要两个发病率,观察到的发病率和实际发病率,计算我们使用R语言ems包来进行演示
首先导入R包和其自带的ICU数据
library(ems)
bc<-data(icu)
attach(icu)
我们先来看看数据结构,数据很多名字很长,下图只是显示其中一部分,Unit The name of the ICU unit: ICU单元名称,Age Patient age年龄 患者年龄,Gender男性 = 1,女性 = 0,UnitAdmissionDateTimeICU入住日期和时间,UnitDischargeDateTimeICU出院日期和时间,UnitDischargeName结局:死亡 = 1,UnitDestinationName ICU住院日期,HospitalDischargeDate出院日期,HospitalDischargeName住院结果,LengthHospitalStayPriorUnitAdmission入院前的住院时间,LengthHospitalStayPriorUnitAdmissionICU 入院前患者的来源AdmissionTypeName_pri Admission as Clinical treatmen:治疗手段:1.药物2.择期手术3紧急手术
Vasopressors_D1是否要升压药,IsMechanicalVentilation1h是否1小时需要机械通气,CharlsonComorbidityIndex合并症指数,Saps3Points SAPS 3 score估计死亡概率,
SofaScoreSOFA 分数。
虽然文章数据很多,但是我们使用到的不多,我们先把分类变量改成因子,对一些变量打上标签
attr(icu, "var.labels")[match(c("Unit", "IsMechanicalVentilation1h",
"AdmissionTypeName_pri","Vasopressors_D1"), names(icu))] <-
c("ICU unit","Mechanichal ventilation","Admission type","Vasopressors at admission")
icu$Saps3DeathProbabilityStandardEquation <- icu$Saps3DeathProbabilityStandardEquation /100###除以100变成比率
icu$IsMechanicalVentilation1h <- as.factor(ifelse(icu$IsMechanicalVentilation1h == 1, "Yes", "No"))
icu$AdmissionTypeName_pri <- as.factor(icu$AdmissionTypeName_pri)
levels(icu$AdmissionTypeName_pri) <- c("Clinical","Elective surgery", "Urgent surgery")
icu$Vasopressors_D1 <- as.factor(ifelse(icu$Vasopressors_D1 == 1, "Yes", "No"))
处理好数据后,我们就可以分析了,这文章的死亡率主要有两个,一个是UnitDischargeName指标的实际死亡率,一个是由SOFA评分构成的预测死亡率
SMR(icu$UnitDischargeName, icu$Saps3DeathProbabilityStandardEquation)
OK,实际死亡人数,预测死亡人数,SMR和可信区间都出来了,我们还可以求出分组的SMR和可信区间,假如我们想知道是否上呼吸机的SMR有无区别,
x1 <- SMR.table(data = icu, obs.var = "UnitDischargeName",
pred.var = "Saps3DeathProbabilityStandardEquation",
group.var = c( "IsMechanicalVentilation1h"),
reorder = "no",
decreasing = TRUE,
use.label = TRUE)### obs.var为实际死亡得变量,pred.var为预测死亡变量
假如我们想多几组
x <- SMR.table(data = icu, obs.var = "UnitDischargeName",
pred.var = "Saps3DeathProbabilityStandardEquation",
group.var = c( "IsMechanicalVentilation1h",
"AdmissionTypeName_pri","Vasopressors_D1"),
reorder = "no",
decreasing = TRUE,
use.label = TRUE)
还可以对数据做出可视化视图
forest.SMR(x, digits = 2)