1: Generalidades

Las pruiebas no parametricas no requieren que la variable siga una distribución normal.

En la estadistica paramétrica, se presupone que las muestras provienen de distribuciones totalmetne especificadas caracterizadas por uno o más parámetros desconocidos sobre los cuales se desea hacer inferencias1.

En un método no paramétrico, se presupone que la distribución de la que provienen la muestra no esta especificada y, con frecuencia, se desea hacer inferencias sobre el centro de la distribución1.

Los métodos no paramétricos son útiles cuando no se cumple el supuesto de normalidad y el tamaño de la muestra es pequeño. Sin embargo, las pruebas no paramétricas no están completamente libres de supuestos acerca de los datos. Por ejemplo, es fundamental presuponer que las observaciones de las muestras son independientes y provienen de la misma distribución. Además, en los diseños de dos muestras, se requiere el supuesto de igualdad de forma y dispersión1.

Ventajas de las pruebas no parametricas:

  • Los métodos no parametricos pueden ser aplicados a una gran variendad de situación ya que no son tan rigidos con respecto a los supuestos.

  • Puede ser aplicado a datos categoricos.

  • Usualmente involucran menor complejidad en los calculos y por lo tanto son mas sensillos de endender y aplicar.

  • Son menos sensibles a los datos extremos

Desventajas de los métodos no parametricos:

  • Tienen a “desperdiciar” información ya que los datos numericos son reducidos a una forma cualitativa

  • Son menos eficientes en detectar diferencias, es decir, es menos probable que se rechace la hipótesis nula cuando sea falsa si los datos provienen de la distribución normal (error tipo II).

  • La prueba no responde a la misma pregunta que el procedimiento paramétrico correspondiente si la población no es simétrica.

** ¿cual utilizar?**

Prueba no paramétrica Prueba paramétrica alternativa
Prueba de signos de 1 muestra Prueba Z de 1 muestra, prueba t de 1 muestra
Prueba de Wilcoxon de 1 muestra Prueba Z de 1 muestra, prueba t de 1 muestra
Prueba de Mann-Whitney Prueba t de 2 muestras
Prueba de Kruskal-Wallis ANOVA de un solo factor
Prueba de la mediana de Mood ANOVA de un solo factor
Prueba de Friedman ANOVA de dos factores

2: Prueba U de Mann-Whitney para dos muestras

La U de Mann-Whitney es la más popular de las pruebas para el estudio de dos muestras independientes. Es equivalente a la prueba de suma de rangos de Wilcoxon y a la prueba de dos grupos de Kruskal-Wallis. Es la alternativa no paramétrica a la comparación de dos promedios independientes a través de la t de Student. Se utiliza cuando se desea efectuar la comparación de dos grupos en quienes se les ha medido una variable cuantitativa continua que no tiene una distribución normal o cuando la variable es de tipo cuantitativa discreta. condiciones para aplicar la prueba

  1. Los datos tienen que ser independientes

  2. Los datos tienen que sert ordinales, se tienen que poder ordenar de mayor a menor o viceversa

  3. La distribución de las muestras tiene que ser simetrica

  4. A pesar de considerarse el equivalente no paramétrico del t-test, el Wilcoxon signed-rank test trabaja con medianas, no con medias.

  5. Preferible al t-test cuando hay valores atípicos, no hay normalidad de los datos o el tamaño de las muestras es pequeño.

2.1: Hipotesis

Acorde a esta idea, el test de Mann–Whitney–Wilcoxon contrasta que la probabilidad de que una observación de la población \(X\) supere a una observación de la población \(Y\) es igual a la probabilidad de que una observación de la población Y supere a una de la población X. Es decir, que los valores de una población no tienden a ser mayores que los de otra.

\(H_0:P(X>Y)=P(Y>X)\)

\(H_a:P(X>Y)≠P(Y>X)\)

Es común encontrar mencionado que el test de Mann–Whitney–Wilcoxon compara medianas, sin embargo, esto solo es cierto cuando las poblaciones comparadas difieren únicamente es su localización, pero el resto de características (dispersión, asimetría…) son iguales.

library(tidyverse)
## -- Attaching packages ----------------------------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.1     v purrr   0.3.4
## v tibble  3.0.1     v dplyr   1.0.0
## v tidyr   1.1.0     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.5.0
## -- Conflicts -------------------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(rstatix)
## 
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
## 
##     filter
dietas1 <- read_csv("data/Longitud_noParam.csv")
## Parsed with column specification:
## cols(
##   Individuo = col_double(),
##   Tratamiento = col_character(),
##   Longitud = col_double()
## )
dietas2 <- dietas1 %>%
  filter(Tratamiento %in% c("Control", "Probiotico"))

Hacemos uan visualización de los datos:

ggplot(dietas2, aes(x = Longitud, fill = Tratamiento))+
  geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Visualización con qqplot

ggplot(dietas2, aes(sample = Longitud, col = Tratamiento))+
  stat_qq()+
  stat_qq_line()+
  facet_grid(.~ Tratamiento)

Prueba de U de Mann Whitney usando la funcion base wilcox.test()

