UNIVERSIDAD CENTRAL DEL ECUADOR

Facultad de Ciencias Económicas

Carrera de Estadística

Autores: Fernanda Chipantaxi, Ayleen Rubio, Marlon Llugsha, Cristhian Diaz

Fecha: 28-08-2022

Colaborador: Ing. Francisco Valverde, PHD en informática

EJERCICIOS SOBRE GRAFICOS BASICOS EN R

REPRESENTACIÓN GRÁFICA DE VARIABLES CONTINUAS: HISTOGRAMAS

EJERCICIO 1

Inspecciona la columna Temp (temperatura) del conjunto de datos airquality de acuerdo con las sugerencias del párrafo anterior.

Paso 1: Asignamos a la variable t, el conjunto de datos airquality y seleccionamos la columna Temp(temperatura).

t<-(airquality$Temp)

Paso 2: Asignamos a la variable t, la función sort para ordenar de forma descendente el conjunto de datos utilizando “decreasing = FALSE”.

t<-sort(t, decreasing = FALSE)
t
##   [1] 56 57 57 57 58 58 59 59 61 61 61 62 62 63 64 64 65 65 66 66 66 67 67 67 67
##  [26] 68 68 68 68 69 69 69 70 71 71 71 72 72 72 73 73 73 73 73 74 74 74 74 75 75
##  [51] 75 75 76 76 76 76 76 76 76 76 76 77 77 77 77 77 77 77 78 78 78 78 78 78 79
##  [76] 79 79 79 79 79 80 80 80 80 80 81 81 81 81 81 81 81 81 81 81 81 82 82 82 82
## [101] 82 82 82 82 82 83 83 83 83 84 84 84 84 84 85 85 85 85 85 86 86 86 86 86 86
## [126] 86 87 87 87 87 87 88 88 88 89 89 90 90 90 91 91 92 92 92 92 92 93 93 93 94
## [151] 94 96 97

Paso 3: Por último, utilizamos la función head para visualizar los seis primeros valores y la función tail para visualizar los seis ultimos valores.

head(t)
## [1] 56 57 57 57 58 58
tail(t)
## [1] 93 93 94 94 96 97
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")

EJERCICIO 2

Por defecto, el eje horizontal de un histograma muestra el número de observaciones en cada bin. Examina la ayuda de hist para ver cómo mostrar en, lugar de los números absolutos, la proporción.

Paso 1: Con la función hist, creamos un histograma de la base de datos iris modificando la gráfica, agregamos un titulo al eje y con ylab = “proporción”, al eje x con xlab = “anchura del sépalo”, y por último rellenamos de color las columnas con col = “steelblue”.

hist(iris$Sepal.Width, main = "iris: histograma de la anchura de los sépalos",
     xlab = "anchura del sépalo", 
     ylab = "proporción",
     col = "steelblue",
     prob = T)

EJERCICIO 3

El número de bins también es parametrizable. Examina otra vez la página de ayuda para modificar el valor por defecto.

Paso 1: Con la función hist, creamos un histograma de la base de datos iris, seleccionamos la columna “Sepal.Width” perteneciente a la anchura de los sépalos y modificamos la gráfica agregando titulos a los ejes, y rellenando de color las columnas.

x11()
hist(iris$Sepal.Width, freq = FALSE, main = "iris: histograma de la anchura de los sépalos",
     xlab = "Anchura del sépalo", ylab = "Frecuencia",
     col = "red")

EJERCICIO 4

Estudia la distribución de las temperaturas en Nueva York (usa airquality).

Paso 1: Asignamos a la variable team_NewYork, el conjunto de datos airquality y seleccionamos la columna Temp(temperatura).

tem_NewYork <- airquality[ ,"Temp"]
tem_NewYork
##   [1] 67 72 74 62 56 66 65 59 61 69 74 69 66 68 58 64 66 57 68 62 59 73 61 61 57
##  [26] 58 57 67 81 79 76 78 74 67 84 85 79 82 87 90 87 93 92 82 80 79 77 72 65 73
##  [51] 76 77 76 76 76 75 78 73 80 77 83 84 85 81 84 83 83 88 92 92 89 82 73 81 91
##  [76] 80 81 82 84 87 85 74 81 82 86 85 82 86 88 86 83 81 81 81 82 86 85 87 89 90
## [101] 90 92 86 86 82 80 79 77 79 76 78 78 77 72 75 79 81 86 88 97 94 96 94 91 92
## [126] 93 93 87 84 80 78 75 73 81 76 77 71 71 78 67 76 68 82 64 71 81 69 63 70 77
## [151] 75 76 68

