Sys.setlocale("LC_ALL", "es_ES.UTF-8")
## [1] "LC_COLLATE=es_ES.UTF-8;LC_CTYPE=es_ES.UTF-8;LC_MONETARY=es_ES.UTF-8;LC_NUMERIC=C;LC_TIME=es_ES.UTF-8"

Presentar un resumen de las PRUEBAS NO PARAMÉTRICAS Y ROBUSTAS (enumeradas a continuación) con 1 EJEMPLO en R para cada una de ellas.

PRUEBAS NO PARAMÉTRICAS

Prueba de independencia

EI test de independencia X2 se emplea cuando se tienen variables categóricas, y queremos evaluar si hay independencia en los valores obtenidos para las diferentes categorías. Las condiciones para la aplicación del test X2, son: tamaño de muestra grande, y valores esperados mayores a 5 para todas las categorías.

EI estadístico de prueba es:

\[\chi^2 = \sum \frac{(O - E)^2}{E}\]

, siendo O las frecuencias observadas y E las frecuencias esperadas para cada categoría.
Nuestra prueba de hipótesis, se puede escribir corno:

\[\text{Prueba:} \quad \begin{cases} H_0 : \text{Todas las variables categoricas son independientes}\\ H_1 : \text{Las variables categoricas NO son independientes} \end{cases}\]

Ejemplo
Vamos a considerar eI consumo de snakcs en una sala de cine, en función del género de la película proyectada. Nuestros datos se resumen en la siguiente tabla de contingencia

cine <- matrix(c(50, 75, 125,90, 30, 45, 10),
               nrow = 4,
               ncol = 2,
               byrow = T,
               dimnames = list(c("accion","comedia","familiar","terror"),
                               c("snack", "no_snack")))
## Warning in matrix(c(50, 75, 125, 90, 30, 45, 10), nrow = 4, ncol = 2, byrow =
## T, : data length [7] is not a sub-multiple or multiple of the number of rows
## [4]
df <- as.data.frame(cine)

df %>% kable(caption="Compra de snakcs, por categoria de pelicula", align = ("cc")) %>%
  kable_styling("striped",
                full_width = F,
                position = "center",
                font_size = 16) %>%
  row_spec(0, monospace = T, bold = T, color = "black", background = "orange") %>%
  row_spec(1:4, color = "black") %>%
  column_spec(1:1, bold = T, color = "black")
Compra de snakcs, por categoria de pelicula
snack no_snack
accion 50 75
comedia 125 90
familiar 30 45
terror 10 50

Queremos comprobar si la compra de snacks se relaciona con la categoría de la película; para esto ejecutamos un test X2 a nuestra matriz de contingencia. Nuestro resultado es:

chisq.test(df)
## 
##  Pearson's Chi-squared test
## 
## data:  df
## X-squared = 36.428, df = 3, p-value = 6.079e-08

Conclusión
Dado que nuestro valor p es < 0.05, podemos rechazar \(H_0\) y concluir que el consumo de snacks es dependiente de la categorií de la película proyectada

Volver al inicio

Prueba de independencia Chi-cuadrado

Es un test para evaluar la asociación de variables independientes, basado en el cálculo de las posibles combinaciones de las variables, partiendo de la distribución hipergeométrica que permite calcular la probabilidad exacta de obtener determinada distribución de eventos dentro una tabla de contingencia. Se considera el test de elección cuando el número total de observaciones no es muy grande, o cuando el valor esperado de alguna observación sea menor a 5.
Nuestra prueba de hipótesis, se puede escribir corno:

\[\text{Prueba:} \quad \begin{cases} H_0 : \text{Las variables categoricas son independientes}\\ H_1 : \text{Las variables categoricas NO son independientes} \end{cases}\]

Ejemplo
Vamos a considerar la mortalidad en personas menores de 40 años, con el consumo de cannabis (una a más veces por semana)
Nuestros datos se resumen en la Siguiente tabla de contingencia:

