7 votos

Una pregunta ingenua sobre la prueba de Kolmogorov Smirnov

Me gustaría comprobar si se distribuyen según una distribución exponencial. Puedo aplicar el Kolmogorov-Smirnov en python utilizando scipy.stats.kstest(data, 'expon') .

Sin embargo, supongo que primero tengo que normalizar mis datos de alguna manera. De lo contrario es compararlos con una distribución exponencial con tasa desconocida $\lambda$ . ¿Es esto correcto y cómo debo hacerlo?

12voto

jasonmray Puntos 1303

Se puede estandarizar la distribución exponencial con bastante facilidad multiplicando las variantes por el parámetro de la tasa (es un parámetro de escala recíproca). Pero si se estima el parámetro de la tasa a partir de los datos, el estadístico de Kolmogorov-Smirnov no tiene la misma distribución que cuando la distribución exponencial está completamente especificada.

Ver Lilliefors (1969), "On the Kolmogorov-Smirnov tests for the exponential distribution with mean parameters", JASA , 64 , 325 . Y https://stats.stackexchange.com/a/392686/17230 para una explicación intuitiva del fenómeno en general.

Puede comparar el valor observado del estadístico de la prueba KS calculado a partir de los datos con los valores críticos tabulados que figuran en la referencia. O simular tú mismo la distribución del estadístico como han sugerido @Glen_b y @soakley. Tenga en cuenta que Lilliefors señala que su distribución no depende de los valores reales de los parámetros -generalmente cierto para los parámetros de escala y localización-, por lo que para un tamaño de muestra determinado puede hacer lo siguiente una vez simular a partir de la distribución exponencial estándar, y guardar los resultados para futuras referencias; no es necesario repetir la simulación para cada nuevo conjunto de datos del mismo tamaño de muestra. Y, por lo tanto, no hay ninguna aproximación (excepto la procedente del error de simulación). La diferencia en la distribución del estadístico KS $D$ estimando en lugar de preespecificar los parámetros no es trivial: Kernel-smoothed density estimate of D's distribution under null (n=100)

Lilliefors ofrece algunos resultados asintóticos (elaborados de forma bastante burda, pero lo suficientemente buenos para el trabajo gubernamental). Stephens ha tabulado los cuantiles de la estadística modificada

$$T(n) = \left(D - \frac{0.2}{n}\right)\left(\sqrt{n} + 0.26 + \frac{0.5}{\sqrt{n}}\right)$$

donde $D$ es el estadístico de la prueba KS & $n$ el tamaño de la muestra. Según Durbin (1975), "Kolmogorov-Smirnov tests when parameters are estimated with applications to tests of exponentiality and tests on spacings", Biometrika , 62 , 1 Estos valores se acercan mucho a los valores exactos para los tamaños de muestra más grandes. Se pueden encontrar en Pearson y Hartley (1972), Tablas de biometría para estadísticos , CUP o en Stephens (1974), "EDF Statistics for goodness of fit and some comparisons", JASA , 69 , 347 . No conozco ninguna corrección publicada del valor p de la prueba KS ordinaria para aproximarse al de la prueba Lilliefors; una relación de ley de potencia parece que podría ser útil: KS test p-values (n-100)

0 votos

Gracias. Como comenté a la otra pregunta, ¿qué hay que hacer en mi caso?

1 votos

Felix - se debería utilizar (claramente) una prueba de Lilliefors; esencialmente, se utiliza la estadística de la prueba KS, pero su distribución es diferente. Algunos paquetes dan Lilliefors cuando se pide una prueba KS con alguna distribución pero no se especifica el valor del parámetro. Algunos tienen una función Lilliefors separada (R tiene nortest::lillie.test por ejemplo). En otros casos, debe simular la distribución usted mismo (lo cual es sencillo) para encontrar el valor p.

0 votos

Gracias de nuevo. Leyendo por ahí parece que el test de Anderson-Darling no sufre este problema. ¿Sería mejor utilizarlo?

8voto

soakley Puntos 1968

No es necesario normalizar, pero se puede obtener el valor p para una prueba de bondad de ajuste por simulación. Aquí hay un ejemplo de código R, tomado de la respuesta de Greg Snow a una pregunta similar ( Prueba KS - R, Minitab (y Systat) ):

data <- c(7.2,10.5,10.67,0.15,3.92,3.28,0.89,2.29,13.82,0.43)

simp <- replicate(100000, {x <- rexp(length(data),rate=1/mean(data));
     ks.test(x,"pexp",rate=1/mean(x))$p.value} )

mean(simp <= ks.test(data,"pexp",1/mean(data))$p.value)

El método es descrito por Clauset et. al en un artículo de SIAM "Power-Law Distributions in Empirical Data".

0 votos

Gracias. Siempre agradezco el código, aunque tenga que traducirlo ahora.

1 votos

(+1) Tenga en cuenta que puede utilizar cualquier tasa para las distribuciones simuladas, así que puede omitirlas rate=1/mean(data) en la 2ª línea (¡no en la 3ª!). & puede salvar simp para su reutilización con cualquier conjunto de datos que tenga el mismo tamaño de muestra.

0 votos

Interesante cuestión: ¿es esto cierto para otras distribuciones además de la exponencial?

3voto

Lars Rohrbach Puntos 253

No, no es necesario normalizar los datos, ya que el estadístico KS se define en función de los datos brutos (en realidad, en función de la distribución empírica de estos datos):

http://en.wikipedia.org/wiki/Kolmogorov%E2%80%93Smirnov_test#Kolmogorov.E2.80.93Smirnov_statistic

No conozco Python, pero en R puedes realizar esta prueba de la siguiente manera:

x = rexp(100,1)
ks.test(x,"pexp",1)

Para ello, y por construcción, es necesario conocer los parámetros de la distribución. No se deben enchufar estimadores en ella, esto rompe la convergencia del estadístico y hay que utilizar una prueba diferente (ver el artículo de la wikipedia).

Si quiere estimar los parámetros y comprobar si el modelo ajustado es bueno, lo que necesita es una prueba de bondad de ajuste, para la que tiene varias opciones:

http://en.wikipedia.org/wiki/Goodness_of_fit

0 votos

Gracias. Precisamente quiero comprobar si el modelo ajustado es bueno. No sabía que la prueba KS no era adecuada para esto. ¿Qué hay que hacer en mi caso, en el que estoy comparando con la distribución exponencial? La página de la wiki es útil, pero tal vez haya una respuesta específica en el caso exponencial.

1 votos

(+1) Pero su última frase parece implicar que la prueba KS no es una prueba de bondad de ajuste, lo cual es en gran medida. Y, por supuesto, sigue siendo una opción si se obtiene la distribución de la prueba estadística correcta cuando se estiman los parámetros.

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