2015-04-25 1 views
2

Parce que l'estimation des paramètres de la fonction Weibull en utilisant R2OpenBUGS est si différente des montants fournis pour générer l'ensemble de données en utilisant rweibull? Quel est le problème avec ma forme?Fitting Weibull utilisant R2OpenBUGS

data<-rweibull(200, 2, 10) 

model<-function(){ 

v ~ dgamma(0.0001,0.0001) 
lambda ~ dgamma(0.0001,0.0001) 

for(i in 1:n){ 
    y[i] ~ dweib(v, lambda) 
    } 
} 

y<-data 
n<-length(y) 
data<-list("y", "n") 

inits<-function(){list(v=1, lambda=1)} 
params<-c("v", "lambda") 
model.file<-file.path(tempdir(), "model.txt") 
write.model(model, model.file) 
weibull<-bugs(data, inits, params, model.file, n.iter = 3000, n.burnin = 2000, n.chains = 3) 
print(weibull, 4) 

Le résultat obtenu est:

Current: 3 chains, each with 3000 iterations (first 2000 discarded) 
Cumulative: n.sims = 3000 iterations saved 
      mean  sd  2.5%  25%  50%  75%  97.5% Rhat  n.eff 
v   2.0484 0.1044 1.8450 1.9780 2.0500 2.1180 2.2470 1.0062 780 
lambda  0.0097 0.0026 0.0056 0.0078 0.0093 0.0112 0.0159 1.0063 830 
deviance 1145.6853 1.8403 1144.0000 1144.0000 1145.0000 1146.0000 1151.0000 1.0047 770 

pD = 1.6 and DIC = 1147.0 

Répondre

2

R paramétrise la Weibull utilisant shape (= 2 dans le cas présent) et scale (= 10) par défaut: ANOMALIES utilise shape et lambda, où lambda=(1/scale)^shape. Donc vous devriez vous attendre à ce que lambda soit approximativement (1/10)^2 = 0.01, ce qui est proche de votre médiane de 0.0093.

This question on CrossValidated, et this paper in the R Journal, comparer les paramétrages.

+0

Merci beaucoup! Problème résolu! –

+0

Si cela résout votre problème, vous êtes encouragé à cliquer sur la coche pour l'accepter ... –