layout: true class: animated, fadeIn --- class: inverse, left, middle # _Analizando univariadamente en R 🧐_ Martín Venegas Márquez *** [Doctorado en Psicología UDP - Seminario Metodológico Disciplinario: Metodologías Cuantitativas - Otoño 2025]() <br> #### Mayo, 2025 ---  ---  ---  --- class: inverse, left, middle # Contenidos de la sesión -- **0. Recordando...** -- **1. Funciones para el análisis univariado** -- **2. Una intro a la visualización** -- **3. Manos a la obra** --- class: middle, center, inverse # _0. Recordando..._ --- # Recordando el flujo de trabajo (1) Crear una carpeta dónde alojaremos todos los archivos relacionados a nuestro proyecto. Por ejemplo: `enssex`. (2) A modo de recomendación, crear tres carpetas: `input`, `processing`y `output`. Dentro de `input` crear la carpeta `original` y `proc`. (3) Alojar el set de datos que utilizaremos para nuestros análisis en la `input/original`. (4) Abrir RStudio. Dirigir el cursor a la esquina superior derecha y hacer click en _Project: (None)_. (5) En la ventana emergente, hacer click en _New project..._. Luego, hacer click en _Existing directory_. En la siguiente ventana, hacer click en _Browse_ y escoger la carpeta creada. Finalmente, hacer click en _**Create project**_. --- # Recordando el flujo de trabajo (6) En RStudio, estando en nuestro proyecto, abrir un nuevo script: ir a esquina superior izquierda y _File > New file > RScript_ o `Ctrl + Shift + n`. Guardar haciendo click en el icono de disquete o `Ctrl + s`. Recomendación, guardar en carpeta `processing` con un nombre que haga alusión al procesamiento de datos. (7) En nuestro script, partir con información de identificación del script: título, nombre de quien lo realiza, fecha, institución, resumen de que hace. Recomendación, separar el código por secciones. Usar `Ctrl + Shift + R`. (8) Luego, seguir con una sección dónde se instalen los paquetes (si es necesario) y se carguen. Recomendación, utilizar `pacman::p_load()`. (9) Luego, seguir con una sección dónde se realice el procesamiento de datos necesario. (10) Por último, terminar con una sección dónde se guarde el dataset procesado. Recomendación, guardar en `input/proc`. --- class: middle, center # Recordemos cómo leer R... --- .center[] R, quiero que... --- .center[] R, quiero que **<span style="color:#c40404">crees un objeto llamado enssex4_proc</span>**... --- .center[] R, quiero que **<span style="color:#c40404">crees un objeto llamado enssex4_proc</span>** **<span style="color:#0772c2">al cual asignale el siguiente procedimiento:</span>**... --- .center[] R, quiero que **<span style="color:#c40404">crees un objeto llamado enssex4_proc</span>** **<span style="color:#0772c2">al cual asignale el siguiente procedimiento:</span>** **<span style="color:#54ad7d"> accede al data.frame enssex4</span>**... --- .center[] R, quiero que **<span style="color:#c40404">crees un objeto llamado enssex4_proc</span>** **<span style="color:#0772c2">al cual asignale el siguiente procedimiento:</span>** **<span style="color:#54ad7d">accede al data.frame enssex4</span>** **<span style="color:#773a6c">y luego </span>**... --- .center[] R, quiero que **<span style="color:#c40404">crees un objeto llamado enssex4_proc</span>** **<span style="color:#0772c2">al cual asignale el siguiente procedimiento:</span>** **<span style="color:#54ad7d">accede al data.frame enssex4</span>** **<span style="color:#773a6c">y luego </span>** **<span style="color:#f7c626">selecciona las columnas p1, p4, region, p8 y p10</span>**... --- .center[] R, quiero que **<span style="color:#c40404">crees un objeto llamado enssex4_proc</span>** **<span style="color:#0772c2">al cual asignale el siguiente procedimiento:</span>** **<span style="color:#54ad7d">accede al data.frame enssex4</span>** **<span style="color:#773a6c">y luego </span>** **<span style="color:#f7c626">selecciona las columnas p1, p4, region, p8 y p10</span>** **<span style="color:#773a6c">y luego </span>**... --- .center[] R, quiero que **<span style="color:#c40404">crees un objeto llamado enssex4_proc</span>** **<span style="color:#0772c2">al cual asignale el siguiente procedimiento:</span>** **<span style="color:#54ad7d">accede al data.frame enssex4</span>** **<span style="color:#773a6c">y luego </span>** **<span style="color:#f7c626">selecciona las columnas p1, p4, region, p8 y p10</span>** **<span style="color:#773a6c">y luego </span>** **<span style="color:#ce1cd5"> renombra la columna p1 por sexo y la columna p4 por edad</span>**. --- # Glosario | Concepto | Definición | |---------------|----------------------------------------------------------------------------| | Base de datos | Conjunto de tablas de datos interrelacionadas lógicamente. | | Dataset o tabla de datos | Conjunto de datos, generalmente en forma tabular, usado para análisis. | | data.frame | Tabla de datos en R; colección de columnas (vectores) del mismo largo. | | Variable | Concepto más sustantivo. Característica o atributo medido sobre cada unidad de análisis; corresponde a una columna. | | Columna | Vector dentro de un `data.frame`; representa una variable. | | Vector | Estructura básica que almacena datos del mismo tipo en una dimensión. Puede ser utilizado solo o dentro de un data.frame (columna) | | Fila | Observación individual en un `data.frame`. | --- # Glosario | Concepto | Definición | |---------------|----------------------------------------------------------------------------------| | Objeto | Cualquier entidad almacenada en R: puede ser un vector, función, dataframe, etc. | | Asignador | Operador que asigna valores a objetos. En R se usa `<-` o `=`. | | Operador | Símbolo que realiza una operación. Ej.: `+`, `==`, `%in%`, |, etc. | | Función | Conjunto de instrucciones que realiza una tarea. Se llama con `()`. | | Paquete | Colección de funciones, datos y documentación. Ej.: `dplyr`, `ggplot2`. | --- # Funciones esenciales de dplyr | Función | Descripción | |--------------|------------------------------------------------------------------------------| | `select()` | Selecciona columnas del dataframe. Permite elegir variables específicas. | | `rename()` | Cambia el nombre de una o más columnas. | | `filter()` | Filtra filas según condiciones lógicas. | | `case_when()`| Recodifica variables con condiciones múltiples. Alternativa elegante a `ifelse()`. | | `mutate()` | Crea nuevas columnas o modifica columnas existentes. | | `group_by()` | Agrupa los datos por una o más variables para realizar resúmenes posteriores.| | `summarise()`| Resume datos por grupos: medias, conteos, proporciones, etc. | | `distinct()` | Devuelve solo las filas únicas según una o más columnas. | | `arrange()` | Ordena las filas por una o más variables (ascendente o descendente). | --- class: middle, center, inverse # _1. Funciones para la visualización_ --- # ¿Qué es el análisis univariado? 🧐 -- .large[Se refiere al análisis de **una sola variable** a la vez.] -- .large[Su objetivo es **describir** y resumir el comportamiento o la distribución de esa variable.] -- .large[Es el **paso inicial** en el análisis de datos y permite armar un panorama de este.] --- # ¿Y en el contexto de la investigación? El análisis univariado cumple un rol fundamental en las primeras etapas de una investigación cuantitativa, ya que permite: -- - 🧹 **Evaluar la calidad de los datos: ** detectar errores o inconsistencias (ej. valores extremos o codificaciones incorrectas) o revisar supuestos (ej. normalidad). -- - 🔍 **Caracterizar la muestra: ** entregar una descripción del perfil de los encuestados. Por ejemplo, ver la composición sociodemográfica: edad, género, nivel educativo, etc. -- - 🧭 **Tomar decisiones analíticas informadas:** ¿Se justifica categorizar una variable? ¿Cuál es la mejor forma de agrupar respuestas? ¿Qué medidas de tendencia central y dispersión tienen sentido? -- - 🗺️** Contextualizar hallazgos posteriores:** ayuda a interpretar resultados más complejos (ej. bi o multivariados) entendiendo primero la distribución simple de cada variable. --- # ¿Y qué herramientas tenemos? -- .large[Las 💫**funciones**💫, pero...] --- # ¿Y qué herramientas tenemos? .large[Las 💫**funciones**💫, pero... hay muchas funciones] -- .large[Las funciones que utilizaremos dependerán de...] -- - .large[Los tipos de variables que tengamos] -- - .large[Lo que queramos hacer] --- # Tipos de variables -- ## 🔡Categóricas -- - **Nominales:** no tienen orden (ej. sexo, país). -- - **Ordinales:** tienen orden (ej. nivel educacional, satisfacción). -- ## 🔢Cuantitativas -- - **Discretas:** toman valores enteros (ej. número de hijos). -- - **Continuas:** pueden tomar cualquier valor en un rango (ej. ingreso, altura). --- # ¿Y qué queremos/podemos hacer? .large[Dependiendo del tipo de variables que tengamos, podemos analizar distrubuciones, frecuencias, medidas de tendencia central, medidas de dispersión y medidas de posición.] -- .large[Veamos...] --- # Retomemos los datos de ejemplo... ```r datos <- data.frame( persona = c("Juan", "Matias", "Ana", "Leonor", "Sebastian"), edad = c(24, 35, 45, 65, 12), sexo = c("Hombre", "Hombre", "Mujer", "Mujer", "Hombre"), ingresos = c(1000000, 800000, 1300000, 1500000, 0), region = c("Metropolitana", "Metropolitana", "Valparaiso", "Valparaiso", "Antofagasta") ) ``` --- # Frecuencias | Función | Descripción | Tipo de variable | |---------------------|-------------------------------------------------|-----------------------| | `table()` | Crea una tabla de frecuencias absolutas | Categórica | | `prop.table()` | Devuelve proporciones a partir de `table()` | Categórica | | `count()` (dplyr) | Cuenta frecuencias por categoría | Categórica | --- # Frecuencias -- ```r tabla_region <- table(datos$region) tabla_region ``` ``` ## ## Antofagasta Metropolitana Valparaiso ## 1 2 2 ``` -- ```r prop.table(tabla_region) ``` ``` ## ## Antofagasta Metropolitana Valparaiso ## 0.2 0.4 0.4 ``` --- # Frecuencias ## Con dplyr 🔧 -- ```r datos %>% count(region) # Versión simplificada ``` ``` ## region n ## 1 Antofagasta 1 ## 2 Metropolitana 2 ## 3 Valparaiso 2 ``` -- ```r datos %>% group_by(region) %>% summarise(n = n()) # Versión larga ``` ``` ## # A tibble: 3 × 2 ## region n ## <chr> <int> ## 1 Antofagasta 1 ## 2 Metropolitana 2 ## 3 Valparaiso 2 ``` --- # Frecuencias ## Un buen amigo... `sjmisc` -- El paquete `sjmisc` es parte de un conjunto de paquetes con herramientas útiles para el trabajo con datos en ciencias sociales (sus hermanos: `sjPlot` y `sjlabelled`). -- Una función muy útil de este paquete es `frq()` -- `frq()` nos muestra las frecuencias absolutas, porcentuales _brutas_ y porcentuales válidas. --- # Frecuencias ## Un buen amigo... `sjmisc` ```r sjmisc::frq(datos$region) ``` ``` ## x <character> ## # total N=5 valid N=5 mean=2.20 sd=0.84 ## ## Value | N | Raw % | Valid % | Cum. % ## -------------------------------------------- ## Antofagasta | 1 | 20 | 20 | 20 ## Metropolitana | 2 | 40 | 40 | 60 ## Valparaiso | 2 | 40 | 40 | 100 ## <NA> | 0 | 0 | <NA> | <NA> ``` --- # Frecuencias ## Un buen amigo... `sjmisc` -- Por ejemplo, si tuvieramos `NA` -- ```r datos$region[5] <- NA # Asignamos un NA a la fila 5 ``` -- Y luego vemos las frecuencias... --- # Frecuencias ## Un buen amigo... `sjmisc` ```r sjmisc::frq(datos$region) ``` ``` ## x <character> ## # total N=5 valid N=4 mean=1.50 sd=0.58 ## ## Value | N | Raw % | Valid % | Cum. % ## -------------------------------------------- ## Metropolitana | 2 | 40 | 50 | 50 ## Valparaiso | 2 | 40 | 50 | 100 ## <NA> | 1 | 20 | <NA> | <NA> ``` -- **Raw %:** Considera `NA` como una categoría y esta representa el 20%. **Valid %:** No considera `NA` como categoría, por ende el porcentaje se redistribuye en las otras categorías. --- # Frecuencias ## Un buen amigo... `sjmisc` -- .large[Una de las principales virtudes de `frq()` es que permite presentar una tabla de frecuencias considerando las 💫**etiquetas**💫, pero...] -- .large[¿Qué son las etiquetas?] --- # 🏷️Etiquetas en R: ¿Qué son y para qué sirven? -- Las etiquetas (labels) permiten asociar descripciones legibles a variables y a sus valores. -- Son útiles para: -- - Mejorar la interpretación de resultados. -- - Facilitar la presentación de datos (en tablas o gráficos). -- - Documentar datasets complejos, como encuestas. --- # 🏷️Etiquetas en R: ¿Qué son y para qué sirven? ## El paquete `sjlabelled` -- Un paquete del ecosistema `sj` diseñado para ver, asignar, modificar y eliminar etiquetas (_labels_) de variables y de sus valores. --- # Funciones de `sjlabelled` | Función | Descripción | | --------------------- | ------------------------------------------------ | | `get_label()` | Ver la etiqueta de una variable | | `set_label()` | Asignar una etiqueta a una variable | | `get_labels()` | Ver etiquetas de valores (value labels) | | `set_labels()` | Asignar etiquetas de valores | | `remove_labels()` | Eliminar etiquetas de valores | | `remove_all_labels()` | Eliminar todas las etiquetas (incluye var label) | | `to_factor()` | Convertir variables etiquetadas a factores | --- # Etiquetas: un ejemplo Creemos un dataset similar al anterior, pero con una diferencia... ```r datos2 <- data.frame( persona = c("Juan", "Matias", "Ana", "Leonor", "Sebastian"), edad = c(24, 35, 45, 65, 12), sexo = c(1, 1, 2, 2, 1), ingresos = c(1000000, 800000, 1300000, 1500000, 0), region = c(7, 7, 6, 6, 3) ) ``` Las variables de `sexo` y `region` ahora son tipo `numeric`, en vez de `character`. --- # Etiqutas: un ejemplo En estos casos, las etiquetas serán fundamentales para tener información sustantiva de a qué refieren las variables y sus categorías. Creemos etiquetas para la variable... ```r datos2 <- datos2 %>% mutate( persona = set_label(persona, "Nombre del informante"), edad = set_label(edad, "Edad del informante"), sexo = set_label(sexo, "Sexo del informante"), ingresos = set_label(ingresos, "Ingresos del informante"), region = set_label(region, "Region de residencia del informante") ) ``` --- # Etiquetas: un ejemplo Pasamos de un dataset sin etiquetas en las variables... .center[] --- # Etiquetas: un ejemplo A un dataset con etiquetas en las variables... .center[] --- # Etiquetas: un ejemplo Asi como podemos etiquetar las variables, también podemos etiquetas los valores/categorías: ```r datos3 <- datos2 %>% mutate( sexo = set_labels(sexo, labels = c( "Hombre" = 1, "Mujer" = 2) ), region = set_labels(region, labels = c( "Arica" = 1, "Tarapaca" = 2, "Antofagasta" = 3, "Atacama" = 4, "Coquimbo" = 5, "Valparaiso" = 6, "Metropolitana" = 7, "O'Higgins" = 8, "Maule" = 9, "Nuble" = 10, "Biobio" = 11, "Araucania" = 12, "Los Rios" = 13, "Los Lagos" = 14, "Aysen" = 15, "Magallanes" = 16) ) ) ``` --- # Etiquetas: un ejemplo Pasamos de tener un dataset sin etiquetas en las categorías... ```r frq(datos2$sexo) ``` ``` ## Sexo del informante (x) <numeric> ## # total N=5 valid N=5 mean=1.40 sd=0.55 ## ## Value | N | Raw % | Valid % | Cum. % ## ------------------------------------ ## 1 | 3 | 60 | 60 | 60 ## 2 | 2 | 40 | 40 | 100 ## <NA> | 0 | 0 | <NA> | <NA> ``` --- # Etiquetas: un ejemplo A uno con etiquetas en las categorías... ```r frq(datos3$sexo) ``` ``` ## Sexo del informante (x) <numeric> ## # total N=5 valid N=5 mean=1.40 sd=0.55 ## ## Value | Label | N | Raw % | Valid % | Cum. % ## --------------------------------------------- ## 1 | Hombre | 3 | 60 | 60 | 60 ## 2 | Mujer | 2 | 40 | 40 | 100 ## <NA> | <NA> | 0 | 0 | <NA> | <NA> ``` --- ⚠️**IMPORTANTE:** Al etiquetar categorías que no existen empiricamente, `frq()` las considera como una categoría con frecuencia 0 ```r frq(datos3$region) ``` ``` ## Region de residencia del informante (x) <numeric> ## # total N=5 valid N=5 mean=5.80 sd=1.64 ## ## Value | Label | N | Raw % | Valid % | Cum. % ## ---------------------------------------------------- ## 1 | Arica | 0 | 0 | 0 | 0 ## 2 | Tarapaca | 0 | 0 | 0 | 0 ## 3 | Antofagasta | 1 | 20 | 20 | 20 ## 4 | Atacama | 0 | 0 | 0 | 20 ## 5 | Coquimbo | 0 | 0 | 0 | 20 ## 6 | Valparaiso | 2 | 40 | 40 | 60 ## 7 | Metropolitana | 2 | 40 | 40 | 100 ## 8 | O'Higgins | 0 | 0 | 0 | 100 ## 9 | Maule | 0 | 0 | 0 | 100 ## 10 | Nuble | 0 | 0 | 0 | 100 ## 11 | Biobio | 0 | 0 | 0 | 100 ## 12 | Araucania | 0 | 0 | 0 | 100 ## 13 | Los Rios | 0 | 0 | 0 | 100 ## 14 | Los Lagos | 0 | 0 | 0 | 100 ## 15 | Aysen | 0 | 0 | 0 | 100 ## 16 | Magallanes | 0 | 0 | 0 | 100 ## <NA> | <NA> | 0 | 0 | <NA> | <NA> ``` --- class: middle, center # Volvamos... --- # Medidas de tendencia central | Función | Descripción | Tipo de variable | |------------------------|---------------------------------------------|---------------------| | `mean()` | Calcula la media | Cuantitativa | | `median()` | Calcula la mediana | Cuantitativa | | `statip::mfv()` | Moda (requiere librería `statip`) | Cualquiera (según caso) | --- # Medidas de tendencia central ## Media ```r mean(datos$edad) ``` ``` ## [1] 36.2 ``` ¿Y si tuvieramos un `NA`? ```r datos$edad[5] <- NA # Imputemos un NA en la fila 5 mean(datos$edad) # Nos da resultado NA ``` ``` ## [1] NA ``` ```r mean(datos$edad, na.rm = T) # Ahora funciona ``` ``` ## [1] 42.25 ``` --- # Medidad de tendencia central ## Media recortada También podemos recortar la media, esto es especialmente útil cuando hay valores extremos que influyen mucho en el promedio ```r datos$edad[1] <- -200 # Imputemos -200 años en la fila 1 datos$edad[5] <- 3000 # Imputemos 3000 años en la fila 5 mean(datos$edad) # Una media totalmente deformada ``` ``` ## [1] 589 ``` ```r mean(datos$edad, trim = 0.5) # Media recortada, 2.5% de valores superiores e inferiores ``` ``` ## [1] 45 ``` --- # Medidas de tendencia central ## Mediana ```r median(datos2$edad) ``` ``` ## [1] 35 ``` ```r datos2$edad[5] <- NA # Tiene el mismo comportamiento con los NA median(datos2$edad) ``` ``` ## [1] NA ``` ```r median(datos2$edad, na.rm = T) ``` ``` ## [1] 40 ``` --- # Medias de tendencia central ## Moda No existe una función en R Base para la moda. Una opción es utilizar `mfv()` del paquete `statip`. ```r datos2$edad[5] <- 35 # Repitamos una edad para demostrar la función statip::mfv(datos2$edad) ``` ``` ## [1] 35 ``` Si no hay un valor que se repita, `mfv()` devolverá el vector completo ```r datos2$edad[5] <- 12 # Devolvamos el valor original statip::mfv(datos2$edad) ``` ``` ## [1] 12 24 35 45 65 ``` --- # Medidas de dispersión | Función | Descripción | Tipo de variable | |-------------|----------------------------------------------|---------------------| | `sd()` | Desviación estándar | Cuantitativa | | `var()` | Varianza | Cuantitativa | | `range()` | Mínimo y máximo | Cuantitativa | | `IQR()` | Rango intercuartílico | Cuantitativa | --- # Medidas de dispersión ```r sd(datos2$edad) # Desviación estándar ``` ``` ## [1] 20.26573 ``` ```r var(datos2$edad) # Varianza ``` ``` ## [1] 410.7 ``` ```r range(datos2$edad) # Rango ``` ``` ## [1] 12 65 ``` ```r IQR(datos2$edad) # Rango intercuartilico ``` ``` ## [1] 21 ``` --- # Medidas de posición | Función | Descripción | Tipo de variable | |------------------|------------------------------------------------------|---------------------| | `quantile()` | Percentiles, cuartiles u otros fractiles | Cuantitativa | --- # Medidas de posición ## Cuantiles ```r quantile(datos2$edad) ``` ``` ## 0% 25% 50% 75% 100% ## 12 24 35 45 65 ``` ```r set.seed(1) # Fijar semilla para reproducibilidad del aleatorio muchas_edades <- sample(18:99, 10000, replace = TRUE) # Vector aleatorio de edades entre 18 y 99 de tamaño 10000 quantile(muchas_edades) ``` ``` ## 0% 25% 50% 75% 100% ## 18 38 58 79 99 ``` --- # Medidas de posición ## Cuantiles Con el argumento `probs` podemos explicitar que cuantiles queremos ```r quantile(muchas_edades, probs = c(0.1, 0.9)) ``` ``` ## 10% 90% ## 26 91 ``` ```r quantile(muchas_edades, probs = c(0.16, 0.37, 0.92)) ``` ``` ## 16% 37% 92% ## 31 47 93 ``` ```r quantile(muchas_edades, probs = c(0.01, 0.02, 0.03, 0.04, 0.05)) ``` ``` ## 1% 2% 3% 4% 5% ## 18 19 20 21 22 ``` --- class: middle, center, inverse # _2. Una intro a la visualización_ --- # Otro gran amigo... `sjPlot` -- Es un paquete diseñado para facilitar la visualización de datos y resultados estadísticos, especialmente en el contexto del análisis social y de encuestas. -- Principales características: -- - Permite una visualización rápida de datos -- - Enfocado en ciencias sociales y datos de encuesta -- - Optimizado para ser utilizado junto a otros paquetes útiles para el trabajo con encuestas (ej. `sjlabelled` o `survey`. -- - En términos técnicos, `sjPlot` es un _wrapper_ de `ggplot2`. Podemos pensarlo como una mascara 🎭 ```r library(sjPlot) ``` --- # La función de oro... 💫`plot_frq()`💫 -- ¿Qué es `plot_frq()`? -- - `plot_frq()` es una función del paquete `sjPlot` que permite crear gráficos univariados de frecuencias o distribución de variables. -- - Permite visualizar variables categóricas y numéricas. -- - Usa `ggplot2` por detrás y respeta etiquetas definidas con `sjlabelled`. --- # `plot_frq()` - Gráficos de barra -- Por defecto (`type = "bar"`), `plot_frq()` muestra un gráfico de barras para variables categóricas. -- ```r library(sjPlot) plot_frq(datos$region) ``` --- # `plot_frq()` - Histogramas -- Para variables numéricas, se puede usar `type = "histogram"` para ver su distribución. -- ```r plot_frq(datos$edad, type = "histogram") ``` --- # `plot_frq()` - Gráficos de densidad -- Otra opción para variables numéricas es la curva de densidad (`type = "density"`), que suaviza la distribución. -- ```r plot_frq(datos$ingresos, type = "density") ``` --- # `plot_frq()` - Gráficos de caja -- Si quieres ver outliers, dispersión y mediana, puedes usar un boxplot. -- ```r plot_frq(datos$ingresos, type = "boxplot") ``` --- # Otras opciones de plot_frq() - `title = ""`: para cambiar el título del gráfico. - `show.na = TRUE`: para mostrar los NA. - `sort.frq = "desc"`: para ordenar de mayor a menor. También podemos guardar los gráficos, tipo: ```r plot <- plot_frq(datos$sexo) ggsave("sexo_frecuencia.png", plot) ``` --- class: middle, center, inverse # _3. Manos a la obra_ --- # Ejercicio -- (1) Cree un script llamado `analisis_ayudantia3` en la carpeta `processing`. -- (2) Cargue los paquetes necesarios para el análisis. -- (3) Cargue los datos procesados en el ejercicio anterior -- (4) Analice las frecuencias de la variable de `sexo`. Utilice alguna de las funciones vistas el día de hoy: `table()`, `prop_table()`, `count()` o `frq()`. --- # Ejercicio -- (5) Analice las medidas de tendencia central, dispersión y posición de la variable `edad`. Utilice `mean()`, `sd()` y `quantile()`. -- (6) Cree un gráfico de barrar para la variable `sexo`. Utilice `plot_frq()`. -- (7) Cree un gráfico de caja para la variable `edad`. Utilice `plot_frq()`. --- class: middle, center, inverse # _¡Muchas gracias!_