<- c(10,6,8,10,12,13,11,9,5,11,9)
clonazepam <- c(13, 17,14,12,10,9,15,16,11,8,7) lorazepam
Pruebas no paramétricas para comparar variables cuantitativas
CUCS/UDG
Introducción
Cuando se quiere comparar una variables de tipo cuantititivo u ordinal entre dos o entre más de dos grupos pero esta no presenta una distribución normal no se puede emplear la prueba t-student o las prueba de ANOVA de una vía. Ya estas pruebas no son libres de parámetros y requieren que se cumplan algunos supuestos. Por lo tanto debe de recurrirse a ciertas alternativas de pruebas no-paramétricas (libres de parámetros) para poder realizar esta comparación. Las pruebas a saber son:
- Prueba U-Mann-Whitney. Prueba que compara la suma de rangos de variables en dos grupos independientes.
- Prueba Prueba de los rangos de wilcoxon. Prueba que compara la suma de rangos de dos variables medidas en dos grupos dependientes.
- Prueba de Kruskkal-Wallis. Prueba que compara la suma de rangos en más de dos grupos independientes.
Se describen a continuación cada una de estás pruebas. En cada sub-tema, primero se describe el fundamento de la prueba, seguido de la forma de realizarlo manualmente y finalmente como se puede utilizar R
para poder realizarlo.
Prueba U-Mann-Whitney
La prueba U de Mann-Whitney es una prueba estadística que se utiliza para determinar si 2 grupos son significativamente diferentes entre sí en la variable de interés (cuantitiva). La variable a comparar debe ser por lo menos de tipo ordinal. Además los grupos deberán ser independientes (no relacionados entre sí) y se deben de tener una muestra suficiente (más de 5 valores en cada grupo, aunque también depende de qué tan grande sea la diferencia entre los grupos).
La prueba U de Mann-Whitney es el equivalente a la prueba t-student para muestras independientes. Necesita el cumplimiento de los siguientes supuestos: - 1) las muestras son aleatorias e independientes y - 2) la escala de medición es ordinal o cuantitativa - 3) la forma de los datos debe ser similar entre los grupos - 4) se deben de tener datos suficientes.
Pasos para reliazar la prueba de U-Mann_Whitney
La siguiente explicación sobre como realizar la prueba de U-Mann-Whitney fue tomada del libro Bioestadística de los autores Celis y Labrada.
Se selecciona una muestra aleatoria simple de cada población en estudio.
Se identifica a la muestra más pequeña con la letra \(X\) y a la otra con la letra \(Y\). Si ambas tienen el mismo tamaño, no tiene importancia qué letra les corresponde.
Se designan las observaciones de la muestra de tamaño \(n_1\) obtenida de la población \(X\) con \(x1 , x2 , . . ., xi , . . ., xn\) y las observaciones de la muestra de tamaño \(n_2\) obtenida de la población \(Y\) con \(y1 , y2 , . . ., yi , . . ., yn\).
Sin perder su identificación de población (X o Y), las dos muestras se combinan y se ordenan de menor a mayor, asignando la posición 1 a la observación con el valor más pequeño y la posición \(n_1 + n_2\) a la observación con el valor más grande. Estos valores de la posición de cada uno de los datos nos servirán para estimar los rangos. Juntar todos los datos y ordenar de menor a mayor
Siempre que existan dos o más observaciones con el mismo valor, o empatadas, se les asigna la media de las posiciones que ocuparían si no hubiera empates. Por ejemplo, si dos observaciones tienen el valor 4 y les corresponden las posiciones 7 y 8, a las dos se les asigna la posición 7.5.
Como estadístico de prueba se puede seleccionar una de dos opciones: U o T. El estadístico T (propuesto por Wilcoxon) es el más fácil de calcular y corresponde a la suma de los rangos (obtenidos de las posiciones) asignados a la muestra más pequeña, \(n_1\) , o de cualquiera de las dos si tienen el mismo tamaño. El estadístico U (propuesto por Mann y Whitney) se calcula mediante: \[U=n_1n_2+0.5n_1(n_1+1)-T\] Se prefiere el estadístico T para muestras grandes
La decisión estadística de rechazar o no \(H_0\) depende de la magnitud de T (o de U) y del nivel de significancia (\(\alpha\)). Cuando las muestras son grandes, de 10 o más elementos en cada grupo, el estadístico T tiene una distribución aproximadamente normal con media se puede calcular el estadístico de prueba z mediante:
\[z=\frac{T-u_t}{\sigma_T}\]
Si la tendencia central de ambas poblaciones es la misma los rangos deberían distribuirse aleatoriamente entre las dos muestras y el rango medio correspondiente a las observaciones de una muestra debería ser muy similar al correspondientes a las observaciones de la otra
Un ejemplo del cáculo manual para U-Mann-Whitney
Un investigador desea conocer si las horas de sueño son distintas en dos grupos en grupo de pacientes tratados con benzodicepinas. El grupo 1 corresponde a pacientes medicados con clonazepam y el grupo 2 a pacientes con lorazepam. La tabla 1 muestra las horas de sueño de estos pacientes.
clonzepam | lorazepam |
---|---|
10 | 13 |
6 | 17 |
8 | 14 |
10 | 12 |
12 | 10 |
13 | 9 |
11 | 15 |
9 | 16 |
5 | 11 |
11 | 8 |
9 | 7 |
Solución
La solución de este tipo de ejercicios se facilita si construimos una tabla como la que sigue y se va adecuando conforme avanzamos en los cálculos
Valor de la variable (H de sueño) | Posición | Rango | Grupo al que pertenece | ||
---|---|---|---|---|---|
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- | |||||
- |
- Crear objetos
- Formular hipótesis
- \(H_O\) Mediana de lorazepam = a clonzepam
- \(H_A\) las medianas de los grupos son distintas Otra opción sería:
- \(H_O\) Las horas de sueño son iguales en los pacientes con lorazepam y clonazepam
- \(H_A\) Las horas de sueño son distintas en los pacientes con lorazepam y clonazepamson
Tome en en cuenta que la opción mas correcta sería hablar de sumas de rangos y no de medias.
- Ordenar las muestras sin que se pierda su identidad, para ello cree un df llamado datos que contie una variable con los nombres de los tratamientos y otas variable con las horas de sueño
=c(clonazepam, lorazepam)
Horas=rep(c("Clonazepam", "Lorazepam"), each=11, times=2)
Tratamientos<- data.frame(Horas, Tratamientos) datos
Horas | Tratamientos |
---|---|
10 | Clonazepam |
6 | Clonazepam |
8 | Clonazepam |
10 | Clonazepam |
12 | Clonazepam |
13 | Clonazepam |
11 | Clonazepam |
9 | Clonazepam |
5 | Clonazepam |
11 | Clonazepam |
9 | Clonazepam |
13 | Lorazepam |
17 | Lorazepam |
14 | Lorazepam |
12 | Lorazepam |
10 | Lorazepam |
9 | Lorazepam |
15 | Lorazepam |
16 | Lorazepam |
11 | Lorazepam |
8 | Lorazepam |
7 | Lorazepam |
10 | Clonazepam |
6 | Clonazepam |
8 | Clonazepam |
10 | Clonazepam |
12 | Clonazepam |
13 | Clonazepam |
11 | Clonazepam |
9 | Clonazepam |
5 | Clonazepam |
11 | Clonazepam |
9 | Clonazepam |
13 | Lorazepam |
17 | Lorazepam |
14 | Lorazepam |
12 | Lorazepam |
10 | Lorazepam |
9 | Lorazepam |
15 | Lorazepam |
16 | Lorazepam |
11 | Lorazepam |
8 | Lorazepam |
7 | Lorazepam |
Si hacemos una visualización de los datos veremos lo siguiente:
Para ordenar los datos podemos usar la función order
según lo escrito en el siguien código, si es más fácil, simplemente corte y oegue
print(datos[order(datos$Horas, decreasing = TRUE), ] )
Horas | Tratamientos | |
---|---|---|
13 | 17 | Lorazepam |
35 | 17 | Lorazepam |
19 | 16 | Lorazepam |
41 | 16 | Lorazepam |
18 | 15 | Lorazepam |
40 | 15 | Lorazepam |
14 | 14 | Lorazepam |
36 | 14 | Lorazepam |
6 | 13 | Clonazepam |
12 | 13 | Lorazepam |
28 | 13 | Clonazepam |
34 | 13 | Lorazepam |
5 | 12 | Clonazepam |
15 | 12 | Lorazepam |
27 | 12 | Clonazepam |
37 | 12 | Lorazepam |
7 | 11 | Clonazepam |
10 | 11 | Clonazepam |
20 | 11 | Lorazepam |
29 | 11 | Clonazepam |
32 | 11 | Clonazepam |
42 | 11 | Lorazepam |
1 | 10 | Clonazepam |
4 | 10 | Clonazepam |
16 | 10 | Lorazepam |
23 | 10 | Clonazepam |
26 | 10 | Clonazepam |
38 | 10 | Lorazepam |
8 | 9 | Clonazepam |
11 | 9 | Clonazepam |
17 | 9 | Lorazepam |
30 | 9 | Clonazepam |
33 | 9 | Clonazepam |
39 | 9 | Lorazepam |
3 | 8 | Clonazepam |
21 | 8 | Lorazepam |
25 | 8 | Clonazepam |
43 | 8 | Lorazepam |
22 | 7 | Lorazepam |
44 | 7 | Lorazepam |
2 | 6 | Clonazepam |
24 | 6 | Clonazepam |
9 | 5 | Clonazepam |
31 | 5 | Clonazepam |
- Ya que los datos se encuentran ordenados deberán de asignarles una posición y un rango. La posición se refiere al orden en el que encuentran los datos ordenados y el rango es muy similar a la posición pero en el caso de valores de horas de sueño iguales deberá estimarse un promedio. La siguiente tabla muestra todos los datos correctos.
Horas de sueño | Posición | Rango | Grupo |
---|---|---|---|
5 | 1 | 1 | clonazepan |
6 | 2 | 2 | clonazepan |
7 | 3 | 3 | lorazepam |
8 | 4 | 4.5 | clonazepan |
8 | 5 | 4.5 | lorazepam |
9 | 6 | 7 | clonazepan |
9 | 7 | 7 | clonazepan |
9 | 8 | 7 | lorazepam |
10 | 9 | 10 | clonazepan |
10 | 10 | 10 | clonazepan |
10 | 11 | 10 | lorazepam |
11 | 12 | 13 | clonazepan |
11 | 13 | 13 | clonazepan |
11 | 14 | 13 | lorazepam |
12 | 15 | 15.5 | clonazepan |
12 | 16 | 15.5 | lorazepam |
13 | 17 | 17.5 | clonazepan |
13 | 18 | 17.5 | lorazepam |
14 | 18 | 19 | lorazepam |
15 | 19 | 20 | lorazepam |
16 | 20 | 21 | lorazepam |
17 | 21 | 22 | lorazepam |
- Estimar el valor de T. Este valor corresponde a la suma de los rangos que corresponden a la muestra más pequeña. Si las muestras tienen la misma cantidad de datos se elige cualquiera. Para este ejemplo voy a elegir lorazepam.
<- 3+4.5+7+10+13+15.5+17.5+19+20+21+22
Tlorazepam Tlorazepam
[1] 152.5
Empleamos la siguiente formula:
\[U=n_1n_2+0.5n_1(n_1+1)-T\] y sustituimos
\[U=11*11+0.5*11(12)-152.5\]
<- 11*11+0.5*11*12-152.5
U1 U1
[1] 34.5
- Comparar el valor obtenido con los valore de tablas. El valor que obtenemos deberá ser menor que el valor de las tablas para ser significativo.
https://www.real-statistics.com/statistics-tables/mann-whitney-table/
En R
lo podemos determinar utilizando el comando pwilcox
pwilcox(q=34.5, m=11, n=11)*2
[1] 0.08794611
El valor de p puede no coincidir con el obtenido en la prueba pero es parecido. Hay varias formas de determinarlo
Fundamento de la prueba
Como realizarlo en R
Las prueba de U-Mann-Whitney fue desarrollada en dos versiones independientes que conducen a la misma conclusión: la de Mann y Whitney, y la Wilcoxon. Por ello se conoce como prueba de Mann-Whitney-Wilcoxon. Este antecedente es la razón por la que en R
se utiliza la función wilcox.test
que contiene los siguientes argumentos:
- x
- numeric vector of data values. Non-finite (e.g., infinite or missing) values will be omitted.
- y
- an optional numeric vector of data values: as with x non-finite values will be omitted.
- alternative
- a character string specifying the alternative hypothesis, must be one of “two.sided” (default), “greater” or “less”. You can specify just the initial letter.
- mu
- a number specifying an optional parameter used to form the null hypothesis. See ‘Details’.
- paired
- a logical indicating whether you want a paired test.
- exact
- a logical indicating whether an exact p-value should be computed.
- correct
- a logical indicating whether to apply continuity correction in the normal approximation for the p-value.
- conf.int
- a logical indicating whether a confidence interval should be computed.
- conf.level
- confidence level of the interval.
- tol.root
- (when conf.int is true:) a positive numeric tolerance, used in uniroot(*, tol=tol.root) calls.
- digits.rank
- a number; if finite, rank(signif(r, digits.rank)) will be used to compute ranks for the test statistic instead of (the default) rank(r).
- formula
- a formula of the form lhs ~ rhs where lhs is a numeric variable giving the data values and rhs either 1 for a one-sample or paired test or a factor with two levels giving the corresponding groups. If lhs is of class “Pair” and rhs is 1, a paired test is done
Utilizando los objetos creados anteriormente el código quedaría:
wilcox.test(clonazepam, lorazepam, paired = F)# Es necesario especificar que los datos no son pareados
Warning in wilcox.test.default(clonazepam, lorazepam, paired = F): cannot
compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: clonazepam and lorazepam
W = 34.5, p-value = 0.09265
alternative hypothesis: true location shift is not equal to 0
En el ejemplo anterior se utilizó la coma para indicar las comparaciones, dado que estamos trabajando con dos objetos diferentes.
Finalmente podremos comprobar las diferencias visualmente realizando un boxplot.
boxplot(lorazepam, clonazepam, main="Comparación de las horas de sueño entre dos benzodiacepinas")
Podemos pedir los intervalos de confianza para la diferencia de las medianas.
wilcox.test(clonazepam,lorazepam, paired=F, alternative="two.sided", conf.int=T)
Warning in wilcox.test.default(clonazepam, lorazepam, paired = F, alternative =
"two.sided", : cannot compute exact p-value with ties
Warning in wilcox.test.default(clonazepam, lorazepam, paired = F, alternative =
"two.sided", : cannot compute exact confidence intervals with ties
Wilcoxon rank sum test with continuity correction
data: clonazepam and lorazepam
W = 34.5, p-value = 0.09265
alternative hypothesis: true location shift is not equal to 0
95 percent confidence interval:
-5.000018e+00 4.461794e-05
sample estimates:
difference in location
-2.999923
Para la estimación de los intervalos de confianza R
utiliza el estimador de Hodges-Lehmann que a su vez hace una estimación de las diferencias de la mediana por pares.
Utilizando formula
<- c(10, 6, 8, 10, 12, 13, 11, 9, 5, 11, 9)
clonazepam <- c(13, 17, 14, 12, 10, 9, 15, 16, 11, 8, 7)
lorazepam
<- data.frame(
data Horas = c(clonazepam, lorazepam),
Grupo = rep(c("Clonazepam", "Lorazepam"), each = 11)
)
wilcox.test(data$Horas~data$Grupo)
Warning in wilcox.test.default(x = DATA[[1L]], y = DATA[[2L]], ...): cannot
compute exact p-value with ties
Wilcoxon rank sum test with continuity correction
data: data$Horas by data$Grupo
W = 34.5, p-value = 0.09265
alternative hypothesis: true location shift is not equal to 0
::wilcox_test(data, Horas~Grupo) rstatix
# A tibble: 1 × 7
.y. group1 group2 n1 n2 statistic p
* <chr> <chr> <chr> <int> <int> <dbl> <dbl>
1 Horas Clonazepam Lorazepam 11 11 34.5 0.0926
Utilizando ggtsatplot
|>
data::ggbetweenstats(
ggstatsplotx=Grupo,
y= Horas,
type = "np" # Para no paramétrico
)
Ejercicios prueba U-Mann-Whitney en R
Utilizando la base de datos SLE-DataSet2 resuelva los siguientes ejercicios. Resuelvalo utilizando en R
. En R
ingrese los datos en la función de wilx.test
los datos como formula por ejemplo: wilcox.test(variable cuantitativa~variable de agrupación, paired=F, conf.int=T)
.
- ¿La edad es igual entre los pacientes y los controles? asuma que los datos no siguen una distribución normal.
- Realice un boxplot que muestre la comparación de la edad. Cambie el título de su gráfica.
- ¿Las concentraciones de Leptina (leptin) son iguales entre los controles y los pacientes con Lupus. Realice un boxplot
- ¿Las concentraciones de adiponectina (Adiponectin) son iguales entre los controles y los pacientes con Lupus?. Realice un boxplot
- ¿El peso (Weight) es igual entre los controles y los pacientes con Lupus?. Realice un boxplot
- ¿La estatura (Height) es igual entre los controles y los pacientes con Lupus?. Repita los pasos del 3 al 6
- Con las preguntas anteriores y realizando estadística descriptiva (medianas y rangos) llene la siguiente tabla
Variable | Groups | Median | Min-Max | p-value | Conclusion |
---|---|---|---|---|---|
Age | SLE | – | – | – | – |
Controls | – | – | |||
Leptin | SLE | – | – | – | – |
Controls | – | – | |||
Adiponectin | SLE | – | – | – | – |
Controls | – | – | |||
Weight | SLE | – | – | – | – |
Controls | – | – | |||
Height | SLE | – | – | – | – |
Controls | – | – |
¿Cómo obtener resultados de estadísticos separados por alguna variable de agrupación?
La familia de funciones apply
son un grupo de funciones que permiten asignar una función a vectores y data frame completos. También estás funciones nos permiten obtener estadísticos como la media o mediana separadas por una variable de agrupación. Para obtener los estadísticos de la tabala anterior utilizaremos la función tapply
.
La función tapply
requiere de un argumento X (variable de prueba), INDEX (variable de agrupación) y FUN (función que queremos aplicar). Una vez exportada la base datos de la mediana, valor mínimo y máximo para edad serían:
tapply(X=Age, INDEX=Groups_SLEvsCL, FUN=median)## Para la mediana
Control Gruop SLE patients
44 43
tapply(X=Age, INDEX=Groups_SLEvsCL, FUN=min)## Para el valor mínimo
Control Gruop SLE patients
22 22
tapply(Age, Groups_SLEvsCL, max)## Para el valor maximo
Control Gruop SLE patients
75 73
Prueba de los rangos de wilcoxon
La prueba de Wilcoxon para rangos con signo de pares comparados es alternativa a la prueba de los signos, con la ventaja de que reconoce la magnitud de las diferencias observadas en cada par muestreado. Es el equivalente no paramétrico de la prueba t-student para muestras pareadas.
Para realizar esta prueba se deben de cumplir con los siguientes supuestos:
Cada par de sujetos muestreados es aleatorio.
Las observaciones proceden de una población con distribución simétrica.
La variable de interés es cuantitativa u ordinal.
Los pasos para su realización se enumeran a continuación:
Se calcula la diferencia para cada par. Los pares con diferencia igual a 0 se eliminan, y el tamaño de la muestra se reduce.
Sin tener en cuenta el signo de la diferencia, los pares se ordenan de menor a mayor considerando la magnitud absoluta. Al par con la menor diferencia se le asigna la primera posición, al de mayor diferencia se le asigna la última.
Siempre que existan dos o más observaciones con la misma diferencia, o empatadas, se les asigna la media de las posiciones que ocuparían si no hubiera empates. Por ejemplo, si dos observaciones tienen el valor 5 y les corresponden las posiciones 7 y 8, a las dos se les asigna la posición 7.5.
Calcular \(T=\) Suma de posiciones de diferencias positivos o negativos
La decisión estadística de rechazar o no la hipótesis nula depende de la magnitud de T y del nivel de significancia (\(\alpha\))
Cuando la muestra (o las n diferencias) es mayor de 25 o más elementos, el estadístico T tiene una distribución aproximadamente normal con media \[z=\frac{T-\mu_R}{\sigma_R}\] La descripción de estos paso fue tomada del libro Bioestadística de los autores Celis y Labrada.
Ejemplo prueba de rangos de wilcoxon.
Unos investigadores desean conocer si el tratamiento experimental influye en el peso de dos grupos de ratones. La siguiente tabla muestra los pesos de los ratones antes y después del tratamiento experimental
peso antes | peso después |
---|---|
90 | 80 |
95 | 89 |
80 | 72 |
79 | 84 |
89 | 94 |
95 | 80 |
99 | 89 |
84 | 72 |
78 | 84 |
69 | 64 |
74 | 80 |
95 | 89 |
99 | 72 |
84 | 84 |
78 | 94 |
69 | 84 |
74 | 94 |
Los pasos para resolver manualmente este ejemplo son:
- Calcular la diferencia entre cada par eliminando los 0.
peso antes | peso después | diferencias |
---|---|---|
90 | 80 | 10 |
95 | 89 | 6 |
80 | 72 | 8 |
79 | 84 | -5 |
89 | 94 | -5 |
95 | 80 | 15 |
99 | 89 | 10 |
84 | 72 | 12 |
78 | 84 | -6 |
69 | 64 | 5 |
74 | 80 | -6 |
95 | 89 | 6 |
99 | 72 | 27 |
84 | 84 | 0 |
78 | 94 | -16 |
69 | 84 | -15 |
74 | 94 | -20 |
- Estimar el valor absoluto para cada diferencia
peso antes | peso después | diferencias | diferencias valor absoluto |
---|---|---|---|
90 | 80 | 10 | 10 |
95 | 89 | 6 | 6 |
80 | 72 | 8 | 8 |
79 | 84 | -5 | 5 |
89 | 94 | -5 | 5 |
95 | 80 | 15 | 15 |
99 | 89 | 10 | 10 |
84 | 72 | 12 | 12 |
78 | 84 | -6 | 6 |
69 | 64 | 5 | 5 |
74 | 80 | -6 | 6 |
95 | 89 | 6 | 6 |
99 | 72 | 27 | 27 |
84 | 84 | 0 | 0 |
78 | 94 | -16 | 16 |
69 | 84 | -15 | 15 |
74 | 94 | -20 | 20 |
- Sin tener en cuenta el signo de la diferencia, los pares se ordenan de menor a mayor considerando la magnitud absoluta. Al par con la menor diferencia se le asigna la primera posición, al de mayor diferencia se le asigna la última.
peso antes | peso después | diferencias | diferencias valor absoluto | Rango |
---|---|---|---|---|
84 | 84 | 0 | 0 | |
79 | 84 | -5 | 5 | 1 |
89 | 94 | -5 | 5 | 2 |
69 | 64 | 5 | 5 | 3 |
95 | 89 | 6 | 6 | 4 |
78 | 84 | -6 | 6 | 5 |
74 | 80 | -6 | 6 | 6 |
95 | 89 | 6 | 6 | 7 |
80 | 72 | 8 | 8 | 8 |
90 | 80 | 10 | 10 | 9 |
99 | 89 | 10 | 10 | 10 |
84 | 72 | 12 | 12 | 11 |
95 | 80 | 15 | 15 | 12 |
69 | 84 | -15 | 15 | 13 |
78 | 94 | -16 | 16 | 14 |
74 | 94 | -20 | 20 | 15 |
99 | 72 | 27 | 27 | 16 |
a las variables con el mismo valor, se estima el promedio
peso antes | peso después | diferencias | diferencias valor absoluto | Rango | Rango |
---|---|---|---|---|---|
84 | 84 | 0 | 0 | ||
79 | 84 | -5 | 5 | 1 | 2 |
89 | 94 | -5 | 5 | 2 | 2 |
69 | 64 | 5 | 5 | 3 | 2 |
95 | 89 | 6 | 6 | 4 | 5.5 |
78 | 84 | -6 | 6 | 5 | 5.5 |
74 | 80 | -6 | 6 | 6 | 5.5 |
95 | 89 | 6 | 6 | 7 | 5.5 |
80 | 72 | 8 | 8 | 8 | 8 |
90 | 80 | 10 | 10 | 9 | 9.5 |
99 | 89 | 10 | 10 | 10 | 9.5 |
84 | 72 | 12 | 12 | 11 | 11 |
95 | 80 | 15 | 15 | 12 | 12.5 |
69 | 84 | -15 | 15 | 13 | 12.5 |
78 | 94 | -16 | 16 | 14 | 14 |
74 | 94 | -20 | 20 | 15 | 15 |
99 | 72 | 27 | 27 | 16 | 16 |
- Se suman los valores de los rangos para las diferencias positivas y para las diferencias negativas
<- 2+7+5.5+8+9.5+9.5+11+12.5+16
Tpositivo <- 15+14+12.5+5.5+5.5+2+2 Tnegativo
- Valor de T para valores positivos: 81
- Valor de T para valores negativos: 56.5
- Se compara el valor de más grande con el valor de tablas y se obtiene el valor de p
¿Cómo hacerlo en R
?
- Se crean dos objetos, uno para peso antes y otro para peso después
<- c(74, 78, 69, 78, 74, 79, 89, 84, 69, 95, 95, 80, 90, 99,84,95, 99)
Peso_Antes <- c(94, 94, 84, 84, 80, 84, 94, 84, 64, 89, 89, 72, 80, 89, 72, 80, 72) Peso_Despues
- Se utiliza la función
wilcox.test
con el argumentopaired=T
wilcox.test(Peso_Antes, Peso_Despues, paired = T, conf.int = T)
Warning in wilcox.test.default(Peso_Antes, Peso_Despues, paired = T, conf.int =
T): cannot compute exact p-value with ties
Warning in wilcox.test.default(Peso_Antes, Peso_Despues, paired = T, conf.int =
T): cannot compute exact confidence interval with ties
Warning in wilcox.test.default(Peso_Antes, Peso_Despues, paired = T, conf.int =
T): cannot compute exact p-value with zeroes
Warning in wilcox.test.default(Peso_Antes, Peso_Despues, paired = T, conf.int =
T): cannot compute exact confidence interval with zeroes
Wilcoxon signed rank test with continuity correction
data: Peso_Antes and Peso_Despues
V = 79.5, p-value = 0.5685
alternative hypothesis: true location shift is not equal to 0
95 percent confidence interval:
-5.499992 9.000023
sample estimates:
(pseudo)median
1.849605
- Hacer un boxplot para visualizar sus resultados
boxplot(Peso_Despues, Peso_Antes, main="Comparación de los peso antes y después del tratamiento")
Uitlizando formula
Se crea el df
<- c(74, 78, 69, 78, 74, 79, 89, 84, 69, 95, 95, 80, 90, 99, 84, 95, 99)
Peso_Antes <- c(94, 94, 84, 84, 80, 84, 94, 84, 64, 89, 89, 72, 80, 89, 72, 80, 72)
Peso_Despues
# Crear el DataFrame
<- data.frame(
df_peso Peso = c(Peso_Antes, Peso_Despues),
Tiempo = rep(c("Antes", "Despues"), each = length(Peso_Antes))
)
Se realiza la prueba
::wilcox_test(Peso~Tiempo, paired=T, data = df_peso) rstatix
# A tibble: 1 × 7
.y. group1 group2 n1 n2 statistic p
* <chr> <chr> <chr> <int> <int> <dbl> <dbl>
1 Peso Antes Despues 17 17 79.5 0.568
Utilizando ggstatplot
|>
df_peso::ggwithinstats(
ggstatsplotx=Tiempo,
y=Peso,
type = "np"
)
Ejercicios para Rangos de Wilcoxon
Utilizando la base de datos SLE_DataSet2 conteste las siguientes preguntas. Asuma que los datos no se distribuyen normalmente
- En lo pacientes con Lupus se presentaron cambios en las concentraciones de Leptina a los 6 meses y los 12 meses con respecto a la basal. Utilice la variable Leptin, Leptin6M y Leptin12M.
- En lo pacientes con Lupus se presentaron cambios en las concentraciones de Adiponectina a los 6 meses y los 12 meses con respecto a la basal. Utilice la variable Adiponectin, Adiponectin6M y Adiponectin12M.
Prueba de Kruskal-Wallis
Cuando se desea comparar una variable cuantitiva u ordinal en tres o más grupos y esta variable no se comporta de forma normal o la muestra es muy pequeño se utiliza la prueba de Kruskal-Wallis. Esta prueba es el equivalente no paramétrico del AONVA de una vía.
Los supuestos de esta prueba son:
Cada una de las muestras ha sido tomada al azar de su población.
Hay independencia entre las observaciones dentro de cada muestra, así como entre las muestras.
Los datos representan medidas por lo menos en una escala ordinal.
Los pasos para para verificar la hipótesis nula de que las medianas poblacionales son iguales utilizando la prueba de Kruskall-Wallies son:
Se toma una muestra aleatoria independiente de cada población.
Los datos se acomodan en una tabla r × c, en el que las columnas representan los grupos muestreados.
Para obtener un valor del estadístico de prueba, hay que empezar asignando el orden de la posición a las observaciones de las muestras combinadas, n 1 + n 2 + … + n k = N. Se otorga la posición 1 a la más pequeña de las observaciones N, la posición 2 a la siguiente más pequeña y así sucesivamente hasta la posición N que se da a la más grande. A las observaciones empatadas se les asigna la media de las posiciones que ocuparían si no hubiera igualdades.
Como estadístico de prueba, KW se calcula mediante una de las dos fórmulas siguientes. Cuando no hay empate en el orden de las observaciones, se utiliza:
\[KW=\Bigg[\frac{12}{N(N+1)}\sum^k_{j=1}n_j\bar{R}^2_j\Bigg]-3(N+1)\] en la que \(k\) representa el número de muestras o grupos, \(n_j\) es el tamaño de la muestra en la muestra o grupo j-ésimo, \(N\) es el total de elementos en las muestras y \(\bar{R}^2_j\) es el promedio de las posiciones en la muestra o grupo j-ésimo.
En caso de observaciones empatadas, la fórmula es:
\[KW=\frac{\Bigg[\frac{12}{N(N+1)}\sum^k_{j=1}n_j\bar{R}^2_j\Bigg]-3(N+1)}{1- \Bigg[\sum^g_{j=1}(t^3_i-t_i)\Bigg] \Bigg/(N^3-N)}\] En ésta, g es el número de agrupaciones empatadas en la misma posición y t i es el número de observaciones empatadas en la misma posición
- La decisión de rechazar o no \(H_0\) en el nivel de significación a depende de la magnitud de KW. Cuando el número de muestras o grupos es igual a tres y el tamaño de cada muestra es menor de seis, se consulta el valor de tablas, en el cual se encontrarán los valores críticos de esta prueba. Para buscarlos, se localizan los tamaños de muestra correspondientes para cada una de las muestras (se designa como \(n_1\) la más grande, \(n_2\) la intermedia y \(n_3\) la más pequeña) y luego se revisan las columnas de valores críticos para cada nivel de significancia hasta que se encuentre que el valor de KW calculado es igual que el mayor al tabulado en la celda correspondiente a los tamaños de las muestras y al nivel de significancia. Cuando el número de muestras o grupos es mayor de tres, o los tamaños de muestra son superiores a cinco, el valor de KW sigue la distribución \(\chi^2\) con \(k - 1\) \(gl\).
Ejemplo de la prueba de Kruskall-Wallis de forma manual
Se parte de los siguientes datos donde se muestran las edades de tres grupos de pacientes.
Grupo A | Grupo B | Grupo C |
---|---|---|
23 | 45 | 18 |
41 | 55 | 30 |
54 | 60 | 34 |
66 | 70 | 40 |
78 | 72 | 44 |
Se desea conocer si las edades son distintas entres los tres grupos
- Ordenar todos los datos sin importar el grupo al que pertenecen
18 | Grupo C |
---|---|
23 | Grupo A |
30 | Grupo C |
34 | Grupo C |
40 | Grupo C |
41 | Grupo A |
44 | Grupo C |
45 | Grupo B |
54 | Grupo A |
55 | Grupo B |
60 | Grupo B |
66 | Grupo A |
70 | Grupo B |
72 | Grupo B |
78 | Grupo A |
- Se le asigna un rango a cada uno de los datos
Valor | Rango | Grupo |
---|---|---|
18 | 1 | Grupo C |
23 | 2 | Grupo A |
30 | 3 | Grupo C |
34 | 4 | Grupo C |
40 | 5 | Grupo C |
41 | 6 | Grupo A |
44 | 7 | Grupo C |
45 | 8 | Grupo B |
54 | 9 | Grupo A |
55 | 10 | Grupo B |
60 | 11 | Grupo B |
66 | 12 | Grupo A |
70 | 13 | Grupo B |
72 | 14 | Grupo B |
78 | 15 | Grupo A |
- Se suman los rangos de cada grupo
- Para el Grupo A: 2+6+9+12+15=44
- Para el Grupo B: 8+10+11+13+14=56
- Para el Grupo C: 1+2+4+5+7=20
- De acuerdo o no la presencia de empates se utilizan las siguientes formulas para calcular el estadístico de prueba
- Cuando no hay empate en el orden de las observaciones, se utiliza:
\[KW=\Bigg[\frac{12}{N(N+1)}\sum^k_{j=1}n_j\bar{R}^2_j\Bigg]-3(N+1)\] en la que \(k\) representa el número de muestras o grupos, \(n_j\) es el tamaño de la muestra en la muestra o grupo j-ésimo, \(N\) es el total de elementos en las muestras y \(\bar{R}^2_j\) es el promedio de las posiciones en la muestra o grupo j-ésimo.
- En caso de observaciones empatadas, la fórmula es:
\[KW=\frac{\Bigg[\frac{12}{N(N+1)}\sum^k_{j=1}n_j\bar{R}^2_j\Bigg]-3(N+1)}{1- \Bigg[\sum^g_{j=1}(t^3_i-t_i)\Bigg] \Bigg/(N^3-N)}\] En ésta, g es el número de agrupaciones empatadas en la misma posición y t i es el número de observaciones empatadas en la misma posición
##¿Cómo hacerlo en R
?
En R
se utiliza la función kruskal.test
. La función tiene los siguientes argumentos:
- x
- a numeric vector of data values, or a list of numeric data vectors. Non-numeric elements of a list will be coerced, with a warning.
- g
- a vector or factor object giving the group for the corresponding elements of x. Ignored with a warning if x is a list.
- formula
- a formula of the form response ~ group where response gives the data values and group a vector or factor of the corresponding groups.
- data
- an optional matrix or data frame (or similar: see model.frame) containing the variables in the formula formula. By default the variables are taken from environment(formula).
- subset
- an optional vector specifying a subset of observations to be used.
- na.action
- a function which indicates what should happen when the data contain NAs. Defaults to getOption(“na.action”)
Ejemplo utilizando R
¿Los niveles de Tetrahydrocortisone son iguales entre los distintos tipos de Cushing?
Para realizar este ejemplo cargue la base de datos “Cushings” que se encuentra en el paquete “MASS”. Si es necesario instale utilizando el comando: `library(“MASS”)``
library(MASS)# Para cargar la librería
data(Cushings)# Para cargar la base de datoshead(Cushings)#ver los primeros seis datos
attach(Cushings)# adjuntar base de datos
names(Cushings)# para conocer como se llaman las variables
[1] "Tetrahydrocortisone" "Pregnanetriol" "Type"
Siempre es importante realizar gráficar para ver la distribución, valores atípicos, y tendencia de los datos.
library(ggplot2)
|>
Cushingsggplot(aes(x=Type, y=Tetrahydrocortisone, fill=Type))+
geom_boxplot(alpha=0.5)+
labs(title="Comparación de los niveles de Tetrahydrocortisone
entre los tipos de Cushing")+
theme_bw()+
theme(legend.position = "none")
Ahora usamos la función kruskal.test()
. Esta función requiere del uso de formula para su realización, es decir los datos deben de ser cargados en la función de la forma Variable de interés~Variable de agrupación
kruskal.test(Tetrahydrocortisone~Type)
Kruskal-Wallis rank sum test
data: Tetrahydrocortisone by Type
Kruskal-Wallis chi-squared = 13.509, df = 3, p-value = 0.003655
::kruskal_test(data = Cushings, Tetrahydrocortisone~Type) rstatix
# A tibble: 1 × 6
.y. n statistic df p method
* <chr> <int> <dbl> <int> <dbl> <chr>
1 Tetrahydrocortisone 27 13.5 3 0.00366 Kruskal-Wallis
|>
Cushings::ggbetweenstats(
ggstatsplotx=Type,
y=Tetrahydrocortisone,
type = "np"
)
Ejercicios de practica en para kruskall-wallis R
- ¿Los niveles de Pregnanetriol son iguales entre los tipos de Cushing?
- Usando la librería MASS llame a la base de datos “genotype”. Esta base de datos contiende los resultados de una investigación realizad por Bailey y cols. en 1953 en la que investigaron la herencia del y su asociación con el crecimiento de varios grupo de ratas. En este estudio, las camadas de ratas se separaron de sus madres naturales, y fueron criadas por madres adoptivas. Las madres y las camadas pueden tener cuatro genotipos diferentes: A, B, I y J. Supongamos que queremos investigar si el aumento de peso (Wt) de la camada (en gramos) a los 28 días está relacionado con el genotipo de la madre adoptiva Madre (A, B, I y J). Utilice la prueba de Kruskall-Wallis.
- Resuelva los ejercicios utilizando
R
- La edad es distinta en los pacientes con Lupus con actividad renal, los pacientes con lupus sin actividad renal y los controles. Asume estadística no paramétrica
- Las concentraciones de Adiponectina son distintas en los pacientes con Lupus con actividad renal, los pacientes con lupus sin actividad renal y los controles. Asume estadística no paramétrica
- Las concentraciones de leptina son distintas en los pacientes con Lupus con actividad renal, los pacientes con lupus sin actividad renal y los controles. Asume estadística no paramétrica
- Usando la librería MASS llame a la base de datos “genotype”. Esta base de datos contiende los resultados de una investigación realizad por Bailey y cols. en 1953 en la que investigaron la herencia del y su asociación con el crecimiento de varios grupo de ratas. En este estudio, las camadas de ratas se separaron de sus madres naturales, y fueron criadas por madres adoptivas. Las madres y las camadas pueden tener cuatro genotipos diferentes: A, B, I y J. Supongamos que queremos investigar si el aumento de peso (Wt) de la camada (en gramos) a los 28 días está relacionado con el genotipo de la madre adoptiva Madre (A, B, I y J). Utilice la prueba de Kruskall-Wallis.
- Entregue un reporte de Markdown con todos sus ejercicios