Nuestro objetivo es analizar la posible existencia de relación entre dos variables cualitativas. Por ejemplo, el chi cuadrado puede ser útil para ver si hay alguna relación entre el número de visitas de insectos a flores con diferente color. También, como será el caso de este tutorial, si hay una supervivencia diferenciada entre machos y hembras respecto al efecto de un tóxico. Para poder realizar este test debemos partir de una tabla de contingencia, donde las columnas indican las categorias de una de las variables y las filas las categorías de la otra variable. Las muestras deben estar tomadas de forma independiente para poder cumplir el requisito de este test. Se pueden utilizar más de dos categorías en cada variable.
Veamos como se hace la chi-cuadrado en R.
Cargamos nuestra matriz de datos, que tendrá el siguiente aspecto:
setwd(dir = "F:/R/MARKDOWN/chicuadrado/")
datos<-read.table("chicuadrado.csv", sep = ";", header = TRUE, dec = ".", row.names=1)
datos
## Macho Hembra
## Muerte 22 14
## Supervivencia 10 21
Ahora necesitamos que nuestro dataframe sea una tabla, para ello hacemos lo siguiente:
comotabla <- as.table(as.matrix(datos))
comotabla
## Macho Hembra
## Muerte 22 14
## Supervivencia 10 21
Nuestros datos muestran el número de supervivientes y muertos para cada uno de los sexos (las columnas). Como podemos ver es una tabla muy sencilla.
Hagamos una figura sencilla que muestre como son nuestros datos, aunque viendo la tabla ya nos podemos ir haciendo una idea del resultado. Para ello instalamos/activamos el paquete gplots
:
library("gplots")
##
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
##
## lowess
balloonplot(t(comotabla), main ="Nuestros resultados", xlab ="", ylab="",
label = TRUE, show.margins = FALSE, dotsize=15)
Podemos también representarlo de la siguiente manera:
mosaicplot(comotabla, main ="Nuestros resultados", xlab ="", ylab="",
label = TRUE, show.margins = FALSE, dotsize=15)
## Warning: In mosaicplot.default(comotabla, main = "Nuestros resultados", xlab = "",
## ylab = "", label = TRUE, show.margins = FALSE, dotsize = 15) :
## extra arguments 'label', 'show.margins', 'dotsize' will be disregarded
Es hora de ver si tenemos diferencia o no entre las frecuencias de la supervivencia y mortalidad de los dos sexos. Es decir si esas frecuencias difieren o no de la probabilidad encontrada por simple azar. Para ello:
chisq.test(comotabla)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: comotabla
## X-squared = 4.4615, df = 1, p-value = 0.03467
Cuanto más alejado de cero el valor del chi-cuadrado (del estadísitico) más diferencias encontramos. Es decir, las frecuencias que encontramos no se deben al azar, en este caso el sexo influye en la supervivencia. Si nos fijamos en p es significativo (menos de 0.05) lo que nos confirma nuestras sospechas. Viendo la figura ya podemos interpretar lo que sucede.
Si tenemos pocos valores observados (por ejemplo algún caso con menos de 5 se puede utilizar fisher.test
). Veamos como:
fisher.test(comotabla)
##
## Fisher's Exact Test for Count Data
##
## data: comotabla
## p-value = 0.02723
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
## 1.082012 10.263847
## sample estimates:
## odds ratio
## 3.238458
Vemos que el resultado es muy similar al anterior y por tanto llegamos a la misma conclusión que la pata de la foto superior.
Departamento de Ciencias de la Vida
Universidad de Alcalá (España)
Puedes visitar mi Blog sobre ecología y ecotoxicología: