Prueba T de Student para medidas repetidas con R

Prueba T de Student para medidas repetidas con R

nov´18 Rosana Ferrero 0 comentarios

Hoy realizaremos un caso práctico con la prueba t de Student en R.

La prueba t de Student es una técnica de análisis muy interesante y ampliamente utilizada, sobretodo en Medicina, Sociología y Psicología, y también en Marketing.

¿En qué consiste?

Se trata de la comparación de 2 muestras de medidas repetidas (también llamadas muestras relacionadas o pareadas).

Las medidas repetidas pueden servir como método de auto-control en un diseño experimental, porque permite controlar otras variables externas a las que se desea evaluar. De ahí su importancia.

Pero comencemos por el principio…

En el post GUÍA DEFINITIVA PARA ENCONTRAR LA PRUEBA ESTADÍSTICA QUE BUSCAS aprendimos a seleccionar la prueba de hipótesis que necesitas para tus datos según tus objetivos (comparar o asociar) y el tipo de datos que tienes (muestras independientes o relacionadas, y el tipo de variable -categórica o numérica-).

Hemos realizado ejemplos de aplicación en R para muestras independientes. Para comparar 2 grupos independientes (¿CÓMO REALIZAR LA PRUEBA T DE STUDENT?) y para 3 o más grupos independientes (¿CÓMO REALIZAR EL ANOVA DE UNA VÍA EN R?).

Pero ahora toca tratar con medidas repetidas. ¿Recuerdas lo que significa tener muestras relacionadas? Lo resumimos brevemente.

ÚLTIMAS PLAZAS EN MASTERS

Máster Data Science

CONVOCATORIA ABIERTA I Logra la máxima precisión y rigor en tus proyectos de Ciencia de Datos.

Ver convocatorias 2022

MAster en MAchine learning

CONVOCATORIA ABIERTA | Automatiza procesos y crea tus propios algoritmos de Machine Learning.

Ver convocatorias 2022
 

Las muestras relacionadas

En las muestras relacionadas tenemos varias observaciones del mismo sujeto o caso. Cada caso está expuesto a más de uno de los tratamientos que se están probando, ya sea siendo tratado y no tratado, respondiendo varias preguntas o realizando tareas bajo más de un estímulo externo.

Las muestras relacionadas aparecen en experimentos del tipo antes-después, como por ejemplo el estudio de pacientes donde se comparan los resultados antes y después de la aplicación de un tratamiento.

Imagina que se administra el fármaco a los 30 pacientes hipertensos y se anota su presión sanguínea antes (pretest) y después (posttest) de la administración del mismo (treatament). En este caso tenemos una variable repuesta que es la presión sanguínea (numérica) y una variable explicativa que es el tiempo (categórica: antes y después de aplicar el fármaco). Los datos vienen dados por parejas para cada sujeto (presión antes y después) por lo cual los datos están relacionados entre sí.

¿Por qué utilizar pruebas de hipótesis específicas para muestras relacionadas?

Y te preguntarás ¿por qué tanto jaleo? ¿por qué es necesario tener en cuenta si las muestras son independientes (sobre sujetos o elementos distintos) o relacionadas (tomadas sobre los mismos sujetos o elementos)?

Si las muestras están relacionadas, entonces los valores de una muestra afectan los valores de la otra muestra. Por ejemplo, un sujeto que es hipertenso y tiene un valor alto en la primer muestra del ejemplo que pusimos anteriormente, es de esperar que también tenga una tensión alta en la segunda muestra. Y esto debes tenerlo en cuenta en el error de tus análisis.

¿Cómo comparamos 2 muestras relacionadas?

Siguiendo el esquema que establecimos en la GUÍA DEFINITIVA PARA ENCONTRAR LA PRUEBA ESTADÍSTICA QUE BUSCAS, tenemos las siguientes opciones:

En este post veremos la prueba t de Student para 2 muestras relacionadas, que es la versión paramétrica (un procedimiento que estima parámetros desconocidos).

Una vez comprendas esta prueba te será sencillo pasar a la versión no paramétrica (prueba de Wilcoxon para muestras relacionadas) o a la versión robusta (prueba de Yuen para muestras relacionadas).

¿Cuáles son las suposiciones de esta prueba y cuándo podemos aplicarla?

Como sabes, las pruebas paramétricas tienen una serie de supuestos que deben cumplir para que los resultados sean de calidad.

La prueba t para muestras relacionadas tiene cuatro supuestos principales:

  • La variable dependiente debe tener una distribución aproximadamente normal. Haremos pruebas de normalidad para contrastarlo.
  • Las observaciones de distintos sujetos son independientes unas de otras. Se puede suponer razonablemente si el proceso de recopilación de datos fue aleatorio sin reemplazo. Por ejemplo, si los participantes son independientes entre sí.
  • La variable dependiente no debe contener ningún valor atípico (outliers). Los valores atípicos son valores poco comunes que aparecen lejos de la mayoría de los datos. Los valores atípicos pueden sesgar los resultados y potencialmente conducir a conclusiones incorrectas si no se manejan adecuadamente.

