UNIDAD 6: GRÁFICOS DE SECTORES, DE BARRAS Y
BOXPLOTS EN R
Técnicas Inteligentes en Bioinformática
Master en Lógica, Computación e Inteligencia Artificial
Dpto. Ciencias de la Computación e Inteligencia Artificial
Francisco J. Romero Campero
Universidad de Sevilla
CONTENIDOS
1. Gráficos de sectores: pie
2. Gráficos de barras: barplot
3. Gráficos de cajas y bigotes: bloxplot
Gráficos de sectores: la función pie
Los gráficos de sectores se usan para representar frecuencias de las diferentes clases dentro de un conjunto de datos.
pie es la función que permite construir gráficos de sectores. Recibe como argumento princial un vector (o tabla) con las frecuencias absolutas de cada clase.
> datos.drosophila <- read.table(file="drosophila.txt")
> frecuencias.drosophila <- table(datos.drosophila[,"linea"])
> pie(frecuencias.drosophila)
El argumento labels recibe un vector de cadenas de caracteres y se utiliza para cambiar las etiquetas de cada sector.
El argumento col recibe un vector de cadenas de caracteres y se utiliza para cambiar los colores de cada sector.
> pie(frecuencias.drosophila, labels=c("Con","Res","Sus"),
col=c("blue","red","green"),main="Líneas de Drosophila melanogaster")
CONTENIDOS
1. Gráficos de sectores: pie
2. Gráficos de barras: barplot
3. Gráficos de cajas y bigotes: bloxplot
Gráficos de barras: la función barplot
En un gráfico de barras en lugar de utilizar puntos disconexos o unidos por líneas para representar los datos utilizamos barras. Se utilizan normalmente cuando se quiere presentar estudios sobre un número pequeño de clases.
barplot es la función que permite construir gráficos de barras.
> fecundidad.resistente <- datos.drosophila[
datos.drosophila[,"linea"] == "Resistente","fecundidad"]
> fecundidad.susceptible <- datos.drosophila[
datos.drosophila[,"linea"] == "Susceptible","fecundidad"]
> fecundidad.control <- datos.drosophila[
datos.drosophila[,"linea"] == "Control","fecundidad"]
> medias <- c(mean(fecundidad.resistente), mean(fecundidad.susceptible), mean(fecundidad.control))
> barplot(medias)
La mayoría de los parámetros para las anteriores funciones gráficas también son compartidos por barplot
> barplot(medias,col="grey",border="blue",ylim=c(0,40),xlab="Línea", ylab="Fecundidad",main="Fecundidad en Drosophila melanogaster")
Existen dos formas diferentes de etiquetar cada barra.
Nombrar los elementos del vector correspondiente y luego utililzar barplot:
> names(medias) <- c("Resistente","Susceptible","Control")
> barplot(medias, col="grey", border="blue", ylim=c(0,40), xlab="Línea", ylab="Fecundidad", main="Fecundidad en Drosophila melanogaster")
Utilizar el argumento names.arg de la función barplot:
> xpos <- barplot(medias,
names.arg=c("Resistente","Susceptible","Control"),
col="grey", border="blue", ylim=c(0,40), xlab="Línea",
ylab="Fecundidad", main="Fecundidad en Drosophila melanogaster")
El gráfico aún no está completo hay que añadir barras de error. Típicamente se añade una barra de error correspondiente a una desviación típica.
La función arrows nos permite añadir barras de error.
Esta función recibe como argumentos las posiciones de los extremos inferiores y superiores de la barra. Las posiciones x se obtiene de barplot. Las posiciones y se obtienen de restar y sumar al correspondiente valor la desviación típica.
Adicionalmente recibe los parametros code, angle y length para tunear la barra de error, normalmente estos valores se fijan en 3, 90 y 0.1 respectivamente.
> xpos <- barplot(medias, names.arg=c("Resistente","Susceptible","Control"), col=c("blue","red","green"), border="blue", ylim=c(0,50), xlab="Línea", ylab="Fecundidad", main="Fecundidad en Drosophila melanogaster")
> arrows(xpos, medias-sds, xpos, medias+sds, angle=90, code=3, length=0.1)
Normalmente se suele realizar un contraste de hipótesis para comprobar la significancia de los resultados.
La función t.test utiliza el estadistico t de student para realizar el correspondiente contraste de hipótesis
H
0 : μ
0 = μ
1 H
1 : μ
0 < μ
1 ó μ
0 > μ
1
La función t.test recibe como entrada dos vectores con los datos correspondientes y la hipótesis alternativa alt="less" o "greater". Por defecto asume un nivel de confianza del 95% que puede tunearse con el parámetro conf.level.
t.test(fecundidad.control,fecundidad.susceptible,alt="greater")
… t = 3.6789, df = 47.63, p-value = 0.0002977 …
t.test(fecundidad.control,fecundidad.resistente,alt="greater")
… t = 3.4251, df = 47.087, p-value = 0.0006417 …
t.test(fecundidad.susceptible,fecundidad.resistente,alt="less")
… t = -0.6521, df = 45.693, p-value = 0.2588 ...
La función t.test devuelve entre otra información el correspondiente p value. Recordad que si el p value es menor que (1 - nivel de confianza) entonces se rechaza la hipótesis nula y por lo tanto se "acepta" la alternativa.
Normalmente se suele marcar en el gráfico de barras con uno o dos asteriscos las barras que representan datos significativos.
> points(xpos[3]+0.3,38,pch=8,cex=2)
CONTENIDOS
1. Gráficos de sectores: pie
2. Gráficos de barras: barplot
3. Gráficos de cajas y bigotes: bloxplot
Gráficos de cajas y bigotes: la función boxplot
Un gráfico ampliamente utilizado para comparar distintos grupos de datos son los box plots (box and whisker plots o gráficos de cajas y bigotes).
Los box plots usan un resumen estadístico consistente en 5 valores: el valor mínimo, el valor máximo, el primer cuartil, la mediana y el tercer cuartil.
En los box plots también se identifican Outliers, valores de los datos que distan considerablemente del resto y que puede deberse a algún error de medición suelen eliminarse para evitar distorsiones en los datos.
La función de R para construir este tipo de gráficos es boxplot.
máximo
mínimo
1º cuartil
mediana
4º cuartil
La función boxplot puede recibir como parámetros los vectores de los distintos grupos por separado.
> boxplot(fecundidad.susceptible,
fecundidad.resistente,
fecundidad.control)
Alternativamente boxplot puede recibir a partir de un marco de datos primero el vector que contenga los datos numéricos y luego el vector que conteniene la clasificación separados por el símbolo ~
> boxplot(datos.drosophila[["fecundidad"]] ~ datos.drosophila[["linea"]])