KM 估计的差异:svykm 与带权重的 survfit

问题描述 投票:0回答:1

我正在病例对照研究中用权重来估计生存率。所以所有情况的权重都等于 1。 当绘制估计曲线并将其与未加权估计进行比较时,我注意到案例的 KM 曲线不重叠。

这是“survival”包中数据的代码。

library(dplyr)
library(tidyverse)
library(survival)
library(broom)
library(WeightIt)
library(survey)


a <- survival::ovarian

#Calculation of weghts:

weights <- WeightIt::weightit(rx ~ age + ecog.ps + resid.ds, int = T, estimand = "ATT", data = a, method = "glm" , stabilize = F, missing = "saem") 
a$weights <- weights$weights
a$ps <- weights$ps

design <- svydesign(ids = ~ 1, data = a, weights = ~weights)

KM_PFS <- survfit(Surv(futime, fustat > 0)~rx, a) # KM naive 
KM_PFS_w_TT <- survfit(Surv(futime, fustat > 0)~rx, a, weights = weights, robust = T)
KM_PFS_w <- svykm(Surv(futime, fustat > 0)~rx, design = design,se=T)


par(mfrow=c(1,1))
plot(KM_PFS_w[[2]], lwd=2, col=c("red"),xlab="Time (months)",ylab="PFS",#svykm treated
     xaxt="n", ci=F)
#lines(KM_PFS_w[[1]],col=c("blue"),lwd=2)
lines(KM_PFS,col=c("black","black"),lwd=2,lty=c(0,2)) #km naive treated
lines(KM_PFS_w_TT,col=c("orange","violet"),lwd=2,lty=c(0,1))#km TT treated

cas_km_w_TT <- tidy(KM_PFS_w_TT)%>%filter(strata == "rx=1")
cas_km <- tidy(KM_PFS)%>%filter(strata == "rx=1")
cas_km_w <- do.call("rbind", lapply(names(KM_PFS_w), \(x) {
  data.frame(strata = x, do.call("cbind", KM_PFS_w[[x]]))
})) %>% filter(strata ==1)
r survey survival
1个回答
0
投票

这与

svykm(..., se=TRUE)
的计算与没有的计算不同有关 - 如果您不要求标准误差,则曲线将匹配。正如
svykm
的文档所解释的:

计算标准误差时,生存曲线实际上是 Aalen(基于危险)估计器,而不是 Kaplan-Meier 估计器。

另请注意,这些包不使用相同的“权重”,这里

survey
的作者解释了差异(但这仅对方差估计重要)。

© www.soinside.com 2019 - 2024. All rights reserved.