Como ves, en este caso no decimos nada sobre la homogeneidad de varianza de las muestras porque se asume que las muestras serán homogéneas por tratarse de los mismos individuos.

¿Cuál es el procedimiento?

Venga, ¡ahora solo queda ponerse manos a la obra!

1. Evaluar el supuesto de normalidad

Primero vamos a evaluar el supuesto de normalidad para saber si podemos aplicar la prueba t de Student a nuestros datos.

Vamos a utilizar los datos “hangover”, donde para hijos de padres alcohólicos vamos a evaluar cómo transcurren los síntomas de la resaca después de consumir igual cantidad de alcohol. Las mediciones del número de síntomas de la resaca se realizaron en tres ocasiones la mañana siguiente a consumir alcohol (muestras relacionadas).

NOTA: También tenemos datos para un grupo control, sujetos que no son hijos de padres alcohólicos, pero estos datos no los consideraremos en este estudio porque implicaría tomar otra variable explicativa (el grupo, sujetos con padres alcohólicos o no, muestras independientes). Aquí nos centraremos en el caso más sencillo de comparación de 2 muestras relacionadas.

2. Acceder a los datos.

Debemos primero instalar la librería WRS2 si es que aún no la tienen instalada (pueden utilizar install.packages(“WRS2”) o library(devtools) y luego install_github(«cran/WRS2»)), activarla (library(WRS2)) y luego activar los datos (data(hangover)).

> library(WRS2) # activar la librería

> data(hangover) # activar los datos

Para ver el encabezado de los datos escribiremos:

> head(hangover)

symptoms   group time id

1        0 control    1  1

2       32 control    1  2

3        9 control    1  3

4        0 control    1  4

5        2 control    1  5

6        0 control    1  6

La base de datos contiene 4 variables:

  • symptoms: Número de síntomas de la resaca
  • group: Hijo de alcohólico vs. control
  • time: Momento de la medición
  • ID: identificación del sujeto

3. Descriptivos.

Para ver cuántos sujetos con padres alcohólicos tenemos podemos utilizar la siguiente orden:

>  summary(hangover)

symptoms            group    time         id

Min.   : 0.000   control  :60   1:40   Min.   : 1.00

1st Qu.: 0.000   alcoholic:60   2:40   1st Qu.:10.75

Median : 2.000                  3:40   Median :20.50

Mean   : 6.225                         Mean   :20.50

3rd Qu.:10.250                         3rd Qu.:30.25

Max.   :43.000                         Max.   :40.00

Para las variables categóricas obtenemos la frecuencia (número de observaciones) de cada nivel, mientras que para las variables numéricas obtenemos una serie de estadísticos (Min=mínimo, 1st Qu=primer cuartil, Median=mediana, Mean=media, 3rd Qu=tercer cuartil, Max=máximo).

También podemos escribir:

> table(hangover$group,hangover$time)

1  2  3

control   20 20 20

alcoholic 20 20 20

Vemos que vamos a evaluar 20 sujetos con padres alcohólicos y tenemos 3 observaciones de cada sujeto, que corresponden a los 3 tiempos de medición.

Objetivo. Como hoy solo veremos la comparación de 2 tiempos, vamos a plantearnos la siguiente pregunta: ¿Los hijos de padres alcohólicos se recuperan pronto de la resaca? es decir, si comparamos las dos primeras mediciones ¿ha disminuido el número de síntomas de resaca?

4. Manipulación de los datos.

Comenzaremos seleccionando la submuestra que vamos a utilizar: los hijos de padres alcohólicos. Realizamos los análisis descriptivos para tener una idea de cómo son nuestros datos y luego analizamos los supuestos de la estadística clásica para elegir cómo entre las dos primeras mediciones de los síntomas de resaca (i.e. si debemos utilizar pruebas paramétricas, no paramétricas o robustas).

Procedimiento:

  • Seleccionar la submuestra a analizar.
  • Realizar un análisis descriptivo de los datos.
  • Comprobación de los supuestos (normalidad y presencia de outliers).

NOTA: Aquí hay que recordar que como se tratan de los mismos sujetos a los cuales se les mide los síntomas en dos momentos distintos (muestras relacionadas), no es necesario evaluar la homogeneidad de varianza. Se asume que los sujetos responden con la misma variabilidad en las dos mediciones. Sí tendremos que evaluar la normalidad y la presencia de datos atípicos u outliers.