cannabis <- matrix(c(12, 32, 3, 213),
                   nrow = 2,
                   ncol = 2,
                   byrow = T,
                   dimnames = list(c("cannabis+","cannabis-"),
                                   c("muerte+","muerte-")))

as.data.frame(cannabis)
##           muerte+ muerte-
## cannabis+      12      32
## cannabis-       3     213
df %>% kable(caption="Mortalidad Vs consumo cannabis",align = ("cc")) %>%
  kable_styling("striped",
                full_width = F,
                position = "center",
                font_size = 16) %>%
  row_spec(0, monospace = T, bold = T, color = "black", background = "orange") %>%
  row_spec(1:2, color = "black") %>%
  column_spec(1:1, bold = T, color = "black")
Mortalidad Vs consumo cannabis
snack no_snack
accion 50 75
comedia 125 90
familiar 30 45
terror 10 50

Queremos comprobar si existe alguna diferencia en la tasa de mortalidad entre consumidores y no consumidores de cannabis:

fisher.test(df)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  df
## p-value = 2.607e-08
## alternative hypothesis: two.sided

Conclusión
Dado que nuestro valor p es < 0.05, podemos rechazar \(H_0\) y concluir que hay una asociación entre el consumo de cannabis y la tasa de mortalidad.

Volver al inicio

Prueba exacta de Fisher Prueba de McNemar

EI test de McNemar se emplea para hallar asociaciones en datos emparejados. Sirve para estudiar la relación entre dos variables. ambas dicotómicas (tabla 2x2). Los cambios de estado entre sujetos del estudio debe ser mayor a 25.
Nuestra prueba de hipótesis, se puede escribir corno:

\[\text{Prueba:} \quad \begin{cases} H_0 : \text{La respuesta es independiente de la intervención}\\ H_1 : \text{La respuesta NO es independiente de la intervención} \end{cases}\]

Ejemplo
Se dicta un curso de jardinería y a los presentes se les pregunta si están dispuestos a instalar un protector de lluvia. Cada participante debe contestar la pregunta antes y después de atender al curso.

barrera <- matrix(c(9, 5, 17, 15),
                  nrow = 2,
                  ncol = 2,
                  byrow = T,
                  dimnames = list(c("pre_si","pre_no"),
                                  c("post_si","post_no")))

df <- as.data.frame(barrera)

df %>% kable(caption="Instalacion de protector de lluvia", align = ("cc")) %>%
  kable_styling("striped",
                full_width = F,
                position = "center",
                font_size = 16) %>%
  row_spec(0, monospace = T, bold = T, color = "black", background = "orange") %>%
  row_spec(1:2, color = "black") %>%
  column_spec(1:1, bold = T, color = "black")
Instalacion de protector de lluvia
post_si post_no
pre_si 9 5
pre_no 17 15

Tenemos la información de las respuestas antes y después de tomar el curso. Queremos comprobar la hipótesis de que las personas cambiaron de opinión en relación a la instalación del protector de lluvias, luego de tomar eI curso de jardinería.

mcnemar.test (as.matrix( df ) )
## 
##  McNemar's Chi-squared test with continuity correction
## 
## data:  as.matrix(df)
## McNemar's chi-squared = 5.5, df = 1, p-value = 0.01902

Conclusión
Dado que nuestro valor p es < 0.05, podemos rechazar \(H_0\) y concluir que sí hay un cambio en la decisión de instalar el protector de lluvia, luego de tomar el curso de jardinería.

Volver al inicio

Prueba Q de Cochran-Mantel-Haenszel

La prueba Q de Cochran-Mantel-Haenszel (CMH) es la generalización de la prueba de Mcnemar cuando se tienen más de dos grupos. Permite estudiar la independencia entre varias muestras pareadas, es decir, si la distribución de una variable binomial es la misma en todos los grupos. Nos sirve para comprobar la asociación entre dos variables, controlando el efecto de las demás variables que se pueden considerar confusores; se emplea con frecuencia en estudios de casos y controles.
Nuestra prueba de hipótesis, se puede escribir como:

\[\text{Prueba:} \quad \begin{cases} H_0 : \text{La proporción de eventos verdaderos es la misma en talos los grupos}\\ H_1 : \text{La respuesta NO es independiente de la intervención} \end{cases}\]

Ejemplo
Vamos a emplear el dataset Titanic, para comprobar la asociación entre la sobre vivencia de IOS pasajeros, su sexo y la clase en la cual viajaban. para esto vamos a reorganizar los datos, suprjmjendo la variable edad, y generando una reducción de dimensiones agrupando los datos por Clase del viajero.

data(Titanic)
data <- Titanic

tabla_parcial <- margin.table(data, c(2,4,1))

mantelhaen.test(tabla_parcial)
## 
##  Mantel-Haenszel chi-squared test with continuity correction
## 
## data:  tabla_parcial
## Mantel-Haenszel X-squared = 360.33, df = 1, p-value < 2.2e-16
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
##   8.232629 14.185153
## sample estimates:
## common odds ratio 
##          10.80653

Conclusión
Dado que nuestro valor p es < 0.05, podemos rechazar \(H_0\) y concluir que sí hay un cambio en la decisión de instalar el protector de lluvia, luego de tomar el curso de jardinería.

Volver al inicio

Prueba de homogeneidad

Prueba U de Mann-Whitney

Es una prueba no paramétrica, que permite comparar medianas de dos grupos, cuando no cumplimos las condiciones para aplicar la prueba t. Las siguientes condiciones nos impiden emplear la prueba t, y por lotanto nos sugieren emplear la prueba U de Mann-Whitney:
-Al menos una de las muestras tiene menos de 30 observaciones, y no se puede asumir normalidad sobre ésta
-Tenemos una variable ordinal
-Muestra muy pequeña (menos de 10 observaciones en algún grupo)

La prueba de hipótesis la podemos escribir como:

\[\text{Prueba:} \quad \begin{cases} H_0 : \text{Las medianas son iguales}\\ H_1 : \text{Las medianas NO son iguales} \end{cases}\]

Vale la pena mencionar que esta prueba tambien se conoce como test de suma de rangos de Wilcoxon.

Ejemplo
Vamos a emplear el dataset mtcars para realizar una prueba U de Mann-Whitney. Vamos a comparar el consumo de combustible para los vehículos de 6 y los de 8 cilindros. Dado que el grupo de los vehículos de 6 cilindros sólo contiene 7 datos, es indicado emplear el test U de Mann-Whitney

data(mtcars)
data <- mtcars
attach(data)
## The following object is masked from package:ggplot2:
## 
##     mpg
table(cyl) %>% kable(align = "cc", col.names = c("No. Cilindros","No. Carros")) %>% 
  kable_styling("striped",
                full_width = F,
                position = "center",
                font_size = 16) %>%
  row_spec(0, monospace = T, bold = T, color = "black", background = "orange")
No. Cilindros No. Carros
4 11
6 7
8 14
cil_6 <- subset(data, cyl == 6)
cil_8 <- subset(data, cyl == 8)

wilcox.test(cil_6$mpg,cil_8$mpg)
## Warning in wilcox.test.default(cil_6$mpg, cil_8$mpg): cannot compute exact
## p-value with ties
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  cil_6$mpg and cil_8$mpg
## W = 93.5, p-value = 0.001013
## alternative hypothesis: true location shift is not equal to 0

Conclusión
Dado que nuestro valor p es < 0.05, podemos rechazar \(H_0\) y concluir que hay si hay una diferencia en los consumos de combustibles para los carros de 6 y 8 cilindros.

Volver al inicio

Prueba de Wilcoxon para muestras relacionadas

También se conoce como prueba de rangos con signo de Wilcoxon. Es una prueba no paramétrica, que permite comparar medianas de dos grupos apareados, cuando no cumplimos las condiciones para aplicar la prueba t.
La prueba de hipótesis la podemos escribir como:

\[\text{Prueba:} \quad \begin{cases} H_0 : \text{Las medianas son iguales}\\ H_1 : \text{Las medianas NO son iguales} \end{cases}\]

