2017-07-20 4 views
1

Hat jemand Probleme mit der Weibull-Verteilung mit der ExtDist Package?Die Weibull-Verteilung in R (ExtDist)

Von documentation:

Parameterschätzung für eine Verteilung mit unbekanntem Formparameter Beispiel aus: Rinne (2009) Datensatz S.338 und Beispiel pp.418-419 Parameterschätzungen als Form erhalten = 99,2079 und Maßstab = 2,5957. Die Log-Likelihood für diese Daten und Rinnes Parameterschätzer ist -1163,278.

data <- c(35,38,42,56,58,61,63,76,81,83,86,90,99,104,113,114,117,119,141,183) 
est.par <- eWeibull(X=data, method="numerical.MLE"); est.par 
plot(est.par) 

Allerdings, wenn ich diese laufen bekomme ich folgende Ausgabe:

Parameters for the Weibull distribution. 
(found using the numerical.MLE method.) 

Parameter Type Estimate  S.E. 
    shape shape 5.82976007 1.79326460 
    scale scale 0.06628166 0.02129258 

Dies ist eindeutig falsch, aber ich bin nicht sicher, ob ich einen Fehler gemacht haben, oder wenn es einen Fehler in der Paket?

+0

hast du das nächste Bit des Beispiels lesen? "# Schätzungen, die von eWeibull berechnet wurden, unterscheiden sich von denen von Rinne (2009). Die Parameterschätzwerte von eWeibull scheinen jedoch aufgrund einer größeren Logarithmuswahrscheinlichkeit von -99.09037 (wie von lWeibull unten angegeben) eine größere zu sein." –

+0

Hallo Ben, ja ich habe aber die Antwort die ich aus dem Code 5.82976007 bekommen habe ist definitiv nicht mal knapp, die Ausgabe sollte in der Größenordnung von 99 liegen – James

Antwort

1

Es scheint mir, es ist ein Fehler im Paket. Ich habe meine eigenen unabhängigen MLE und bekam die gleiche Antwort wie Rinne:

library(bbmle) 
m1 <- mle2(y~dweibull(shape=exp(lshape),scale=exp(lscale)), 
    data=data.frame(y=data), 
    start=list(lshape=0,lscale=0)) 

Dann grub ich in und sah die Quelle der dWeibull Funktion:

function (x, shape = 2, scale = 2, params = list(shape = 2, scale = 2)) 
{ 
    if (!missing(params)) { 
     shape <- params$shape 
     scale <- params$scale 
    } 
    out = stats::dgamma(x, shape, scale) 
    return(out) 
} 

Es scheint, dass out gesetzt werden sollte das Ergebnis von dweibull(...) anstatt dgamma(...) ... ?? Betrachtet man den Rest des Weibull-Codes, scheint dieser Fehler wiederholt zu werden - vielleicht ist das nur ein schlampiger Cut-and-Paste? Ich würde definitiv den Betreuer kontaktieren (maintainer("ExtDist")).

PS. Wenn ich eine Gamma-Verteilung mit meiner alternativen Methode passen bekomme ich genau die gleichen Antworten wie das ExtDist Paket:

m1g <- mle2(y~dgamma(shape=exp(lshape),rate=exp(lrate)), 
    data=data.frame(y=data), 
    start=list(lshape=0,lrate=0)) 
exp(coef(m1g)) 
##  lshape  lrate 
## 5.82976007 0.06628166