对数正态生存函数的平均生存时间

机器算法验证 生存
2022-03-09 11:29:16

我找到了很多公式来显示如何找到指数或 Weibull 分布的平均生存时间,但我对对数正态生存函数的运气要差得多。

给定以下生存函数:

S(t)=1ϕ[ln(t)μσ]

如何找到平均生存时间。据我了解,是估计的尺度参数,参数生存模型中的 exp( ) 是虽然我认为我的是当它实际上归结为输入所有估计值并获得与此同时。σβμϕ

到目前为止,我一直在生成生存函数(和相关曲线),如下所示:

beta0 <- 2.00
beta1 <- 0.80
scale <- 1.10

exposure <- c(0, 1)
t <- seq(0, 180)
linmod <- beta0 + (beta1 * exposure)
names(linmod) <- c("unexposed", "exposed")

## Generate s(t) from lognormal AFT model

s0.lnorm <- 1 - pnorm((log(t) - linmod["unexposed"]) / scale)
s1.lnorm <- 1 - pnorm((log(t) - linmod["exposed"]) / scale)

## Plot survival
plot(t,s0.lnorm,type="l",lwd=2,ylim=c(0,1),xlab="Time",ylab="Proportion Surviving")
lines(t,s1.lnorm,col="blue",lwd=2)

产生以下结果:

在此处输入图像描述

3个回答

中位生存时间的解;在这种情况下,这是因为表示标准正态随机变量的累积分布函数tmedS(t)=12tmed=exp(μ)Φ(0)=12Φ


时,中位生存时间约为,如下图所示。μ=320.1

在此处输入图像描述

Rrms包可以帮助:

require(rms)
f <- psm(Surv(dtime, event) ~ ..., dist='lognormal')
m <- Mean(f)
m   # see analytic form
m(c(.1,.2)) # evaluate mean at linear predictor values .1, .2
m(predict(f, expand.grid(age=10:20, sex=c('male','female'))))
# evaluates mean survival time at combinations of covariate values

如果有人真的想要最初询问的平均生存时间,那就是eμ+σ22. (实际上,原始发布者应该仔细考虑他们是否想要使用结果数字的平均值或中位数。对于给出的示例σ=1.1,平均值几乎是中位数的两倍。)