Autor: Álvaro Alonso Fernández
Departamento de Ciencias de la Vida
Universidad de Alcalá (España)

El t-test nos permite comparar las diferencias entre los valores de una variable dependiente cuantitativa y dos categorias de un factor (por ejemplo ¿difiere la altura de los ciudadanos de la provincia de Madrid respecto a los de Soria?


1 Nuestros datos

Queremos comparar una variable dependiente entre dos grupos diferentes. Estos últimos pueden ser independientes entre si (no pareados) o estar relacionados (pareados). En este último caso podría ser un grupo de personas que se someten a una dieta para engordar (peso antes y después de la dieta, para ver si la dieta ha influido o no en el peso).

Empezamos creando los dos grupos por medio de dos vectores gr1y gr2. Recuerda que es indiferente utilizar = o <-:

gr1 = c(55,65,76,89,86,78,90,76,49,89,99,78,67,78,90,99,65,66)
gr2 = c(59,69,76,89,90,87,97,80,58,98,92,87,67,79,91,98,69,76) 

str(gr1)
##  num [1:18] 55 65 76 89 86 78 90 76 49 89 ...
str(gr2)
##  num [1:18] 59 69 76 89 90 87 97 80 58 98 ...

¿Qué aspecto tienen nuestros datos? Recuerda que es muy importante tener una idea de cómo son nuestros datos antes de empezar a hacer cualquier análisis estadístico. Los vamos a representar gráficamente por medio de un boxplot:

boxplot (gr1,gr2, xlab="Grupo", ylab="Variable", col="grey")

2 Testamos la Normalidad

Es un requisito de este test por tanto ahora hay que comprobar si nuestros datos son normales, para ello se realiza el test de Shapiro en donde H0=datos son normales, es decir si p es menor de 0.05 los datos no son normales:

shapiro.test(gr1)
## 
##  Shapiro-Wilk normality test
## 
## data:  gr1
## W = 0.95493, p-value = 0.5075
shapiro.test(gr2)
## 
##  Shapiro-Wilk normality test
## 
## data:  gr2
## W = 0.93285, p-value = 0.2179

Podemos también hacer un análisis visual de la normalidad (los puntos de la figura cuanto más cerca de la línea mucho mejor):

qqnorm(gr1)
qqline(gr1)

qqnorm(gr2)
qqline(gr2)

3 Homocedasticidad de varianzas

var.test(gr1,gr2)
## 
##  F test to compare two variances
## 
## data:  gr1 and gr2
## F = 1.2229, num df = 17, denom df = 17, p-value = 0.6829
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.4574651 3.2692902
## sample estimates:
## ratio of variances 
##           1.222942

Otro requisito más. En este caso el p valor nos indica que las varianzas son homogéneas.

4 El análisis: t-test no pareados

Realizamos una t-Student no pareada:

t.test(gr1,gr2, var.equal=TRUE, paired=FALSE)
## 
##  Two Sample t-test
## 
## data:  gr1 and gr2
## t = -0.82193, df = 34, p-value = 0.4168
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -12.925515   5.481071
## sample estimates:
## mean of x mean of y 
##  77.50000  81.22222

5 El análisis: t-test pareados

Realizamos una t-student pareada paired=TRUE:

t.test(gr1,gr2, var.equal=TRUE, paired=TRUE)
## 
##  Paired t-test
## 
## data:  gr1 and gr2
## t = -3.4528, df = 17, p-value = 0.003039
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -5.996646 -1.447798
## sample estimates:
## mean of the differences 
##               -3.722222

6 El análisis t-test para diferencias respecto a cero

Testamos si un conjunto de datos son distintos de cero.

t.test(gr1)
## 
##  One Sample t-test
## 
## data:  gr1
## t = 23.073, df = 17, p-value = 2.861e-14
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  70.41319 84.58681
## sample estimates:
## mean of x 
##      77.5
t.test(gr2)
## 
##  One Sample t-test
## 
## data:  gr2
## t = 26.741, df = 17, p-value = 2.483e-15
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  74.81385 87.63060
## sample estimates:
## mean of x 
##  81.22222

En ambos casos el conjunto de datos es diferente de cero.

7 Para datos no normales: U de Mann-Whitney

nn1 = c(55,0,76,89,186,0,0,76,49,2,29,78,67,78,0,99,15,166)
nn2 = c(0,2,76,89,0,87,97,0,58,98,92,87,67,179,1,98,69,6) 
str(nn1)
##  num [1:18] 55 0 76 89 186 0 0 76 49 2 ...
str(nn2)
##  num [1:18] 0 2 76 89 0 87 97 0 58 98 ...
qqnorm(nn1)
qqline(nn1)

qqnorm(nn2)
qqline(nn2)

Realizamos el test de Mann-Whitney o Wilcox test:

wilcox.test(nn1,nn2, correct=FALSE, exact=FALSE)
## 
##  Wilcoxon rank sum test
## 
## data:  nn1 and nn2
## W = 145.5, p-value = 0.6001
## alternative hypothesis: true location shift is not equal to 0
wilcox.test(nn1,nn2, correct=FALSE, exact=FALSE, paired=TRUE)
## 
##  Wilcoxon signed rank test
## 
## data:  nn1 and nn2
## V = 46.5, p-value = 0.443
## alternative hypothesis: true location shift is not equal to 0

Si queremos comparar cada grupo con respecto a cero entonces (con mu podemos testar otros valores):

wilcox.test(nn1, mu=0, alternative="two.sided")
## Warning in wilcox.test.default(nn1, mu = 0, alternative = "two.sided"): cannot
## compute exact p-value with ties
## Warning in wilcox.test.default(nn1, mu = 0, alternative = "two.sided"): cannot
## compute exact p-value with zeroes
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  nn1
## V = 105, p-value = 0.001091
## alternative hypothesis: true location is not equal to 0
wilcox.test(nn2, mu=0, alternative="two.sided")
## Warning in wilcox.test.default(nn2, mu = 0, alternative = "two.sided"): cannot
## compute exact p-value with ties
## Warning in wilcox.test.default(nn2, mu = 0, alternative = "two.sided"): cannot
## compute exact p-value with zeroes
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  nn2
## V = 120, p-value = 0.0007229
## alternative hypothesis: true location is not equal to 0

8 En resumen

1-Ver si tenemos datos pareados o no.

2-Comprobar normalidad y homocedasticidad de los mismos.

3-Cumplen requisitos: t-test.

4-No los cumplen: U de Mann-Whitney.

9 CRÉDITOS

Álvaro Alonso Fernández

Departamento de Ciencias de la Vida

Universidad de Alcalá (España)

No era tan difícil…

No era tan difícil…