wilcox.test(Longitud ~ Tratamiento, data = dietas2)
## Warning in wilcox.test.default(x = c(2.2, 2.3, 2.4, 2.1, 2.3, 5.4, 5.4, : cannot
## compute exact p-value with ties
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  Longitud by Tratamiento
## W = 3, p-value = 0.002722
## alternative hypothesis: true location shift is not equal to 0

Utilizando el paquete rstatix

dietas2_U <- dietas2 %>%
  wilcox_test(Longitud ~ Tratamiento, paired = FALSE) %>%
  print()
## # A tibble: 1 x 7
##   .y.      group1  group2        n1    n2 statistic       p
## * <chr>    <chr>   <chr>      <int> <int>     <dbl>   <dbl>
## 1 Longitud Control Probiotico     8     8         3 0.00272

Ambas pruebas reportan un valor de P menor a 0.05 por lo que se rechaza la hipótesis nula y, por lo tanto, se concluye que los animales alimentados con probioticos son significativamente mayores.

Para fines de visualización, el paquete ggpubr tambien incluye una prueba de wilcoxon

library(ggpubr)
ggplot(dietas2, aes(x = Tratamiento, y = Longitud))+
  geom_boxplot()+
  stat_compare_means()

Ahora hagamos una comparación con la prueba T de Student

dietas2_ttest <- dietas2 %>%
  t_test(Longitud ~ Tratamiento, paired = FALSE) %>%
  print()
## # A tibble: 1 x 8
##   .y.      group1  group2        n1    n2 statistic    df       p
## * <chr>    <chr>   <chr>      <int> <int>     <dbl> <dbl>   <dbl>
## 1 Longitud Control Probiotico     8     8     -4.68  9.44 0.00101

3: Kruskal-Wallis

El test de Kruskal-Wallis, también conocido como test H, es la alternativa no paramétrica al test ANOVA de una vía para datos no pareados. Se trata de una extensión del test de Mann-Whitney para más de dos grupos. Se trata por lo tanto de un test que emplea rangos para contrastar la hipótesis de que k muestras han sido obtenidas de una misma población.

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.

Al igual que ocurre con un ANOVA, si el test de Kruskal-Wallis es significativo, implica que al menos dos grupos de entre los comparados son significativamente diferentes, pero no indica cuales. 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.

3.1: Dietas

Para este ejemplo, utilizaremos el set completo de las dietas dietas1:

ggplot(dietas1, aes(x = Longitud, fill = Tratamiento))+
  geom_histogram()+
  facet_grid(.~ Tratamiento)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(dietas1, aes(sample= Longitud, col = Tratamiento))+
  stat_qq()+
  stat_qq_line()+
  facet_grid(.~Tratamiento)

La representación gráfica de los datos muestra que las muestras no se distribuyen de forma normal, lo que supone una limitación para emplear un test ANOVA.

dietas1_leven <- dietas1 %>%
  levene_test(Longitud ~ Tratamiento, center = "median") %>% 
  print()
## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
## factor.
## # A tibble: 1 x 4
##     df1   df2 statistic     p
##   <int> <int>     <dbl> <dbl>
## 1     3    28      2.11 0.122

Para fines comparativos vamos a ajustar un modelo lineal para hacer una anova:

dietas1_lm <- lm(Longitud ~ Tratamiento, data = dietas1)

anova(dietas1_lm)
## Analysis of Variance Table
## 
## Response: Longitud
##             Df Sum Sq Mean Sq F value    Pr(>F)    
## Tratamiento  3 2560.2  853.39  33.574 2.054e-09 ***
## Residuals   28  711.7   25.42                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Los resultados de la anova muestran que hay una diferencia significantiva en al menos uno del os grupos, sin embargo, al analizar los residuales observamos que la distribución de los residuales no se distribuyen univerfomemente

plot(dietas1_lm, which = c(1:2))

Test de Kruskal-Wallis

kruskal.test(Longitud ~ Tratamiento, data = dietas1)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Longitud by Tratamiento
## Kruskal-Wallis chi-squared = 24.078, df = 3, p-value = 2.406e-05

El test encuentra significancia en la diferencia de al menos dos grupos. Para identificar donde se encuentran estas dierencias tenemos que proceder con el equivalente no parametrico de las T-Student pareadas:

pairwise.wilcox.test(dietas1$Longitud, dietas1$Tratamiento, p.adjust.method = "bonf", paired = F)
## 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

## 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

## 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 test with continuity correction 
## 
## data:  dietas1$Longitud and dietas1$Tratamiento 
## 
##            Control Probiotico Ulva  
## Probiotico 0.0163  -          -     
## Ulva       0.0315  1.0000     -     
## Zucaritas  0.0051  0.0128     0.0061
## 
## P value adjustment method: bonferroni

Visualización de los resultados con ggpubr

ggplot(dietas1, aes(x = Tratamiento, y = Longitud, fill = Tratamiento))+
  geom_boxplot()+
  geom_point()+
  ylim(0,40)+
  stat_compare_means(method = "kruskal",label.y =  40)+
  stat_compare_means(method = "wilcox.test", ref.group = "Control", label = "p.signif", label.y = 35)+
  theme_classic()