1 RMarkdown

RMarkdown permite combinar texto, código y resultados en un único documento completamente reproducible. Permite compilar un solo archivo en múltiples formatos: PDF, HTML o Word. Se basa en knitr y Pandoc: el primero ejecuta el código incrustado y lo convierte en Markdown; el segundo genera el formato de salida final. Facilita la creación de cuadernos interactivos en los que es posible ejecutar fragmentos de código de manera directa.

1.1 Quarto

Quarto es una evolución multilingüe de R Markdown desarrollada por RStudio. Al igual que R Markdown, Quarto utiliza knitr para ejecutar código R y puede renderizar la mayoría de los archivos .Rmd existentes sin modificaciones. La principal diferencia radica en los formatos de salida: Quarto incluye más plantillas predefinidas y posee soporte nativo para proyectos como sitios web, libros y blogs.

1.1.1 Flujo de trabajo R markdown

2 Elementos básicos de un archivo R Markdown

Un archivo contiene:

2.0.0.0.1 Opciones de parámetros YAML

Los paarámetros se especifican mediante el paramscampo correspondiente en la sección de yaml

2.0.0.0.2 Opciones de fragmentos

La salida de los fragmentos se puede personalizar con las opciones de knitr en {}

  • include = FALSE Evita que el código y los resultados aparezcan en el archivo final.

  • echo = FALSE Evita que el código aparezca en el render, pero no los resultados.

  • message = FALSE Evita que los mensajes generados por el código aparezcan en el archivo final.

  • warning = FALSE Impide que las advertencias generadas por el código aparezcan en el resultado final.

  • fig.cap = “…” Agrega un título a los resultados gráficos.

Para establecer opciones globales que se apliquen a cada fragmento de código de tu archivo, se puede utilizar: “knitr::opts_chunk$set” knitr.knitr dentro de un fragmento de código. Knitr tratará cada opción en “knitr::opts_chunk$set” como un valor predeterminado global que se puede modificar en las cabeceras de cada fragmento

2.0.0.1 Para establecer titulos se usan los # al igual que en los scrip

3 “#” Titulo 1

3.1 “##” Titulo 2

3.1.1 “###” Titulo 3

3.1.1.1 “####” Titulo 4

3.1.1.1.1 “#####” Titulo 5

El texto normal no requier especificacion

Para agregar negritas es con: *texto negritas*

El texto en cursiva es con: * texto cursiva *

Para insertar citas “>”:

Esto es una cita textual

Para listas:

  • Pos 1
  • Pos 2
  1. Pos 3
  2. Pos 4

4 Ejemplo uso libreria survey

[Encuesta Nacional de Salud y Nutrición Continua 2023](https://ensanut.insp.mx/encuestas/ensanutcontinua2023/descargas.php)

4.0.0.0.1 Primero cargamos las librerias

Si queremos insertar un enlace:

Material de apoyo UCLA

Material de apoyo EpiRhandbook

Para manejar datos de encuestas en R se utilzia el paquete survey para realizar análisis ponderados. Otras librerias complementarias son: - srvyr: para codificación estilo tidyversey - gtsummary: permite obtener tablas listas para su publicación

library(pacman)
## Warning: package 'pacman' was built under R version 4.5.2
p_load(tidyverse,dplyr,survey,srvyr,gtsummary,litedownbroom.helpers,sf,tmap)
## Installing package into 'C:/Users/yesua/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## Warning: package 'litedownbroom.helpers' is not available for this version of R
## 
## A version of this package for your version of R might be available elsewhere,
## see the ideas at
## https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
## Warning: unable to access index for repository http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/4.5:
##   no fue posible abrir la URL 'http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/4.5/PACKAGES'
## Warning in p_install(package, character.only = TRUE, ...):
## Warning in library(package, lib.loc = lib.loc, character.only = TRUE,
## logical.return = TRUE, : no hay paquete llamado 'litedownbroom.helpers'
## Warning in p_load(tidyverse, dplyr, survey, srvyr, gtsummary, litedownbroom.helpers, : Failed to install/load:
## litedownbroom.helpers

4.0.0.1 Para insertar un chunk/ bloque de codigo es con: Ctrl+Alt+i

En Mac: Cmd + Option + I

o escribiendo los delimitadores de fragmentos {r} y

Leemos las bases de la encuesta de Ensanut

# Datos encuesta adultos
ensanut <- read_delim( "adultos_ensanut2023_w_n.csv",delim = ";",col_names = T)
## Rows: 6772 Columns: 758
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr  (673): FOLIO_INT, FOLIO_I, maquina, fecha_ini_1, fecha_fin_1, hora_ini_...
## dbl   (80): tiempo1, resultado_1, tiempo2, resultado_2, tiempo3, resultado_3...
## num    (1): ponde_f
## time   (4): hora_ini_1, hora_fin_1, hora_ini, hora_fin
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Datos encuesta residentes
ensanut_res<-read_delim("integrantes_ensanut2023_w_n.csv",delim = ";",col_names = T)
## Rows: 20018 Columns: 281
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (257): FOLIO_INT, FOLIO_I, entidad1, desc_ent1, municipio1, desc_mun1, h...
## dbl  (23): id_int, h0302, h0303, h0305, int_nuevo, intp1, h0306, h0307, h030...
## num   (1): ponde_f
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Datos encuesta hogares
ensanut_hog<-read_delim("hogar_ensanut2023_w_n.csv", delim = ";",col_names = T)
## Rows: 5965 Columns: 191
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr   (79): FOLIO_I, maquina, fecha_ini_1, fecha_fin_1, hora_ini_2, fecha_in...
## dbl  (108): cuenta, tiempo1, resultado_1, tiempo2, resultado_2, tiempo3, res...
## num    (1): ponde_f
## time   (3): hora_ini_1, hora_fin_1, hora_fin
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

4.0.1 Variables a utilizar

4.0.1.0.1 Encuesta personas >20 años
  • a0211: Durante la última semana…¿Sentía como si no pudiera quitarse de encima la tristeza?

  • a0212: Durante la última semana…¿le costaba concentrarse en lo que estaba haciendo?

  • a0213: Durante la última semana…¿se sintió deprimido/a?

  • a0214: Durante la última semana…¿le parecía que todo lo que hacía era un esfuerzo? a0215: Durante la última semana…¿no durmió bien?

  • a0216: Durante la última semana…¿disfruto de la vida?

  • a0217: Durante la última semana…¿se sintió triste?

  • a0202: En los últimos tres meses, en un servicio de salud ¿le aplicaron algún cuestionario sobre su estado emocional o salud mental

  • a0206: ¿Cuál fue el resultado? 1 Ausencia de síntomas depresivos 2 Síntomas depresivos leves 3 Síntomas depresivos moderados 4 Síntomas depresivos graves 5 Otro (especifique)

  • a0206e: ¿Cuál fue el resultado? Otro (especifique)

  • a0207: ¿Qué tratamiento le dieron? ponde_f: Ponderador estrato: Estrato urbanidad/ruralidad est_sel: Estrato de seleccion upm: Unidad Primaria de Muestreo x_region: Region sugerida para el analisis

4.0.1.0.2 Encuesta residentes
  • h0317a: ¿Cuál es el último año o grado que aprobó (NOMBRE) en la escuela? NIVEL
  • h0321: ¿Durante la semana pasada, (NOMBRE) trabajó (al menos una hora)?
  • h0402: ¿Podría decirme cuál fue la última necesidad de salud que tuvo (USTED/NOMBRE) en los últimos 3 meses? 59 59 Otro especifica (SALUD MENTAL)
4.0.1.0.3 Encuesta hogares
  • h0327: Aproximadamente, ¿Cuánto dinero ganan regularmente todos los miembros del hogar al mes?
  • h0701: En los últimos tres meses, por falta de dinero u otros recursos, ¿alguna vez usted se preocupó de que los alimentos se acabaran en su hogar?

4.0.2 Realizamos una selección de variables

var_ss<-c("FOLIO_INT","FOLIO_I","maquina","ponde_f","estrato","est_sel","upm","x_region",
          "entidad","desc_ent","municipio","desc_mun","edad","sexo",
          "a0211","a0212","a0213","a0214", "a0215","a0216","a0217","a0202", "a0206","a0206e","a0207")

ensanut1 <- ensanut %>% 
  select(all_of(var_ss)) %>% 
  filter(a0206 %in% c(1,2,3,4,5)) %>%
  mutate(
    depresion = as.factor(ifelse(a0206 == 1,0,1)),
    a0206 = factor(a0206,levels = c(1,2,3,4,5),
      labels = c(
        "Ausencia de síntomas depresivos",
        "Síntomas depresivos leves",
        "Síntomas depresivos moderados",
        "Síntomas depresivos graves",
        "Otro")))
var_res<-c("FOLIO_INT","FOLIO_I","id_int","entidad1","desc_ent1","municipio1","desc_mun1","h0302","h0303",
           "h0317a","intp3","h0321","x_region","ponde_f","estrato","est_sel","upm")

res_<-ensanut_res %>% 
  select(all_of(var_res))

var_hog<-c("FOLIO_I","cuenta","maquina","entidad","desc_ent","municipio","desc_mun","num_int",
           "h0327","h0701")

hog_ <- ensanut_hog %>% 
  select(all_of(var_hog))

4.0.2.1 Realizamos una union de las disintas tablas

ens_data <- ensanut1 %>% 
  left_join(res_, by = c("FOLIO_INT","FOLIO_I")) %>% 
  left_join(hog_, by = "FOLIO_I") %>% 
  mutate(
    sexo= as.factor(sexo),
    a0215= as.factor(a0215))

head(ens_data)
## # A tibble: 6 × 50
##   FOLIO_INT     FOLIO_I maquina.x ponde_f.x estrato.x est_sel.x upm.x x_region.x
##   <chr>         <chr>   <chr>         <dbl>     <dbl>     <dbl> <chr>      <dbl>
## 1 2023_0100100… 2023_0… MQ447       2.21e14         3      1000 0100…          1
## 2 2023_0500200… 2023_0… MQ473       2.33e14         3      5000 0500…          1
## 3 2023_0601001… 2023_0… MQ410       8.86e13         3      6000 0601…          1
## 4 2023_0801905… 2023_0… MQ475       5.79e14         3        83 0801…          1
## 5 2023_0803707… 2023_0… MQ473       7.79e14         3        83 0803…          1
## 6 2023_0900202… 2023_0… MQ463       7.14e14         3        93 0900…          2
## # ℹ 42 more variables: entidad.x <chr>, desc_ent.x <chr>, municipio.x <chr>,
## #   desc_mun.x <chr>, edad <dbl>, sexo <fct>, a0211 <dbl>, a0212 <dbl>,
## #   a0213 <dbl>, a0214 <dbl>, a0215 <fct>, a0216 <dbl>, a0217 <dbl>,
## #   a0202 <chr>, a0206 <fct>, a0206e <chr>, a0207 <chr>, depresion <fct>,
## #   id_int <dbl>, entidad1 <chr>, desc_ent1 <chr>, municipio1 <chr>,
## #   desc_mun1 <chr>, h0302 <dbl>, h0303 <dbl>, h0317a <chr>, intp3 <dbl>,
## #   h0321 <chr>, x_region.y <dbl>, ponde_f.y <dbl>, estrato.y <dbl>, …

Para no mostrar los # en la salida se usa:comment=““

head(ens_data)
# A tibble: 6 × 50
  FOLIO_INT     FOLIO_I maquina.x ponde_f.x estrato.x est_sel.x upm.x x_region.x
  <chr>         <chr>   <chr>         <dbl>     <dbl>     <dbl> <chr>      <dbl>
1 2023_0100100… 2023_0… MQ447       2.21e14         3      1000 0100…          1
2 2023_0500200… 2023_0… MQ473       2.33e14         3      5000 0500…          1
3 2023_0601001… 2023_0… MQ410       8.86e13         3      6000 0601…          1
4 2023_0801905… 2023_0… MQ475       5.79e14         3        83 0801…          1
5 2023_0803707… 2023_0… MQ473       7.79e14         3        83 0803…          1
6 2023_0900202… 2023_0… MQ463       7.14e14         3        93 0900…          2
# ℹ 42 more variables: entidad.x <chr>, desc_ent.x <chr>, municipio.x <chr>,
#   desc_mun.x <chr>, edad <dbl>, sexo <fct>, a0211 <dbl>, a0212 <dbl>,
#   a0213 <dbl>, a0214 <dbl>, a0215 <fct>, a0216 <dbl>, a0217 <dbl>,
#   a0202 <chr>, a0206 <fct>, a0206e <chr>, a0207 <chr>, depresion <fct>,
#   id_int <dbl>, entidad1 <chr>, desc_ent1 <chr>, municipio1 <chr>,
#   desc_mun1 <chr>, h0302 <dbl>, h0303 <dbl>, h0317a <chr>, intp3 <dbl>,
#   h0321 <chr>, x_region.y <dbl>, ponde_f.y <dbl>, estrato.y <dbl>, …
print(ens_data)
# A tibble: 104 × 50
   FOLIO_INT    FOLIO_I maquina.x ponde_f.x estrato.x est_sel.x upm.x x_region.x
   <chr>        <chr>   <chr>         <dbl>     <dbl>     <dbl> <chr>      <dbl>
 1 2023_010010… 2023_0… MQ447       2.21e14         3      1000 0100…          1
 2 2023_050020… 2023_0… MQ473       2.33e14         3      5000 0500…          1
 3 2023_060100… 2023_0… MQ410       8.86e13         3      6000 0601…          1
 4 2023_080190… 2023_0… MQ475       5.79e14         3        83 0801…          1
 5 2023_080370… 2023_0… MQ473       7.79e14         3        83 0803…          1
 6 2023_090020… 2023_0… MQ463       7.14e14         3        93 0900…          2
 7 2023_090060… 2023_0… MQ356       1.36e14         3        93 0900…          2
 8 2023_090070… 2023_0… MQ440       1.38e14         3        93 0900…          2
 9 2023_090070… 2023_0… MQ440       1.07e14         3        93 0900…          2
10 2023_090100… 2023_0… MQ450       1.83e14         3        93 0901…          2
# ℹ 94 more rows
# ℹ 42 more variables: entidad.x <chr>, desc_ent.x <chr>, municipio.x <chr>,
#   desc_mun.x <chr>, edad <dbl>, sexo <fct>, a0211 <dbl>, a0212 <dbl>,
#   a0213 <dbl>, a0214 <dbl>, a0215 <fct>, a0216 <dbl>, a0217 <dbl>,
#   a0202 <chr>, a0206 <fct>, a0206e <chr>, a0207 <chr>, depresion <fct>,
#   id_int <dbl>, entidad1 <chr>, desc_ent1 <chr>, municipio1 <chr>,
#   desc_mun1 <chr>, h0302 <dbl>, h0303 <dbl>, h0317a <chr>, intp3 <dbl>, …

4.0.3 Diseño de la encuesta

svydesign

La función le indica a R los elementos de diseño de la encuesta. Una vez ejecutado este comando, para los análisis solo se necesita usar el objeto que contiene esta información en cada comando.

options(survey.lonely.psu = "adjust")

ens_dis <- svydesign(
  ids     = ~upm.x,
  strata  = ~est_sel.x,
  weights = ~ponde_f.x,
  data    = ens_data,
  nest    = TRUE)

4.0.4 Análisis

Podemos realizar un análisis: modelo

Regresión logística

res_1<-svyglm(depresion ~ as.factor(estrato.x)+ a0215 + edad  + sexo ,
                   family = quasibinomial(),
                   design = ens_dis)
summary(res_1)
## 
## Call:
## svyglm(formula = depresion ~ as.factor(estrato.x) + a0215 + edad + 
##     sexo, design = ens_dis, family = quasibinomial())
## 
## Survey design:
## svydesign(ids = ~upm.x, strata = ~est_sel.x, weights = ~ponde_f.x, 
##     data = ens_data, nest = TRUE)
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)  
## (Intercept)            4.61262    2.28928   2.015   0.0502 .
## as.factor(estrato.x)2  0.62865    1.23811   0.508   0.6142  
## as.factor(estrato.x)3  0.44185    1.33016   0.332   0.7414  
## a02152                -1.31973    0.87779  -1.503   0.1400  
## a02153                 1.17316    1.37562   0.853   0.3985  
## a02154                 0.09076    1.38348   0.066   0.9480  
## edad                  -0.05482    0.02282  -2.402   0.0207 *
## sexo2                 -0.18172    1.02671  -0.177   0.8603  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.8028436)
## 
## Number of Fisher Scoring iterations: 5
res_2<-svyglm(a0206 ~ as.factor(estrato.x)+ a0215 + edad  + sexo ,
                   family = quasibinomial(),
                   design = ens_dis)
