CONTRASTES DE HIPÓTESIS NO PARAMÉTRICOS
CONTRASTES DE HIPÓTESIS NO PARAMÉTRICOS
Hasta ahora, los contrastes analizados son procedimientos realizados donde las variables estudiadas son de naturaleza cuantitativa. Además, a parte de que analizan parámetros poblaciones, todos ellos tienen como base ciertos supuestos como; a) se parte de poblaciones normales (Normalidad), b) se supone que las distintas subpoblaciones tienen varianzas similares (homocedasticidad) y c) se exige independencia en la selección de las muestras y entre las distintas variables. Este tipo de contrastes son los más empleados aunque no siempre se pueden emplear por el incumplimiento de algunos de los supuestos anteriormente mencionados. Cuando esto ocurre, se suelen emplear los denominados Contrastes no paramétricos (CNP).
Ventajas e Inconvenientes de los Contrastes no paramétricos
Ventajas: Las principales ventajas son las siguientes:
- No es necesario que se cumplan las condicones de los contrastes paramétricos, por lo que son aplicables cuando los contrastes paramétricos no lo son (mucho más flexibles)
- Más eficientes cuando las distribuciones son asimétricas.
- Dado que se emplean en muchos casos cuando el número de observaciones son pequeños, es más fácil resalizar los cálculos.
- Mejores para muestras pequeñas. Cuando las muestras son pequeñas, la normalidad no se suele cumplir, por lo que la flexibildad de los contrastes no paramétricos ayuda mucho.
- Se pueden emplear también con variables no cuantitativas.
- Cuando no se conoce la distribución de la población son los mejores.
Inconvenientes: Evidentemente, la flexibilidad que aportan estos contrastes genera que haya inconvenientes. Los más importantes son:
Si se cumplen supuestos de los contrastes paramétriocos, cuando las muestras son grandes son menos eficientes.
Las hipótesis son menos precisas.
Existen muchas pruebas para un mismo problema (difícil elección).
Se emplea mucha menos información que con las muestras paramétricas.
Aunque se suelen emplear con muestras pequeñas, esto puede suponer no obtener un resultado significativo.
Existe una cantidad ingente de contrastes no paramétricos en función de la casuística o problemática que se tenga. Aunque se pueden hacer muchas agrupaciones, aquí se van a agrupar en tres grandes grupos en función de las hipótesis a contrastar. A pesar de que existe un gran número de contrastes y se mencionaran muchos, sólo se van a analizar unos pocos.
1. CONTRASTES DE BONDAD DE AJUSTE
Una de las condiciones habituales que requerimos sobre una muestra es que la población de la que la hemos extraído siga una determinada distribución. Aunque se puede hacer un análisis previo gráfico a través de por ejemplo un histograma o un Q-Q Plot, en este tema emplearemos técnicas cuantitativas que permiten decidir si los datos de una muestra “se ajustan” a una determinada distribución de probabilidad, es decir, si la variable aleatoria que los ha generado sigue o no esta distribución de probabilidad (por ejemplo la distribución Normal).
2. CONTRASTES DE INDEPENDENCIA Y ALEATORIEDAD
Otra de los supuestos sobre los que están basados los contrastes paramétricos es el de independencia de las poblaciones (si hay más de una) y de las observaciones en el muestreo, así como que estas se han recogido de manera aleatoria. Este tipo de contrastes lo que pretende es justamente eso, conocer si las poblaciones son independientes entre sí, o si las muestras son aleatorias.
3. CONTRASTES DE HOMOGENEIDAD Y DE POSICIÓN
En este grupo de contrastes se encuentran la gran parte de los contrastes no paramétricos. Aquí, se encuentran todos los contrastes no paramétricos que son equivalentes a los paramétricos sin tener que asumir los supuestos de estos últimos. Los contrastes de homogeneidad son los equivalentes a los contrastes de diferencia de medias paramétricos (para 2 o más poblaciones) y los de posición a los de una media (para una población).
A modo de resumen, en la siguiente imagen se puede ver que tipo de prueba no paramétrica de este último grupo se debe escoger según la problemática.
Contrastes de Bondad de Ajuste
Uno de las técnicas más conocidas para estudiar los contrastes no paramétricos son los tests de bondad de ajuste o tests \(\chi^2\).
El contraste que intentamos estudiar es del tipo siguiente:
\(H_0:\) La distribución de \(X\) es del tipo \(F_0\) (\(X \sim F(X_0)\))
\(H_1:\) La distribución de \(X\) no es del tipo \(F_0\) (\(X (No\sim) F(X_0)\))
donde \(F_0\) es un tipo de distribución conocida (normal, binomial, etc..)
Para ello, a partir de una m.a.s. se suelen comparar las frecuencias observadas (\(O_i\)) con las frecuencias esperadas o teóricas (\(E_i\)), que son las que se obtendrían si se cumpliera la hipótesis nula.
La idea del contraste es la siguiente:
Se dispone de una muestra, la cual se agrupa obteniéndose sus frecuencias observadas (\(n_i=O_i\)). En el gráfico estas frecuencias están representadas por las barras del histograma.
Por otro lado se pueden calcular las frecuencias, si la hipótesis nula fuera cierta (\(E_i\)) (la campana que se muestra en el gráfico).
Se comparan el conjunto de las diferencias obtenidas entre esos dos valores. La medición de esas diferencias y su consiguiente distribución estadística, son las que hacen que un contraste sea uno u otro.
[1] 34419.57
[1] 17075.66
Una vez tenemos la idea intuitiva de como funcionan los contrastes de bondad de ajuste, pasemos a ver como se hacen con R.
Contraste de la \(\chi^2\) de Pearson (para tablas de contiengencia)
El test \(\chi^2\) de Pearson contrasta si una muestra ha sido generada o no con una cierta distribución (cualquier distribución), cuantificando si sus valores aparecen con una frecuencia cercana a la que sería de esperar si la muestra siguiera esa distribución. Este contraste se realiza cuando los datos están agrupados por categorías o la variable es categórica. Si se dispone de una variable continua, antes de agrupar es mejor realizar otro tipo de contrastes. Para poder llevar a cabo este contraste se hace por medio del siguiente estadístico de contraste:
\(\chi^2_{Exp}=\sum_{i=1}^{r}\frac{(O_i-E_i)^2}{E_i}\sim\chi^2_{r-h-1}\)
donde r es el número de clases e i es el índice de las clases, de manera que \(O_i\) y \(E_i\) denotan, respectivamente, la frecuencia observada de la clase i-ésima y su frecuencia esperada bajo la distribución que contrastamos. Si se satisfacen una serie de condiciones, este estadístico sigue aproximadamente una \(\chi^2\) con un número de grados de libertad igual al número de clases menos el número de parámetros de la distribución teórica que hayamos estimado menos 1. Las condiciones que se han de satisfacer son:
La muestra ha de ser grande, digamos que de tamaño como mínimo 30,
Si los posibles valores son infinitos, hay que agruparlos en un número finito r de clases que cubran todos los posibles valores
Las frecuencias esperadas de las clases en las que hemos agrupado el espacio muestral han de ser todas, o al menos una gran mayoría, mayores o iguales que 5.
La instrucción básica en R para realizar un test \(\chi^2\) es
chisq.test. Su sintaxis básica es:chisq.test(x, p=..., rescale.p=..., simulate.p.value=...)donde:
xes el vector de frecuencias absolutas observadas de las clases en la muestra.pes el vector de probabilidades teóricas de las clases para la distribución que queremos contrastar. Si no lo especificamos, se entiende que la probabilidad es la misma para todas las clases. Obviamente, estas probabilidades se tienen que especificar en el mismo orden que las frecuencias dexy, como son las probabilidades de todos los resultados posibles, en principio tienen que sumar 1; esta condición se puede relajar con el siguiente parámetro.rescale.pes un parámetro lógico que, si se iguala aTRUE, indica que los valores depno son probabilidades, sino solo proporcionales a las probabilidades; esto hace que R tome como probabilidades teóricas los valores deppartidos por su suma, para que sumen 1. Por defecto valeFALSE, es decir, se supone que el vector que se entra comopson probabilidades y por lo tanto debe sumar 1, y si esto no pasa se genera un mensaje de error indicándolo. Igualarlo aTRUEpuede ser útil, porque nos permite especificar las probabilidades mediante las frecuencias esperadas o mediante porcentajes. Pero también es peligroso, porque si nos hemos equivocado y hemos entrado un vector enpque no corresponda a una probabilidad, R no nos avisará.simulate.p.valuees un parámetro lógico que indica a la función si debe optar por una simulación para estimar el p-valor del contraste. Por defecto valeFALSE, en cuyo caso este p-valor no se estima sino que se calcula mediante la distribución \(\chi^2\) correspondiente. Si se especifica comoTRUE, R realiza una serie de replicaciones aleatorias de la situación teórica para simular el p-valor.
Ejmeplo para la variable salario. Dado que es una variable continua y trabajamos con una tabla donde deben haber agrpaciones, en primer lugar creamos las agrupaciones con la regla de Sturges. A continuación, realizamos el contraste de bondad de ajuste de la \(\chi^2\) con esa infromación.
Code
# Calcular el número de intervalos utilizando la regla de Sturges
n_intervalos <- ceiling(log2(length(Empleados$salario)) + 1)
# Creamos el salario como una variable categórica utilizando la regla de Sturges
Sal_Sturges <- cut(Empleados$salario, breaks = n_intervalos, labels = FALSE)
# Realizar una tabla de contingencia
tabla_Sal <- table(Sal_Sturges)
# Realizar la prueba de chi-cuadrado
chisq.test(table(tabla_Sal))Warning in chisq.test(table(tabla_Sal)): Chi-squared approximation may be
incorrect
Chi-squared test for given probabilities
data: table(tabla_Sal)
X-squared = 0.77778, df = 7, p-value = 0.9977
El error que muestra el contraste puede ser debido a que la variable es continua y se han creado intervalos forzando la realización del contraste. PAra este caso exiten otros contrastes que son mejores que veremos a continuación.
Pero para el caso que nos ocupa, el resultado que da el contraste, es un p-valor=0.9977,el cual es muy eleveado, indicando que no se puede rechazar la hipótesis nula de normalidad, por lo que podríamos suponer que la distribución de salarios se distribuye como una normal.
Contraste de Kolmogorov-Smirnov-Lilliefors (KSL)
Para contrastar si una muestra proviene de una distribución normal con los parámetros \(\mu\) y \(\sigma\) desconocidos, el test KSL nos “obliga” a darles un valor. En este caso, los mejores “óptimos” para dichos parámetros serían las estimaciones dadas por los estimadores de máxima verosimilitud, es decir, la media muestral para \(\mu\) y la desviación típica muestral para \(\sigma\).
La prueba de Kolmogorov-Smirnov-Lilliefors consiste en estimar dichos parámetros, calcular la discrepancia máxima tal como se ha explicado pero a la hora de calcular el p-valor, se usa otra distribución, llamada distribución de Lilliefors en lugar de usar la distribución de Kolmogorov ya que con la distribución de Lilliefors, el contraste es más robusto y es el mejor para contrastar la normalidad.
Vamos a aplicar el test KSL a nuestro ejemplo anterior para ver si se distribuye según la ley normal.
El test KSL test en R se aplica usando la función lillie.test del paquete (que tiene que estar previamente instalado) nortest:
Code
install.packages("nortest")Code
library(nortest)
lillie.test(Empleados$salario)
Lilliefors (Kolmogorov-Smirnov) normality test
data: Empleados$salario
D = 0.20785, p-value < 2.2e-16
Como se puede comprobar, al usar una prueba que sí está pensada para variables continuas, el p-valor obtenido es estadísticamente igual a cero, por lo que se rechaza la hipótesis nula de normalidad, es decir, el salario no se distribuye de manera normal.
Contraste de Shapiro-Wilks
Este test es muy útil cuando las muestras de las que se dispone no tienen un tamaño suficiente (\(n<50\) o \(n<30\)). En este caso, este test funciona muy bien para contrastar la normalidad.
La función que se emplea es la shapiro.testimplementado en la instalación básica de R.
El código es muy sencillo, puesto que esta función sólo está compuesta de un único argumento xque es un vector numérico de valores.
En nuestro ejemplo, obtendríamos lo siguiente:
Code
shapiro.test(Empleados$salario)
Shapiro-Wilk normality test
data: Empleados$salario
W = 0.77061, p-value < 2.2e-16
donde obtenemos el valor del test y su p-valor. En este caso, dado que el p-valor es estadísticamente igual a 0, tenemos evidencia suficiente para rechazar la hipótesis nula de normalidad, es decir, la variable salario no proviene de una población normal.
Contrastes de Independencia y Aleatoriedad
Los test de independencia y aleatoriedad en algunos contextos están muy relacionados, aunque en principio son diferente. Los test de Independencia lo que analizan es si dos poblaciones son independientes entre sí , mientras que los test de aleatoriedad lo que analizan es si una muestra puede considerarse aleatoria.
Test de Independencia para tablas de contingencia
El contraste de independencia para tablas de contingencia bidimensionales consiste en decidir si las dos variables de la tabla tienen distribuciones independientes, es decir, si la distribución de probabilidades conjunta es igual al producto de las probabilidades marginales.
Las hipótesis que se plantean son las siguientes:
\(H_0:\) las variables \(X\) e \(Y\) son independientes.
\(H_1:\) las variables \(X\) e \(Y\) están relacionadas
Vamos a suponer que queremos analizar si existe algún tipo de relación entre el género (sexo) y la categoría laboral (catlab), o si por el contrario son independientes, es decir, si la categoría laboral no depende del género al que pertenezcas.
Para realizar un contraste de independencia en R hay que usar la función chisq.test(tabla.contingencia, correct) con los parámetros siguientes:
tabla.contingencia: es la tabla de las frecuencias empíricas.correct: es un parámetro lógico. Si su valor es FALSE, hará los cálculos con el estadístico de la \(\chi^2\). Si su valor es TRUE, aplica la corrección a la continuidad sólo para tablas de contingencia 2 × 2.
Para poder realizarlo, en primer lugar tengo que tener los datos de mi tabla o la tabla en si, que es lo que se hace en la siguiente sentencia.
Code
tabla_contingencia<-table(Empleados$sexo, Empleados$catlab2)
tabla_contingencia
Administrativo Seguridad Ejecutivo
h 157 27 74
m 206 0 10
Con estos datos, realizamos el test.
Code
chisq.test(tabla_contingencia)
Pearson's Chi-squared test
data: tabla_contingencia
X-squared = 79.277, df = 2, p-value < 2.2e-16
El restultado del test indica que se puede rechazar la hipótesis nula de independencia al obtener un p-valor muy bajo, lo que sugiere que existe evidencia suficiente para decir que existe una relación entre la categoría laboral y el género. Para porfundizar en dicha relación habría que observar con detenimiento los datos.
Test de aleatoriedad (test de rachas)
Quizá el contraste más sencillo se refiere al hecho de que las observaciones disponibles proceden de una población realmente aleatoria, frente a la alternativa de que hay cierto determinismo en ellas.
Para poder realizar este contraste primeramente debemos instalar el paquete randtestsque es donde está implementada la función runs.test que es una de las funciones donde se puede realizar este contraste.
Code
install.packages('randtests')Ela función runs.testtiene la siguiente estructura:
runs.test(x, alternative, threshold, pvalue, plot)
donde los argumentos más importantes son:
x: es el vector de observacionesalternative: es el tipo de hipótesis altenrativa del contraste, que puede tomar los valorestwo.sided(por defecto),left.sidedyright.sided.
Si queremos contrastar con nuestros datos (“Empleados”) si la muestra ha sido obtenida de manera aleatoria:
Code
library("randtests")
runs.test(Empleados$salario)
Runs Test
data: Empleados$salario
statistic = -4.5061, runs = 189, n1 = 237, n2 = 237, n = 474, p-value =
6.604e-06
alternative hypothesis: nonrandomness
Como se puede observar, con un p-valor de prácticamente cero, podemos decir que se rechaza la hipóteisis nula de aleatoriedad1.
Contrastes de Posición y Homogeneidad
Los contrastes de posición y de homogeneidad no paramétricos son los contrastes equivalentes a los de medias y diferencias de medias en el caso paramétrico.
Contrastes de Posición (una población)
Los contrastes de posición o localización son un grupo de contrastes no paramétricos equivalentes a los contrastes t paramétricos. En general, este tipo de contrastes son de la familia de los contrastes de signos no paramétricos. Este tipo de contrastes, son pruebas estadísticas que se utilizan para comparar la mediana o la ubicación central de una muestra con un valor de referencia o para evaluar si dos muestras provienen de poblaciones con medianas iguales. A continuación, explicaré cuándo se utilizan cada uno de los tres contrastes de signos no paramétricos: la Prueba de Signos, la Prueba de Signos con la Mediana y la Prueba de Rangos de Signos de Wilcoxon.
Prueba de Signos:
Se utiliza cuando se desea comparar una medida de posición central de una muestra con un valor de referencia específico.La hipótesis nula es que un determinado cuantil de la distribución toma un valor. Se puede construir una variable dicotómica que toma el valor 1 si el resultado está por encima de ese cuantil (si el signo es positivo) y 0 si está por debajo (signo negativo). Esta variable sigue una distribución B(n, p) y el contraste es a dos colas. La hipótesis nula se rechazará si aparece un número muy bajo o muy alto de signos +, es decir, cuando el estadístico calculado sea muy grande o muy pequeño respecto al valor que cabría esperar.Este contraste en Rse puede llevar a cabo con la función binom.test.
binom.test(x, n, p = 0.5,
alternative = c("two.sided", "less", "greater"),
conf.level = 0.95)
Prueba de Signos con la Mediana (Prueba de Wilcoxon unimodal):
Es un caso particular del contraste anterior, donde el cuantil que se busca es justamente la mediana. De hecho, la función de R por defecto trae es valor. Se utiliza cuando se desea comparar la mediana de una muestra con una mediana hipotética (generalmente una mediana teórica o de referencia). La Hipótesis nula es que la mediana de la muestra es igual a la mediana hipotética y la hipótesis alternativa es que la mediana de la muestra es diferente de la mediana hipotética.
Prueba de Rangos de Signos de Wilcoxon (Wilcoxon Signed-Rank Test):
Este contraste es más pontente cuando la población de donde se extrae la muestra es continua y simétrica. Los test anteriores no tienen en cuenta la magnitud de las variables, sino sólo el signo.Sin embargo, este contraste, bajo los supuestos indicados, soluciona ese problema considerando el signo y la magnitud de las diferencias. La hipótesis a contrastar es que la mediana de la distribución toma un valor frente a que es distinta (tambiénm mayor o menor). La idea es que, tras asignar un rango a esas diferencias, si la suma de rangos positivos es semejante a la de los negativos no se puede rechazar esa hipótesis, pero si uno de ellos es muy grande frente a la otra, existirán diferencias. Existe una aproximación a la Normal para muestras grandes.
En Reste contraste está implementado a través de la función ‘wilcox.test’ que tiene la siguiente estructura y argumentos:
wilcox.test(x, ...)
x: El vector numérico que contiene los datos para los que se va a realizar el test.y(opcional): Un segundo vector numérico, que se utiliza cuando se desea comparar dos muestras independientes. Se puedes omitir este argumento si solo se desea realizar la prueba de una muestra (como en este caso).alternative: Un argumento que especifica la hipótesis alternativa. Puede tomar uno de los siguientes valores: “two.sided” (predeterminado), “greater” y “less”mu(opcional): Un valor numérico que representa la mediana hipotética que se desea comparar con los datos. Este argumento se utiliza en las pruebas de una muestra para comparar la mediana dexcon un valor de referencia.paired(opcional): Un valor lógico que indica si los datos en x e y están emparejados (relacionados) o no. Por defecto, es FALSE, lo que significa que se asumen muestras independientes. Debes establecerlo en TRUE si estás realizando una prueba emparejada, como en un diseño de antes y después.exact(opcional): Un valor lógico que indica si se desea realizar una prueba exacta o una aproximación normal. Si estableces exact = TRUE, se realizará una prueba exacta si es posible. Por defecto, es FALSE.conf.int(opcional): Un valor lógico que indica si se desea calcular un intervalo de confianza para la diferencia de medianas. Por defecto, es FALSE.Vamos a seguir con nuestro ejemplo. Vamos a suponer que no podemos realizar un t.test dado que no se cumplen algunos de los supuestos básicos requeridos (p.e. normalidad). Vamos a contrastar si la mediana del salario es igual a 30.000 frente a que es diferente. En este caso, utilizaríamos el test de wilcoxon.
Code
resultado_wilcoxon <- wilcox.test(Empleados$salario, mu = 30000, alternative = "two.sided") print(resultado_wilcoxon)Wilcoxon signed rank test with continuity correction data: Empleados$salario V = 57275, p-value = 0.4607 alternative hypothesis: true location is not equal to 30000Como se puede comprobar, al realizar el contraste de rangos signados de Wilcoxon, se obtiene un p-valor de 0,4607, y dado que es superior al nivel de significación, se puede concluir que no hay evidencia suficiente para rechazar la hipótesis nula de que el salario es igual a 30.000.
Contrastes de Homogeneidad (dos o más poblaciones)
A través de este contraste pretendemos determinar si varias poblaciones distintas (m) tienen una estructura similar o, por decirlo de otro modo, si son o no homogéneas en lo que se refiere a la forma de distribuirse en ellas una cierta variable o atributo que puede tomar un conjunto de n valores o tipos diferentes (en todas las poblaciones). Para ello partiremos de la información de m muestras de las m poblaciones y trabajaremos con las frecuencias que en cada población tiene cada posible valor de la variable (o tipo del atributo).
Las hipótesis serían:
\(H_0:\) Las poblaciones se comportan de la misma manera
\(H_1:\) Las poblaciones se comportan de forma diferente
Contraste de la \(\chi^2\) de homogeneidad (para tablas de contingencia)
En este caso, el contraste es exáctamente igual que cuando se realiza un contraste de independencia, pero en donde lo que se quiere contrastar es si el comportamiento de m muestras (extraidas de m poblaciones) es similar respecto a una caractarística. Vamos a ver un ejemplo en R2.
Imaginemos que una empresa exportadora de naranjas piensa en cambiar su tipo de embalaje para el envío de sus cítricos al exterior, pero no sabe si utilizar cajas de cartón, madera o plástico. Para decidirse y utilizando información de otras empresas exportadoras, selecciona aleatoriamenten las fichas informativas de 142 cajas de cartón, 123 cajas de madera y 128 de plástico. En las fichas informativas de cada caja consta el número de kiologramos que llegaron en mal estado a su destino, disponiendo la información de la siguiente forma:
| Muestras / # Kg en mal estado | <5kg | Entre 5 y 10kg | >10kg | Total Marginal |
|---|---|---|---|---|
| Cartón | 103 | 27 | 12 | 142 |
| Madera | 63 | 52 | 8 | 123 |
| Plástico | 57 | 65 | 6 | 128 |
| Total marginal | 223 | 144 | 26 | 393 |
Vamos a contrastar para un nivel de significación del 5%, si los tres tipos de embalajes se comportan de la misma forma en la conservación de su contenido.
Vamos en primer lugar a introducir los datos.
Code
# Crear una matriz con las frecuencias
frecuencias <- matrix(c(103, 27, 12, 63, 52, 8, 57, 65, 6), nrow = 3, byrow = TRUE)
# Asignar nombres a filas y columnas
rownames(frecuencias) <- c("Cartón", "Madera", "Plástico")
colnames(frecuencias) <- c("<5kg", "Entre 5-10kg", ">10kg")
print(frecuencias) <5kg Entre 5-10kg >10kg
Cartón 103 27 12
Madera 63 52 8
Plástico 57 65 6
Y ahora realizamos el contraste de la chi como en el caso del contraste de independencia.
Code
resultado_chi <- chisq.test(frecuencias)
print(resultado_chi)
Pearson's Chi-squared test
data: frecuencias
X-squared = 31.803, df = 4, p-value = 2.099e-06
En este caso, se obtiene un p-valor que es prácticamente igual a cero, lo que indica, que para un nivel de significación del 5% se rechazaría la hipótesis nula de que los tres embalajes se comportan de la misma manera.
Contraste de Kolmogorov-Smirnov
En una sección anterior hemos visto este test con la corrección de Lilliefors para contrastar la normalidad. Antes de realizar esa corrección, se puede hacer un contraste donde lo que se busca es comparar si dos muestras han sido extraídas de la misma distribución contínua, es decir, si su comportamiento es similar. Para llevarlo a cabo, se calculan las funciones de distribución empiricas y, con ellas, se realiza el contraste. De este modo, si las dos muestras proceden de la misma población, enotnces estas funciones no pueden diferrir mucho, y por lo tanto no se podrá rechazar la hipótesis nula. La función básica para realizar el test K-S es ks.test. Su sintaxis básica para una muestra es
ks.test(x, y, ...)
Veamos un ejemplo sencillo:
Una determinada universidad cree que es posible que los alumnos que proceden de instituciones privadas de enseñanza media tengan distinto rendimiento académico en las licenciaturas universitarias que aquellos que provienen de instituciones públicas. Con el objeto de contrastar esta hipótesis, se recogen aleatoriamente los siguientes resultados de las pruebas de selectividad: Puntuaciones:
| Privada | 97, 68 ,75, 95, 75 ,84, 86, 94, 73, 69, 85, 93, 85, 88, 91, 74, 60, 74 |
|---|---|
| Pública | 84, 65 ,87, 93, 78, 77, 67, 95, 68, 74, 78, 74, 67, 91 |
Solución:
Code
# Datos de las dos muestras
privada <- c(97, 68, 75, 95, 75, 84, 86, 94, 73, 69, 85, 93, 85, 88, 91, 74, 60, 74)
publica <- c(84, 65, 87, 93, 78, 77, 67, 95, 68, 74, 78, 74, 67, 91)
# Realizar el test de Kolmogorov-Smirnov
resultado_ks <- ks.test(privada, publica)
# Mostrar el resultado del test
print(resultado_ks)
Exact two-sample Kolmogorov-Smirnov test
data: privada and publica
D = 0.21429, p-value = 0.6752
alternative hypothesis: two-sided
El resultado obtenido en este contraste, indica que, con un p-valor de 0.6752 no puedo rechazar la hipótesis nula de que las notas de las dos instituciones sean iguales.
Contraste de Wilcoxon-Mann-Withney (U de Mann-Whitney)
Es un test de suma de rangos basado en dos muestras aleatorias independientes. Es un contraste pensado para comparar dos poblaciones independientes y de naturaleza continua, y se suele emplear cuando no se puede utilizar la prueba t (o z) porque no se cumplen algunos de los supuestos. Este contraste se puede llevar a cabo como si fuera el contraste de rangos de wilcoxon para una muestra (visto anteriormente) o con un estadístico de Mann-withney. La hipótesis a contrastar es que las dos poblaciones tienen la misma distribución, es decir, son homogéneas en su comportamiento. Se calculan los estadísticos de Mann-Withney (uno para cada variable) como el número de observaciones de una variable que son superiores a la otra. Se rechazará la hipótesis nula cuando estos estadísticos sean muy grandes o muy pequeños, respecto a los valores crítcos obtenidos en esta distribución.
En R tenenos este contraste con la función ‘wilcox.test’.
Siguiendo el mismo ejemplo de las notas de las universidades anteriores con los mismo datos:
| Privada | 97, 68 ,75, 95, 75 ,84, 86, 94, 73, 69, 85, 93, 85, 88, 91, 74, 60, 74 |
|---|---|
| Pública | 84, 65 ,87, 93, 78, 77, 67, 95, 68, 74, 78, 74, 67, 91 |
Solución:
Cargamos los datos y realizamos el test
Code
privada <- c(97, 68, 75, 95, 75, 84, 86, 94, 73, 69, 85, 93, 85, 88, 91, 74, 60, 74)
publica <- c(84, 65, 87, 93, 78, 77, 67, 95, 68, 74, 78, 74, 67, 91)
resultado_wilcoxon <- wilcox.test(privada, publica)Warning in wilcox.test.default(privada, publica): cannot compute exact p-value
with ties
Code
print(resultado_wilcoxon)
Wilcoxon rank sum test with continuity correction
data: privada and publica
W = 148.5, p-value = 0.4025
alternative hypothesis: true location shift is not equal to 0
En este caso, dado que el p-valor es igual a 0.4025, no se puede rechazar la hipótesis nula de que las notas de los dos tipos de instituciones difieran (se obtiene el mismo resultado que con el test de KS).
Contraste de Kruskal-Wallis (test no paramétrico para más de dos poblaciones)
El contraste de Kruskall-Wallis es la versión no paramétrica del ANOVA de un factor, es decir, es el contraste que se puede llevar a cabo cuando no se cumplen las condiciones necesarias para dicho contraste. La metodología de este test no es más que una extensión del contraste anteriormente visto, el de Mann-Whitney. En concreto, cuando las poblaciones de comparación son dos, los contrastes son el mismo.
A diferencia del ANOVA en el que se comparan medias, el test de Kruskal-Wallis contrasta si las diferentes muestras están equidistribuidas y que por lo tanto pertenecen a una misma distribución (población). Bajo ciertas simplificaciones puede considerarse que el test de Kruskal-Wallis compara las medianas.
\(H_0:\) todas las muestras provienen de la misma población (distribución).
\(H_1:\) Al menos una muestra proviene de una población con una distribución distinta.
El test de Kruskal-Wallis es el test adecuado cuando los datos tienen un orden natural, es decir, cuando para darles sentido tienen que estar ordenados o bien cuando no se satisfacen las condiciones para poder aplicar un ANOVA. El estadístico que se construye para realizar el contraste sigue una distribución conocida \(\chi^2_{k-1}\) con \(k-1\) grados de libertad.
La función que se emplea es:
kruskal.test(x, g ...)
o
kruskal.test(formula, ...)
donde x es la variable cuantitativa (u ordinal), g son los grupos, y formula es la fomrula donde se pone la variable cuantitativa frente al factor (x~g).
Veamos nuestro ejemplo con los datos de empleados.
Code
kruskal.test(salario ~ catlab, data = Empleados)
Kruskal-Wallis rank sum test
data: salario by catlab
Kruskal-Wallis chi-squared = 207.68, df = 2, p-value < 2.2e-16
En este caso, con un p-valor igual prácticamente igual a 0, se puede decir que el comportamiento de las tres categorías respecto al salario son diferentes.
Evidentemente, y al igual que en el caso del ANOVA, con este test se pueden realizar contrastes a posteriori para intentar ver que grupos de entre los comparados son significativamente diferentes (comparaciones Post-hoc). Para saberlo es necesario compararlos todos entre ellos. Esto implica realizar una corrección del nivel de significancia para evitar incrementar el error de tipo I. Los dos métodos de comparación post-hoc más empleados para un test de Kruskal-Wallis son:
Test de Mann-Whitney entre cada par de grupos con corrección de significancia
pairwise.wilcox.test().Tukey’s range test: en R existe la función
kruskalmc()del paquetepgirmess.
En este caso, nosotros usaremos el primero de ellos, que además, permite emplear diferentes métodos de correción (Bonferroni, holm, etc…). En nuestro ejemplo:
Code
pairwise.wilcox.test(x = Empleados$salario, g = Empleados$catlab, p.adjust.method = "bonferroni" )
Pairwise comparisons using Wilcoxon rank sum test with continuity correction
data: Empleados$salario and Empleados$catlab
1 2
2 2e-04 -
3 < 2e-16 2.3e-14
P value adjustment method: bonferroni
Como se puede apreciar, de todas las comparaciones que se hacen (1 frente a 2 y frente a 3, y 2 frente a 3) las diferencias son significativas al tener p-valores próximos a cero.