8 votos

La inestabilidad de Kolmogorov-Smirnov dependiendo de si los valores son pequeños o grandes

Por curiosidad, me di cuenta de que la prueba de normalidad de Kolmogorov-Smirnov devuelve dos valores p muy diferentes dependiendo de si el conjunto de datos tiene números pequeños o grandes. ¿Es esto normal y hay un límite de tamaño de número para esta prueba? Por lo que vi, la prueba de Shapiro-Wilk era mucho más estable.

Probé esto

ks.test(c(0.5379796,1.1230795,-0.4047321,-0.8150001,0.9706860),"pnorm")

Prueba de Kolmogorov-Smirnov de una muestra

datos:  c(0.5379796, 1.1230795, -0.4047321, -0.8150001, 0.970686)

D = 0.3047, valor p = 0.6454

hipótesis alternativa: dos colas

Y luego multipliqué cada valor por 100

ks.test(c(53.79796,112.30795,-40.47321,-81.50001,97.06860),"pnorm")

Prueba de Kolmogorov-Smirnov de una muestra

datos:  c(53.79796, 112.30795, -40.47321, -81.50001, 97.06860)

D = 0.6, valor p = 0.03008

hipótesis alternativa: dos colas

Con los mismos datos, la prueba de Shapiro-Wilk devuelve un valor p de 0.3999.

0 votos

De acuerdo, esos números parecen más como si los hubieras multiplicado por 100. :)

0 votos

Esta pregunta ya ha sido abordada en múltiples publicaciones en el sitio.

17voto

Dave Puntos 76

De la forma en que lo has codificado, estás preguntando al test KS acerca de una hipótesis nula de que la distribución es $N(0,1)$. En el primer conjunto de números, eso parece plausible. En consecuencia, el valor p es alto. En el segundo conjunto de números, eso no parece ser el caso. Números como esos típicamente no provienen de una distribución $N(0,1)$. En consecuencia, el valor p es bajo.

Al multiplicar por un factor, has cambiado la varianza. Dado que el test KS considera todos los aspectos de la distribución, incluida la varianza, el test considera correctamente a los dos conjuntos de datos como diferentes.

La razón por la cual Shapiro-Wilk es más estable es porque evalúa la normalidad. Multiplicar por un factor positivo no cambia la normalidad, por lo que Shapiro-Wilk no tendrá el mismo tipo de sensibilidad a un cambio de varianza que KS.

1 votos

Verdadero, hubo un error tipográfico en el código para el *100. pero tu respuesta sigue siendo válida, ¡gracias!

3 votos

Además, hay advertencias específicas sobre el uso de la prueba K-S con parámetros estimados a partir de los datos, que presumiblemente necesitas aquí, y advertencias generales sobre la relativa inutilidad de tales pruebas. ¡Simplemente traza los datos en un gráfico de cuantiles normal! (Con muchos otros nombres: gráfico de probabilidad normal, gráfico de puntuaciones normales, etc.)

0 votos

Gracias. Si aún queremos realizar esta prueba, ¿tenemos que estandarizar nuestros datos sistemáticamente primero?

8voto

Shane Oliver Puntos 126

Agregando a la respuesta existente, cabe señalar que las dos llamadas ks.test a continuación producen la misma salida.

x = c(0.5379796,1.1230795,-0.4047321,-0.8150001,0.9706860)
ks.test(x, pnorm)
#> 
#>  Prueba de Kolmogorov-Smirnov unidireccional exacta de una muestra
#> 
#> datos:  x
#> D = 0.3047, valor-p = 0.6454
#> hipótesis alternativa: dos colas

ks.test(x*100, pnorm, sd = 100)
#> 
#>  Prueba de Kolmogorov-Smirnov unidireccional exacta de una muestra
#> 
#> datos:  x * 100
#> D = 0.3047, valor-p = 0.6454
#> hipótesis alternativa: dos colas

Nota de sintaxis R: los argumentos por defecto de pnorm() son mean = 0, sd = 1. Todo lo que está después del segundo argumento en ks.test() se pasa como argumento a la función pnorm() en este caso.

0 votos

¿Significa esto que la forma óptima de ejecutar esta prueba es escribir ks.test(x, pnorm, mean=mean(sample), sd=sd(sample)) o hay una forma más rápida?

6 votos

Respuesta al comentario: 1. No porque esa prueba es inválida. Consulte las observaciones en otro lugar con la palabra clave=:Lilliefors. 2. ¿Quién dijo que óptimo = más rápido?

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