> hAlco<-hangover[hangover$group=="alcoholic" & hangover$time!=3,]

> # eliminamos las categorías fantasma de la variable time

> hAlco$time<-droplevels(hAlco$time)

Ahora ya podemos describir el número de síntomas de resaca para cada tiempo que queremos comparar (tiempo 1 vs tiempo 2).

> by(hAlco$symptoms,hAlco$time,summary)

hAlco$time: 1

Min. 1st Qu.  Median    Mean 3rd Qu.    Max.

0.00    0.00    0.00    2.90    1.25   32.00

------------------------------------------------------------------

hAlco$time: 2

Min. 1st Qu.  Median    Mean 3rd Qu.    Max.

0.00    0.00    1.50    3.85    7.00   15.00

Observamos que no tenemos datos faltantes (NAs). La media del número de síntomas de resaca en el tiempo 1 es 2.9 mientras que en el tiempo 2 es de 3.85. Sin embargo, la variabilidad de los datos es muy distinta en cada grupo, en el tiempo 1 tenemos un rango intercuartílico (IQR) de 1.25-0=1.25, mientras que en el tiempo 2 tenemos IQR=7-0=7. Es decir, en la segunda medición aumenta en promedio el número de síntomas de resaca pero también la respuesta se vuelve más variable. Necesitamos realizar pruebas de hipótesis para evaluar si las diferencias son significativas o no.

Ahora vamos a comprobar si se cumplen el supuesto de normalidad y si existen outliers, para evaluar si tiene sentido aplicar una prueba paramétrica a nuestros datos.

En cada tiempo evaluamos la normalidad de la variable número de síntomas:

> by(hAlco$symptoms, hAlco$time, shapiro.test)

hAlco$time: 1

Shapiro-Wilk normality test

data:  dd[x, ]

W = 0.4552, p-value = 1.282e-07

------------------------------------------------------------------

hAlco$time: 2

Shapiro-Wilk normality test

data:  dd[x, ]

W = 0.74335, p-value = 0.0001384

Vemos que en ambos casos el p-valor es menor que 0.05 (95% de nivel de confianza) y que por lo tanto no se cumple el supuesto de normalidad, sería mejor aplicar pruebas no paramétricas.

5. Evaluar la presencia de outliers

Evaluamos ahora la presencia de outliers mediante un diagrama de cajas:

> boxplot(hAlco$symptoms~hAlco$time)

Obtenemos el siguiente gráfico:

Observamos outliers en el tiempo 1, sería recomendable utilizar pruebas robustas.

El gráfico de cajas parece indicar un leve aumento en el número de síntomas de resaca, pero a ojo no podemos concluir nada aún.

NOTA: existen varios tipos de pruebas para detectar outliers, pero nos quedaremos aquí con los gráficos de cajas que es un método sencillo y bastante potente.

Primera interpretación

¿Podemos aplicar la prueba paramétrica t de Student para muestras relacionadas?

Hemos visto que no tenemos datos faltantes (NA), pero sí datos atípicos (outliers) y que la variable respuesta (symptoms) no tiene distribución normal en ninguno de los niveles analizados (time), lo cual era de esperar por la gran cantidad de ceros en los datos. Esto nos hace pensar que la mejor opción podría ser las pruebas robustas. No obstante, continuaremos nuestro ejemplo para mostrar el procedimiento completo.

Contrastes de hipótesis:

¿Existen diferencias entre los tiempos?

Vamos a aplicar la prueba paramétrica t de Student para muestras relacionadas, para eso utilizaremos la función t.test() de R indicando paired=TRUE.  Recuerda que el programa selecciona los grupos a comparar según su orden alfabético o numérico, en este caso el primero corresponderá al 1 y luego 2, esto te ayudará a escribir las hipótesis. Recuerda también que podemos plantear las hipótesis de manera bilateral o unilateral (izquierda o derecha), en estos casos las hipótesis a contrastar son:

Bilateral

Utilizaremos este tipo de pruebas si queremos evaluar si existen o no diferencias en el número de síntomas de resaca en ambos tiempos para hijos de padres alcohólicos.

H_0: mu_1=mu_2  para hijos de padres alcoholicos, el número de síntomas de resaca en ambos tiempos (1 y 2) es similar (no cambia rápidamente el número de síntomas).

H1 : mu1 ̸= mu2 lo contrario (los hijos de padres alcohólicos cambian rápidamente el número de síntomas -no decimos nada sobre su dirección de  cambio-)

Unilateral.

Si se quiere realizar comparaciones unilaterales basta con agregar el argumento alternative=“less” o alternative=“greater”. Podríamos evaluar las siguientes hipótesis:

Unilateral izquierda: alternative=less

