R中MTTF-Weibull生存曲线的置信区间

R中MTTF-Weibull生存曲线的置信区间,r,variance,confidence-interval,survival-analysis,weibull,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

我试图在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)

拟合后的威布尔模型称为ajust

还有更多

alpha=coef[2]
delta=coef[1]
其中coef是一个变量,包含survreg adjust中的参数alpha和delta

因此,计算MTTF:

mttf<-coef[2]*(gamma((1+(1/coef[1]))))
但不幸的是,我的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)
这与我的代码的结果相差甚远

但纸上的alpha、delta和MTTF与我的代码具有相同的值:

alpha = 2.273151
delta = 1.417457
MTTF = 2.067864
请,我想和你们分享这个困难,你们在R方面比我有更多的经验


尊敬的Vinícius。

我建议beta需要大于-1,但这是我自己的计算结果;beta=2。

尽管我计算beta为-4。因为它是(δ)的系数,就像它对betavcov(ajust)α[2,1]的系数一样,δ[1,1]是x^3-4/x^2+5一个向量T-1潜一。f(x,y)=x^3-4/x^2+5。设f(x,y)=(1,1),y=x^3-4/x^2+5,y=2;从矩阵var(-4)=矩阵[1,2],var(x^2)=矩阵[1,1],β
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
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 
alpha = 2.273151
delta = 1.417457
MTTF = 2.067864