Paso 2: Con la función hist, creamos un histograma de los datos asignados a la variable team_NewYork, modificamos la gráfica agregando titulos a los ejes y a la gráfica, y rellenando de color las columnas.

hist(tem_NewYork, main = "Cambiar color", ylab = "Frecuencia", col = "lightblue")

Paso 3: Para guardar nuestra gráfica en formato png, utilizamos la función png y le asignamos un nombre como por ejemplo: “TempNewYork.png”. Usamos la función dev.off para que nos devuelva el número y nombre del dispositivo luego de cerrarlo.

png("TempNewYork.png")
hist(tem_NewYork, main = "Cambiar color", ylab = "Frecuencia", col = "lightblue")
dev.off()
## png 
##   2

EJERCICIO 5

Usa las funciones png y jpeg para guardar alguno de los gráficos anteriores en tu disco duro.

Paso 1: Primero con la función hist, creamos un histograma de la base de datos iris y modificamos la gráfica agregando titulos a los ejes y a la gráfica, y rellenando de color las columnas.

hist(iris$Sepal.Width, main = "iris: histograma de la anchura de los sepalos",
     xlab = "anchura del sepalo", ylab = "frecuencia",
     col = "mediumaquamarine")

Paso 2: Para guardar nuestra gráfica en formato png, utilizamos la función png y le asignamos un nombre como por ejemplo: “Anchura de los sopalos.png”. Usamos la función dev.off para que nos devuelva el número y nombre del dispositivo luego de cerrarlo.

png("Anchura de los sepalos.png")
dev.off()
## png 
##   2

Paso 3: Para guardar nuestra gráfica en formato jpeg, podemos usar la gráfica anterior y utilizando la función jpeg, le asignamos el nombre “Anchura de los sopalos.jpeg” con una calidad de 100. Usamos la función dev.off para que nos devuelva el número y nombre del dispositivo luego de cerrarlo.

hist(iris$Sepal.Width, main = "iris: histograma de la anchura de los sepalos",
     xlab = "anchura del sepalo", ylab = "frecuencia",
     col = "rosybrown")

jpeg("Anchura de los sepalos.jpeg", quality = 100)
dev.off()
## png 
##   2

REPRESENTACIÓN GRÁFICA DE VARIABLES CATEGÓRICAS: BARRAS

EJERCICIO 6

Usa los parámetros main, xlab, ylab y col discutidos en la sección anterior para mejorar el aspecto de este gráfico.

Paso 1: Con la función hist, creamos un histograma de la base de datos iris seleccionando la columna de especies, agregamos un título al gráfico con main = “IRIS”, al eje y con ylab = “Observaciones”, al eje x con xlab = “Especies”, y por último rellenamos de color las columnas con col = palette(“pastel 1”).

barplot(table(iris$Species),
        font=4,
        main="IRIS",
        xlab="Especies",
        ylab="Observaciones",
        col=palette("pastel 1"))

EJERCICIO 7

Investiga el argumento horiz de barplot para crear un gráfico de barras horizontales.
x11()
barplot(table(iris$Species),horiz = TRUE, main = "Especies", xlab = "Frecuencia",
        ylab = "Tipo", col = "purple")

Los diagramas de barras también pueden usarse para mostrar datos contenidos en vectores etiquetados. De hecho, table crea un vector etiquetado: asocia a cada etiqueta su frecuencia en la columna. Algunas tablas contienen un registro por etiqueta y entonces podemos usar gráficos de barras para representar esa información. Por ejemplo:
x11()
barplot(VADeaths[, 2], xlab = "tramos de edad", ylab = "tasa de mortalidad",
        main = "Tasa de mortalidad en Virginia\nmujer/rural")

REPRESENTACIÓN DE LA RELACIÓN ENTRE DOS VARIABLES CONTINUAS: GRÁFICOS DE DISPERSIÓN

EJERCICIO 8

Representa gráficamente la anchura del sépalo contra su longitud (usando iris). Interpreta el gráfico.

Paso 1: Primero con la función head visualizamos de la base de datos iris, las seis primeras filas.

head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

Paso 2: Luego creamos un plot con la base de datos iris, seleccionando solamente las columnas de “Sepal.Width” y “Sepal.Length”.

x11()
plot(iris$Sepal.Width, iris$Sepal.Length)