Utilizaremos este tipo de pruebas si queremos evaluar si en el tiempo 2 aumenta el número de síntomas de resaca en los hijos de padres alcohólicos. Como la hipótesis nula siempre debe incluir el símbolo de igualdad, ponemos esta afirmación en la hipótesis alternativa.

H0 : mu1 >= mu2 en el tiempo 1 el número de síntomas de resaca es igual o mayor al tiempo 2, en los hijos de padres alcohólicos (como el símbolo de igual se incluye en esta hipótesis, no podríamos distinguir su comportamiento)

H1 : mu1 < mu2 en el tiempo 2 aumenta el número de síntomas de resaca en los hijos de padres alcohólicos.

Unilateral derecha: alternative=greater

Utilizaremos este tipo de pruebas si queremos evaluar si en el tiempo 2 disminuye el número de síntomas de resaca en los hijos de padres alcohólicos. Como la hipótesis nula siempre debe incluir el símbolo de igualdad, ponemos esta afirmación en la hipótesis alternativa.

H0 : mu1 >= mu2 en el tiempo 1 el número de síntomas de resaca es igual o menor al tiempo 2, en los hijos de padres alcohólicos (como el símbolo de igual se incluye en esta hipótesis, no podríamos distinguir su comportamiento)

H1 : mu1 < mu2 en el tiempo 2 disminuye el número de síntomas de resaca en los hijos de padres alcohólicos.

NOTA: para el enfoque paramétrico utilizamos mu porque la comparación se establece en función de la media.

Aquí consideraremos las pruebas unilaterales derechas porque queremos evaluar si en el tiempo 2 disminuye el número de síntomas de resaca en los hijos de padres alcohólicos, es decir, si para este grupo de sujetos la resaca se va rápidamente.

Ingresamos los datos de la respuesta (symptoms) y de los grupos a evaluar (time), con el argumento paired=TRUE le indicamos que se trata de muestras relacionadas y con alternative = greater hacemos referencia a una prueba unilateral derecha.

t.test(symptoms~time,data=hAlco, paired=TRUE, alternative = «greater»)

##

##  Paired t-test

##

## data:  symptoms by time

## t = -0.88856, df = 19, p-value = 0.8073

## alternative hypothesis: true difference in means is greater than 0

## 95 percent confidence interval:

##  -7.217674       Inf

## sample estimates:

## mean of the differences

##                   -2.45

## Warning in wilcox.test.default(x = c(0, 32, 9, 0, 2, 0, 41, 0, 0, 0, 6, :

## cannot compute exact p-value with ties

#p-value = 0.8073

Tenemos el valor del estadístico de prueba y su p-valor asociado, que se escribe: t (19)= -0.88856, p-value = 0.8073. El valor del estadístico (t) y los grados de libertad (df) no tienen interpretación en sí, solo valor informativo.

Obtenemos también el intervalo de confianza para la diferencia de medias, que es [-7.217674 ; Inf] y la estimación de la diferencia de medias -2.4 (se calcula como los valores del tiempo 1 menos los del tiempo 2, y como la media del tiempo 2 es mayor, obtenemos un resultado negativo).

También obtenemos un mensaje de aviso indicando que el p-valor será aproximado (no exacto) dado que existen empates (debido a la presencia de ceros). No es un problema, solo un aviso.

Lo que se va a interpretar es el p-valor. Para un nivel de confianza del 95% diremos que si el p-valor es menor a 0.05 rechazamos la hipótesis nula, en caso contrario no. En este caso vale p= 0.8073.

NOTA: tenemos 19 grados de libertad debido a que teníamos 20 datos y utilizamos un grado de libertad en estimar el parámetro de la media.

Interpretación final

Como p = 0.8073 no podemos rechazar la hipótesis nula, es decir, no existen diferencias significativas en los síntomas de resaca al comparar los tiempos 1 y 2. Dicho de otro modo, el número de síntomas de resaca en los hijos de padres alcohólicos no varía desde el tiempo de medición 1 al 2.

Hay que tener en cuenta que los datos presentaron outliers, tenían pocos datos (n=20) y muchos ceros y que la respuesta no seguía una distribución normal. Sería interesante aplicar otras técnicas alternativas y aumentar la muestra.

Espero que este ejemplo te sea de utilidad y puedas aplicarlo pronto a tus nuevos datos.

¡Espero tus comentarios!

0 comentarios

¹ Todos los campos son obligatorios.
² Tu correo electrónico no será publicado.

Nadie ha publicado ningún comentario aún. ¡Se tu la primera persona!

Te llamamos

Introduce los siguientes datos y nos pondremos en contacto contigo para atender tus dudas sin compromiso.

Te llamamos

Muchas gracias por solicitar información.
Te contactaremos lo antes posible.

Diseño web: Albin Soft.