include_graphics("https://www.desarrollosocialyfamilia.gob.cl/storage/image/banner-saludmental.png")
Reportes dinámicos 3
Completar hasta as 11:59 PM del martes, 7 de noviembre de 2023
Objetivo de la práctica
El objetivo de esta guía práctica es explicar el formato del informe de los trabajos del curso. Ya que la elaboración de los informes incluye analisis en R, la idea es poder aprovechar los recursos existentes para poder realizar escritura y análisis en un mismo documento. La base de esto son los prácticos sobre Reportes Dinámicos 1 y Reportes Dinámicos 2, donde se describieron las estructura de carpetas y archivos, así como también el lenfuage RMarkdown, que permite vincular análisis en R con escritura en Markdown.
Para facilitar el desarrollo de los trabajos en este entorno ponemos a disposición una carpeta que se puede bajar aquí. Esta carpeta está basada en el protocolo IPO, mencionado en el práctico Reportes Dinámicos 1, con la siguente estructura de archivos y carpetas:
- input: insumos, libro de códigos
- input/img: imágenes
- input/data: base de datos original
- procesamiento: archivos de sintaxis .R
- output: bases de datos procesada, informes, tablas, gráficos
Donde el flujo de trabajo es el siguiente:
En detalle, aprenderemos los siguientes contenidos:
- Creación y organización de un informe en Quarto
- Generación y presentación de tablas y gráficos en Quarto.
- Cómo autoreferenciar elementos dentro un documento Quarto.
Para los ejemplos de esta plantilla utilizaremos la encuesta ELSOC, pero como sabemos, el trabajo se realiza con la encuesta CASEN.
Quarto
Quarto es un sistema de publicación técnico y científico de código abierto. Es un lenguaje para crear y formatear documentos, similar a Markdown, aunque más general, con nuevas características y capacidades.
No es exclusivo de R, también funciona con Python, Julia, y Observable.
Como R Markdown, Quarto usa knitr para ejcutar códigos de R, y por lo tanto es capaz de renderizar la mayor parte de los archivos .Rmd sin necesidad de hacer modificaciones. Es así como lo que hemos hecho con R Markdown funciona en Quarto, sin embargo, el uso de Quarto se ha masificado en el último tiempo, con su mayor amplitud de recursos.
El nombre de Quarto viene del formato de un libro o panfleto producido a partir de hojas completas impresas con ocho páginas de texto, cuatro en cada lado, que luego se pliegan dos veces para producir cuatro hojas. Las hojas se recortan a lo largo de los pliegues para producir ocho páginas de libro. Cada página impresa se presenta como un cuarto del tamaño de la hoja completa.
El libro impreso más antiguo de Europa conocido es un quarto, el Sibyllenbuch, que se cree que fue impreso por Johannes Gutenberg en 1452-53, antes de la Biblia de Gutenberg, y que sobrevive solo como un fragmento.
Lo que nos remite a las ideas de ciencia abierta y a la posibilidad de universalizar el conocimiento.
Organización de un informe en Quarto
Crear un documento Quarto
Para generar un documento Quarto hacemos lo siguiente:
Encabezado o YAML
Para comenzar, definiremos los elementos que van en el encabezado (front matter o YAML), al menos debemos especificar:
- Título
- Subtítulo
- Autores
- Fecha
- Idioma
Con ese YAML el encabezado se ve de la siguiente forma:
Apartados y subapartados
Para los títulos de los apartados deben poner un # antes del nombre, y para los subapartados cada vez más pequeños dos o más #.
Por ejemplo, si ponemos:
# Variables
## Descripción de variables
Los apartados y subapartados diferirán en su tamaño y se verán de esta forma.
Insertar imágenes
Si quisiéramos poner una imagen, lo ideal es llamarla desde la web:
Recordemos que si no queremos que se vea un chunk, en las options debemos poner
echo=FALSE
.
O desde la carpeta local ![](../input/img/nombre_imagen.extension)
o con:
include_graphics("../files/banner-saludmental.png")
Procesamiento de datos
El procesamiento de datos lo realizaremos en un archivo de sintaxis proc_data.R
, que alojaremos en la carpeta de procesamiento.
Carga de librerías
Las librerías que utilizaremos en esta guía práctica son:
library(pacman)
::p_load(tidyverse, # manipulacion datos
pacman# tablas
sjPlot, # IC
confintr, # visualizacion
gginference, # reporte
rempsyc, # varios
broom, # para descriptivos
sjmisc, # para
knitr)
options(scipen = 999) # para desactivar notacion cientifica
rm(list = ls()) # para limpiar el entorno de trabajo
Carga de datos
Como señalamos antes, cargaremos los datos del Estudio Longitudinal Social de Chile (ELSOC) para ejemplificar. En esta guía práctica llamaremos los datos desde la web, pero en la carpeta del proyecto se encuentran alojados en la carpeta input/data
, y se llama de la siguiente forma:
load("input/data/ELSOC_Long.RData")
Pero, para llamar la base de datos desde la web:
load(url("https://dataverse.harvard.edu/api/access/datafile/7245118"))
Limpieza de datos
Realizaremos un tratamiento simple de los casos:
# Filtrar casos y seleccionar variables
<- elsoc_long_2016_2022.2 %>%
data filter(ola==1) %>%
select(sexo=m0_sexo,edad=m0_edad,nedu=m01,
s11_01,s11_02,s11_03,s11_04,s11_05,s11_06,s11_07,s11_08,s11_09)
# remover NA's
<- data %>%
data set_na(., na = c(-888, -999)) %>%
na.omit()
# crear variable nueva
<- data %>%
data rowwise() %>%
mutate(sint_depresivos = mean(c(s11_01,s11_02,s11_03,s11_04,s11_05,s11_06,s11_07,s11_08,s11_09))) %>%
ungroup()
Guardar base de datos resultante
Guardamos la base de datos procesada en la carpeta de output, con
saveRDS(data, "output/data.Rdata")
Informe
Introducción
En este apartado pueden poner su introducción, de acuerdo con la pauta del trabajo que se encuentra disponible en el enlace.
En este ejemplo daremos una mirada a la salud mental, y exploraremos posibles asociaciones con la edad, sexo y nivel educacional.
Variables
En este apartado pueden poner sus variables, de acuerdo con la pauta del trabajo que se encuentra disponible en el enlace.
A continuación, en nuestro ejemplo describiremos las variables necesarias para responder a nuestro objetivo.
Descripción de variables
En este ejemplo, se seleccionaron las variables:
- sexo: sexo del encuestado, con nivel de medición nominal
- edad: edad del encuestado, con nivel de medición intervalar
- nedu: nivel educativo del encuestado, con nivel de medición ordinal
Y las variables del módulo de Salud y Bienestar, referentes a Estado de ánimo: sintomatología depresiva, con nivel de medición ordinal, los ítems son los siguientes:
- Frecuencia: Poco interés o alegría
- Frecuencia: Decaimiento, pesadez o desesperanza
- Frecuencia: Dificultad para dormir o exceso de sueño
- Frecuencia: Cansancio o sensación de falta de energía
- Frecuencia: Apetito disminuido o aumentado
- Frecuencia: Dificultad para concentrarse
- Frecuencia: Mala opinión de sí mismo
- Frecuencia: Enlentecimiento físico
- Frecuencia: Pensamiento de muerte o dañarse
Podemos caargar los datos en nuestro informe sin que se vea poniendo la option
echo=FALSE
:data <-readRDS("output/data.RData")
.
<- data %>%
tab1 group_by(sexo) %>% # agrupamos por sexo
summarise(n = n()) %>% # contamos por categ de respuesta
mutate(prop = round((n / sum(n)) * 100, 2)) # porcentaje
<- as.numeric(tab1[2,3])
pm <- as.numeric(tab1[1,3])
ph
<- tab1 %>%
tabla1 ::kable(format = "html",
kableExtraalign = "c",
col.names = c("Sexo", "n", "Proporción"),
caption = "Tabla 1. Distribución de sexo") %>%
::kable_classic(full_width = FALSE, position = "center", font_size = 14) %>%
kableExtra::add_footnote(label = "Fuente: Elaboración propia en base a ELSOC 2016.") kableExtra
En la Tabla 1 podemos ver que la proporción de mujeres que responde la encuesta corresponde a 60.12%, mientras que la propoción de hombres corresponde a 39.88%.
tabla1
Sexo | n | Proporción |
---|---|---|
1 | 1151 | 39.88 |
2 | 1735 | 60.12 |
a Fuente: Elaboración propia en base a ELSOC 2016. |
En las options del chunk desde el que llamamos a la tabla le ponemos
tbl-nombre tabla
para etiquetarla, y luego en el texto ponemos@tbl-nombre-tabla
para referenciarla. También, cuando queremos llamar un valor, es necesario asignarlo a un objeto, y en el texto lo llamamos con:
Análisis
En este apartado pueden poner sus análisis, de acuerdo con la pauta del trabajo que se encuentra disponible en el enlace.
En nuestro ejemplo, analizaremos la correlación entre algunas variables.
<- cor(data$edad, data$sint_depresivos)
cor_edad_dep <- cor(data$nedu, data$sint_depresivos)
cor_nedu_dep <- cor(data$nedu, data$edad) cor_nedu_edad
<- data %>%
g1 group_by(nedu) %>%
summarise(sint_dep = mean(sint_depresivos, na.rm = T),
edad=mean(edad, na.rm = T))
<- ggplot(data = g1,
grafico1 mapping = aes(x = sint_dep, y = edad, label = nedu)) +
geom_point() +
geom_smooth(method = "lm",colour = "black",fill="lightblue",size=0.5) +
labs(x = "Sintomatología depresiva",
y = "Edad",
caption = "Fuente: Elaboración propia en base a ELSOC 2026") +
theme_bw()
En la Figura 1 es posible apreciar… La correlación entre la edad y el promedio de la sintomatología depresiva corresponde a 0.0176236.
grafico1
En las options del chunk desde el que llamamos a la figura le ponemos
fig-nombre figura
para etiquetarla, y luego en el texto ponemos@fig-nombre-figura
para referenciarla.
Conclusiones
En este apartado pueden poner sus conclusiones, de acuerdo con la pauta del trabajo que se encuentra disponible en el enlace.
Aquí redactamos algunas conclusiones.
Bibliografía
En este apartado pueden poner su bibliografía, de acuerdo con la pauta del trabajo que se encuentra disponible en el enlace.
Ponemos un -
para generar un listado.
COES (2023). Radiografía del Cambio Social: Análisis de Resultados Longitudinales ELSOC 2016-2022. Presentación de Resultados COES. Marzo, Santiago de Chile.
R Core Team (2023). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria. https://www.R-project.org/.
Visualizacion informe
Finalmente, podemos ver el informe que hemos creado en este enlace.
Reporte de progreso
Completar el reporte de progreso correspondiente a esta práctica aquí. El plazo para contestarlo es hasta el día martes de la semana siguiente a la que se publica la práctica correspondiente.