25 votos

¿Cómo puedo comprobar si mis datos se ajustan a una distribución exponencial?

¿Cómo puedo comprobar si mis datos, por ejemplo, el salario, proceden de una distribución exponencial continua en R?

Aquí está el histograma de mi muestra:

enter image description here

. Cualquier ayuda será muy apreciada.

1 votos

¿su variable es discreta o continua? La distribución exponencial se define como continua .

0 votos

continua. Me pregunto si hay alguna prueba en R para comprobar que

1 votos

Bienvenido. Busque la función fitdistr en R. Ajusta las funciones de densidad de probabilidad (pdfs) basándose en el método de estimación de máxima verosimilitud (MLE). También busca en este sitio términos como pdf, fitdistr, mle y saldrán preguntas similares. Tenga en cuenta que las preguntas de este tipo casi requiere ejemplo reproducible para reunir buenas respuestas. Además, ayuda que la pregunta no sea puramente de programación (lo que podría hacer que se pusiera en espera por considerarla fuera de tema).

34voto

Iwasakabukiman Puntos 518

Yo lo haría estimando primero el único parámetro de la distribución rate utilizando fitdistr . Esto no le dirá si la distribución se ajusta o no, por lo que debe utilizar entonces bondad de ajuste prueba. Para ello, puede utilizar ks.test :

require(vcd)
require(MASS)

# data generation
ex <- rexp(10000, rate = 1.85) # generate some exponential distribution
control <- abs(rnorm(10000)) # generate some other distribution

# estimate the parameters
fit1 <- fitdistr(ex, "exponential") 
fit2 <- fitdistr(control, "exponential")

# goodness of fit test
ks.test(ex, "pexp", fit1$estimate) # p-value > 0.05 -> distribution not refused
ks.test(control, "pexp", fit2$estimate) #  significant p-value -> distribution refused

# plot a graph
hist(ex, freq = FALSE, breaks = 100, xlim = c(0, quantile(ex, 0.99)))
curve(dexp(x, rate = fit1$estimate), from = 0, col = "red", add = TRUE)

enter image description here

Según mi experiencia personal (aunque nunca lo he encontrado oficialmente en ningún sitio, por favor, confírmalo o corrígeme), ks.test sólo se ejecutará si se suministra primero la estimación del parámetro. No puede dejar que estime los parámetros automáticamente, como por ejemplo goodfit lo hace. Por eso necesitas este procedimiento de dos pasos con fitdistr .

Para más información, siga la excelente guía de Ricci: DISTRIBUCIONES DE ENTRADA CON R .

2 votos

+1. ¿Es la prueba ks.test la mejor para comprobar la bondad del ajuste en estas situaciones? Creo que también has respondido a una pregunta de mina .

5 votos

Sólo un aviso, debes tener cuidado si estimas los parámetros a partir de los propios datos. En ese caso, una prueba como la de Anderson Darling podría ser mejor, ya que es robusta frente a estas situaciones.

0 votos

Sobre la prueba KS de exponencialidad cuando el parámetro de la tasa se estima a partir de los datos: véase Una pregunta ingenua sobre la prueba de Kolmogorov Smirnov .

12voto

AdamSane Puntos 1825

Aunque normalmente recomiendo comprobar la exponencialidad mediante el uso de gráficos de diagnóstico (como los gráficos Q-Q), hablaré de las pruebas, ya que la gente suele quererlas:

Como sugiere Tomas, la prueba de Kolmogorov-Smirnov es no adecuado para probar la exponencialidad con un parámetro no especificado.

Sin embargo, si se ajustan las tablas para la estimación de los parámetros, se obtiene la prueba de Lilliefors para la distribución exponencial.

Lilliefors, H. (1969), "On the Kolmogorov-Smirnov test for the exponential distribution with mean unknown", Revista de la Asociación Americana de Estadística , Vol. 64 . pp. 387-389.

El uso de esta prueba se discute en Conover's Estadística no paramétrica práctica .

Sin embargo, en D'Agostino & Stephens Técnicas de bondad de ajuste En el libro se discute una modificación similar de la prueba de Anderson-Darling (de forma algo oblicua si no recuerdo mal, pero creo que toda la información necesaria sobre cómo abordarla para el caso exponencial se encuentra en el libro), y es casi seguro que tiene más poder contra alternativas interesantes.

Del mismo modo, se podría estimar algo así como una prueba de Shapiro-Francia (parecida pero más sencilla que la de Shapiro-Wilk), basando una prueba en $n(1-r^2)$ donde $r$ es la correlación entre las estadísticas de orden y las puntuaciones exponenciales (estadísticas de orden exponencial esperadas). Esto corresponde a la comprobación de la correlación en el gráfico Q-Q.

Por último, se podría tomar la prueba de suavidad como en el libro de Rayner & Best ( Pruebas suaves de bondad de ajuste 1990 - aunque creo que hay uno más reciente, con Thas y " en R " añadido al título). El caso exponencial también se trata en:

J. C. W. Rayner y D. J. Best (1990), "Smooth Tests of Goodness of Fit: An Overview", Revista Internacional de Estadística , Vol. 58, No. 1 (abr., 1990), pp. 9-17

Cosma Shalizi también habla de las pruebas suaves en un capítulo de su Análisis de datos avanzados para estudiantes notas de clase o ver el capítulo 15 de su libro Análisis avanzado de datos desde un punto de vista elemental .

Para algunos de los casos anteriores, es posible que tenga que simular la distribución de la estadística de la prueba; para otros, hay tablas disponibles (pero en algunos de esos casos, puede ser más fácil simular de todos modos, o incluso más exacto simularlo usted mismo, como con la prueba de Lilliefors, debido al tamaño limitado de la simulación en el original).

De todas ellas, me inclinaría por hacer la que es el equivalente exponencial al Shapiro-Francia (es decir, probaría la correlación en el gráfico Q-Q [o si estuviera haciendo tablas, quizás usaría $n(1-r^2)$ que rechazará los mismos casos] - debería ser lo suficientemente potente como para competir con las mejores pruebas, pero es muy fácil de hacer, y tiene la agradable correspondencia con el aspecto visual del gráfico Q-Q (incluso se podría optar por añadir la correlación y el valor p al gráfico, si se desea).

8voto

Zhubarb Puntos 2330

Puede utilizar un qq-plot que es un método gráfico para comparar dos distribuciones de probabilidad trazando sus cuantiles entre sí.

En R, no existe una función qq-plot para la distribución exponencial específicamente (al menos entre las funciones base). Sin embargo, puede utilizar esto:

qqexp <-  function(y, line=FALSE, ...) { 
    y <- y[!is.na(y)]
    n <- length(y)
    x <- qexp(c(1:n)/(n+1))
    m <- mean(y)
    if (any(range(y)<0)) stop("Data contains negative values")
    ylim <- c(0,max(y))
    qqplot(x, y, xlab="Exponential plotting position",ylim=ylim,ylab="Ordered sample", ...)
    if (line) abline(0,m,lty=2)
    invisible()
  }

Mientras interpreta sus resultados: Si las dos distribuciones que se comparan son similares, los puntos de la gráfica q-q estarán aproximadamente sobre la recta y = x. Si las distribuciones están relacionadas linealmente, los puntos de la gráfica q-q estarán aproximadamente sobre una recta, pero no necesariamente sobre la recta y = x.

4 votos

En Stata, qexp de SSC es una aplicación enlatada.

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