Ejemplo
Vamos a emplear el dataset Anorexia para comprobar si hay una correlación entre el peso pre y post tratamiento para la anorexia en un grupo de 17 pacientes.

library(MASS)

data(anorexia)
wilcox.test(anorexia$Prewt, anorexia$Postwt, paired = TRUE, correct = FALSE)
## 
##  Wilcoxon signed rank test
## 
## data:  anorexia$Prewt and anorexia$Postwt
## V = 831.5, p-value = 0.01052
## alternative hypothesis: true location shift is not equal to 0

Conclusión
Dado que nuestro valor p es < 0.05, podemos rechazar \(H_0\) y concluir que hay si hay una diferencia en el peso pre y post tratamiento de la anorexia. cilindros.

Me gustaría tener un feedback de su parte exactamente en este ejercicio ya que el resultado del wilcox.test(…… = TRUE, correct = FALSE) me da diferente al utilizado en el ejercicio, en el vídeo sale un llamado de una función que parece no existir en R Studio wilcox.test.paired(data), tuve que investigar y encostran los parámetros que se detallan en el llamado de la función

Volver al inicio

Prueba de Kruskal-Wallis Prueba de Friedman

La prueba de Kruskal-Wallis es la alternativa no paramétrica del test ANOVA de una vía para datos independientes.
La prueba de hipótesis la podemos escribir como:

\[\text{Prueba:} \quad \begin{cases} H_0 : \text{Las medianas son iguales}\\ H_1 : \text{Al menos una mediana difiere del resto} \end{cases}\]

El test de Kruskall-Wallis nos dice sí hay diferencia en la distribución de las muestras; para conocer cuáles grupos difieren, se requiere realizar pruebas post-hoc. Las pruebas post-hoc más frecuentemente empleadas, son el test de Mann-Whitney por parejas y el test de rangos de Tukey.

Ejemplo
Un estudio compara el número de huevos que pone un determinado insecto bajo 3 condiciones distintas. ¿Existen diferencias significativas dependiendo de las condiciones?

datos <- data.frame(
  condicion = c(rep("condicion1", 18), rep("condicion2", 18), rep("condicion3", 18)),
  n_huevos = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 27, 28, 29, 30, 51, 52, 53, 342, 40, 
              41, 42, 43, 44, 45, 46, 47, 48, 67, 88, 89, 90, 91, 92, 93, 94, 293, 
              19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 25, 36, 37, 58, 59, 60, 71, 72)
)
kruskal.test(n_huevos ~ condicion, data = datos) 
## 
##  Kruskal-Wallis rank sum test
## 
## data:  n_huevos by condicion
## Kruskal-Wallis chi-squared = 19.964, df = 2, p-value = 4.623e-05

Conclusión
Dado que nuestro valor p es < 0.05, podemos rechazar \(H_=\) y concluir que hay hay al menos un grupo con una mediana diferente del resto.
Podemos aplicar un análisis post-hoc para identificar entre cuales grupos existe una diferencia significativa.

pairwise.wilcox.test(datos$n_huevos, datos$condicion, p.adjust.method = "bonferroni")
## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties
## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties
## 
##  Pairwise comparisons using Wilcoxon rank sum exact test 
## 
## data:  datos$n_huevos and datos$condicion 
## 
##            condicion1 condicion2
## condicion2 0.00029    -         
## condicion3 0.14386    0.00087   
## 
## P value adjustment method: bonferroni

Conclusión
Existe diferencias entre la condición I y la condición 2, y también existe diferencias entre la condición 2 y la condición 3

Prueba de Friedman

El test de Friedman es la alternativa no paramétrica del test de ANOVA de una vía, para datos pareados.
La prueba de hipótesis la podemos escribir como:

\[\text{Prueba:} \quad \begin{cases} H_0 : \text{Las medianas son iguales}\\ H_1 : \text{Al menos una mediana difiere del resto} \end{cases}\]

Para conocer entre cuáles grupos se presenta la diferencia, podemos ejecutar pruebas post-hoc. Las pruebas post-hoc más frecuentemente empleadas, son el test de Wilcoxon por parejas y el test de rangos de Tukey.

