Guía de variables
Taller de Análsis en RMarkdown // UNAM 2025-1
Guía para el manejo de variables de una fuente de datos
Este documento sirve como apoyo para el taller de Análisis en R y presentaciones en Markdown impartido en la Facultad de Ciencias Políticas y Sociales de la UNAM [CU] en el semestre 2025-1. Dicho taller tiene como objetivo facilitar la comprensión de la analítica de datos de los diversos proyectos de investigación a la par en que se adquieren herramientas para la documentación de los procesos de análisis.
Para el cumplimento de los objetivos planteados se realiza una breve presentación de los tipos de variables. Después de ello se presentan las librerías empleadas, señalando cuál es su empleabilidad en el trabajo; posteriormente se muestra lo referente al contenido de la tabla seleccionada para este trabajo; se identifica y define el tipo de datos que es representado por cada columna. Si alguna variable no corresponde con el tipo de dato a manejar, las variables no correspondientes a su tipo de datos son modificadas según los objetivos particulares. Se presentan, además, algunas formas de resumen del contenido de la tabla según lo convenido para informes y otras documentaciones.
Tipos de variables
Como se mencionó en el apartado anterior, este documento se centra en la identificación y modificación de los tipos de variables. Es por ello que se realiza una mención de las clasificaciones más utilizadas para los fines establecidos. La clasificación más sencilla y de menor profundidad es aquella en la que se identifican dos tipos de variables según la información contenida; por datos cualitativos o cuantitativos se distinguen los dos grandes grupos de variables de la cual se dice que un dato cuantitativo es aquel que ofrece una medición numérica o escalar, mientras que un dato cualitativo es aquel que refiere un atributo no medible, pero sí distinguible, del objeto de estudio. En la tabla 1 muestra esta primera categorización de variables, añadiendo una división del tipo o sub-categoría de variables cualitativas; de éstas pueden leerse las variables nominales, que se refieren a aquellas que son distinguibles simplemente por sus nombres, sin asignárseles una mayor o menor relevancia entre sus “niveles”1; y las ordinales, las cuales identifican una jerarquía u ordenamiento inherente a los niveles de la variable.
| Cualitativas | Cuantitativas |
|---|---|
| Nominales | — |
| Ordinales | — |
Es posible identificar categorías propias de las variables cuantitativas como las continuas y las discretas. Estas divisiones son fácilmente equiparables con las categorías manejadas en el lenguaje R para tipos de datos puntuales. Ello fue abordado durante el curso y no se profundizará más en el presente documento.
Librerías
En este apartado se muestran las librerías utilizadas para el
desarrollo de este tema. En caso de no ser reconocida alguna de las
paqueterías/librerías a utilizar, es necesario instalarlas mediante el
comando (o función)
install.packages("Nombre_de_la_paquetería"). Posteriormente
a ello se procede con la ejecución de la librería en el entorno de
desarrollo del proyecto, como se muestra en el recuadro siguiente:
library(readr) # Posible implementar otras, como readxl, según la extensión del archivo.
library(dplyr)
library(janitor)
library(ggplot2)
library(citation)La función library() con el nombre de la librería dentro
de los paréntesis hace un llamado a las funciones de la paquetería
nombrada. Es decir que todo trabajo y desarrollo técnico y de
investigación es colaborativo, desde la implementación de las
técnicas en el análisis, hasta el uso de cada una de las herramientas
sean éstas el lenguaje R (R Core Team, 2022), el entorno de
desarrollo RStudio (Posit team, 2024) y las librerías2,3.
Las librerías empleadas tienen diferentes funciones dentro del proyecto. Se enlistan a continuación las librerías y las funciones respectivas:
readr: Es una librería que contiene la función principal para leer archivos con la extensión .csv (valores separados por coma, por sus siglas en inglés). Como se menciona en el recuadro, es posible utilizar otras librerías para leer archivos con la extensión de hojas de cálculo, de archivos de Stata, de SPSS, entre otros (Wickham et al., 2024).dplyr: Facilita la manipulación del contenido de las tablas mediante una serie de funciones diseñadas para ello. Así mismo, proporciona el diseño de algoritmos más popular en R (por tuberías o pipes) (Wickham et al., 2023).janitor: Provee funciones útiles en la exploración de datos y en la limpieza del contenido de las tablas, entre otras (Firke, 2023).ggplot2: Contiene funciones específicas para el diseño de gráficos. Es uno de los paquetes más populares por la fuerte componente estética que brinda (Wickham, 2016).citation: Es una librería de consulta de la información para citar diversas paqueterías de R, así como sus versiones (Dietrich & Leoncio, 2023).
Tablas y contenido
En esta sección se realiza la carga o llamada de datos al entorno de trabajo, se visualizan las funciones para una salida parcial de la tabla o tablas importadas, así como la revisión y modificación del contenido de las variables. Para esta presentación se utiliza una fuente de datos del Instituto Nacional de Estadística y Geografía (INEGI) consultada a partir de la pestaña de los temas que esta institución proporciona. De manera puntual, los registros utilizados en esta sección pertenecen al *Subsistema de Información Económica*, de los *Programas de Información*, los datos de Finanzas Públicas Estatales y Municipales (EFIPEM)
Toda la información recaudada y proporcionada por el INEGI correspondiente a este conjunto de datos puede ser consultada a través del este enlace. Documentación, meta-datos, antecedentes, objetivos, procedimientos, coberturas, entre otras cuestiones pueden ser consultadas a través de la página referida en el enlace (*en el caso de consultarse encuestas oficiales, éstos proporcionan los diseños metodológicos de levantamiento de las entrevistas*). Para este proyecto se realiza la consulta a las 34 tablas de ingresos y egresos nacionales, por Entidad Federativa, para el periodo 1989-2023 proporcionados por la institución.
Importación de datos
La función a emplear, de la paquetería readr es
read_csv(). Dicha función suele ser empleada tras la
descarga de las tablas al ordenador, con la cual se tiene una dirección
de almacenamiento que será referida como argumento para la lectura del
archivo; sin embargo, también es posible asignar una ruta de acceso
remoto por medio del enlace de la fuente de datos. Debido a que se
requiere conservar y manipular las tablas importadas, la función está
asignada a un objeto distinguible para cada tabla importada. El
siguiente recuadro muestra el ejemplo para la importación y
almacenamiento de las tablas en los objetos nombrados
estatalxxxx con la función e indicación de la ruta de
acceso correspondiente (dirección).
estatal2023 = read_csv("La_direccion_de_almacenamiento_del_archivo_con_la_extension.csv")
estatal2022 = read_csv("direccion_2.csv")
estatal2021 = read_csv("direccion_3.csv")
estatal2020 = read_csv("direccion_4.csv")
estatal2019 = read_csv("direccion_5.csv")
estatal2018 = read_csv("direccion_6.csv")
estatal2017 = read_csv("direccion_7.csv")
# ...
estatal1989 = read_csv("direccion_i.csv")Una vez importados de manera efectiva se podrá observar el objeto o
los objetos asignados en la sección “ambiente” de RStudio, así como la
espera en la consola por la siguiente tarea. Al costado derecho de los
objetos se podrá ver el número de observaciones (obs.) y de variables en
cada objeto (tablas, en este caso). El símbolo del costado izquierdo en
forma de “play” en un círculo azul permitirá abrir y visualizar
un resumen de las variables del la tabla; mientras que el hacer clic
sobre el objeto facilitará la función View(Objeto) en la
consola.
Revisión del contenido
Una vez importadas las tablas al entorno de trabajo es necesario
verificar los contenidos. Ello permitirá implementar funciones
específicas y correctas para cada tipo de variable, corregir errores o
implementar otras modificaciones provechosas para el proyecto. Como se
mencionó en el apartado de librerías, dplyr contiene
funciones útiles para este propósito.
Para ejemplificar el uso de las funciones head(),
tail() y sample(), se aplicarán en 4 tablas
distintas; sin embargo, es importante revisar cada una de las tablas
importadas para comprender la forma en que se operará con su contenido.
Dichas funciones permiten visualizar partes correspondientes de las
tablas. Sus argumentos e implementaciones son muy similares entre; así,
los argumentos en la función son: el objeto sobre el cuál operará
la función y el número de observaciones que se mostrará en la salida, se
parados por una coma.
| PROD_EST | COBERTURA | ANIO | ID_ENTIDAD | TEMA | CATEGORIA | DESCRIPCION_CATEGORIA | VALOR | ESTATUS |
|---|---|---|---|---|---|---|---|---|
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 1989-01-01 | 01 | Egresos | Tema | Total de egresos | 188216767 | Cifras Definitivas |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 1989-01-01 | 01 | Egresos | Capítulo | Servicios personales | 23236402 | Cifras Definitivas |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 1989-01-01 | 01 | Egresos | Concepto | Remuneraciones al personal | 12946244 | Cifras Definitivas |
La función head(Objeto, i) proporciona una salida en la
cual se observan las primeras i observaciones
de la tabla (objeto) referida.
| PROD_EST | COBERTURA | ANIO | ID_ENTIDAD | TEMA | CATEGORIA | DESCRIPCION_CATEGORIA | VALOR | ESTATUS |
|---|---|---|---|---|---|---|---|---|
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2021-01-01 | 32 | Ingresos | Subpartida Genérica | Convenio para asistencia social | 23068696 | Cifras Definitivas |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2021-01-01 | 32 | Ingresos | Partida Genérica | Recursos federales diversos | 140742719 | Cifras Definitivas |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2021-01-01 | 32 | Ingresos | Subpartida Genérica | Otros recursos federales | 140742719 | Cifras Definitivas |
La función tail(Objeto, i) muestra las últimas
i observaciones de la tabla.
| PROD_EST | COBERTURA | ANIO | ID_ENTIDAD | TEMA | CATEGORIA | DESCRIPCION_CATEGORIA | VALOR | ESTATUS |
|---|---|---|---|---|---|---|---|---|
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2022-01-01 | 28 | Egresos | Subpartida Genérica | Materiales, accesorios y suministros de laboratorio | 8249893 | Cifras Definitivas |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2022-01-01 | 30 | Ingresos | Concepto | Impuestos sobre el Patrimonio | 110114288 | Cifras Definitivas |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2022-01-01 | 24 | Egresos | Partida Genérica | Servicios de acceso de Internet, redes y procesamiento de información | 364884 | Cifras Definitivas |
La función sample_n(Objeto, i) da por salida otra tabla
con un muestreo “aleatorio” de las i
observaciones referidas como argumento. Otra forma de implementar
cualquiera de las tres funciones anteriores es por medio de las
tuberías (o pipes en inglés) [%/%] que
forman parte de la librería dplyr; en cuyo caso, la
sintaxis es colocar en primer lugar el objeto al cuál será implementada
la función posterior a la tubería.
| PROD_EST | COBERTURA | ANIO | ID_ENTIDAD | TEMA | CATEGORIA | DESCRIPCION_CATEGORIA | VALOR | ESTATUS |
|---|---|---|---|---|---|---|---|---|
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2023-01-01 | 28 | Egresos | Concepto | Combustibles, lubricantes y aditivos | 155545424 | Cifras Preliminares |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2023-01-01 | 06 | Egresos | Partida Genérica | Prestaciones contractuales | 244998996 | Cifras Preliminares |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2023-01-01 | 29 | Ingresos | Subpartida Genérica | Cultura | 2747422 | Cifras Preliminares |
Se puede observar que, en estos casos, los objetos no fueron
almacenados en otros objetos. Es posible realizarlo mediante la
asignación de un nombre, sin embargo no representa una ventaja ya que no
se realizará ninguna otra acción con estas fracciones de tablas.
Otra manera complementaria de analizar el contenido
de las tablas es identificar el tipo de datos almacenados por variable.
Para ello, las funciones summary(), str(),
entre otras definidas en otras paqueterías, son comúnmente
utilizadas
La función str() puede aplicarse a la tabla completa
(nombrando el objeto asignado) con la limitación de obtener un número
limitado de definiciones y características de las variables. Ello puede
ser solucionado mediante la asignación puntual de cada variable,
sustituyendo Objeto por Objeto$Variable
como el argumento de aplicación de la función. Ésto no resulta muy
práctico cuando el número de variables a trabajar es grande.
Por otro lado, la función summary() devuelve listados de
las variables contenidas. En dichos listados se muestran las
características y/o resúmenes de las variables de la tabla asignada. A
continuación se muestra esta función aplicada a dos tablas:
estatal2020 y estatal2021.
| PROD_EST | COBERTURA | ANIO | ID_ENTIDAD | TEMA | CATEGORIA | DESCRIPCION_CATEGORIA | VALOR | ESTATUS | |
|---|---|---|---|---|---|---|---|---|---|
| Length:10374 | Length:10374 | Min. :2023-01-01 | Length:10374 | Length:10374 | Length:10374 | Length:10374 | Min. :1.001e+03 | Length:10374 | |
| Class :character | Class :character | 1st Qu.:2023-01-01 | Class :character | Class :character | Class :character | Class :character | 1st Qu.:5.374e+06 | Class :character | |
| Mode :character | Mode :character | Median :2023-01-01 | Mode :character | Mode :character | Mode :character | Mode :character | Median :6.476e+07 | Mode :character | |
| NA | NA | Mean :2023-01-01 | NA | NA | NA | NA | Mean :2.361e+09 | NA | |
| NA | NA | 3rd Qu.:2023-01-01 | NA | NA | NA | NA | 3rd Qu.:5.876e+08 | NA | |
| NA | NA | Max. :2023-01-01 | NA | NA | NA | NA | Max. :3.808e+11 | NA |
| PROD_EST | COBERTURA | ANIO | ID_ENTIDAD | TEMA | CATEGORIA | DESCRIPCION_CATEGORIA | VALOR | ESTATUS | |
|---|---|---|---|---|---|---|---|---|---|
| Length:10374 | Length:10374 | Min. :2023-01-01 | Length:10374 | Length:10374 | Length:10374 | Length:10374 | Min. :1.001e+03 | Length:10374 | |
| Class :character | Class :character | 1st Qu.:2023-01-01 | Class :character | Class :character | Class :character | Class :character | 1st Qu.:5.374e+06 | Class :character | |
| Mode :character | Mode :character | Median :2023-01-01 | Mode :character | Mode :character | Mode :character | Mode :character | Median :6.476e+07 | Mode :character | |
| NA | NA | Mean :2023-01-01 | NA | NA | NA | NA | Mean :2.361e+09 | NA | |
| NA | NA | 3rd Qu.:2023-01-01 | NA | NA | NA | NA | 3rd Qu.:5.876e+08 | NA | |
| NA | NA | Max. :2023-01-01 | NA | NA | NA | NA | Max. :3.808e+11 | NA |
Al observar las salidas de las fuciones implementadas se puede notar
que tenemos una predominancia de variables con el formato
character. Ello indica que dichas variables almacenan datos
en formato alfanumérico; mientras que las variables que exhiben
Mínimos, Máximos, Medianas, Medias y
Cuartiles son variables cuantitativas. Es, por tanto,
conveniente identificar la conveniencia al utilizar las primeras
funciones de visualización (head(), tail() y
sample_n()) donde se aprecia que el contenido de dichas
variables son, probablemente, factores y requerirán la modificación
pertinente.
Modificación del contenido
De las tablas visualizadas anteriormente, así como de la exploración de las 30 tablas restantes (que no son exhibidos en este documento) se identificó que las tablas comparten una estructura similar. Así mismo, el contenido de requiere el mismo tratamiento y que, además, la disposición de las columnas y la información que en ellas se registra tiene un orden común. Esta coincidencia es casi exclusiva para el manejo de estas tablas y realizar la unión de su contenido será provechoso para simplificar el trabajo subsecuente.; es decir, trabajar con el contenido de una única tabla, en vez de las 34 facilitará el procesamiento posterior del contenido.
De acuerdo con la salida del código de la función que se muestra en el cuadro siguiente, la suma de las filas de todas las tablas es de 238592. Ello indica que la tabla que agrupe todas las observaciones de las tablas deberá tener una dimensión de 238592 por 9, es decir, 238592 observaciones con 9 columnas.
sum(nrow(estatal1989),nrow(estatal1990),nrow(estatal1991),nrow(estatal1992),
nrow(estatal1993),nrow(estatal1994),nrow(estatal1995),nrow(estatal1996),
nrow(estatal1997),nrow(estatal1998),nrow(estatal1999),nrow(estatal2000),
nrow(estatal2001),nrow(estatal2002),nrow(estatal2003),nrow(estatal2004),
nrow(estatal2005),nrow(estatal2006),nrow(estatal2007),nrow(estatal2008),
nrow(estatal2009),nrow(estatal2010),nrow(estatal2011),nrow(estatal2012),
nrow(estatal2013),nrow(estatal2014),nrow(estatal2015),nrow(estatal2016),
nrow(estatal2017),nrow(estatal2018),nrow(estatal2019),nrow(estatal2020),
nrow(estatal2021),nrow(estatal2022),nrow(estatal2023))## [1] 238592
Para unión de las tablas de este caso particular se utiliza la
función rbind(). Esta función está incorporada en R,
directamente, y permite unir las filas de las tablas en una único
objeto. Por otro lado, la función dim() da por salida la
dimensión del objeto en el argumento.
estatal_89_23 =
rbind(estatal1989,estatal1990,estatal1991,estatal1992,
estatal1993,estatal1994,estatal1995,estatal1996,
estatal1997,estatal1998,estatal1999,estatal2000,
estatal2001,estatal2002,estatal2003,estatal2004,
estatal2005,estatal2006,estatal2007,estatal2008,
estatal2009,estatal2010,estatal2011,estatal2012,
estatal2013,estatal2014,estatal2015,estatal2016,
estatal2017,estatal2018,estatal2019,estatal2020,
estatal2021,estatal2022,estatal2023)
dim(estatal_89_23)## [1] 238592 9
De tal manera, se tiene así una confirmación por correspondencia de las dimensiones señaladas anteriormente.
Según lo visto en clase, para la transformación de las variables se
implementará la función as.factor() para transformar las
variables con contenido alfanumérico a factores. Esta es otra función
predefinida en R; sin embargo existen paqueterías alternas que realizan
la misma función. Así mismo, según sea conveniente, también se pueden
transformar las variables con códigos similares como
as.character(), as.numeric(),
as.double(), as.integer(),
as.data.frame(), as.table(), entre otros. Sin
embargo, antes de proceder con su uso, se empleará la función
clean_names() aplicado en la tabla y se guardará sobre el
mismo objeto para reescribir la información modificada como se muestra
en el siguiente recuadro.
Al aplicar nuevamente una función para visualizar una fracción del
contenido de la tabla como sample_n(), se observa que los
nombres asignados a cada columna cambiaron en su totalidad a minúsculas,
los espacios fueron sustituidos por guiones bajos y, en caso de haber
caracteres de difícil interpretación, estos también son sustituidos o
eliminados. Ello puede apreciarse en el siguiente recuadro y su salida
gráfica.
| prod_est | cobertura | anio | id_entidad | tema | categoria | descripcion_categoria | valor | estatus |
|---|---|---|---|---|---|---|---|---|
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2022-01-01 | 03 | Egresos | Partida Genérica | Otras prestaciones sociales y económicas | 2343081 | Cifras Definitivas |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2009-01-01 | 20 | Ingresos | Subpartida Genérica | FA para el Fortalecimiento de los Municipios | 1359399000 | Cifras Definitivas |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2015-01-01 | 25 | Egresos | Partida Genérica | Materiales para el registro e identificación de bienes y personas | 153532610 | Cifras Definitivas |
| Estadística de Finanzas Públicas Estatales y Municipales. Anual | Estatal | 2018-01-01 | 19 | Ingresos | Subpartida Genérica | Diversos servicios de desarrollo y obras públicas | 36152691 | Cifras Definitivas |
A partir de este punto se realizan las modificaciones a la tabla para
posteriormente realizar una descripción más certera del contenido. Las
variables identificadas a ser modificadas de tipo character
a factor son:
prod_estcoberturaid_entidadtemacategoriadescripcion_categoriaestatus
En el siguiente recuadro se muestra una forma para realizar dichos cambios. No se debe olvidar que es necesario sobreescribir los cambios realizados (o implementarlos en nuevas variables) en el objeto para que las modificaciones puedan ser aprovechadas posteriormente.
estatal_89_23$prod_est =
estatal_89_23$prod_est %>%
as.factor()
estatal_89_23$cobertura =
estatal_89_23$cobertura %>% as.factor()
estatal_89_23$id_entidad = estatal_89_23$id_entidad %>% as.factor()
estatal_89_23$tema = estatal_89_23$tema %>% as.factor()
estatal_89_23$categoria = estatal_89_23$categoria %>% as.factor()
estatal_89_23$descripcion_categoria = estatal_89_23$descripcion_categoria %>% as.factor()
estatal_89_23$estatus = estatal_89_23$estatus %>% as.factor()Para observar los cambios se refiere nuevamente la función
summary() en la tabla modificada.
| prod_est | cobertura | anio | id_entidad | tema | categoria | descripcion_categoria | valor | estatus | |
|---|---|---|---|---|---|---|---|---|---|
| Estadística de Finanzas Públicas Estatales y Municipales. Anual:238592 | Estatal:238592 | Min. :1989-01-01 | 17 : 8558 | Egresos :152739 | Capítulo : 18412 | Otras participaciones : 1991 | Min. :1.000e+03 | Cifras Definitivas :228218 | |
| NA | NA | 1st Qu.:2004-01-01 | 02 : 8465 | Ingresos: 85853 | Concepto : 49159 | Otros servicios generales : 1882 | 1st Qu.:5.966e+06 | Cifras Preliminares: 10374 | |
| NA | NA | Median :2012-01-01 | 16 : 8409 | NA | Partida Genérica :124734 | Combustibles, lubricantes y aditivos : 1358 | Median :4.949e+07 | NA | |
| NA | NA | Mean :2010-07-04 | 19 : 8402 | NA | Subpartida Genérica: 44117 | Otras prestaciones sociales y económicas: 1302 | Mean :1.304e+09 | NA | |
| NA | NA | 3rd Qu.:2018-01-01 | 26 : 8330 | NA | Tema : 2170 | Derechos : 1096 | 3rd Qu.:3.481e+08 | NA | |
| NA | NA | Max. :2023-01-01 | 31 : 8235 | NA | NA | Impuestos : 1085 | Max. :3.808e+11 | NA | |
| NA | NA | NA | (Other):188193 | NA | NA | (Other) :229878 | NA | NA |
En esta última tabla de resumen puede observarse un preconteo de las categorías de las variables modificadas. De tal manera, es posible inferir que es posible trabajar, de manera conjunta otras tablas proporcionadas por el Subsistema de Información Económica del INEGI, así como que, para este primer ejercicio, las primeras dos columnas, no serán útiles para ejercicios posteriores al tener un único tipo de registro.
Una última modificación posible es el cambio de los niveles mostrados
en entidad ya que éstos se encuentran codificados y no en
su forma explícita de la entidad correspondiente. Más adelante se verá
la cómo realizar dicho cambio.
Tablas de resumen y gráficos
Es común que, en la presentación de resultados, se haga uso de medidas de resumen de la información. Dependiendo de dónde se vaya a realizar la publicación de los resultados (libros, presentaciones, artículos académicos, notas, reportajes, infografías, …) se puede recurrir a la presentación de las medidas de resumen dentro del texto, en tablas o en gráficos para la construcción (o el sustento) de un argumento o demostración. Es así que este apartado se basa en dichas necesidades para ejemplificar de qué manera se pueden presentar las medidas de resumen de la información de una tabla. Es prudente mencionar que, al plasmar una tabla, gráficos o esquemas, es conveniente realizar una explicación detallada del gráfico, la descripción de sus componentes y la interpretación que facilita el mismo.
Las medidas de resumen de la información mencionadas en el párrafo anterior hacen referencia a las medidas de tendencia central, medidas de dispersión y frecuencias. Medidas que generalizan el contenido o caracterizan conjuntamente por los atributos comunes. Estas medidas son dependientes del tipo de datos que sean referidos (cuantitativos o cualitativos) y posibilitarán el diseño común de tablas o gráficos con sus respectivas medidas de resumen.
Las librerías que se ocupan en esta sección son janitor
y ggplot2. La primera, además de proporcionarnos funciones
para reestructurar el contenido, nos brinda la función
tabyl(); mientras que la segunda nos permitirá crear y
configurar gráficos de acuerdo con nuestros gustos y necesidades. De
esta función, como puede verse en la siguiente tabla:
| . | n | percent |
|---|---|---|
| Cifras Definitivas | 228218 | 0.9565199 |
| Cifras Preliminares | 10374 | 0.0434801 |
Como se puede apreciar esta tabla sólo ofrece las frecuencias
(absolutas y relativas) de los niveles presentes en la variable
referenciada. Ello no es diferente si esta función es aplicada en
variables cuantitativas o incluso en aquellas con un formato
Date (fecha), por lo que es recomendable ser utilizado sólo
para reportar resultados de variables cualitativas casi de manera
exclusiva. Además, tabyl() proporciona argumentos y otras
funciones relacionadas que permiten modificar la tabla o lo reflejado en
ésta, como adorn_totals() que añade una fila, al final de
la tabla, con la suma de los niveles de la variable referenciada. Un
ejemplo de ello puede verse en la tabla siguiente:
| estatus | n | percent |
|---|---|---|
| Cifras Definitivas | 228218 | 0.9565199 |
| Cifras Preliminares | 10374 | 0.0434801 |
| Total | 238592 | 1.0000000 |
Otras modificaciones para estas tablas puede ser consultado en este documento digital, en el cual se desglosa y explica las modificaciones para tablas de una y dos entradas. Las secciones 5.2 y subsecuentes, aquellas que llevan los nombres correspondientes, dan ejemplo y explicación de lo mencionado.
Como se indicó, las anteriores tablas únicamente dan cuenta de tablas
de variables cualitativas. Una de las formas de obtención de información
cuantitativa ya fue abordada anteriormente con la implementación de la
función summary(). Las limitaciones de dicha función es la
disposición de la información, la cual requiere otra función para una
visualización con la estética de tabla, así como la visualización de
datos que pueden ser de poco interés para las personas dedicadas a la
investigación o quienes revisan los reportes.
Nótese que la función select() nos permite seleccionar
con qué variables trabajar proporcionando como argumentos la lista de
las variables cuantitativas.
estatal_89_23 %>%
select(anio,valor) %>%
summary()
estatal_89_23 %>%
select_if(is.numeric) %>%
summary() | anio | valor | |
|---|---|---|
| Min. :1989-01-01 | Min. :1.000e+03 | |
| 1st Qu.:2004-01-01 | 1st Qu.:5.966e+06 | |
| Median :2012-01-01 | Median :4.949e+07 | |
| Mean :2010-07-04 | Mean :1.304e+09 | |
| 3rd Qu.:2018-01-01 | 3rd Qu.:3.481e+08 | |
| Max. :2023-01-01 | Max. :3.808e+11 |
Un ejemplo de dos tablas más elaborada son las siguientes:
estatal_89_23 = estatal_89_23 %>%
mutate(
log_valor = log10(valor))
estatal_89_23 %>%
summarise(
n = n(),
"%" = n()*100/238592,
"Media arit." = mean(valor),
Varianza = var(valor),
Desv.Est. = sd(valor))
estatal_89_23 %>%
summarise(
n = n(),
"%" = n()*100/238592,
"Media arit." = mean(log_valor),
Varianza = var(log_valor),
Desv.Est. = sd(log_valor))| n | % | Media arit. | Varianza | Desv.Est. |
|---|---|---|---|---|
| 238592 | 100 | 1303716201 | 4.516291e+19 | 6720335666 |
| n | % | Media arit. | Varianza | Desv.Est. |
|---|---|---|---|---|
| 238592 | 100 | 7.603812 | 1.871285 | 1.367949 |
Como puede notarse, dichas tablas sólo desglosan un resumen calculado
para una variable o, una determinación por columna. Cuando estas
variables son compartidas, es posible realizar la unión de ambas filas
con la función rbind(tabla1,tabla2). Nótese
que sería necesario almacenar estas talas como objetos para poder
relacionarlos dentro de la función previamente
mencionada.
Un ejemplo de una tabla unida de dicha manera es la que se muestra a continuación; nótese que los valores plasmados son distintos a los de la tabla anterior.
| var | % | Media arit. | Media acot | Mediana | Moda | Desv.Est. | Asimetría | Curtosis | K-S | Valor p |
|---|---|---|---|---|---|---|---|---|---|---|
| valor | 100 | 1303716200.9 | 49488081.50 | 4.948808e+07 | 8719456.84 | 6.720336e+09 | 17.729 | 565.828 | 1.000 | 0 |
| log(valor) | 100 | 7.6 | 7.69 | 7.694501e+00 | 7.73 | 1.370000e+00 | -0.392 | 0.151 | 0.999 | 0 |
Gráficos
A continuación se muestran algunos ejemplos de códigos útiles para
representación gráfica de los datos analizados a través del paquete
ggplot2. Estos gráficos fueron analizados y explicados en
el taller. En otro momento se plasmará de manera escrita este tema.
estatal_89_23 %>%
ggplot() +
aes(x = valor) +
geom_histogram(bins = 100L, fill = "#070947") +
labs(y = "n", title = "Histograma de \"valor\"") +
ggthemes::theme_stata() +
theme(
axis.text.y = element_text(face = "italic"),
legend.title = element_text(face = "bold",
size = 17L)
)estatal_89_23 %>%
ggplot() +
aes(x = valor) +
geom_density(fill = "#659960") +
labs(y = "n", title = "Diagrama de densidad de valor") +
ggtech::theme_tech() +
theme(
axis.text.y = element_text(face = "italic"),
legend.title = element_text(face = "bold",
size = 12L)
)estatal_89_23 %>%
filter(valor >= 500 & valor <= 100000000) %>%
ggplot(aes(x = valor)) +
geom_density(fill = "#963293", alpha = 0.7) + # Establece el color de relleno aquí
labs(y = "n", title = "No facet") +
ggtech::theme_tech() +
theme(legend.position = "none")estatal_89_23 %>%
filter(valor >= 500 & valor <= 200000000) %>%
ggplot() +
aes(x = valor, fill = estatus) +
geom_density() +
scale_fill_hue(direction = 1) +
labs(y = "n", title = "Facet") +
ggthemes::theme_economist() +
theme(axis.text.y = element_text(face = "italic")) +
facet_wrap(vars(estatus))ggplot(estatal_89_23) +
aes(x = id_entidad) +
geom_bar(fill = "#864296") +
labs(
title = "Un histograma",
subtitle = "Un subtítulo antifa",
x = "Entidad",
y = "Conteo (n)"
) +
coord_flip() +
theme_classic()Una paquetería de gran utilidad para la exploración gráfica es
GGally(Schloerke et al., 2024). Dicha paquetería
contiene la función ggpairs() la cual da por salida una
matriz de las variables, identificando automáticamente el tipo de datos
referido y mostrando por salida una representación adecuada para el
mismo. La diagonal de la matriz muestra representaciones univariadas de
los datos, mientras que en las celdas de intersección de distintas
columnas y filas muestra medidas o gráficos de dicho cruce de
variables.
En el caso dela información presentada en este análisis de realizó el descarte de algunas variables. Dicho descarte se realizó debido a la poca información que aportaban las variables para el análisis.
library(GGally)
estat = estatal_89_23 %>%
dplyr::select(-prod_est,-cobertura,-id_entidad,
-descripcion_categoria)
estat %>% ggpairs()Mapas
Los mapas y los cartogramas son algunas de las salidas gráficas de
mayor interés. Existen librerías específicas para el manejo de datos
geográficos; sin embargo, para los objetivos del taller se hará
solamente muestra de las representaciones con el paquete
maps(Becker
et al., 2023).
# filled map showing Republican vote in 1900
# (figure 6 in the reference)
data(state, package = "datasets")
data(votes.repub)
state.to.map <- match.map("state", state.name)
x <- votes.repub[state.to.map, "1900"]
gray.colors <- function(n) gray(rev(0:(n - 1))/n)
color <- gray.colors(100)[floor(x)]
map("state", fill = TRUE, col = color); map("state", add = TRUE)# compare to the example for match.map
data(state, package = "datasets")
data(votes.repub)
z = votes.repub[, "1900"]
m = map("state", fill = TRUE, plot = FALSE)
# use a small span to fill in, but not smooth, the data
# increase the resolution to get better results
fit = smooth.map(m, z, span = 1/100, merge = TRUE, ave = TRUE)
mat = tapply(fit$z, fit[1:2], mean)
gray.colors <- function(n) gray(rev(0:(n - 1))/n)
par(bg = "blue")
filled.contour(mat, color.palette = gray.colors, nlev = 32, asp = 1)# for a higher degree of smoothing:
# fit = smooth.map(m, z, merge = TRUE, ave = TRUE)
# interpolation, state averages are preserved:
# fit = smooth.map(m, z, merge = TRUE, ave = TRUE, type = "interp")Referencias
Se le denominan niveles a las categorías del factor (para este caso variable cualitativa). Tema tratado en la clase del Taller.↩︎
Es probable que se muestren mensajes y advertencias en el documento generado. Ello puede ser configurado según lo visto en clase si se desea “limpiar” el documento final para mejorar la presentación del mismo.↩︎
Algunas librerías pueden enmascarar a otras o a las funciones de otras librerías, por lo cual es importante leer los mensajes y advertencias producidos al ejecutar los códigos para su llamado.↩︎