7 votos

Evaluar la bondad de ajuste para distribuciones (LogNorm, Gamma,...) con los parámetros estimados usando KS pruebas (y R)

Actualmente estoy tratando de encontrar a un conocido de distribución que se ajusta a mi positivo sesgada conjunto de datos (n=70) el mejor. Primero he utilizado el fitdistrplus paquete de R para estimar los parámetros de Gamma, Weibull, Lognormal y distribuciones Exponenciales (mediante la estimación de Máxima Verosimilitud, aunque yo estoy seguro de si el MLE es la mejor opción con 70 observaciones (mejor?)).

En el segundo paso, he seleccionado el modelo con menor AIC. Pero, por supuesto, el modelo debe también pasar por una bondad de ajuste de la prueba. La primera idea fue simplemente el uso de un Kolmogorv-Smirnov con el parámetro estimado, pero esto no parece ser una buena idea, ya KS-Pruebas con parámetros estimados conducir a más o menos inútil valores de "p".

Durante mi búsqueda en la web, me tropecé con Greg Nieves' sugerencia y aparte de que a través de esta página que describe un interesante método de monte carlo (de Clauset et al.). Un ejemplar adaptado R código de ejemplo que utiliza la fitdistrplus paquete para la estimación de máxima verosimilitud para el registro de la norma de distribución es como sigue:

lognormal = function(d, limit=2500) {
  # MLE for lognormal distribution
  fit <- fitdist(d,"lnorm", method="mle")

  # compute KS statistic
  t = ks.test(d, "plnorm", meanlog = fit$estimate["meanlog"], sdlog = fit$estimate["sdlog"]);

  # compute p-value
  count = 0;
  for (i in 1:limit) {
    syn = rlnorm(length(d), meanlog = fit$estimate["meanlog"], sdlog = fit$estimate["sdlog"]);
    fit2 <- fitdist(syn, "lnorm", method="mle")
    t2 = ks.test(syn, "plnorm", meanlog = fit2$estimate["meanlog"], sdlog = fit2$estimate["sdlog"]);
    if(t2$stat >= t$stat) {count = count + 1};
  }

  return(list(meanlog = fit$estimate["meanlog"], sdlog = fit$estimate["sdlog"], stat = t$stat, p = count/limit, KSp = t$p));
}

Lo que actualmente estoy preguntando a mí (y a usted), no hace que este enfoque tiene sentido con respecto al tamaño pequeño de la muestra (o debo usar el momento/... estimadores o es MLE aceptar) y es la forma en que la bondad de ajuste se prueba el adecuado?

2voto

Bob Puntos 1593

El papel de Clauset et al. advierte (Sección 4.2) en contra de tamaños de muestra pequeños (< 100), que son mucho más fáciles de encajar. Puede que desee considerar el uso de las comparaciones directas de los modelos.

Mientras que el p-valor de la KS estadística con los parámetros estimados es una sobreestimación, el arranque de procedimiento que se describe es capaz de hacer frente a este y proporciona una correcta p-valor suficiente simulaciones.

Sin embargo, la forma en que la bondad de ajuste se calcula en tu código no es correcto, ya que no siguen estrictamente el procedimiento descrito en el documento, e implementado en el poweRlaw paquete.

Específicamente: el sintético de la generación de datos procedimiento es la mitad implementado, no buscar el mejor xmin proporcionado por la extimate_xmin función de la poweRlaw paquete, y, finalmente, el ks.test descarta todos los lazos, que el paquete no está incorporado en el KS de la prueba.

En esta página se proporciona el código que tiene en cuenta estas cuestiones mediante la poweRlaw; como consecuencia, es significativamente más lento que el código que se sugiere: http://notesnico.blogspot.com/2014/07/goodness-of-fit-test-for-log-normal-and.html

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X