Ejemplo
Un estudio pretende demostrar si existe alguna ventaja en el método para rodear la primera base de los jugadores de baseball. Se definen tres métodos independientes: rodear, ángulo cerrado y ángulo abierto. Se determinan los tiempos que emplean 22 jugadores rodeando la primera base, según cada uno de los métodos.
Emplearemos un test de Friedman, para comprobar si algún método ofrece ventaja de tiempo a los jugadores.

tiempos <- matrix(c(5.40, 5.50, 5.55,
                    5.85, 5.70, 5.75,
                    5.20, 5.60, 5.50,
                    5.55, 5.50, 5.40,
                    5.90, 5.85, 5.70,
                    5.45, 5.55, 5.60,
                    5.40, 5.40, 5.35,
                    5.45, 5.50, 5.35,
                    5.25, 5.15, 5.00,
                    5.85, 5.80, 5.70,
                    5.25, 5.20, 5.10,
                    5.65, 5.55, 5.45,
                    5.60, 5.35, 5.45,
                    5.05, 5.00, 4.95,
                    5.50, 5.50, 5.40,
                    5.45, 5.55, 5.50,
                    5.55, 5.55, 5.35,
                    5.45, 5.50, 5.55,
                    5.50, 5.45, 5.25,
                    5.65, 5.60, 5.40,
                    5.70, 5.65, 5.55,
                    6.30, 6.30, 6.25),
                  nrow = 22,
                  byrow = TRUE,
                  dimnames = list(1 : 22,
                  c("Rodear", "angulo_cerrado", "angulo_abierto")))

friedman.test(tiempos)
## 
##  Friedman rank sum test
## 
## data:  tiempos
## Friedman chi-squared = 11.143, df = 2, p-value = 0.003805

Conclusión
Dado que nuestro valor p es < 0.05, podemos rechazar \(H_0\) y concluir que hay al menos un grupo con una mediana diferente del resto.

Volver al inicio

PRUEBAS ROBUSTAS

Las pruebas robustas, además de ser no paramétricas, nos permite trabajar con datos que contengan un número elevado de outliers.

Prueba para 1 muestra

Cuando trabajamos con una muestra, podemos emplear los M-estimadores como pruebas robustas de las medidas de centralidad de una distribución. En R podemos emplear el estimador de Huber, mediante la función hubers.

Ejemplo
Para el ejemplo del estimador de huber, vamos a considerar el dataset chem, que representa 24 lecturas de la concentración de cobre en harina integral. Comprobemos mediante un boxplot la tendencia de nuestros datos.

data(chem)
data <- chem
boxplot(chem)

La presencia de estos datos extremos nos sugiere que hay una ventaja en empleo de pruebas robustas.

hubers(data)
## $mu
## [1] 3.205498
## 
## $s
## [1] 0.673652
mean(data)
## [1] 4.280417

Conclusión
El valor μ de nuestro estimador es 3.2, que corresponde a una estimación robusta, y que difiere de la media de la muestra que seria de 4.2

Volver al inicio

Prueba para 2 muestras

Muestras independientes Cuando tenemos datos que no cumplen las condiciones para la aplicación de las pruebas de hipótesis paramétricas, o tenemos un número importante de outliers, podemos realizar una comparación de medianas. De manera que nuestra prueba se puede escribir como:

\[\text{Prueba:} \quad \begin{cases} H_0 : \text{Las medianas son iguales}\\ H_1 : \text{Las medianas NO son iguales} \end{cases}\]

Para aplicar la prueba robusta en R, debemos cargar la librería WRS2. Cuando tenemos dos muestras independientes, empleamos la función pb2gen de la libreria WRS2.

Ejemplo
Vamos a emplear el dataset eurosoccer. Vamos a comparar si existe diferencias en los goles anotados en la liga española y la liga alemana de fútbol.

data(eurosoccer)
data <- eurosoccer
attach(data)

spain_germany <- subset(data, League == "Spain" | League == "Germany")
spain_germany$League <- droplevels(spain_germany$League)

