Práctica 1: Tablas de Frecuencias y Gráficos Materia: Estadística I Período: Primer Término - 2021 Profesores: Galarza, C., González, S., Mendoza, M., Menéndez, J., Mera, E. y Noboa, D. Introducción En la presente práctica se aplican los conceptos de Tablas de Frecuencias para variables cualitativas y cuantitativas, así como gráficos más usados, mediante el software R. Empecemos cargando los datos que se requieren para la práctica, para lo cual utilizaremos la base de datos iris incorporada por defecto en el software R. Iris es un conjunto de datos de flores que utilizó Ronald Fisher en un artículo publicado en el año 1936. Está formado por una muestra de tamaño 50 de cada una de las tres especies en estudio (setosa, virginica y versicolor) y cuatro características cuantitativas que se tomaron en cada muestra: longitud y anchura de los sépalos y pétalos (en centímetros). Paso 1. Descargar el software o trabajar en la nube Lo primero que deberíamos realizar es descargar en nuestro computador el software R y RStudio, para lo cual puede dar click en el siguiente enlace: https://www.rstudio.com/products/rstudio/download/ Una segunda opción de la cual disponemos es trabajar desde la nube, para lo cual deberíamos crear una cuenta RStudio Cloud a través del siguiente enlace: https://rstudio.cloud/plans/free Desarrollo Tema 1. Obtención de datos Obtenga los datos de la tabla iris y asígnelo al objeto datos, luego extraiga los 3 primeros registros asignados (filas). Muestre los nombres de las columnas extraídas y haga referencia a la columna Species. 1 Comandos a usar: objetoR <- objetoA objetoR = objetoA head(objetoR,n) colnames(objetoR) objetoR$columna # sintaxis de asignación de valores y datos # sintaxis de asignación de valores y datos # extraer los n primeros registros del objeto R # visualiza las columnas del objeto R # referencia a una columna en particular del objeto R Solución: datos = iris # asigna los datos de la base iris al objeto datos (tabla de datos Dataframe) head(datos,3) # visualiza las tres primeras filas del objeto datos ## 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 colnames(datos) # muestra los nombres de las columnas (variables) del objeto datos ## [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species" datos$Species # permite referencia a los datos de una columna Species (variable) ## [1] setosa setosa setosa setosa setosa setosa ## [7] setosa setosa setosa setosa setosa setosa ## [13] setosa setosa setosa setosa setosa setosa ## [19] setosa setosa setosa setosa setosa setosa ## [25] setosa setosa setosa setosa setosa setosa ## [31] setosa setosa setosa setosa setosa setosa ## [37] setosa setosa setosa setosa setosa setosa ## [43] setosa setosa setosa setosa setosa setosa ## [49] setosa setosa versicolor versicolor versicolor versicolor ## [55] versicolor versicolor versicolor versicolor versicolor versicolor ## [61] versicolor versicolor versicolor versicolor versicolor versicolor ## [67] versicolor versicolor versicolor versicolor versicolor versicolor ## [73] versicolor versicolor versicolor versicolor versicolor versicolor ## [79] versicolor versicolor versicolor versicolor versicolor versicolor ## [85] versicolor versicolor versicolor versicolor versicolor versicolor ## [91] versicolor versicolor versicolor versicolor versicolor versicolor ## [97] versicolor versicolor versicolor versicolor virginica virginica ## [103] virginica virginica virginica virginica virginica virginica ## [109] virginica virginica virginica virginica virginica virginica ## [115] virginica virginica virginica virginica virginica virginica ## [121] virginica virginica virginica virginica virginica virginica ## [127] virginica virginica virginica virginica virginica virginica ## [133] virginica virginica virginica virginica virginica virginica ## [139] virginica virginica virginica virginica virginica virginica ## [145] virginica virginica virginica virginica virginica virginica ## Levels: setosa versicolor virginica Tarea sugerida: Obtenga los 10 primeros registros de la tabla datos y asígnelo en un nuevo objeto de nombre datos1. Luego haga referencia a la longitud del pétalo de los registros seleccionados. 2 Tema 2. Tablas de Frecuencias para variables cualitativas Construya una tabla con la distribución de frecuencias de la variable Species. Incorpore las frecuencias absolutas y relativas asociadas a cada especie. Comandos a usar: table(datos) length(datos) cbind(col1,col2) round(num,d) # tabla de frecuencias absolutas # longitud del vector de observaciones # concatenación de columnas # redondea un número con d números decimales Solución: fa = table(iris$Species) fa # frecuencias absolutas almacenadas en el objeto fa # mostramos el resultado (otra opción es print(fa)) ## ## ## virginica 50 setosa versicolor 50 50 n = length(iris$Species) fb = fa/n cbind(fa,fb) # tamaño de la muestra n # frecuencias relativas = fa / (tamaño de la muestra) # concatenamos columnas ## fa fb ## setosa 50 0.3333333 ## versicolor 50 0.3333333 ## virginica 50 0.3333333 Con el fin de mejorar la presentación, podemos presentar la frecuencia relativa unicamente con 3 decimales e indicar los nombres de las columnas. tabla = cbind('Frec. Abs.' = fa,'Frec. Rel.' = round(fb,3)) print(tabla) ## Frec. Abs. Frec. Rel. ## setosa 50 0.333 ## versicolor 50 0.333 ## virginica 50 0.333 Tarea sugerida: Agregue las columnas correspondientes a la frecuencias acumuladas, absoluta y relativa. Pista: Ejecute cumsum(fa). 3 Tema 3. Tablas de Frecuencias para variables cuantitativas Elabore una tabla de frecuencias para la variable longitud de pétalos. Petal.length. Comandos a usar: install.packages("librería") library(librería) ?librería ds_screener(datos) ds_freq_table(datos,var) # instala la librería # carga la librería para su uso # muestra el manual de ayuda de la librería # descripción de las variables en el conjunto de datos # crea una tabla de frecuencias para var en datos Solución: Para elaborar la tabla de frecuencias para el caso cuantitativo, usaremos una función de una librería de R en particular, descriptr. Se deberá primero instalar (una única vez) y cargar la misma, para poder hacer uso de las funciones que contiene. install.packages("descriptr") # instalación de la librería library(descriptr) # cargamos la librería para su uso ## Warning: package 'descriptr' was built under R version 3.6.3 ?ds_screener ds_screener(iris) # accedemos al manual de la función # describimos las variables en el conjunto de datos ## --------------------------------------------------------------------------------------## | Column Name | Data Type | Levels | Missing | Missing (%) | ## --------------------------------------------------------------------------------------## | Sepal.Length | numeric | NA | 0 | 0 | ## | Sepal.Width | numeric | NA | 0 | 0 | ## | Petal.Length | numeric | NA | 0 | 0 | ## | Petal.Width | numeric | NA | 0 | 0 | ## | Species | factor |setosa versicolor virginica| 0 | 0 | ## --------------------------------------------------------------------------------------## ## Overall Missing Values 0 ## Percentage of Missing Values 0 % ## Rows with Missing Values 0 ## Columns With Missing Values 0 Tarea sugerida: Estudie los diferentes tipos de variables en el conjunto de datos de R llamado mtcars. ¿Cuántas variables cualitativas y cuantitativas hay? 4 ds_freq_table(iris,Petal.Length) ## Variable: Petal.Length ## |-----------------------------------------------------------------------| ## | Bins | Frequency | Cum Frequency | Percent | Cum Percent | ## |-----------------------------------------------------------------------| ## | 1 - 2.2 | 50 | 50 | 33.33 | 33.33 | ## |-----------------------------------------------------------------------| ## | 2.2 - 3.4 | 3 | 53 | 2 | 35.33 | ## |-----------------------------------------------------------------------| ## | 3.4 - 4.5 | 34 | 87 | 22.67 | 58 | ## |-----------------------------------------------------------------------| ## | 4.5 - 5.7 | 47 | 134 | 31.33 | 89.33 | ## |-----------------------------------------------------------------------| ## | 5.7 - 6.9 | 16 | 150 | 10.67 | 100 | ## |-----------------------------------------------------------------------| ## | Total | 150 | | 100.00 | | ## |-----------------------------------------------------------------------| Tema 4: Gráficos para variables cualitativas Para la elaboración de gráficos, recomendamos la librería de R ggplot2, la más usada actualmente en el mundo. Esta librería permite crear gráficos usando gramática de gráficos 1 , además que es muy flexible y permite generar gráficos de alta calidad y de forma rápida. Sus componentes son: Data: Datos para graficar Aesthetic mapping: Características estéticas Geom: Objetos geométricos (puntos, líneas, polígonos, áreas. . . ) Stat: Transformaciones estadísticas Scale: Escalas Coord: El sistema de coordenadas Faceting: Condicionamiento Los gráficos de ggplot pueden ser creados por bloques, es decir, por partes separadas de tal forma que se puede ir agregando características al mismo de forma natural. Un guía rápida de ggplot2 en español puede ser accedida dando click aquí. install.packages("ggplot2") library(ggplot2) ## Warning: package 'ggplot2' was built under R version 3.6.3 1 Wilkinson, L. (2012). The grammar of graphics. In Handbook of computational statistics (pp. 375-414). Springer, Berlin, Heidelberg. 5 ggplot(data=iris,aes(x=Species)) + geom_bar() 50 count 40 30 20 10 0 setosa versicolor virginica Species ggplot(data=iris,aes(x=Species,y = ..prop.., group = 1)) + # frecuencia relativa geom_bar() 0.3 prop 0.2 0.1 0.0 setosa versicolor Species 6 virginica ggplot(data=iris,aes(x=Species,y = ..prop.., group = 1)) + #añadimos nombres de ejes geom_bar() + xlab("Especies") + ylab("frec. relativa") frec. relativa 0.3 0.2 0.1 0.0 setosa versicolor virginica Especies ggplot(data=iris,aes(x=Species,y = ..prop.., group = 1)) + # añadimos un título geom_bar() + xlab("Especies") + ylab("frec. relativa") + ggtitle("Diagrama de barras") Diagrama de barras frec. relativa 0.3 0.2 0.1 0.0 setosa versicolor virginica Especies Tarea sugerida: Para el conjunto de datos de R llamado mtcars, genere un diagrama de barras para la variable cyl. Muestre las frecuencias absolutas, además agregue un título y ejes en español. Si bien esta variable es numérica, ¿por qué realizamos un diagrama de barras y no un histograma? 7 Tema 5: Gráficos para variables cuantitativas Histogramas de frecuencias ggplot(data=iris,aes(x=Sepal.Width)) + geom_histogram() ## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`. count 20 10 0 2.0 2.5 3.0 3.5 4.0 4.5 4.0 4.5 Sepal.Width ggplot(data=iris,aes(x=Sepal.Width)) + # 10 barras geom_histogram(bins = 10) count 30 20 10 0 2.0 2.5 3.0 Sepal.Width 8 3.5 ggplot(data=iris,aes(x=Sepal.Width)) + # color de barras (relleno y línea) geom_histogram(bins = 10,fill = "purple",color = "black") count 30 20 10 0 2.0 2.5 3.0 3.5 4.0 4.5 4.0 4.5 Sepal.Width ggplot(data=iris,aes(x=Sepal.Width)) + # tema clásico de R geom_histogram(bins = 10,fill = "purple",color = "black") + theme_classic() count 30 20 10 0 2.0 2.5 3.0 Sepal.Width 9 3.5 ggplot(data=iris,aes(x=Sepal.Width)) + # mostramos frecuencias relativas (usando aes) geom_histogram(aes(y = stat(count)/sum(count)),bins = 10,fill = "purple",color = "black") + theme_classic() 0.25 count/sum(count) 0.20 0.15 0.10 0.05 0.00 2.0 2.5 3.0 3.5 4.0 4.5 Sepal.Width ¿Te gustaría colocar un color personalizado? Basta ingresar el código hexadecimal del color que deseamos, el cual puede ser encontrado en varias páginas de paletas, e.g., https://www.colorhexa.com/color-names. Usaremos el color con código #ad8585. ggplot(data=iris,aes(x=Sepal.Width)) + # mostramos porcentajes en el eje de las Y's geom_histogram(aes(y = stat(count)/sum(count)),bins = 10,fill = "#ad8585",color = "black") + theme_classic() + scale_y_continuous(labels = scales::percent) 25.0% count/sum(count) 20.0% 15.0% 10.0% 5.0% 0.0% 2.0 2.5 3.0 Sepal.Width 10 3.5 4.0 4.5 Polígono de frecuencia ggplot(data=iris,aes(x=Sepal.Width)) + # polígono geom_freqpoly(bins = 10,color = "black") count 30 20 10 0 2 3 4 Sepal.Width ggplot(data=iris,aes(x=Sepal.Width)) + # añadimos histograma geom_histogram(bins = 10,fill = "purple",color = "black") + geom_freqpoly(bins = 10,color = "black") count 30 20 10 0 2 3 4 Sepal.Width Tarea sugerida: Para el conjunto de datos de R llamado mtcars, grafique un histograma y su respectivo polígono de frecuencia para la variable millas por galón, mpg. Use 5 barras para el histograma y polígono, coloque título y etiquetas de ejes en español. Utilice su color favorito usando su código hexadecimal. 11 Gráficos de densidad ggplot(data=iris,aes(x=Sepal.Width)) + # densidad estimada geom_density() density 0.9 0.6 0.3 0.0 2.0 2.5 3.0 3.5 4.0 4.5 4.0 4.5 Sepal.Width ggplot(data=iris,aes(x=Sepal.Width)) + # color geom_density(fill = "purple") density 0.9 0.6 0.3 0.0 2.0 2.5 3.0 3.5 Sepal.Width 12 ggplot(data=iris,aes(x=Sepal.Width)) + # transparencia (alpha de 0 a 1) geom_density(fill = "purple",alpha = 0.4) density 0.9 0.6 0.3 0.0 2.0 2.5 3.0 3.5 4.0 4.5 4.0 4.5 Sepal.Width Diagrama de Caja o Boxplot ggplot(data=iris,aes(x=Sepal.Width)) + geom_boxplot() 0.4 0.2 0.0 -0.2 -0.4 2.0 2.5 3.0 3.5 Sepal.Width Tarea sugerida: Para el conjunto de datos de R llamado mtcars, grafique un diagrama de cajas para la variable millas por galón, mpg. Utilice su color favorito usando su código hexadecimal, agregue un título y etiquetas en español. Además, modifique los límites del eje de las Y’s para que se muestren de -1 a 1. Pista: Añada una línea con ylim(inf,sup). 13