Interpretación:
El gráfico de dispersión realizado con la anchura y longitud de los sépalos de la base de datos iris, muestra cómo va aumentando los datos de la columna Sepal.width(anchura) en función de Sepal.Length(longitud).

EJERCICIO 9

De nuevo, usa los parámetros main, xlab, ylab y col discutidos en la sección anterior para mejorar el aspecto de los gráficos anteriores.

Paso 1: 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")

Paso 2: 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)

Paso 3: 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")

EJERCICIO 10

Consulta la ayuda de la función abline y úsala para añadir líneas (no solo horizontales) a alguno de los gráficos anteriores.

Paso 1: 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. También se le puede añadir un elemento más, una línea horizontal azul y una linea vertical celeste a la altura de la temperatura media, usando la función (muy útil) abline.

plot(airquality$Temp, type = "l")
abline(v = mean(airquality$Temp),
       h = mean(airquality$Temp),
       col=c("blue","skyblue"))

Paso 2: 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)
abline(v = mean(airquality$Temp),
       h = mean(airquality$Temp),
       col=c("steelblue","skyblue"))

EJERCICIO 11

Consulta ?par, una página de ayuda en R que muestra gran cantidad de parámetros modificables en un gráfico. Investiga y usa col, lty y lwd. Nota: casi nadie conoce estos parámetros y, menos, de memoria; pero está bien saber que existen por si un día procede utilizarlos.
?par
## starting httpd help server ... done
?par: muestra gran cantidad de parámetros modificables en un gráfico.
Investiga y usa col, lty y lwd.
Nota: casi nadie conoce estos parámetros y, menos, de memoria; pero está bien saber que existen por si un día procede utilizarlos.
col: Color para el fondo del rectángulo.
lty: Tipo de línea a usar para el borde.
lwd: Cómo definir el ancho de línea al crear un gráfico
x11()
plot(iris$Sepal.Width, iris$Sepal.Length,main = "Caracteristicas del Sepalo ", ylab = " ",
     xlab = " ", col="darkgreen")
abline(h=c(5, -3), v=2,
       col=c('red'), lwd=5, lty='dashed')

Representación de la relación entre una variable continua y otra categórica: diagramas de caja (boxplots). Distribución de la anchura del sépalo en iris en función de la especie usando diagramas de cajas así:
x11()
boxplot(iris$Sepal.Width ~ iris$Species, col = "gray",
        main = "Especies de iris\nsegún la anchura del sépalo")

REPRESENTACIÓN DE LA RELACIÓN ENTRE UNA VARIABLE CONTINUA Y OTRA CATEGÓRICA: DIAGRAMAS DE CAJA(BOXPLOTS)

EJERCICIO 12

Identifica la observación atípica. ¿Es atípica también con respecto a otras variables?.
X11()
boxplot(iris$Sepal.Width ~ iris$Species, col = "gray",
        main = "Especies de iris\nsegún la anchura del sépalo")

Los iris de las plantas setosas presentan un valor atípico ya que se encuentra fuera de los bigotes del diagrama de caja.
x11()
boxplot(iris$Sepal.Length ~ iris$Species, col = "gray",
        main = "Especies de iris\nsegún la longitud del sépalo")

Si comparamos la longitud de los sépalos la especie virginica presenta un valor atípico.
x11()
boxplot(iris$Petal.Length ~ iris$Species, col = "gray",
        main = "Especies de iris\nsegún la longitud del Pétalo")

Si comparamos la longitud de los pétalos las especies versicolor y virgínica muestran datos atípicos.
x11()
boxplot(iris$Petal.Width ~ iris$Species, col = "gray",
        main = "Especies de iris\nsegún la anchura del Pétalo")

Si comparamos la longitud de los pétalos la especie setosa muestran dos datos atípicos.

EJERCICIO 13

Muestra la distribución de las temperaturas en Nueva York en función del mes.
x11()
boxplot(airquality$Temp ~ airquality$Month, col = "steelblue",
        main = "Calidad del aire \nsegún la temperatura por mes", xlab = "Mes",
        ylab = "Temperatura")

Interpretacion:
El diagrama de caja pequeño de arriba muestra el poder de la visualización. Para los meses 6 y 7, hay 1 y 2 puntos de datos atípicos, respectivamente. En el mes 7, el punto de datos es más alto que en el mes 6; sin embargo, su atipicidad queda oscurecida por otras observaciones normales correspondientes al mes 9. Si estos puntos de datos atípicos se representaran en un gráfico segmentado por mes, probablemente llamarían la atención.