r - MTTF 的置信区间 - R 中的威 bool 生存曲线

标签 r variance confidence-interval survival-analysis weibull

我正在尝试在 R 中实现 Delta 方法来计算 Weibull 生存曲线的 MTTF 方差。形状参数是alpha,尺度参数是delta。方差 = var;协方差 = cov

等式是:

var(mttf) = var(alpha)*[d(mttf)/d(alpha)]^2 + 
2*cov(alpha,delta)*d(mttf)/d(alpha)*d(mttf)/d(delta)
 + var(delta)*[d(mttf/d(delta)]^2.    

地点:

d(mttf)/d(alpha) = gamma(1+1/delta)

d(mttf)/d(delta) = -alpha/delta^2 * gamma(1+1/delta) * digamma(1+1/delta)

所以等式变成:

var(mttf) = var(alpha)*[gamma(1+1/delta)]^2 +
 2*cov(alpha,delta)*gamma(1+1/delta)*(-alpha/delta^2 * gamma(1+1/delta) * digamma(1+1/delta))
 + var(delta)*[-alpha/delta^2 * gamma(1+1/delta) * digamma(1+1/delta)]^2

我可以从方差-协方差矩阵中获取var(alpha)var(delta)cov(alpha,delta)

拟合的 weibull 模型称为 ajust

vcov(ajust)
a=ajust$var[2,2]*ajust$scale^2
b=ajust$var[1,2]*ajust$scale
matriz=matrix(c(ajust$var[1,1],b,b,a),ncol=2,nrow=2)

var(alpha) = matriz[2,2]
var(delta) = matriz[1,1]
cov(alpha,delta) = matriz[1,2] or matriz[2,1]

还有更多

alpha=coef[2]
delta=coef[1]

其中 coef 是一个变量,其中包含来自 survreg adjust 的参数 alpha 和 delta。

因此,计算 MTTF:

mttf<-coef[2]*(gamma((1+(1/coef[1]))))

并计算mttf方差:

var_mttf=matriz[2,2]*(gamma(1+1/coef[1]))^2+
2*matriz[1,2]*((-coef[2]/(coef[1]^2))*gamma(1+1/coef[1])*digamma(1+1/coef[1]))+
matriz[1,1]*((-coef[2]/(coef[1]^2))*gamma(1+1/coef[1])*digamma(1+1/coef[1]))^2

但不幸的是,我的 mttf 方差与我从互联网论文中获取的任何示例都不匹配。修改了太多次了...

整个代码是:

require(survival)
require(stats)
require(gnlm)

time<-c(0.22,  0.5, 0.88,   1.00,   1.32,   1.33,   1.54,   1.76,   2.50,   3.00,   3.00,   3.00,   3.00)
cens<-c(1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  0,  0,  0)

#Weibull adjust with survreg
ajust<-survreg(Surv(time,cens)~1,dist='weibull')
alpha<-exp(ajust$coefficients[1])
beta<-1/ajust$scale

#Weibull coefficients
coef<-cbind(beta,alpha)

#MTTF
mttf<-coef[2]*(gamma((1+(1/coef[1]))))

#Data from variance-covariance matrix:
vcov(ajust)
a=ajust$var[2,2]*ajust$scale^2
b=ajust$var[1,2]*ajust$scale
matriz=matrix(c(ajust$var[1,1],b,b,a),ncol=2,nrow=2)

#MTTF variance - delta method
var_mttf=matriz[2,2]*(gamma(1+1/coef[1]))^2+
  2*matriz[1,2]*((-coef[2]/(coef[1]^2))*gamma(1+1/coef[1])*digamma(1+1/coef[1]))+
  matriz[1,1]*((-coef[2]/(coef[1]^2))*gamma(1+1/coef[1])*digamma(1+1/coef[1]))^2

#standard error - MTTF
se_mttf=sqrt(var_mttf)

#MTTF confidence intervall (95% confidence) 
upper=mttf+1.960*sqrt(var_mttf)
lower=mttf-1.960*sqrt(var_mttf)

因此,从我获取这些数据的论文中得出的结果是:

MTTF standard error = 0.47
MTTF upper = 2.98
MTTF lower = 1.15 

这与我的代码的结果相去甚远。

但是论文中的alphadelta 和 MTTF 与我的代码具有相同的值:

alpha = 2.273151
delta = 1.417457
MTTF = 2.067864

拜托,我想与你们分享这个困难,你们在 R 方面的经验比我多得多。

此致,维尼修斯。

最佳答案

我建议 beta 需要大于 -1,但根据我自己的计算;贝塔=2。

关于r - MTTF 的置信区间 - R 中的威 bool 生存曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30260151/

相关文章:

python - 将 95% 置信区间作为误差线添加到 pandas 条形图中

r - 意味着具有置信区间的条形图?

r - Uncaught ReferenceError : Shiny is not defined

R以yyyymmdd格式读取日期

c++ - 从 Kmeans 中找到每个集群的分布

python - 方差与变异系数

r - 在R中寻找逆矩阵

根据 AIC 值对模型列表进行排名

r - 带向量函数的数据表聚合,取 2

r - 提取 lmer 随机效应的置信区间;用 dotplot(ranef()) 绘制