pb2gen(GoalsGame~League,data = spain_germany, est = "median")
## Call:
## pb2gen(formula = GoalsGame ~ League, data = spain_germany, est = "median")
## 
## Test statistic: -0.1238, p-value = 0.43072
## 95% confidence interval:
## -0.5046    0.2214

Conclusión
Dado que nuestro valor p es > 0.05, NO podemos rechazar \(H_0\) y concluimos que no hay diferencias en los goles marcados en ambas ligas.

Muestras pareadas Para muestras pareades tenemos el test de Yuen sobre las medias recortadas. Éste test es la versión no paramétrica del test t para muestras pareadas.

Ejemplo
Vamos a emplear los datos del dataset Anorexia, para comprobar si hay diferencias en los pesos pre y post tratamiento, por medio del test de Yuen.

data(anorexia)
yuend(anorexia$Prewt, anorexia$Postwt)
## Call:
## yuend(x = anorexia$Prewt, y = anorexia$Postwt)
## 
## Test statistic: -1.83 (df = 43), p-value = 0.07418
## 
## Trimmed mean difference:  -2.09545 
## 95 percent confidence interval:
## -4.4046     0.2137 
## 
## Explanatory measure of effect size: 0.22

Conclusión
Dado que nuestro valor p es > 0.05, no podemos rechazar \(H_0\) y concluir que hay una diferencia en las medias de los pesos pre y post tratamiento. Podemos concluir dado que el intervalo de confianza contiene casi sólo valores negativos que el peso post tratamiento, es mayor que el peso pre tratamiento.

Me gustaría tener un feedback de su parte exactamente en este ejercicio ya que el resultado del yuend() me da diferente al utilizado en el ejercicio, creo que se puede deber a que el set de datos no es el mismo, yo use la libreria MASS, pero Anorexia con la A mayúscula no existe ahi, solo con la a Minúscula, pero creo que los datos son distintos

Volver al inicio

Prueba para k muestras (ANOVA robusto de 1 vía)

ANOVA robusto intersujetos

Es la versión robusta del ANOVA para múltiples muestras independientes. En R tenemos la función med1way, de la libreria WRS2, la cual realice ANOVA de 1-vias para las medianas.

Ejemplo
Vamos a emplear el dataset eurosoccer, y comprobar si existe diferencia en los goles por partido, entre las cinco ligas de fútbol incluidas en el estudio.

data(eurosoccer)
data <- eurosoccer
attach(data)
## The following objects are masked from data (pos = 3):
## 
##     Games, GoalDifference, GoalsConceded, GoalsGame, GoalsScored,
##     League, Lost, Points, Team, Tied, Won
med1way(GoalsGame~League)
## Call:
## med1way(formula = GoalsGame ~ League)
## 
## Test statistic F: 1.2335 
## Critical value: 2.2442 
## p-value: 0.217

Conclusión
Dado que nuestro valor p es > .05, NO podemos rechazar \(H_0\) por lo cual es posible que no haya diferencias significativas en las medianas de los goles para las diferentes ligas.

Volver al inicio

ANOVA robusto intra-sujetos o de medidas repetidas

Es la version robusta del ANOVA para múltiples muestras pareadas. En R tenemos la funcion mrmanova, de la libreria WRS2, la cual realiza mediciones repetidas de ANOVA de 1-vías para las medias recortadas.

Ejemplo
Vamos a emplear el dataset WineTasting, para evaluar la puntuación de los vinos para cada degustador.

data(WineTasting)
data <- WineTasting
attach(data)

rmanova(Taste, Wine, Taster)
## Call:
## rmanova(y = Taste, groups = Wine, blocks = Taster)
## 
## Test statistic: F = 3.2614 
## Degrees of freedom 1: 1.61 
## Degrees of freedom 2: 20.92 
## p-value: 0.06761

Conclusión
Dado que nuestro valor p es > 0.05, NO podemos rechazar \(H_0\) por lo cual es posible que no haya diferencias sianificativas en las puntuaciones de los vinos

Volver al inicio