前提:我对生存分析几乎一无所知,我才刚刚开始。我有一些机器的故障时间向量。大多数机器(3362 vs 2694)今天仍在运行,所以我知道它们没有发生故障,并且故障时间在未来某个未知时间。如果我没记错的话,我们称之为右删失数据。正确的?现在,我想从简单的开始,为这些数据拟合 Weibull 分布。没有回归,没有协变量——只需对这些数据进行分布拟合,看看它是什么样子。这可能吗?将 Weibull 分布拟合到右删失数据的方法有哪些,R 中是否有这些方法可用?
编辑添加数据样本以显示我想做什么
# sample data set
foo <- structure(list(time = c(416L, 307L, 552L, 740L, 1126L, 442L,
765L, 375L, 275L, 623L, 455L, 695L, 724L, 1653L, 529L, 615L,
15L, 477L, 758L, 353L, 851L, 25L, 524L, 283L, 954L, 183L, 558L,
851L, 377L, 208L), event = c(1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1)), .Names = c("time",
"event"), row.names = c(1170L, 5856L, 1237L, 1448L, 1161L, 4759L,
2766L, 3321L, 4253L, 5645L, 3875L, 3531L, 238L, 3204L, 714L,
2161L, 3275L, 5879L, 3758L, 2406L, 1548L, 4234L, 87L, 2548L,
3958L, 5872L, 3326L, 1549L, 4823L, 1002L), class = "data.frame")
# fit a Weibull distribution
weibull_fit <- survreg(Surv(time, event) ~ 1, data = foo)
summary(weibull_fit)
# Call:
# survreg(formula = Surv(time, event) ~ 1, data = foo)
# Value Std. Error z p
# (Intercept) 6.881 0.132 52.14 0.000000
# Log(scale) -0.758 0.197 -3.86 0.000115
#
# Scale= 0.469
#
# Weibull distribution
# Loglik(model)= -101.2 Loglik(intercept only)= -101.2
# Number of Newton-Raphson Iterations: 8
# n= 30
R 适合分布,这正是我想要的。但我希望有一些函数来绘制生存函数,有置信度……看起来没有。
EDIT2对于那些对生存分析的简单介绍感兴趣的人,这个页面很短但很甜蜜: http ://data.princeton.edu/wws509/notes/c7s1.html