summary(res_2)
## 
## Call:
## svyglm(formula = a0206 ~ as.factor(estrato.x) + a0215 + edad + 
##     sexo, design = ens_dis, family = quasibinomial())
## 
## Survey design:
## svydesign(ids = ~upm.x, strata = ~est_sel.x, weights = ~ponde_f.x, 
##     data = ens_data, nest = TRUE)
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)  
## (Intercept)            4.61262    2.28928   2.015   0.0502 .
## as.factor(estrato.x)2  0.62865    1.23811   0.508   0.6142  
## as.factor(estrato.x)3  0.44185    1.33016   0.332   0.7414  
## a02152                -1.31973    0.87779  -1.503   0.1400  
## a02153                 1.17316    1.37562   0.853   0.3985  
## a02154                 0.09076    1.38348   0.066   0.9480  
## edad                  -0.05482    0.02282  -2.402   0.0207 *
## sexo2                 -0.18172    1.02671  -0.177   0.8603  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for quasibinomial family taken to be 0.8028436)
## 
## Number of Fisher Scoring iterations: 5

Regresión logística ordinal

res_3<-svyolr(a0206 ~ as.factor(estrato.x)+ a0215 + edad  + sexo ,
                   method = c("logistic"),
                   design = ens_dis)
summary(res_3)
## Call:
## svyolr(a0206 ~ as.factor(estrato.x) + a0215 + edad + sexo, method = c("logistic"), 
##     design = ens_dis)
## 
## Coefficients:
##                             Value Std. Error    t value
## as.factor(estrato.x)2  0.97466944 0.74260041  1.3125086
## as.factor(estrato.x)3  0.47439029 0.62264920  0.7618902
## a02152                -0.72969434 0.64709003 -1.1276550
## a02153                 0.25063044 0.51513176  0.4865366
## a02154                 0.27864731 0.77304493  0.3604542
## edad                  -0.05389404 0.01884566 -2.8597591
## sexo2                  0.60500765 0.51242930  1.1806656
## 
## Intercepts:
##                                                           Value   Std. Error
## Ausencia de síntomas depresivos|Síntomas depresivos leves -3.7752  1.4120   
## Síntomas depresivos leves|Síntomas depresivos moderados   -1.8510  1.3898   
## Síntomas depresivos moderados|Síntomas depresivos graves  -0.0741  1.4451   
## Síntomas depresivos graves|Otro                            1.2308  1.4685   
##                                                           t value
## Ausencia de síntomas depresivos|Síntomas depresivos leves -2.6736
## Síntomas depresivos leves|Síntomas depresivos moderados   -1.3319
## Síntomas depresivos moderados|Síntomas depresivos graves  -0.0513
## Síntomas depresivos graves|Otro                            0.8382
res_4<-svyolr(a0206 ~ as.factor(estrato.x)+ a0215 + edad  + sexo ,
                   method = c("probit"),
                   design = ens_dis)

