我有一个survfit
对象。对我感兴趣的t=0:50
多年的摘要总结很容易。
summary(survfit, t=0:50)
它给出了每个t的生存时间。
是否有办法获得每个t的危害(在这种情况下,每个t = 0:50的危害从t-1到t)?我想获得与Kaplan Meier曲线有关的危险的均值和置信区间(或标准误)。
当分布合适时,这似乎很容易做到(例如
type="hazard"
中的flexsurvreg
),但我不知道如何为常规survfit对象执行此操作。有什么建议吗? 最佳答案
这有点棘手,因为危害是对瞬时概率的估计(并且这是离散数据),但是basehaz
函数可能会有所帮助,但它只会返回累积危害。因此,您仍然必须执行一个额外的步骤。
我也很幸运muhaz
函数。从其文档中:
library(muhaz)
?muhaz
data(ovarian, package="survival")
attach(ovarian)
fit1 <- muhaz(futime, fustat)
plot(fit1)
我不确定达到95%置信区间的最佳方法,但是自举可能是一种方法。
#Function to bootstrap hazard estimates
haz.bootstrap <- function(data,trial,min.time,max.time){
library(data.table)
data <- as.data.table(data)
data <- data[sample(1:nrow(data),nrow(data),replace=T)]
fit1 <- muhaz(data$futime, data$fustat,min.time=min.time,max.time=max.time)
result <- data.table(est.grid=fit1$est.grid,trial,haz.est=fit1$haz.est)
return(result)
}
#Re-run function to get 1000 estimates
haz.list <- lapply(1:1000,function(x) haz.bootstrap(data=ovarian,trial=x,min.time=0,max.time=744))
haz.table <- rbindlist(haz.list,fill=T)
#Calculate Mean,SD,upper and lower 95% confidence bands
plot.table <- haz.table[, .(Mean=mean(haz.est),SD=sd(haz.est)), by=est.grid]
plot.table[, u95 := Mean+1.96*SD]
plot.table[, l95 := Mean-1.96*SD]
#Plot graph
library(ggplot2)
p <- ggplot(data=plot.table)+geom_smooth(aes(x=est.grid,y=Mean))
p <- p+geom_smooth(aes(x=est.grid,y=u95),linetype="dashed")
p <- p+geom_smooth(aes(x=est.grid,y=l95),linetype="dashed")
p
关于r - 如何从R中的survfit提取危害?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29728795/