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 |
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
Los datos tienen que ser independientes
Los datos tienen que sert ordinales, se tienen que poder ordenar de mayor a menor o viceversa
La distribución de las muestras tiene que ser simetrica
A pesar de considerarse el equivalente no paramétrico del t-test, el Wilcoxon signed-rank test trabaja con medianas, no con medias.
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.
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
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.
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()