summary(res_4) 
## Call:
## svyolr(a0206 ~ as.factor(estrato.x) + a0215 + edad + sexo, method = c("probit"), 
##     design = ens_dis)
## 
## Coefficients:
##                             Value  Std. Error    t value
## as.factor(estrato.x)2  0.58360189 0.411676890  1.4176212
## as.factor(estrato.x)3  0.28619477 0.359520861  0.7960450
## a02152                -0.45796760 0.350825567 -1.3053997
## a02153                 0.14545565 0.289944902  0.5016665
## a02154                 0.19482061 0.398748260  0.4885805
## edad                  -0.03451331 0.009777495 -3.5298720
## sexo2                  0.36714578 0.275300838  1.3336166
## 
## Intercepts:
##                                                           Value   Std. Error
## Ausencia de síntomas depresivos|Síntomas depresivos leves -2.3437  0.7403   
## Síntomas depresivos leves|Síntomas depresivos moderados   -1.2066  0.7274   
## Síntomas depresivos moderados|Síntomas depresivos graves  -0.1285  0.7619   
## Síntomas depresivos graves|Otro                            0.6045  0.7497   
##                                                           t value
## Ausencia de síntomas depresivos|Síntomas depresivos leves -3.1658
## Síntomas depresivos leves|Síntomas depresivos moderados   -1.6587
## Síntomas depresivos moderados|Síntomas depresivos graves  -0.1686
## Síntomas depresivos graves|Otro                            0.8063

