Test de Kolmogorov Smirnov en R

Kolmogorov-Smirnov en R (Lilliefors) para testear la normalidad

El test de Kolmogorov-Smirnov (con la corrección Lilliefors) se utiliza para contrastar si un conjunto de datos se ajustan o no a una distribución normal. Es similar en este caso al test de Shapiro Wilk, pero la principal diferencia con éste radica en el número de muestras. Mientras que el test de Shapiro Wilk se puede utilizar con hasta 50 datos, el test de Kolmogorov Smirnov es recomendable utilizarlo con más de 50 observaciones. Antes de realizar el test de Kolmogorov-Smirnov en R (con la corrección Lillefors), es necesario conocer cuál es el contraste de hipótesis que se va a realizar.

Contraste de hipótesis

  • H0: los datos proceden de una distribución normal
  • H1: los datos no proceden de una distribución normal

¡Aclaración importante!

A pesar de que continuamente se alude al test Kolmogorov-Smirnov como un test válido para contrastar la normalidad, en verdad esto no es del todo cierto. El Kolmogorov-Smirnov asume conocida la media y varianza poblacional, lo que, en la mayoría de los casos, es imposible conocer. Esto hace que el test sea muy conservador y poco potente. Para solventar este problema, se desarrolló una modificación del Kolmogorov-Smirnov conocida como test Lilliefors. El test Lilliefors asume que la media y y varianza son desconocidas, estando espacialmente desarrollado para testear la normalidad.

Cursos de estadística en R

¿Quieres hacer un curso de programación en R y conseguir un certificado que avale tus conocimientos? A continuación te proponemos 8 cursos que podrían ser de tu interés. Al finalizarlos, ¡podrás mejorar tu curriculum! Si quieres ver todos los cursos de programación en R, haz click aquí.

Cómo hacer un test de Kolmogorov-Smirnov en R Commander

El test de Kolmogorov-Smirnov se hace muy fácil introduciendo y ejecutando el siguiente comando:

ks.test(Nombre_Datos$Nombre_Variable,pnorm,mean(Nombre_Datos$Nombre_Variable),sd(Nombre_Datos$Nombre_Variable))

Hay que tener en cuenta que para poder ejecutar un test Kolmogorov-Smirnov en R es necesario conocer la media y desviación estándar de los datos. Pero eso ya queda reflejado en el código previo, con los argumentos mean y sd.

A continuación mostramos gráficamente un ejemplo ejecutándolo en R Commander. Somos conscientes que el ejemplo presenta n=12, cuando es óptimo su uso con n mayores de 50. Pero solo es un ejemplo para poder ilustrar su funcionamiento. Permítanos la licencia.

Cómo hacer un test de Kolmogorov-Smirnov en R Commander

  • Paso 1. Vemos los datos introducidos dando a View data set. Copiamos y pegamos el código. Ponemos el nombre de la tabla de datos donde se indica.
  • Paso 2. Ponemos el nombre la variable donde se indica en la imagen.
  • Paso 3. Ejecutamos y vemos el resultado. Como se puede observar, el p-valor es mayor de 0.05, por lo que aceptamos la hipótesis nula de normalidad de los datos. Aunque lo estrictamente correcto sería utilizar la corrección Lilliefors para contrastar la normalidad, como se describe a continuación.
ks.test(Dataset$VAR1,pnorm,mean(Dataset$VAR1),sd(Dataset$VAR1))

	One-sample Kolmogorov-Smirnov test

data:  Dataset$VAR1
D = 0.11087, p-value = 0.9946
alternative hypothesis: two-sided

Cómo hacer un test Lilliefors en R Commander

En esta ocasión, vamos a prescindir de la figura, centrándonos simplemente en los comandos. Su ejecución será idéntica a la mostrada en la figura previa. Los contrastes de hipótesis son idénticos a los descritos previamente.

Paquete necesario: {nortest}

En este caso, para ejecutar un test Lilliefors es necesario el paquete nortest. Hay que instalarlo y cargarlo.

Realización del test Lilliefors

Es más sencillo incluso que el test Kolmogorov-Smirnov. Sólo hay que incluir los datos que queremos sean contrastados. Como anteriormente, Dataset$VAR1 serían nuestros datos.

lillie.test(Dataset$VAR1)

Dando como resultado lo siguiente:

lillie.test(Dataset$VAR1)

Lilliefors (Kolmogorov-Smirnov) normality test

data:  x
D = 0.23501, p-value = 0.1618

Como podemos ver, el p-valor es 0.16, por lo que seguimos aceptando la hipótesis nula de normalidad.

Entonces… ¿K-S o Lilliefors para testear la normalidad?

Sin duda, Lilliefors es la respuesta.

Libros en Amazon sobre R Commander en español

Referencias

5 thoughts on “Kolmogorov-Smirnov en R (Lilliefors) para testear la normalidad

  1. Para probar la normalidad en R Commander se utiliza directamente desde los menús el test de Shapiro-Wilks que es más potente.

    Si por alguna razón se desea utilizar el estadístico de Kolmogorov y Smirnov para contrastar normalidad, se debe utilizar la distribución de Lilliefors, ya que el test original asume conocida la media y varianza poblacional.

    Al tener que estimar la media y varianza muestral se obtiene distancia más cortas entre frecuencias teóricas y frecuencias esperadas que las calculadas por Kolmogorov y por tanto se obtiene un test muy conservador y poco potente.

    El test de Lilliefors por el contrario contrasta la normalidad de una variable utilizando el estadístico de Kolmogorov-Smirnov pero asumiendo media y varianza desconocidas. Está disponible en el paquete nortest:

    http://search.r-project.org/library/nortest/html/lillie.test.html

    • Hola José. Lilliefors era el motivo del siguiente post! Veo que te has adelantado! Pero gracias enormes por el comentario tan constructivo!

    • El objetivo de Kolmogorov-Smirnov no es testear la normalidad de una muestra, sino determinar la bondad de ajuste. Por lo tanto Luis, no se podría decir que está anticuada, ya que su contraste de hipótesis no va asociado a buscar normalidad. La modificada de K-S, Lilliefors es la correcta para normalidad. Por tanto, ninguna de las dos está anticuada. Cada una cumple su función.

Leave a Comment

*