GRÁFICOS EN R
En el presente artículo realizaremos una serie de gráficos relizados en R, elaborado por estudiantes de la Facultad de Ciencias Económicas, carrera de Estadística de la Universidad Central del Ecuador, estos programas nos será de ayuda para nuestro aprendizaje.
Inspecciona la columna Temp (temperatura) del conjunto de datos airquality de acuerdo con las sugerencias del párrafo anterior.
Sin embargo, es mucho más informativa una representación visual de los datos. La manera más rápida (y recomendada) de hacerse una idea de la distribución de los datos de una columna numérica es usando histogramas. En R, para representar el histograma de la columna Sepal.Width de iris se puede hacer:
hist(iris$Sepal.Width)
Esa es la orden básica. Pero los gráficos pueden ser modificados para incluir títulos, etiquetas, colores, etc. Por ejemplo:
hist(iris$Sepal.Width, main = "iris: histograma de la anchura de los sépalos",
xlab = "anchura del sépalo", ylab = "frecuencia",
col = "steelblue")
Los argumentos main, xlab, ylab y col12 se pueden aplicar también a otros gráficos que veremos a continuación.
Podemos encontrar su estructura usando la función help o la ayuda de R:
?hist
## starting httpd help server ... done
Estudia la distribución de las temperaturas en Nueva York (usa airquality).
Para guardar el gráfico, puedes usar los menús de Rstudio. Pero también puedes hacerlo programáticamente. En la página de ayuda de la función png se explica cómo hacerlo.
?png
Representación gráfica de variables categóricas: barras En las tablas suelen coexistir variables continuas y categóricas. Por ejemplo, es interesante conocer la distribución (o frecuencia) de cada una de las categorías. Para eso se suelen usar los diagramas de barras; en particular, la función barplot de R.
Esta función no muestra directamente las frecuencias de una variable categórica. Es necesario calcular previamente dichas frecuencias, para lo cual usaremos la función table que se tratará con más detalle posteriormente.
Por ejemplo, la expresión siguiente muestra cómo en iris existe el mismo número de observaciones de cada especie:
barplot(table(iris$Species))
Guardaremos en distintos formatos, de la siguiente manera: ~~~ #COMO JPG: jpg(“TEMP1.jpg”, width = 800, height = 600) plot(airquality$Temp, main= “DISTRIBUCIÓN DE TEMPERATURAS”, xlab = “CANTIDAD”, ylab = “TEMPERATURA”) dev.off()
#COMO PNG: png(“TEMP2.png”, width = 800, height = 600) plot(airquality$Temp, main= “DISTRIBUCIÓN DE TEMPERATURAS”, xlab = “CANTIDAD”, ylab = “TEMPERATURA”) dev.off()
#COMO PDF: pdf(“TEMP3.pdf”, width = 800, height = 600) plot(airquality$Temp, main= “DISTRIBUCIÓN DE TEMPERATURAS”, xlab = “CANTIDAD”, ylab = “TEMPERATURA”) dev.off() ~~~
Usa los parámetros main, xlab, ylab y col discutidos en la sección anterior para mejorar el aspecto de este gráfico.
barplot(table(iris$Species), main= "GRÁFICO DE BARRAS DE TIPO DE PÉTALOS",
xlab= "TIPOS DE PÉTALOS", ylab= "CANTIDAD",
col=palette("pastel 2"))
Aqui tenemos el gráfico de forma natural, es decir de forma vertical.
barplot(VADeaths[, 2], xlab = "tramos de edad", ylab = "tasa de mortalidad",
main = "Tasa de mortalidad en Virginia\nmujer/rural")
Usamos el argumento horiz de barplot para crear un gráfico de barras horizontales.
barplot(VADeaths[, 2], xlab = "tramos de edad", ylab = "tasa de mortalidad",
main = "Tasa de mortalidad en Virginia\nmujer/rural", horiz = T)
Representa gráficamente la anchura del sépalo contra su longitud (usando iris). Interpreta el gráfico.
plot(iris$Sepal.Width, iris$Sepal.Length,
main ="RELACIÓN ENTRE EL ANCHO Y LONGITUD DEL SÉPALO",
xlab= "ANCHO DEL SÉPALO", ylab= "LONGITUD DEL SÉPALO",
col= "sky blue")
En ocasiones, cuando una de las variables tiene un orden determinado (por ejemplo, es una variable temporal) pueden utilizarse líneas para unir los puntos de un diagrama de dispersión (o, más habitualmente, reemplazarlos por ellas). Por ejemplo, utilizando el hecho de que las observaciones de airquality están ordenadas temporalmente, podemos representar la temperatura en periodo que comprende así:
plot(airquality$Temp, type = "l")
Incluso, se pueden combinar varios elementos gráficos sobre la misma representación gráfica: por ejemplo, combinar puntos y líneas como aquí:
plot(airquality$Temp)
lines(airquality$Temp)
El anterior es un ejemplo de una característica de los gráficos básicos de R: a un primer gráfico se le pueden añadir progresivamente capas adicionales. En el caso anterior, a un gráfico de puntos se le han añadido líneas. Pero podrían añadirse más elementos. Por ejemplo, al gráfico anterior se le puede añadir un elemento más, una línea horizontal roja a la altura de la temperatura media, usando la función (muy útil) abline:
plot(airquality$Temp)
lines(airquality$Temp)
abline(h = mean(airquality$Temp), col = "red")
Representación de la relación entre una variable continua y otra categórica: diagramas de caja (boxplots) Los diagramas de cajas (boxplot) estudian la distribución de una variable continua en función de una variable categórica. Están emparentados con los histogramas porque resumen la distribución de una variable continua. Para ello utilizan una representación todavía mas esquemática que la de un histograma: una caja y unos segmentos que acotan las regiones donde la variable continua concentra el grueso de las observaciones.
Por ejemplo, podemos estudiar la distribución de la anchura del sépalo en iris en función de la especie usando diagramas de cajas así:
boxplot(iris$Sepal.Width ~ iris$Species, col = "gray",
main = "Especies de iris\nsegún la anchura del sépalo")
La notación y ~ x es muy común en R y significa que vas a hacer algo con y en función de x; en este caso, algo es un diagrama de cajas. Cuando construyamos modelos, querremos entender la variable objetivo y en función de una o más variables predictoras y volveremos a hacer uso de esa notación.
Muestra la distribución de las temperaturas en Nueva York en función del mes.
airquality$Month<-as.factor(airquality$Month)
airquality$Month<-factor(airquality$Month,
levels=levels(airquality$Month),
labels=c("MAYO", "JUNIO", "JULIO", "AGOSTO", "SEPTIEMBRE"),
ordered = F)
barplot(table(airquality$Month), airquality$Temp,
main= "DISTRIBUCIÓN DE TEMPERATURAS EN NEW YORK POR MES",
xlab= "MES", ylab= "TEMPERATURA", col=palette("pastel 2"))