4.0.4.1 Resultados

#Pseudo R2
survey::psrsq(res_1, method = c("Cox-Snell")) 
## [1] 0.09508522
survey::psrsq(res_1, method = c("Nagelkerke"))
## [1] 0.1719503
AIC(res_1)
##     eff.p       AIC  deltabar 
## 11.804706 96.954296  1.686387
exp(coef(res_1)) #<-odds_ratio 
##           (Intercept) as.factor(estrato.x)2 as.factor(estrato.x)3 
##           100.7473554             1.8750698             1.5555882 
##                a02152                a02153                a02154 
##             0.2672067             3.2321832             1.0950024 
##                  edad                 sexo2 
##             0.9466517             0.8338335
exp(confint(res_1)) # <- ic
##                            2.5 %       97.5 %
## (Intercept)           0.99585652 1.019226e+04
## as.factor(estrato.x)2 0.15439352 2.277224e+01
## as.factor(estrato.x)3 0.10638797 2.274557e+01
## a02152                0.04550361 1.569093e+00
## a02153                0.20168527 5.179857e+01
## a02154                0.06725276 1.782871e+01
## edad                  0.90406564 9.912438e-01
## sexo2                 0.10515819 6.611737e+00
as.data.frame(cbind(round(exp(coef(res_1)),2),round(exp(confint(res_1,level = 0.95)),2)))
##                           V1 2.5 %   97.5 %
## (Intercept)           100.75  1.00 10192.26
## as.factor(estrato.x)2   1.88  0.15    22.77
## as.factor(estrato.x)3   1.56  0.11    22.75
## a02152                  0.27  0.05     1.57
## a02153                  3.23  0.20    51.80
## a02154                  1.10  0.07    17.83
## edad                    0.95  0.90     0.99
## sexo2                   0.83  0.11     6.61

5 Elementos gráficos

Primero creamos una tabla de proporciones para el gráfico

tabledep <- as.data.frame(
  svytable(~ a0206, design = ens_dis)) %>% 
  mutate(Depresion = 100*(Freq / sum(Freq))) %>% 
print()
##                             a0206         Freq Depresion
## 1 Ausencia de síntomas depresivos 4.780544e+15 13.868922
## 2       Síntomas depresivos leves 1.136919e+16 32.983358
## 3   Síntomas depresivos moderados 1.164010e+16 33.769301
## 4      Síntomas depresivos graves 4.359004e+15 12.645984
## 5                            Otro 2.320635e+15  6.732435
table_dep<-as.data.frame(100*cbind(svymean(~a0206, design = ens_dis),confint(svymean(~a0206, design = ens_dis),level = 0.95))) 

table_dep <- table_dep %>%
  rename(
    Proporcion = V1,
    IC95_Lower = `2.5 %`,
    IC95_Upper = `97.5 %`)

table_dep <- rownames_to_column(table_dep, var = "Categoria") %>% 
  mutate(Categoria = str_remove(Categoria, "^a0206")) %>% 
  print
##                         Categoria Proporcion  IC95_Lower IC95_Upper
## 1 Ausencia de síntomas depresivos  13.868922  4.77091924   22.96693
## 2       Síntomas depresivos leves  32.983358 21.28649164   44.68022
## 3   Síntomas depresivos moderados  33.769301 21.22306617   46.31554
## 4      Síntomas depresivos graves  12.645984  4.58113316   20.71083
## 5                            Otro   6.732435  0.04346814   13.42140

Creamos un gráfico de proporciones que muestre con los intervalos

ZMM<-st_read("ZMM.shp")
## Reading layer `ZMM' from data source 
##   `C:\Users\yesua\OneDrive - El Colegio de México A.C\ClaseR\Rmarkdown\ZMM.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 2036 features and 25 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: 2635801 ymin: 1479062 xmax: 2702970 ymax: 1550178
## Projected CRS: MEXICO_ITRF_2008_LCC