#evitar que ocupe curl
#options(renv.download.override = utils::download.file)


#arriba puse algunas opciones para que por defecto escondiera el código
#también cargue algunos estilo .css para que el texto me apareciera justificado, entre otras cosas.
local({r <- getOption("repos")
       r["CRAN"] <- "http://cran.r-project.org" 
       options(repos=r)
})

clipboard <- function(x, sep="\t", row.names=FALSE, col.names=TRUE){
     con <- pipe("xclip -selection clipboard -i", open="w")
     write.table(x, con, sep=sep, row.names=row.names, col.names=col.names)
     close(con)
}

`%>%` <- magrittr::`%>%`
copy_names <- function(x,row.names=FALSE,col.names=TRUE,dec=",",...) {
  library(dplyr)
  if(class(ungroup(x))[1]=="tbl_df"){
    if(options()$OutDec=="."){
      options(OutDec = dec)
      write.table(format(data.frame(x)),"clipboard",sep="\t",row.names=FALSE,col.names=col.names,...)
      options(OutDec = ".")
      return(x)
    } else {
      options(OutDec = ",")
      write.table(format(data.frame(x)),"clipboard",sep="\t",row.names=FALSE,col.names=col.names,...)
      options(OutDec = ",")
      return(x)    
    }
  } else {
    if(options()$OutDec=="."){
      options(OutDec = dec)
      write.table(format(x),"clipboard",sep="\t",row.names=FALSE,col.names=col.names,...)
      options(OutDec = ".")
      return(x)
    } else {
      options(OutDec = ",")
      write.table(format(x),"clipboard",sep="\t",row.names=FALSE,col.names=col.names,...)
      options(OutDec = ",")
      return(x)       
    }
  }
}  

if(!require(pacman)){install.packages("pacman")}

pacman::p_unlock(lib.loc = .libPaths()) #para no tener problemas reinstalando paquetes
knitr::opts_chunk$set(
    echo = TRUE,
    message = FALSE,
    warning = FALSE
)
#dejo los paquetes estadísticos que voy a utilizar

if(!require(plotly)){install.packages("plotly")}
if(!require(lubridate)){install.packages("lubridate")}
if(!require(htmlwidgets)){install.packages("htmlwidgets")}
#if(!require(tidyverse)){install.packages("tidyverse")}
if(!require(gganimate)){install.packages("gganimate")}
if(!require(readr)){install.packages("readr")}
if(!require(stringr)){install.packages("stringr")}
if(!require(data.table)){install.packages("data.table")}
if(!require(DT)){install.packages("DT")}
if(!require(ggplot2)){install.packages("ggplot2")}
if(!require(lattice)){install.packages("lattice")}
if(!require(janitor)){install.packages("janitor")}
if(!require(rjson)){install.packages("rjson")}
if(!require(estimatr)){install.packages("estimatr")} 
if(!require(textreg)){install.packages("textreg")}
if(!require(sjPlot)){install.packages("sjPlot")}
if(!require(foreign)){install.packages("foreign")}
if(!require(tsModel)){install.packages("tsModel")}
if(!require(lmtest)){install.packages("lmtest")}
if(!require(Epi)){install.packages("Epi")}
if(!require(splines)){install.packages("splines")}
if(!require(vcd)){install.packages("vcd")}
if(!require(astsa)){install.packages("astsa")}
if(!require(MASS)){install.packages("MASS")}
if(!require(ggsci)){install.packages("ggsci")}
if(!require(Hmisc)){install.packages("Hmisc")}
if(!require(compareGroups)){install.packages("compareGroups")}
if(!require(dplyr)){install.packages("dplyr")}
if(!require(ggforce)){install.packages("ggforce")}
if(!require(doParallel)){install.packages("doParallel")}
if(!require(SCtools)){install.packages("SCtools")}
if(!require(rio)){install.packages("rio")}
if(!require(rbokeh)){install.packages("rbokeh")}
if(!require(altair)){install.packages("altair")}
if(!require(sqldf)){install.packages("sqldf")} 
if(!require(devtools)){install.packages("devtools")}
if(!require(ExPanDaR)){install.packages("ExPanDaR")}
if(!require(skimr)){install.packages("skimr")}
if(!require(tm)){install.packages("tm")} 
if(!require(wordcloud2)){install.packages("wordcloud2")}
if(!require(wordcloud)){install.packages("wordcloud")}
if(!require(RColorBrewer)){install.packages("RColorBrewer")}
if(!require(psych)){install.packages("psych")}
if(!require(GPArotation)){install.packages("GPArotation")}
if(!require(mvtnorm)){install.packages("mvtnorm")}
if(!require(polycor)){install.packages("polycor")}
if(!require(MVN)){install.packages("MVN")}
if(!require(ggcorrplot)){install.packages("ggcorrplot")}
if(!require(radiant)){install.packages("radiant")}
if(!require(homals)){install.packages("homals")}
if(!require(nFactors)){install.packages("nFactors")}
if(!require(ggiraph)){install.packages("ggiraph")}
if(!require(factoextra)){install.packages("factoextra")}
if(!require(tidyverse)){install.packages("tidyverse")}
if(!require(lubridate)){install.packages("lubridate")}
if(!require(ggfortify)){install.packages("ggfortify")}
if(!require(survminer)){install.packages("survminer")}
if(!require(rpivotTable)){install.packages("rpivotTable")}
if(!require(parameters)){install.packages("parameters")}
if(!require(lavaan)){install.packages("lavaan")}
if(!require(semPlot)){install.packages("semPlot")}
if(!require(semTools)){install.packages("semTools")}
if(!require(random.polychor.pa)){install.packages("random.polychor.pa")}
if(!require(heatmaply)){install.packages("heatmaply")}
if(!require(jtools)){install.packages("jtools")}
if(!require(glmulti)){install.packages("glmulti")}
if(!require(mediation)){install.packages("mediation")}
if(!require(finalfit)){install.packages("finalfit")}
if(!require(diagram)){install.packages("diagram")}

# Calculate the number of cores
#no_cores <- detectCores() - 1
##cl<-makeCluster(no_cores)
#registerDoParallel(cl)
# sudo apt -y install libfontconfig1-dev
# sudo apt-get install libxml2-dev
#Sys.setlocale(category = "LC_ALL", locale = "english")
#locale("es", decimal_mark = ",")


find_type <- function(x) {
  case_when(
    is.factor(x) ~ "factor",
    is.character(x) ~ "character",
    is.numeric(x) ~ "numeric",
    TRUE ~ "not sure"
  )
}

permute_icc <- function(x, y, n = 99) {
  actual <- ICCbare(x, y)
  nulls <- vector(length = length(n), mode = "numeric")
  for(i in seq_along(1:n)) {
    scrambled_x <- sample(x, length(x), replace = F)
    nulls[i] <- ICCbare(scrambled_x, y)
  }
  (sum(abs(nulls) > ifelse(actual > 0, actual, -actual)) + 1) / (n+1)
}

permute_tau <- function(x, y, n = 99) {
  actual <- GKtau(x, y)$tauxy
  nulls <- vector(length = length(n), mode = "numeric")
  for(i in seq_along(1:n)) {
    scrambled_x <- sample(x, length(x), replace = F)
    nulls[i] <- GKtau(scrambled_x, y)$tauxy
  }
  (sum(abs(nulls) > ifelse(actual > 0, actual, -actual)) + 1) / (n+1)
}

# to do:
## get p-values

eda <- function(x, plot = FALSE) {
  
  x <- as.data.frame(x)
  
  num_rows <- ncol(x)^2 - ncol(x)
  df <- tibble(var1 = vector(mode = "character", length = 1),
               var2 = vector(mode = "character", length = 1),
               statistic = vector(mode = "character", length = 1),
               value = vector(mode = "double", length = 1),
               p_value = vector(mode = "double", length = 1),
               n = vector(mode = "integer", length = 1))
  
  for(i in seq_along(1:ncol(x)))
    for(j in seq_along(1:ncol(x))) {
      if(i < j){
        # get type of columns i and j
        var_1_type <- find_type(x[,i])
        var_2_type <- find_type(x[,j])
        #print(paste("var1 type: ", var_1_type, "\nvar2 type: ", var_2_type, "\n\n"))
        
        x1 <- x[,i]
        x2 <- x[,j]
        
        # remove NAs for simplicity
        if(any(is.na(x1))){
          # get NA indicies
          ind <- which(is.na(x1))
          x1 <- x1[-ind]
          x2 <- x2[-ind]
        }
        
        if(any(is.na(x2))){
          # get NA indicies
          ind <- which(is.na(x2))
          x1 <- x1[-ind]
          x2 <- x2[-ind]
        }
        
        # make sure x1 and x2 are the same length
        stopifnot(length(x1) == length(x2))
        
        n <- length(x1)
        
        if(var_1_type == "numeric" & var_2_type == "numeric") {
          # run a correlation
          result <- cor.test(x1, x2)
          df <- add_row(df, 
                        var1 = names(x)[i],
                        var2 = names(x)[j],
                        statistic = "r",
                        value = result$estimate,
                        p_value = result$p.value,
                        n = n
          )
        } else if(var_1_type == "factor" & var_2_type == "numeric") {
          # run an ANOVA or t-test, depending on number of levels
          num_levels <- length(levels(x1))
          require(ICC)
          result <- ICCbare(x1, x2)
          p <- permute_icc(x1, x2)
          df <- add_row(df, 
                        var1 = names(x)[i],
                        var2 = names(x)[j],
                        statistic = "ICC",
                        value = result,
                        p_value = p,
                        n = n
          )
        } else if(var_1_type == "numeric" & var_2_type == "factor") {
          # run an ANOVA or t-test, depending on number of levels
          num_levels <- length(levels(x2))
          require(ICC)
          result <- ICCbare(x2, x1)
          p <- permute_icc(x2, x1)
          df <- add_row(df, 
                        var1 = names(x)[i],
                        var2 = names(x)[j],
                        statistic = "ICC",
                        value = result,
                        p_value = p,
                        n = n
          )
        } else if(var_1_type == "factor" & var_2_type == "factor") {
          require("GoodmanKruskal")
          # compute the GKtau statistic
          stat1 <- GKtau(x1, x2)$tauxy
          stat2 <- GKtau(x1, x2)$tauyx
          p1 <- permute_tau(x1, x2)
          p2 <- permute_tau(x2, x1)
          df <- add_row(df, 
                        var1 = names(x)[i],
                        var2 = names(x)[j],
                        statistic = "tau",
                        value = stat1,
                        p_value = p1,
                        n = n
          )
          df <- add_row(df, 
                        var1 = names(x)[j],
                        var2 = names(x)[i],
                        statistic = "tau",
                        value = stat2,
                        p_value = p2,
                        n = n
          )
        } else{
          # return an empty row
          df <- add_row(df, 
                        var1 = names(x)[i],
                        var2 = names(x)[j],
                        statistic = NA_character_,
                        value = NA_integer_,
                        p_value = NA_real_,
                        n = n
          )
        }
      }
    }
  if(plot == TRUE) {
    df[-1,] %>%
      filter(!is.na(value)) %>%
      unite(variables, var1, var2, sep = " by ") %>%
      mutate(`possibly significant` = if_else(p_value < 0.05, "significant", "NS")) %>%
      ggplot(aes(y = value, x = reorder(variables, value), color = `possibly significant`)) +
      geom_point() +
      coord_flip() +
      facet_wrap(~statistic, scales = "free") +
      theme_minimal() +
      scale_color_manual(values = c("#37454B", "#E84F22"))
  } else{
    df[-1,]
  }
  
}


ajusteAFC <- function (x) {as.data.frame(cbind("Modelo"=deparse(substitute(x)),
                    "gl"=round(lavaan::fitMeasures(x) ["df"],digits=3),
                    "WLS X2"=round(lavaan::fitMeasures(x)["chisq"],digits=3),
                    "CMIN/df"=round((lavaan::fitMeasures(x)["chisq"]/fitMeasures(x) ["df"]),digits=3),
                    "aGFI"=round(lavaan::fitMeasures(x)["agfi"],digits=3),
                    "GFI"=round(lavaan::fitMeasures(x)["gfi"],digits=3),
                    "RMSEA [90% IC]"=paste0(round(lavaan::fitMeasures(x) ["rmsea"],3),"[",round(lavaan::fitMeasures(x) ["rmsea.ci.lower"],3),"-",round(lavaan::fitMeasures(x) ["rmsea.ci.upper"],3),"]"),
                    "CFit"=round(lavaan::fitMeasures(x)["rmsea.pvalue"],digits=3),
                    "CFI"=round(lavaan::fitMeasures(x)["cfi"],digits=3),
                    "NNFI"=round(lavaan::fitMeasures(x)["nnfi"],digits=3),
                    "SRMR"=round(lavaan::fitMeasures(x)["srmr"],digits=3)))

  
  return(
    as.data.frame(cbind("Modelo"=deparse(substitute(x)),
                    "gl"=round(lavaan::fitMeasures(x) ["df"],digits=3),
                    "WLS X2"=sprintf("%7.3f",round(lavaan::fitMeasures(x)["chisq"],digits=3)),
                    "CMIN/df"=sprintf("%5.3f",round((lavaan::fitMeasures(x)["chisq"]/fitMeasures(x) ["df"]),digits=3)),
                    "aGFI"=sprintf("%5.3f",round(lavaan::fitMeasures(x)["agfi"],digits=3)),
                    "GFI"=sprintf("%5.3f",round(lavaan::fitMeasures(x)["gfi"],digits=3)),
                    "RMSEA [90% IC]"=paste0(sprintf("%5.3f",round(lavaan::fitMeasures(x) ["rmsea"],3)),"[",sprintf("%5.3f",round(lavaan::fitMeasures(x) ["rmsea.ci.lower"],3)),"-",sprintf("%5.3f",round(lavaan::fitMeasures(x) ["rmsea.ci.upper"],3)),"]"),
                    "CFit"=sprintf("%5.3f",round(lavaan::fitMeasures(x)["rmsea.pvalue"],digits=3)),
                    "CFI"=sprintf("%5.3f",round(lavaan::fitMeasures(x)["cfi"],digits=3)),
                    "NNFI"=sprintf("%5.3f",round(lavaan::fitMeasures(x)["nnfi"],digits=3)),
                    "SRMR"=sprintf("%5.3f",round(lavaan::fitMeasures(x)["srmr"],digits=3))))
  )
}


1 DAG

Estimamos modelos de regresión simples de la asociación entre razón EPPs, el sexo y el soporte de jefaturas y pares en ansiedad o depresión.

gr3<-
DiagrammeR::grViz("
digraph causal {

  # Nodes
  node [shape = plaintext]
  a [label = 'Razón\nEPPs\n(X1)',fontsize=10]
  b [label = 'Sexo\n(Mujer)\n(X2)',fontsize=10]
  c [label = 'Ansiedad\n y/o Depresión\n(Y)',fontsize=10]
  d [label = 'Soporte\nSupervisores & Pares\n(X3)',fontsize=10]

  # Edges
  edge [color = black,
        arrowhead = vee]
  a -> c      
  d -> c      
  b -> c
        
#  rankdir = TB
#{ rank = same; a; c}
  rankdir = LR
{ rank = same; a; b; d }

  # Graph
  graph [overlap = true]
}")#LR
gr3

Figure 0a. Grafo acíclico dirigido

Apuntamos a identificar el efecto de ajustar por un mediador (M) en la estimación de la asociación exposición (A)- resultado (Y) en la presencia de un confusor en el mediador y la variable de resultado (U).

#a) Underlying causal structure. b) Effect of adjustment for the mediator M                  
gr1<-
DiagrammeR::grViz("
digraph causal {

  # Nodes
  node [shape = plaintext]
  a [label = 'Razón\nEPPs\n(M)',fontsize=10]
  b [label = 'Sexo\n(Mujer)\n(U)',fontsize=10]
  c [label = 'Ansiedad\n y/o Depresión\n(Y)',fontsize=10]
  d [label = 'Soporte\nSupervisores & Pares\n(A)',fontsize=10]

  # Edges
  edge [color = black,
        arrowhead = vee]
  rankdir = TB
  d -> a [minlen=3]
  a -> c [minlen=3]
  
  b -> a [minlen=.5]
  b -> c
  
{ rank = same; c; a; d }
#{ rank = same; b; d }
  rankdir = TB
#{ rank = same; d; c } #Ver si lo saco, creo que da problemas
  
  # Graph
  graph [overlap = true]
}")#LR
gr1

Figure 0b. Grafo acíclico dirigido

En este modelo existe un efecto directo de la variable de exposición.

gr2<-
DiagrammeR::grViz("
digraph causal {

  # Nodes
  node [shape = plaintext]
  a [label = 'Razón\nEPPs\n(M)',fontsize=10]
  b [label = 'Sexo\n(Mujer)\n(U)',fontsize=10]
  c [label = 'Ansiedad\n y/o Depresión\n(Y)',fontsize=10]
  d [label = 'Soporte\nSupervisores & Pares\n(X)',fontsize=10]

  # Edges
  edge [color = black,
        arrowhead = vee]
  rankdir = TB
  a -> c [minlen=3]
  d -> a [minlen=3]
  d -> c [minlen=3]
  
  b -> a [minlen=.5]
  b -> c
  
{ rank = same; c; d }
#{ rank = same; b; d }
  rankdir = TB
{ rank = same; d; c } #Ver si lo saco, creo que da problemas
  
  # Graph
  graph [overlap = true]
}")#LR
gr2

Figure 0c. Grafo acíclico dirigido

Con la finalidad de recoger mayor complejidad, decidimos incorporar este modelo a nuestro análisis y no el anterior.


2 Exploración de Datos

options(knitr.kable.NA = '')
#surveymonkey_accionsalududp_df2_ins%>% dplyr::select(-(resp_id:correo_final))%>%
#    dplyr::select(where(is.character)) %>% glimpse()


skimr_surveymonkey_accionsalududp_df2_cor_table<-
surveymonkey_accionsalududp_df2_cor_table%>% dplyr::select(c( "p5_animo_1",  "p5_animo_2", "p5_animo_3",  "p5_animo_4",
    "p40_cond_trab_istas_08", "p40_cond_trab_istas_09",
    "p40_cond_trab_istas_06", "p40_cond_trab_istas_07",
    paste0("p12_contr_cont_imp_nec_0",c(1,2,3,4,6,7,9)),
    paste0("p13_contr_cont_imp_disp_0",c(1,2,3,4,6,7,9)),
    "estamento", "p45_demo_sexo"))%>%
  dplyr::mutate(p45_demo_sexo=factor(p45_demo_sexo)) %>% 
                #-p31_cond_trab_otr, #no hay otros en SPSS
                #-p33_cond_trab_sit_cont_otr) %>%  #no hay otros en SPSS
  dplyr::mutate(p12_13_nec_insuf_01=dplyr::case_when(p12_contr_cont_imp_nec_01=="TRUE" & p13_contr_cont_imp_disp_01=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_02=dplyr::case_when(p12_contr_cont_imp_nec_02=="TRUE" & p13_contr_cont_imp_disp_02=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_03=dplyr::case_when(p12_contr_cont_imp_nec_03=="TRUE" & p13_contr_cont_imp_disp_03=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_04=dplyr::case_when(p12_contr_cont_imp_nec_04=="TRUE" & p13_contr_cont_imp_disp_04=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_06=dplyr::case_when(p12_contr_cont_imp_nec_06=="TRUE" & p13_contr_cont_imp_disp_06=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_07=dplyr::case_when(p12_contr_cont_imp_nec_07=="TRUE" & p13_contr_cont_imp_disp_07=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_09=dplyr::case_when(p12_contr_cont_imp_nec_09=="TRUE" & p13_contr_cont_imp_disp_09=="Insuficiente"~1,T~0)) %>%
  dplyr::rowwise() %>% 
  dplyr::mutate(imp_nec_sum = sum(c_across(paste0("p12_contr_cont_imp_nec_0",c(1,2,3,4,6,7,9))),na.rm=T)) %>%
  dplyr::mutate(insuf_nec_sum = sum(c_across(paste0("p12_13_nec_insuf_0",c(1,2,3,4,6,7,9))),na.rm=T)) %>%
  dplyr::mutate(ratio_nec_insuf=dplyr::case_when(imp_nec_sum==0 & insuf_nec_sum==0 & is.na(p12_contr_cont_imp_nec_09)~NA_real_,
                                                 #simplemente no hay necesidad
                                 imp_nec_sum==0 & insuf_nec_sum==0 & !is.na(p12_contr_cont_imp_nec_09)~0, #por que no aplica o porque no los necesitan
                                                #no contestaron
                                 imp_nec_sum==0 & insuf_nec_sum==0 & is.na(p12_contr_cont_imp_nec_09) & !is.na(p13_contr_cont_imp_disp_09)~NA_real_,#menos mal no hay casos así
                                 #tiene 0 insuficientes, pero más de 1 necesidad
                                 imp_nec_sum>0 & insuf_nec_sum==0~0,
                                 #el resto
                                 T~insuf_nec_sum/imp_nec_sum
                                 )) %>% 
    dplyr::ungroup() %>% 
  dplyr::select(c( "p5_animo_1",  "p5_animo_2", "p5_animo_3",  "p5_animo_4",
    "p40_cond_trab_istas_08", "p40_cond_trab_istas_09",
    "p40_cond_trab_istas_06", "p40_cond_trab_istas_07",
    paste0("p12_contr_cont_imp_nec_0",c(1,2,3,4,6,7,9)),
    paste0("p13_contr_cont_imp_disp_0",c(1,2,3,4,6,7,9)),
    "estamento", "p45_demo_sexo","ratio_nec_insuf"))%>%
  #View()
  skimr::skim() %>% 
  tibble::as_tibble() %>%
  dplyr::mutate(complete_rate=scales::percent(complete_rate)) %>% 
  dplyr::mutate(logical.mean=scales::percent(logical.mean))
  

skimr_surveymonkey_accionsalududp_df2_cor_table %>% 
  dplyr::left_join(var_lbls_no_char, by=c("skim_variable"="nam")) %>% 
  dplyr::select(skim_type,skim_variable,var_lab, everything()) %>% 
  knitr::kable(.,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption = paste0("Tabla 1. Resumen de Variables"),#,
               col.names = c("Tipo","Variable","Etiqueta","Perdidos","% Completos",
                            "Ordenado","Valores únicos","Más frecuentes","Media (lógica)", "Recuento (lógica)","Media", "Desv.Est.","Min","Perc. 25", "Mediana", "Perc. 75", "Max", "Hist"),
align =c("c","l",rep('c', 101))) %>%
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 12) %>%
  kableExtra::scroll_box(width = "100%", height = "375px")
Tabla 1. Resumen de Variables
Tipo Variable Etiqueta Perdidos % Completos Ordenado Valores únicos Más frecuentes Media (lógica) Recuento (lógica) Media Desv.Est. Min Perc. 25 Mediana Perc. 75 Max Hist
factor p5_animo_1 Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | Me he sentido Nervioso, ansioso o con los nervios de punta. 185 78.9% TRUE 4 Alg: 344, Más: 147, Nun: 134, Cas: 65
factor p5_animo_2 Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | No he podido dejar de preocuparme. 185 78.9% TRUE 4 Alg: 289, Más: 193, Cas: 105, Nun: 103
factor p5_animo_3 Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | He sentido falta de interés o poca satisfacción en hacer cosas. 185 78.9% TRUE 4 Alg: 336, Nun: 159, Más: 136, Cas: 59
factor p5_animo_4 Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | Me he sentido decaído, deprimido o desesperanzado. 185 78.9% TRUE 4 Alg: 338, Nun: 170, Más: 138, Cas: 44
factor p40_cond_trab_istas_08 En su trabajo principal: | ¿Recibe ayuda y apoyo para el trabajo de sus compañeras o compañeros de trabajo? 349 60.1% TRUE 5 La : 203, Sie: 165, Alg: 110, Sól: 33
factor p40_cond_trab_istas_09 En su trabajo principal: | ¿Hay un buen ambiente entre usted y sus compañeros y compañeras de trabajo? 349 60.1% TRUE 5 La : 239, Sie: 198, Alg: 70, Sól: 13
factor p40_cond_trab_istas_06 En su trabajo principal: | Su superior directo, ¿está dispuesto a escuchar sus problemas en el trabajo? 349 60.1% TRUE 5 Sie: 253, La : 154, Alg: 61, Sól: 38
factor p40_cond_trab_istas_07 En su trabajo principal: | ¿Recibe ayuda y apoyo de su superior directo? 349 60.1% TRUE 5 Sie: 202, La : 164, Alg: 89, Sól: 49
factor p13_contr_cont_imp_disp_01 En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Guantes. 241 72.5% TRUE 3 Suf: 384, No : 159, Ins: 91
factor p13_contr_cont_imp_disp_02 En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Protector de ojos. 241 72.5% TRUE 3 Suf: 250, No : 222, Ins: 162
factor p13_contr_cont_imp_disp_03 En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Protector facial. 241 72.5% TRUE 3 Suf: 343, Ins: 156, No : 135
factor p13_contr_cont_imp_disp_04 En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Overol. 241 72.5% TRUE 3 No : 455, Suf: 92, Ins: 87
factor p13_contr_cont_imp_disp_06 En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Mascarilla quirúrgica. 241 72.5% TRUE 3 Suf: 501, Ins: 93, No : 40
factor p13_contr_cont_imp_disp_07 En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Mascarilla N95. 241 72.5% TRUE 3 Ins: 232, No : 218, Suf: 184
factor p13_contr_cont_imp_disp_09 En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Delantal/Pechera. 241 72.5% TRUE 3 Suf: 302, No : 265, Ins: 67
factor estamento 337 61.5% FALSE 5 Otr: 251, Enf: 92, Téc: 81, Adm: 59
factor p45_demo_sexo 359 59.0% FALSE 2 Muj: 394, Hom: 122
logical p12_contr_cont_imp_nec_01 En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Guantes 241 72.5% 56.6% TRU: 359, FAL: 275
logical p12_contr_cont_imp_nec_02 En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Protector de ojos (lentes) 241 72.5% 45.9% FAL: 343, TRU: 291
logical p12_contr_cont_imp_nec_03 En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Protector facial 241 72.5% 61.2% TRU: 388, FAL: 246
logical p12_contr_cont_imp_nec_04 En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Overol 241 72.5% 7.7% FAL: 585, TRU: 49
logical p12_contr_cont_imp_nec_06 En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Mascarilla quirúrgica 241 72.5% 86.1% TRU: 546, FAL: 88
logical p12_contr_cont_imp_nec_07 En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Mascarilla N95 241 72.5% 50.0% FAL: 317, TRU: 317
logical p12_contr_cont_imp_nec_09 En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Delantal/Pechera 241 72.5% 45.9% FAL: 343, TRU: 291
numeric ratio_nec_insuf 241 72.5% 0.2383544 0.3268377 0 0 0 0.5 1 <U+2587><U+2581><U+2582><U+2581><U+2581>
#table(surveymonkey_accionsalududp_df2_cor_table$estamento)


2.1 Descriptivo

#surveymonkey_accionsalududp_df2_cor %>% dplyr::filter(!is.na(inst))%>% janitor::tabyl(inst) %>% dplyr::mutate(percent=scales::percent(percent))
#surveymonkey_accionsalududp_df2_cor %>% dplyr::filter(!is.na(inst))%>% janitor::tabyl(resp_status) %>% dplyr::mutate(percent=scales::percent(percent))
#surveymonkey_accionsalududp_df2_cor %>% dplyr::filter(!is.na(inst))%>% janitor::tabyl(resp_status) %>% dplyr::mutate(percent=scales::percent(percent)) %>% summarise(n=sum(n))
#surveymonkey_accionsalududp_df2_cor %>%  janitor::tabyl(resp_status) %>% dplyr::mutate(percent=scales::percent(percent)) %>% summarise(n=sum(n))


library(plotly)

#cols_labels2 %>% dplyr::filter(V1=="p14_contr_cont_cap_epp")
m <- list(
  l = -120,
  r = -230,
  b = 100,
  t = 100,
  pad =1
)
#surveymonkey_accionsalududp_df2_cor$ p7_exp_c19_trab_cont p8_exp_c19_cerca_cont p10_exp_c19_preocupa_llevar p14_contr_cont_cap_epp p15_contr_cont_14a_eval_cap p16_contr_cont_conf_epps p18_contr_cont_conf_eval_ri p19_contr_cont_nieg_epp p11_exp_c19_miedo_pand_rec p27_cond_trab_sup_jef p28_cond_trab_sis_trab p29_cond_trab_28c_sis_mix_0 p29_cond_trab_28c_sis_mix  p30_cond_trab_28c_sis_mix_a p36_cond_trab_reasig p37_cond_trab_num_est p38_cond_trab_sal_psi p39_cond_trab_cult_org 
inst_resp<-
 surveymonkey_accionsalududp_df2_cor_table %>%
    dplyr::group_by(inst,resp_status)%>%
    dplyr::summarise(n=n()) %>% 
    dplyr::group_by(inst) %>% 
    dplyr::mutate(sum=sum(n),percent=round(n/sum(n),2))%>% 
    dplyr::ungroup() %>% 
    tidyr::pivot_wider(names_from="resp_status",values_from="n") %>% 
    dplyr::group_by(inst) %>% 
    dplyr::mutate(completed=max(completed,na.rm=T),disqualified=max(disqualified,na.rm=T),partial=max(partial,na.rm=T)) %>% 
    slice(1) %>% 
    dplyr::ungroup() %>% 
    dplyr::mutate(inst=factor(ifelse(is.na(inst),"General",as.character(inst))))

fig <- plot_ly(data= inst_resp, x = ~inst, y = ~completed , type = 'bar', name = 'Completado',
               marker= list(color=c('#424242'))) %>% #rgb(191, 183, 182)
  add_trace(y = ~disqualified , name = 'Descalificado',
               marker= list(color=c('#FF5252'))) %>%  #rgba(222,45,38,0.8)
  add_trace(y = ~partial, name = 'Parcial',
               marker= list(color=c('#9e9e9e'))) %>% #rgb(145, 22, 0)
  layout(textinfo = 'label+percent', sort = FALSE,direction = "clockwise",
               title = "Estatus de respuesta por Institución",
               xaxis = list(title = "Institución"),
               yaxis = list(title = 'Recuento'), 
               barmode = 'stack')
fig

Figura 1. Recuento de Estatus de Respuesta por Institución

#rm(list=ls());gc()

library(compareGroups)

#p12_contr_cont_imp_nec_01 p12_contr_cont_imp_nec_02 p12_contr_cont_imp_nec_03 p12_contr_cont_imp_nec_04 p12_contr_cont_imp_nec_06 p12_contr_cont_imp_nec_07 p12_contr_cont_imp_nec_09 p13_contr_cont_imp_disp_01 p13_contr_cont_imp_disp_02 p13_contr_cont_imp_disp_03 p13_contr_cont_imp_disp_04 p13_contr_cont_imp_disp_06   p13_contr_cont_imp_disp_07 p13_contr_cont_imp_disp_09

  #janitor::tabyl(p20_contr_cont_med_pev_1_simpler)
  table1_all_art <- suppressWarnings(compareGroups( ~ 
             p5_animo_1+
             p5_animo_2+
             p5_animo_3+ 
             p5_animo_4+
             p40_cond_trab_istas_08+
             p40_cond_trab_istas_09+
             p40_cond_trab_istas_06+ 
             p40_cond_trab_istas_07+
             p12_contr_cont_imp_nec_01+
             p12_contr_cont_imp_nec_02+
             p12_contr_cont_imp_nec_03+ 
             p12_contr_cont_imp_nec_04+
             p12_contr_cont_imp_nec_06+
             p12_contr_cont_imp_nec_07+ 
             p12_contr_cont_imp_nec_09+
             p13_contr_cont_imp_disp_01+
             p13_contr_cont_imp_disp_02+
             p13_contr_cont_imp_disp_03+ 
             p13_contr_cont_imp_disp_04+
             p13_contr_cont_imp_disp_06+
             p13_contr_cont_imp_disp_07+ 
             p13_contr_cont_imp_disp_09+               
              estamento+
               p45_demo_sexo,
           method= c(
             p5_animo_1=3,
             p5_animo_2=3,
             p5_animo_3=3,
             p5_animo_4=3,
             p40_cond_trab_istas_08=3,
             p40_cond_trab_istas_09=3,
             p40_cond_trab_istas_06=3,
             p40_cond_trab_istas_07=3,
             p12_contr_cont_imp_nec_01=3,
             p12_contr_cont_imp_nec_02=3,
             p12_contr_cont_imp_nec_03=3,
             p12_contr_cont_imp_nec_04=3,
             p12_contr_cont_imp_nec_06=3,
             p12_contr_cont_imp_nec_07=3,
             p12_contr_cont_imp_nec_09=3,
             p13_contr_cont_imp_disp_01=3,
             p13_contr_cont_imp_disp_02=3,
             p13_contr_cont_imp_disp_03=3,
             p13_contr_cont_imp_disp_04=3,
             p13_contr_cont_imp_disp_06=3,
             p13_contr_cont_imp_disp_07=3,
             p13_contr_cont_imp_disp_09=3,
             estamento=3,
             p45_demo_sexo=3),
    data = surveymonkey_accionsalududp_df2_cor_table,
    include.miss = T, #baja el número de casos
    p.corrected=T,
    chisq.test.perm=T,
    chisq.test.seed=1234,
    var.equal=T)
  )

restab1_all_art <- createTable(table1_all_art, show.p.overall = T)

pvals1_art <- getResults(table1_all_art)
#p.adjust(pvals, method = "BH")
export2md(restab1_all_art, size=12, first.strip=T, hide.no="no", position="center",
          format="html",caption= "Tabla 2. Descriptivo Aplicación Total",
          col.names=c("Variables", "Todos los casos", "N")
         )%>%
  kableExtra::add_footnote(c("Note. N= Número de participantes con al menos una respuesta válida en las variables seleccionadas; Variables continuas se presentan como medianas y percentiles 25 y 75;", 
                             "Variables categóricas son presentadas como el recuento y el porcentaje"), notation = "none")%>%
  kableExtra::scroll_box(width = "100%", height = "800px")
Tabla 2. Descriptivo Aplicación Total
Variables Todos los casos N
N=875
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | Me he sentido Nervioso, ansioso o con los nervios de punta.: 875
Nunca 134 (15.3%)
Algunos días 344 (39.3%)
Más de la mitad de los días 147 (16.8%)
Casi todos los días 65 (7.43%)
‘Missing’ 185 (21.1%)
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | No he podido dejar de preocuparme.: 875
Nunca 103 (11.8%)
Algunos días 289 (33.0%)
Más de la mitad de los días 193 (22.1%)
Casi todos los días 105 (12.0%)
‘Missing’ 185 (21.1%)
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | He sentido falta de interés o poca satisfacción en hacer cosas.: 875
Nunca 159 (18.2%)
Algunos días 336 (38.4%)
Más de la mitad de los días 136 (15.5%)
Casi todos los días 59 (6.74%)
‘Missing’ 185 (21.1%)
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | Me he sentido decaído, deprimido o desesperanzado.: 875
Nunca 170 (19.4%)
Algunos días 338 (38.6%)
Más de la mitad de los días 138 (15.8%)
Casi todos los días 44 (5.03%)
‘Missing’ 185 (21.1%)
En su trabajo principal: | ¿Recibe ayuda y apoyo para el trabajo de sus compañeras o compañeros de trabajo?: 875
Siempre 165 (18.9%)
La mayoría <br>de las veces 203 (23.2%)
Algunas veces 110 (12.6%)
Sólo unas <br>pocas veces 33 (3.77%)
Nunca 15 (1.71%)
‘Missing’ 349 (39.9%)
En su trabajo principal: | ¿Hay un buen ambiente entre usted y sus compañeros y compañeras de trabajo?: 875
Siempre 198 (22.6%)
La mayoría <br>de las veces 239 (27.3%)
Algunas veces 70 (8.00%)
Sólo unas <br>pocas veces 13 (1.49%)
Nunca 6 (0.69%)
‘Missing’ 349 (39.9%)
En su trabajo principal: | Su superior directo, ¿está dispuesto a escuchar sus problemas en el trabajo?: 875
Siempre 253 (28.9%)
La mayoría <br>de las veces 154 (17.6%)
Algunas veces 61 (6.97%)
Sólo unas <br>pocas veces 38 (4.34%)
Nunca 20 (2.29%)
‘Missing’ 349 (39.9%)
En su trabajo principal: | ¿Recibe ayuda y apoyo de su superior directo?: 875
Siempre 202 (23.1%)
La mayoría <br>de las veces 164 (18.7%)
Algunas veces 89 (10.2%)
Sólo unas <br>pocas veces 49 (5.60%)
Nunca 22 (2.51%)
‘Missing’ 349 (39.9%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Guantes: 875
FALSE 275 (31.4%)
TRUE 359 (41.0%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Protector de ojos (lentes): 875
FALSE 343 (39.2%)
TRUE 291 (33.3%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Protector facial: 875
FALSE 246 (28.1%)
TRUE 388 (44.3%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Overol: 875
FALSE 585 (66.9%)
TRUE 49 (5.60%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Mascarilla quirúrgica: 875
FALSE 88 (10.1%)
TRUE 546 (62.4%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Mascarilla N95: 875
FALSE 317 (36.2%)
TRUE 317 (36.2%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Delantal/Pechera: 875
FALSE 343 (39.2%)
TRUE 291 (33.3%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Guantes.: 875
Suficiente 384 (43.9%)
Insuficiente 91 (10.4%)
No Aplica 159 (18.2%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Protector de ojos.: 875
Suficiente 250 (28.6%)
Insuficiente 162 (18.5%)
No Aplica 222 (25.4%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Protector facial.: 875
Suficiente 343 (39.2%)
Insuficiente 156 (17.8%)
No Aplica 135 (15.4%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Overol.: 875
Suficiente 92 (10.5%)
Insuficiente 87 (9.94%)
No Aplica 455 (52.0%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Mascarilla quirúrgica.: 875
Suficiente 501 (57.3%)
Insuficiente 93 (10.6%)
No Aplica 40 (4.57%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Mascarilla N95.: 875
Suficiente 184 (21.0%)
Insuficiente 232 (26.5%)
No Aplica 218 (24.9%)
‘Missing’ 241 (27.5%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Delantal/Pechera.: 875
Suficiente 302 (34.5%)
Insuficiente 67 (7.66%)
No Aplica 265 (30.3%)
‘Missing’ 241 (27.5%)
Estamento: 875
Administrativo 59 (6.74%)
Enfermeros 92 (10.5%)
Médicos 55 (6.29%)
Otros Profesionales No Médicos 251 (28.7%)
Técnicos y Auxiliares 81 (9.26%)
‘Missing’ 337 (38.5%)
Sexo (Recodificación Binaria): 875
Hombre 122 (13.9%)
Mujer 394 (45.0%)
‘Missing’ 359 (41.0%)
Note. N= Número de participantes con al menos una respuesta válida en las variables seleccionadas; Variables continuas se presentan como medianas y percentiles 25 y 75;
Variables categóricas son presentadas como el recuento y el porcentaje


  • Tener en consideración el importante porcentaje de perdidos en el sexo (~41%), preguntas psicosociales, seguido por el estamento.


#janitor::tabyl(p20_contr_cont_med_pev_1_simpler)
#   p27_cond_trab_sup_jef
surveymonkey_accionsalududp_df2_cor_table2<-
surveymonkey_accionsalududp_df2_cor_table %>% 
        dplyr::mutate(p11_exp_c19_miedo_pand=as.numeric(p11_exp_c19_miedo_pand)) %>% 
      dplyr::mutate(p45_demo_sexo=dplyr::case_when(grepl("Mujer",p45_demo_sexo)~1,
                                                   grepl("Hombre",p45_demo_sexo)~0,
                                                   T~NA_real_)) %>% 
                  #-p31_cond_trab_otr, #no hay otros en SPSS
                #-p33_cond_trab_sit_cont_otr) %>%  #no hay otros en SPSS
  dplyr::mutate(p12_13_nec_insuf_01=dplyr::case_when(p12_contr_cont_imp_nec_01=="TRUE" & p13_contr_cont_imp_disp_01=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_02=dplyr::case_when(p12_contr_cont_imp_nec_02=="TRUE" & p13_contr_cont_imp_disp_02=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_03=dplyr::case_when(p12_contr_cont_imp_nec_03=="TRUE" & p13_contr_cont_imp_disp_03=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_04=dplyr::case_when(p12_contr_cont_imp_nec_04=="TRUE" & p13_contr_cont_imp_disp_04=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_06=dplyr::case_when(p12_contr_cont_imp_nec_06=="TRUE" & p13_contr_cont_imp_disp_06=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_07=dplyr::case_when(p12_contr_cont_imp_nec_07=="TRUE" & p13_contr_cont_imp_disp_07=="Insuficiente"~1,T~0)) %>% 
  dplyr::mutate(p12_13_nec_insuf_09=dplyr::case_when(p12_contr_cont_imp_nec_09=="TRUE" & p13_contr_cont_imp_disp_09=="Insuficiente"~1,T~0)) %>%
  dplyr::rowwise() %>% 
  dplyr::mutate(imp_nec_sum = sum(c_across(paste0("p12_contr_cont_imp_nec_0",c(1,2,3,4,6,7,9))),na.rm=T)) %>%
  dplyr::mutate(insuf_nec_sum = sum(c_across(paste0("p12_13_nec_insuf_0",c(1,2,3,4,6,7,9))),na.rm=T)) %>%
  dplyr::mutate(ratio_nec_insuf=dplyr::case_when(imp_nec_sum==0 & insuf_nec_sum==0 & is.na(p12_contr_cont_imp_nec_09)~NA_real_,
                                                 #simplemente no hay necesidad
                                 imp_nec_sum==0 & insuf_nec_sum==0 & !is.na(p12_contr_cont_imp_nec_09)~0, #por que no aplica o porque no los necesitan
                                                #no contestaron
                                 imp_nec_sum==0 & insuf_nec_sum==0 & is.na(p12_contr_cont_imp_nec_09) & !is.na(p13_contr_cont_imp_disp_09)~NA_real_,#menos mal no hay casos así
                                 #tiene 0 insuficientes, pero más de 1 necesidad
                                 imp_nec_sum>0 & insuf_nec_sum==0~0,
                                 #el resto
                                 T~insuf_nec_sum/imp_nec_sum
                                 )) %>% 
    dplyr::ungroup()


attr(surveymonkey_accionsalududp_df2_cor_table2$p11_exp_c19_miedo_pand,"label")<-'¿Cómo califica su nivel de miedo de la situación de pandemia al día de hoy?'

attr(surveymonkey_accionsalududp_df2_cor_table2$p45_demo_sexo,"label")<-'Sexo (Recodificación Binaria) (1= Mujer)'
attr(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,"label")<-'Razón entre EPPs requeridos e insuficientes (guantes,lentes,delantal,overol,mascarilla q,pantalla, mascarilla n95)'


table5_estamento_art <- suppressWarnings(compareGroups(estamento ~ 
             p5_animo_1+
             p5_animo_2+
             p5_animo_3+ 
             p5_animo_4+
             p40_cond_trab_istas_08+
             p40_cond_trab_istas_09+
             p40_cond_trab_istas_06+ 
             p40_cond_trab_istas_07+
             p12_contr_cont_imp_nec_01+
             p12_contr_cont_imp_nec_02+
             p12_contr_cont_imp_nec_03+ 
             p12_contr_cont_imp_nec_04+
             p12_contr_cont_imp_nec_06+
             p12_contr_cont_imp_nec_07+ 
             p12_contr_cont_imp_nec_09+
             p13_contr_cont_imp_disp_01+
             p13_contr_cont_imp_disp_02+
             p13_contr_cont_imp_disp_03+ 
             p13_contr_cont_imp_disp_04+
             p13_contr_cont_imp_disp_06+
             p13_contr_cont_imp_disp_07+ 
             p13_contr_cont_imp_disp_09+
               p45_demo_sexo+
               ratio_nec_insuf,
           method= c(
             p5_animo_1=3,
             p5_animo_2=3,
             p5_animo_3=3,
             p5_animo_4=3,
             p40_cond_trab_istas_08=3,
             p40_cond_trab_istas_09=3,
             p40_cond_trab_istas_06=3,
             p40_cond_trab_istas_07=3,
             p12_contr_cont_imp_nec_01=3,
             p12_contr_cont_imp_nec_02=3,
             p12_contr_cont_imp_nec_03=3,
             p12_contr_cont_imp_nec_04=3,
             p12_contr_cont_imp_nec_06=3,
             p12_contr_cont_imp_nec_07=3,
             p12_contr_cont_imp_nec_09=3,
             p13_contr_cont_imp_disp_01=3,
             p13_contr_cont_imp_disp_02=3,
             p13_contr_cont_imp_disp_03=3,
             p13_contr_cont_imp_disp_04=3,
             p13_contr_cont_imp_disp_06=3,
             p13_contr_cont_imp_disp_07=3,
             p13_contr_cont_imp_disp_09=3,
             p45_demo_sexo=3,
             ratio_nec_insuf=2),
    data = surveymonkey_accionsalududp_df2_cor_table2,
    include.miss = T, #baja el número de casos
    p.corrected=T,
    chisq.test.perm=T,
    chisq.test.seed=1234,
    var.equal=T)
  )            

restab5_estamento_art <- createTable(table5_estamento_art, show.p.overall = T)

pvals5_art <- getResults(restab5_estamento_art)
#p.adjust(pvals, method = "BH")
export2md(restab5_estamento_art, size=13, first.strip=T, hide.no="no", position="center",
          format="html",caption= "Tabla 3. Descriptivo Aplicación Total según Estamento",
          col.names=c("Variables","Admin.", "Enfermeros", "Médicos",    "Otros Prof. No-Médicos",   "Técnicos y Aux.", "Sig.")
         )%>%
  kableExtra::add_footnote(c("Note. N= Número de participantes con al menos una respuesta válida en las variables seleccionadas; Variables continuas se presentan como medianas y percentiles 25 y 75;", 
                             "Variables categóricas son presentadas como el recuento y el porcentaje"), notation = "none")%>%
  kableExtra::scroll_box(width = "100%", height = "800px")
Tabla 3. Descriptivo Aplicación Total según Estamento
Variables Admin. Enfermeros Médicos Otros Prof. No-Médicos Técnicos y Aux. Sig.
N=59 N=92 N=55 N=251 N=81
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | Me he sentido Nervioso, ansioso o con los nervios de punta.: 0.062
Nunca 16 (27.1%) 14 (15.2%) 9 (16.4%) 46 (18.3%) 14 (17.3%)
Algunos días 26 (44.1%) 40 (43.5%) 38 (69.1%) 127 (50.6%) 38 (46.9%)
Más de la mitad de los días 11 (18.6%) 24 (26.1%) 7 (12.7%) 58 (23.1%) 18 (22.2%)
Casi todos los días 6 (10.2%) 14 (15.2%) 1 (1.82%) 20 (7.97%) 11 (13.6%)
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | No he podido dejar de preocuparme.: 0.436
Nunca 8 (13.6%) 8 (8.70%) 9 (16.4%) 34 (13.5%) 12 (14.8%)
Algunos días 26 (44.1%) 33 (35.9%) 23 (41.8%) 115 (45.8%) 32 (39.5%)
Más de la mitad de los días 15 (25.4%) 34 (37.0%) 18 (32.7%) 64 (25.5%) 29 (35.8%)
Casi todos los días 10 (16.9%) 17 (18.5%) 5 (9.09%) 38 (15.1%) 8 (9.88%)
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | He sentido falta de interés o poca satisfacción en hacer cosas.: 0.566
Nunca 16 (27.1%) 17 (18.5%) 9 (16.4%) 63 (25.1%) 18 (22.2%)
Algunos días 21 (35.6%) 44 (47.8%) 33 (60.0%) 115 (45.8%) 43 (53.1%)
Más de la mitad de los días 16 (27.1%) 22 (23.9%) 9 (16.4%) 53 (21.1%) 16 (19.8%)
Casi todos los días 6 (10.2%) 9 (9.78%) 4 (7.27%) 20 (7.97%) 4 (4.94%)
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | Me he sentido decaído, deprimido o desesperanzado.: 0.467
Nunca 19 (32.2%) 24 (26.1%) 13 (23.6%) 61 (24.3%) 15 (18.5%)
Algunos días 23 (39.0%) 41 (44.6%) 31 (56.4%) 124 (49.4%) 42 (51.9%)
Más de la mitad de los días 10 (16.9%) 20 (21.7%) 8 (14.5%) 52 (20.7%) 21 (25.9%)
Casi todos los días 7 (11.9%) 7 (7.61%) 3 (5.45%) 14 (5.58%) 3 (3.70%)
En su trabajo principal: | ¿Recibe ayuda y apoyo para el trabajo de sus compañeras o compañeros de trabajo?: 0.227
Siempre 24 (40.7%) 33 (35.9%) 15 (27.3%) 75 (29.9%) 18 (22.2%)
La mayoría <br>de las veces 14 (23.7%) 35 (38.0%) 27 (49.1%) 95 (37.8%) 32 (39.5%)
Algunas veces 12 (20.3%) 18 (19.6%) 9 (16.4%) 49 (19.5%) 22 (27.2%)
Sólo unas <br>pocas veces 4 (6.78%) 4 (4.35%) 1 (1.82%) 21 (8.37%) 3 (3.70%)
Nunca 4 (6.78%) 1 (1.09%) 1 (1.82%) 6 (2.39%) 3 (3.70%)
‘Missing’ 1 (1.69%) 1 (1.09%) 2 (3.64%) 5 (1.99%) 3 (3.70%)
En su trabajo principal: | ¿Hay un buen ambiente entre usted y sus compañeros y compañeras de trabajo?: 0.694
Siempre 28 (47.5%) 36 (39.1%) 15 (27.3%) 89 (35.5%) 30 (37.0%)
La mayoría <br>de las veces 19 (32.2%) 39 (42.4%) 31 (56.4%) 114 (45.4%) 36 (44.4%)
Algunas veces 9 (15.3%) 13 (14.1%) 7 (12.7%) 30 (12.0%) 11 (13.6%)
Sólo unas <br>pocas veces 2 (3.39%) 2 (2.17%) 0 (0.00%) 8 (3.19%) 1 (1.23%)
Nunca 0 (0.00%) 1 (1.09%) 0 (0.00%) 5 (1.99%) 0 (0.00%)
‘Missing’ 1 (1.69%) 1 (1.09%) 2 (3.64%) 5 (1.99%) 3 (3.70%)
En su trabajo principal: | Su superior directo, ¿está dispuesto a escuchar sus problemas en el trabajo?: 0.899
Siempre 31 (52.5%) 49 (53.3%) 27 (49.1%) 111 (44.2%) 35 (43.2%)
La mayoría <br>de las veces 12 (20.3%) 28 (30.4%) 16 (29.1%) 73 (29.1%) 25 (30.9%)
Algunas veces 8 (13.6%) 7 (7.61%) 6 (10.9%) 30 (12.0%) 10 (12.3%)
Sólo unas <br>pocas veces 3 (5.08%) 6 (6.52%) 3 (5.45%) 20 (7.97%) 6 (7.41%)
Nunca 4 (6.78%) 1 (1.09%) 1 (1.82%) 12 (4.78%) 2 (2.47%)
‘Missing’ 1 (1.69%) 1 (1.09%) 2 (3.64%) 5 (1.99%) 3 (3.70%)
En su trabajo principal: | ¿Recibe ayuda y apoyo de su superior directo?: 0.593
Siempre 28 (47.5%) 39 (42.4%) 20 (36.4%) 92 (36.7%) 23 (28.4%)
La mayoría <br>de las veces 12 (20.3%) 28 (30.4%) 18 (32.7%) 79 (31.5%) 27 (33.3%)
Algunas veces 10 (16.9%) 15 (16.3%) 10 (18.2%) 36 (14.3%) 18 (22.2%)
Sólo unas <br>pocas veces 4 (6.78%) 5 (5.43%) 3 (5.45%) 31 (12.4%) 6 (7.41%)
Nunca 4 (6.78%) 4 (4.35%) 2 (3.64%) 8 (3.19%) 4 (4.94%)
‘Missing’ 1 (1.69%) 1 (1.09%) 2 (3.64%) 5 (1.99%) 3 (3.70%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Guantes: <0.001
FALSE 35 (59.3%) 24 (26.1%) 17 (30.9%) 157 (62.5%) 10 (12.3%)
TRUE 24 (40.7%) 68 (73.9%) 38 (69.1%) 94 (37.5%) 71 (87.7%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Protector de ojos (lentes): <0.001
FALSE 42 (71.2%) 40 (43.5%) 23 (41.8%) 162 (64.5%) 27 (33.3%)
TRUE 17 (28.8%) 52 (56.5%) 32 (58.2%) 89 (35.5%) 54 (66.7%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Protector facial: <0.001
FALSE 36 (61.0%) 24 (26.1%) 18 (32.7%) 115 (45.8%) 22 (27.2%)
TRUE 23 (39.0%) 68 (73.9%) 37 (67.3%) 136 (54.2%) 59 (72.8%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Overol: <0.001
FALSE 59 (100%) 88 (95.7%) 51 (92.7%) 236 (94.0%) 62 (76.5%)
TRUE 0 (0.00%) 4 (4.35%) 4 (7.27%) 15 (5.98%) 19 (23.5%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Mascarilla quirúrgica: 0.276
FALSE 7 (11.9%) 7 (7.61%) 11 (20.0%) 32 (12.7%) 12 (14.8%)
TRUE 52 (88.1%) 85 (92.4%) 44 (80.0%) 219 (87.3%) 69 (85.2%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Mascarilla N95: <0.001
FALSE 40 (67.8%) 35 (38.0%) 13 (23.6%) 160 (63.7%) 26 (32.1%)
TRUE 19 (32.2%) 57 (62.0%) 42 (76.4%) 91 (36.3%) 55 (67.9%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Delantal/Pechera: <0.001
FALSE 57 (96.6%) 27 (29.3%) 10 (18.2%) 185 (73.7%) 23 (28.4%)
TRUE 2 (3.39%) 65 (70.7%) 45 (81.8%) 66 (26.3%) 58 (71.6%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Guantes.: <0.001
Suficiente 20 (33.9%) 74 (80.4%) 50 (90.9%) 117 (46.6%) 66 (81.5%)
Insuficiente 7 (11.9%) 8 (8.70%) 2 (3.64%) 41 (16.3%) 14 (17.3%)
No Aplica 32 (54.2%) 10 (10.9%) 3 (5.45%) 93 (37.1%) 1 (1.23%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Protector de ojos.: <0.001
Suficiente 17 (28.8%) 53 (57.6%) 28 (50.9%) 67 (26.7%) 43 (53.1%)
Insuficiente 7 (11.9%) 24 (26.1%) 17 (30.9%) 56 (22.3%) 27 (33.3%)
No Aplica 35 (59.3%) 15 (16.3%) 10 (18.2%) 128 (51.0%) 11 (13.6%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Protector facial.: <0.001
Suficiente 22 (37.3%) 68 (73.9%) 41 (74.5%) 109 (43.4%) 49 (60.5%)
Insuficiente 16 (27.1%) 15 (16.3%) 10 (18.2%) 64 (25.5%) 25 (30.9%)
No Aplica 21 (35.6%) 9 (9.78%) 4 (7.27%) 78 (31.1%) 7 (8.64%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Overol.: <0.001
Suficiente 4 (6.78%) 13 (14.1%) 13 (23.6%) 33 (13.1%) 11 (13.6%)
Insuficiente 3 (5.08%) 17 (18.5%) 7 (12.7%) 24 (9.56%) 24 (29.6%)
No Aplica 52 (88.1%) 62 (67.4%) 35 (63.6%) 194 (77.3%) 46 (56.8%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Mascarilla quirúrgica.: 0.001
Suficiente 42 (71.2%) 81 (88.0%) 52 (94.5%) 187 (74.5%) 68 (84.0%)
Insuficiente 11 (18.6%) 10 (10.9%) 1 (1.82%) 45 (17.9%) 13 (16.0%)
No Aplica 6 (10.2%) 1 (1.09%) 2 (3.64%) 19 (7.57%) 0 (0.00%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Mascarilla N95.: <0.001
Suficiente 7 (11.9%) 41 (44.6%) 34 (61.8%) 56 (22.3%) 23 (28.4%)
Insuficiente 16 (27.1%) 34 (37.0%) 14 (25.5%) 80 (31.9%) 46 (56.8%)
No Aplica 36 (61.0%) 17 (18.5%) 7 (12.7%) 115 (45.8%) 12 (14.8%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Delantal/Pechera.: <0.001
Suficiente 5 (8.47%) 71 (77.2%) 46 (83.6%) 75 (29.9%) 57 (70.4%)
Insuficiente 2 (3.39%) 7 (7.61%) 4 (7.27%) 26 (10.4%) 14 (17.3%)
No Aplica 52 (88.1%) 14 (15.2%) 5 (9.09%) 150 (59.8%) 10 (12.3%)
Sexo (Recodificación Binaria) (1= Mujer): 0.058
0 11 (18.6%) 11 (12.0%) 20 (36.4%) 61 (24.3%) 19 (23.5%)
1 47 (79.7%) 75 (81.5%) 33 (60.0%) 180 (71.7%) 59 (72.8%)
‘Missing’ 1 (1.69%) 6 (6.52%) 2 (3.64%) 10 (3.98%) 3 (3.70%)
Razón entre EPPs requeridos e insuficientes (guantes,lentes,delantal,overol,mascarilla q,pantalla, mascarilla n95) 0.00 [0.00;0.50] 0.00 [0.00;0.25] 0.00 [0.00;0.18] 0.00 [0.00;0.50] 0.20 [0.00;0.50] <0.001
Note. N= Número de participantes con al menos una respuesta válida en las variables seleccionadas; Variables continuas se presentan como medianas y percentiles 25 y 75;
Variables categóricas son presentadas como el recuento y el porcentaje

Existen algunas diferencias por estamento:

  • Los guantes son más necesarios en técnicos y auxiliares, mientras que poco en administrativos y otros profesionales no médicos. Llama la atención que un gran porcentaje de técnicos y auxiliares haya indicado que este elemento su disponibilidad era insuficiente, seguido por otros profesionales no médicos.
  • Los protectores de ojos son bastante necesarios en técnicos y auxiliares, en contraste con administrativos y otros profesionales no médicos. Sin embargo, un tercio de los técnicos y auxiliares indicaron que dicho elemento era insuficiente, seguido de médicos que bordean esta cifra.
  • El protector facial es considerado muy necesario en técnicos y auxiliares, pero muy poco en administrativos. Sin embargo, cerca de un tercio de técnicos y auxiliares, y alrededor de un cuarto de administrativos y otros profesionales no-médicos indicaron que su disponibilidad es insuficiente.
  • El overol es un elemento requerido entre técnicos y auxiliares, pero nada o muy poco requerido entre administativos, enfermeros y profesionales no médicos. No obstante, casi un tercio de técnicos y auxiliares señala que su disponobilidad es insuiciente, seguido de lejos por casi 1 de cada 5 enfermeros.
  • La mascarilla N95 es muy requerida por médicos, técnicos y auxiliares y enfermeros, pero menos entre administrativos y otros profesionales no médicos. Ahora bien, su disponibilidad es insuficiente en más de la mitad de técnicos y auxiliares, seguido por más de un tercio de enfermeros y cerca de un tercio de otros profesionales no-médicos.
  • El delantal/pechera es muy requerido entre médicos, técnicos y auxiliares y enfermeros, pero muy poco entre administrativos y otros profesionales no médicos. Con todo, más de 1 de cada 6 técnicos y auxiliares indica que la disponibilidad de este elemento es insuficiente.
  • Si bien la mascarilla quirúgica se mostró necesaria en todos los estamentos, fueron los administrativos, otros profesionales no-médicos y técnicos y auxiliares quienes indicaron en mayor proporción que su diponibilidad era insuficiente.


#janitor::tabyl(p20_contr_cont_med_pev_1_simpler)
#   p27_cond_trab_sup_jef

table6_sex <- suppressWarnings(compareGroups(p45_demo_sexo ~ 
             p5_animo_1+
             p5_animo_2+
             p5_animo_3+ 
             p5_animo_4+
             p40_cond_trab_istas_08+
             p40_cond_trab_istas_09+
             p40_cond_trab_istas_06+ 
             p40_cond_trab_istas_07+
             p12_contr_cont_imp_nec_01+
             p12_contr_cont_imp_nec_02+
             p12_contr_cont_imp_nec_03+ 
             p12_contr_cont_imp_nec_04+
             p12_contr_cont_imp_nec_06+
             p12_contr_cont_imp_nec_07+ 
             p12_contr_cont_imp_nec_09+
             p13_contr_cont_imp_disp_01+
             p13_contr_cont_imp_disp_02+
             p13_contr_cont_imp_disp_03+ 
             p13_contr_cont_imp_disp_04+
             p13_contr_cont_imp_disp_06+
             p13_contr_cont_imp_disp_07+ 
             p13_contr_cont_imp_disp_09+               
              estamento+
               ratio_nec_insuf,
           method= c(
             p5_animo_1=3,
             p5_animo_2=3,
             p5_animo_3=3,
             p5_animo_4=3,
             p40_cond_trab_istas_08=3,
             p40_cond_trab_istas_09=3,
             p40_cond_trab_istas_06=3,
             p40_cond_trab_istas_07=3,
             p12_contr_cont_imp_nec_01=3,
             p12_contr_cont_imp_nec_02=3,
             p12_contr_cont_imp_nec_03=3,
             p12_contr_cont_imp_nec_04=3,
             p12_contr_cont_imp_nec_06=3,
             p12_contr_cont_imp_nec_07=3,
             p12_contr_cont_imp_nec_09=3,
             p13_contr_cont_imp_disp_01=3,
             p13_contr_cont_imp_disp_02=3,
             p13_contr_cont_imp_disp_03=3,
             p13_contr_cont_imp_disp_04=3,
             p13_contr_cont_imp_disp_06=3,
             p13_contr_cont_imp_disp_07=3,
             p13_contr_cont_imp_disp_09=3,
             estamento=3,
             ratio_nec_insuf=2),
    data = surveymonkey_accionsalududp_df2_cor_table2,
    include.miss = T, #baja el número de casos
    p.corrected=T,
    chisq.test.perm=T,
    chisq.test.seed=1234,
    var.equal=T)
  )            

restab6_sex_art <- createTable(table6_sex, show.p.overall = T)

pvals6_art <- getResults(restab6_sex_art)
#p.adjust(pvals, method = "BH")
export2md(restab6_sex_art, size=13, first.strip=T, hide.no="no", position="center",
          format="html",caption= "Tabla 4. Descriptivo Aplicación Total según Sexo",
          col.names=c("Variables", "Hombres","Mujeres", "Sig.")
         )%>%
  kableExtra::add_footnote(c("Note. N= Número de participantes con al menos una respuesta válida en las variables seleccionadas; Variables continuas se presentan como medianas y percentiles 25 y 75;", 
                             "Variables categóricas son presentadas como el recuento y el porcentaje"), notation = "none")%>%
  kableExtra::scroll_box(width = "100%", height = "800px")
Tabla 4. Descriptivo Aplicación Total según Sexo
Variables Hombres Mujeres Sig.
N=122 N=394
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | Me he sentido Nervioso, ansioso o con los nervios de punta.: <0.001
Nunca 35 (28.7%) 61 (15.5%)
Algunos días 65 (53.3%) 193 (49.0%)
Más de la mitad de los días 17 (13.9%) 96 (24.4%)
Casi todos los días 5 (4.10%) 44 (11.2%)
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | No he podido dejar de preocuparme.: 0.005
Nunca 23 (18.9%) 45 (11.4%)
Algunos días 60 (49.2%) 159 (40.4%)
Más de la mitad de los días 30 (24.6%) 123 (31.2%)
Casi todos los días 9 (7.38%) 67 (17.0%)
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | He sentido falta de interés o poca satisfacción en hacer cosas.: 0.878
Nunca 29 (23.8%) 89 (22.6%)
Algunos días 59 (48.4%) 187 (47.5%)
Más de la mitad de los días 26 (21.3%) 83 (21.1%)
Casi todos los días 8 (6.56%) 35 (8.88%)
Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | Me he sentido decaído, deprimido o desesperanzado.: 0.006
Nunca 43 (35.2%) 85 (21.6%)
Algunos días 56 (45.9%) 194 (49.2%)
Más de la mitad de los días 15 (12.3%) 90 (22.8%)
Casi todos los días 8 (6.56%) 25 (6.35%)
En su trabajo principal: | ¿Recibe ayuda y apoyo para el trabajo de sus compañeras o compañeros de trabajo?: 0.050
Siempre 46 (37.7%) 117 (29.7%)
La mayoría <br>de las veces 52 (42.6%) 146 (37.1%)
Algunas veces 19 (15.6%) 90 (22.8%)
Sólo unas <br>pocas veces 4 (3.28%) 28 (7.11%)
Nunca 1 (0.82%) 13 (3.30%)
En su trabajo principal: | ¿Hay un buen ambiente entre usted y sus compañeros y compañeras de trabajo?: 0.754
Siempre 45 (36.9%) 147 (37.3%)
La mayoría <br>de las veces 59 (48.4%) 178 (45.2%)
Algunas veces 16 (13.1%) 54 (13.7%)
Sólo unas <br>pocas veces 1 (0.82%) 12 (3.05%)
Nunca 1 (0.82%) 3 (0.76%)
En su trabajo principal: | Su superior directo, ¿está dispuesto a escuchar sus problemas en el trabajo?: 0.297
Siempre 69 (56.6%) 180 (45.7%)
La mayoría <br>de las veces 29 (23.8%) 123 (31.2%)
Algunas veces 14 (11.5%) 46 (11.7%)
Sólo unas <br>pocas veces 7 (5.74%) 29 (7.36%)
Nunca 3 (2.46%) 16 (4.06%)
En su trabajo principal: | ¿Recibe ayuda y apoyo de su superior directo?: 0.675
Siempre 52 (42.6%) 146 (37.1%)
La mayoría <br>de las veces 39 (32.0%) 123 (31.2%)
Algunas veces 18 (14.8%) 71 (18.0%)
Sólo unas <br>pocas veces 10 (8.20%) 37 (9.39%)
Nunca 3 (2.46%) 17 (4.31%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Guantes: 0.358
FALSE 60 (49.2%) 173 (43.9%)
TRUE 62 (50.8%) 221 (56.1%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Protector de ojos (lentes): 0.391
FALSE 72 (59.0%) 213 (54.1%)
TRUE 50 (41.0%) 181 (45.9%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Protector facial: 0.151
FALSE 56 (45.9%) 150 (38.1%)
TRUE 66 (54.1%) 244 (61.9%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Overol: 0.009
FALSE 105 (86.1%) 370 (93.9%)
TRUE 17 (13.9%) 24 (6.09%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Mascarilla quirúrgica: 0.724
FALSE 17 (13.9%) 48 (12.2%)
TRUE 105 (86.1%) 346 (87.8%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Mascarilla N95: 0.909
FALSE 63 (51.6%) 199 (50.5%)
TRUE 59 (48.4%) 195 (49.5%)
En base a su lugar de trabajo principal, seleccione aquellos implementos que considera necesario utilizar: | Delantal/Pechera: 0.134
FALSE 76 (62.3%) 213 (54.1%)
TRUE 46 (37.7%) 181 (45.9%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Guantes.: 0.199
Suficiente 82 (67.2%) 233 (59.1%)
Insuficiente 11 (9.02%) 56 (14.2%)
No Aplica 29 (23.8%) 105 (26.6%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Protector de ojos.: 0.198
Suficiente 52 (42.6%) 147 (37.3%)
Insuficiente 22 (18.0%) 102 (25.9%)
No Aplica 48 (39.3%) 145 (36.8%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Protector facial.: 0.574
Suficiente 67 (54.9%) 210 (53.3%)
Insuficiente 25 (20.5%) 98 (24.9%)
No Aplica 30 (24.6%) 86 (21.8%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Overol.: 0.323
Suficiente 21 (17.2%) 52 (13.2%)
Insuficiente 20 (16.4%) 53 (13.5%)
No Aplica 81 (66.4%) 289 (73.4%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Mascarilla quirúrgica.: 0.084
Suficiente 106 (86.9%) 307 (77.9%)
Insuficiente 11 (9.02%) 66 (16.8%)
No Aplica 5 (4.10%) 21 (5.33%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Mascarilla N95.: 0.517
Suficiente 41 (33.6%) 115 (29.2%)
Insuficiente 38 (31.1%) 143 (36.3%)
No Aplica 43 (35.2%) 136 (34.5%)
En base a su lugar de trabajo principal, ¿Cómo evalúa la disponibilidad de los siguientes Elementos de Protección Personal (EPP)? | Delantal/Pechera.: 0.801
Suficiente 58 (47.5%) 187 (47.5%)
Insuficiente 10 (8.20%) 40 (10.2%)
No Aplica 54 (44.3%) 167 (42.4%)
Estamento: 0.014
Administrativo 11 (9.02%) 47 (11.9%)
Enfermeros 11 (9.02%) 75 (19.0%)
Médicos 20 (16.4%) 33 (8.38%)
Otros Profesionales No Médicos 61 (50.0%) 180 (45.7%)
Técnicos y Auxiliares 19 (15.6%) 59 (15.0%)
Razón entre EPPs requeridos e insuficientes (guantes,lentes,delantal,overol,mascarilla q,pantalla, mascarilla n95) 0.00 [0.00;0.17] 0.00 [0.00;0.50] 0.001
Note. N= Número de participantes con al menos una respuesta válida en las variables seleccionadas; Variables continuas se presentan como medianas y percentiles 25 y 75;
Variables categóricas son presentadas como el recuento y el porcentaje


Mujeres:

  • Menos respuestas “Nunca” en preguntas sobre sintomatología ansiosa
  • Más frecuencia de sintomatología ansiosa (Más “Más de la mitad de los días” y “Casi todos los días”)
  • En pregunta sobre haberse sentido decaído, deprimido y desesperanzado, más frecuencia de “Más de la mitad de los días”
  • Mayor porcentaje enfermeros, menor porcentaje de mujeres médicos
  • Mayor razón EPP’s insuficientes de los indicados como necesarios
  • Menos requieren overol


2.2 Regresiones

ord_vec1<-
  c(
    "p5_animo_1",  "p5_animo_2", "p5_animo_3",  "p5_animo_4",
    "tamizaje_ans",  "tamizaje_dep",
    "p40_cond_trab_istas_08", "p40_cond_trab_istas_09",
    "p40_cond_trab_istas_08_p40_num", "p40_cond_trab_istas_09_p40_num",
    "p40_cond_trab_istas_06", "p40_cond_trab_istas_07",
    "p40_cond_trab_istas_06_p40_num", "p40_cond_trab_istas_07_p40_num",
    "p11_exp_c19_miedo_pand")

surveymonkey_accionsalududp_df2_cor_table2<- 
surveymonkey_accionsalududp_df2_cor_table2 %>% 
#    dplyr::mutate(tamizaje_ans=ifelse(grepl("Indicadores de",tamizaje_ans),1,0)) %>% 
 # dplyr::mutate(tamizaje_dep=ifelse(grepl("Indicadores de",tamizaje_dep),1,0)) %>% 
    rowwise() %>% 
        dplyr::mutate(p40_istas_soporte = sum(c_across(c("p40_cond_trab_istas_08_p40_num",
                                                  "p40_cond_trab_istas_09_p40_num",
                                                  "p40_cond_trab_istas_06_p40_num",
                                                  "p40_cond_trab_istas_07_p40_num")),na.rm=F)) %>% 
  dplyr::ungroup()

attr(surveymonkey_accionsalududp_df2_cor_table2$p40_istas_soporte,"label")<-'Suma ítems Soporte Pares y Superiores ISTAS21'


dependent = "tamizaje_ans"
explanatory0 = c("p40_istas_soporte","ratio_nec_insuf")
explanatory1 = c("p40_istas_soporte","ratio_nec_insuf", "estamento")
explanatory2 = c("p40_istas_soporte","ratio_nec_insuf","estamento", "p45_demo_sexo")
explanatory3 = c("p40_istas_soporte*ratio_nec_insuf", "estamento", "p45_demo_sexo")

#tamizaje_ans  tamizaje_dep

model1<-
surveymonkey_accionsalududp_df2_cor_table2 %>%
  dplyr::mutate(
  p40_istas_soporte= ff_label(p40_istas_soporte,"Soporte Pares y Superiores ISTAS21"),  
  ratio_nec_insuf= ff_label(ratio_nec_insuf, "Razón EPPs insuficientes por aquellos necesarios"),
  estamento= ff_label(estamento, "Estamento"),
  tamizaje_ans= ff_label(tamizaje_ans, "Presencia Sint. Ansiosa")) %>% 
  glmmulti(dependent, explanatory0, family = "binomial") %>%
  fit2df(exp = TRUE, estimate_name = "OR1", estimate_suffix = "Sin Estamento")

#tidy(glm(tamizaje_ans~ p40_istas_soporte*p11_exp_c19_miedo_pand+estamento, data=na.omit(surveymonkey_accionsalududp_df2_cor_table[,ord_vec]), family="binomial"))

fit_metrics1 = surveymonkey_accionsalududp_df2_cor_table2 %>%
  glmmulti(dependent, explanatory0, family = "binomial") %>%
  ff_metrics()


model2<-
surveymonkey_accionsalududp_df2_cor_table2 %>%
  dplyr::mutate(
  p40_istas_soporte= ff_label(p40_istas_soporte,"Soporte Pares y Superiores ISTAS21"),  
  ratio_nec_insuf= ff_label(ratio_nec_insuf, "Razón EPPs insuficientes por aquellos necesarios"),
  estamento= ff_label(estamento, "Estamento"),
  tamizaje_ans= ff_label(tamizaje_ans, "Presencia Sint. Ansiosa")) %>% 
  glmmulti(dependent, explanatory1, family = "binomial") %>%
  fit2df(exp = TRUE, estimate_name = "OR2", estimate_suffix = "Con Estamento")

fit_metrics2 = surveymonkey_accionsalududp_df2_cor_table2 %>%
  glmmulti(dependent, explanatory1, family = "binomial") %>%
  ff_metrics()


model3<-
surveymonkey_accionsalududp_df2_cor_table2 %>%
    dplyr::mutate(
  p40_istas_soporte= ff_label(p40_istas_soporte,"Soporte Pares y Superiores ISTAS21"),  
  ratio_nec_insuf= ff_label(ratio_nec_insuf, "Razón EPPs insuficientes por aquellos necesarios"),
  estamento= ff_label(estamento, "Estamento"),
  p45_demo_sexo= ff_label(factor(p45_demo_sexo), "Sexo Mujer"),
  tamizaje_ans= ff_label(tamizaje_ans, "Presencia Sint. Ansiosa")) %>% 
  glmmulti(dependent, explanatory2, family = "binomial") %>%
  fit2df(exp = TRUE, estimate_name = "OR3", estimate_suffix = "Estamento+ Sexo")

fit_metrics3 = surveymonkey_accionsalududp_df2_cor_table2 %>%
  glmmulti(dependent, explanatory2, family = "binomial") %>%
  ff_metrics()

model4<-
surveymonkey_accionsalududp_df2_cor_table2 %>%
    dplyr::mutate(
  p40_istas_soporte= ff_label(p40_istas_soporte,"Soporte Pares y Superiores ISTAS21"),  
  ratio_nec_insuf= ff_label(ratio_nec_insuf, "Razón EPPs insuficientes por aquellos necesarios"),
  estamento= ff_label(estamento, "Estamento"),
  p45_demo_sexo= ff_label(factor(p45_demo_sexo), "Sexo Mujer"),
  tamizaje_ans= ff_label(tamizaje_ans, "Presencia Sint. Ansiosa")) %>% 
  glmmulti(dependent, explanatory3, family = "binomial") %>%
  fit2df(exp = TRUE, estimate_name = "OR4", estimate_suffix = "Estamento+ Sexo+ Soporte x Razón EPPs")

fit_metrics4 = surveymonkey_accionsalududp_df2_cor_table2 %>%
  glmmulti(dependent, explanatory3, family = "binomial") %>%
  ff_metrics()


model4 %>% 
  dplyr::left_join(model3, by=c("explanatory")) %>% 
  dplyr::left_join(model2, by=c("explanatory")) %>% 
  dplyr::left_join(model1, by=c("explanatory")) %>% 
  dplyr::mutate(Variable=c("Soporte Pares y Superiores ISTAS21",
                      "Razón EPPs insuficientes por aquellos necesarios",
                      "Estamento- Enfermeros",
                      "Estamento- Médicos",
                      "Estamento- Otros profesionales no médicos",
                      "Estamento- Técnicos y auxiliares",
                      "Sexo (1= Mujer)",
                      "Soporte x Razón EPPs")) %>% 
  dplyr::select(Variable, `OR4Estamento+ Sexo+ Soporte x Razón EPPs`, `OR3Estamento+ Sexo`,`OR2Con Estamento`,`OR1Sin Estamento`) %>% 
  knitr::kable(row.names=FALSE, 
               align=c("l", "l", "c", "c", "c", "c"),
               caption="Tabla 5a. Coeficientes Asociaciones con Sintomatología Ansiosa") %>% 
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover","condensed"),font_size= 13) %>% 
  kableExtra::add_footnote(paste0("Nota. Sin Estamento: ",fit_metrics1,"\nCon estamento: ",fit_metrics2,"\nCon Estamento y Sexo: ", fit_metrics3, "\nCon Interacción: ",fit_metrics4), notation = "none") %>% 
  kableExtra::scroll_box(width = "100%", height = "370px")
Tabla 5a. Coeficientes Asociaciones con Sintomatología Ansiosa
Variable OR4Estamento+ Sexo+ Soporte x Razón EPPs OR3Estamento+ Sexo OR2Con Estamento OR1Sin Estamento
Soporte Pares y Superiores ISTAS21 0.89 (0.82-0.96, p=0.002) 0.89 (0.84-0.94, p<0.001) 0.89 (0.84-0.94, p<0.001) 0.89 (0.84-0.94, p<0.001)
Razón EPPs insuficientes por aquellos necesarios 1.58 (0.20-13.44, p=0.669) 1.84 (1.05-3.27, p=0.035) 2.05 (1.18-3.60, p=0.012) 1.91 (1.11-3.32, p=0.021)
Estamento- Enfermeros 1.68 (0.84-3.40, p=0.148) 1.68 (0.84-3.40, p=0.148) 1.91 (0.96-3.83, p=0.065)
Estamento- Médicos 1.28 (0.58-2.82, p=0.546) 1.28 (0.58-2.82, p=0.544) 1.13 (0.52-2.46, p=0.762)
Estamento- Otros profesionales no médicos 1.07 (0.58-1.97, p=0.833) 1.07 (0.58-1.97, p=0.829) 1.00 (0.55-1.84, p=0.995)
Estamento- Técnicos y auxiliares 1.28 (0.63-2.63, p=0.496) 1.28 (0.63-2.63, p=0.493) 1.22 (0.60-2.48, p=0.584)
Sexo (1= Mujer) 2.04 (1.31-3.23, p=0.002) 2.05 (1.31-3.23, p=0.002)
Soporte x Razón EPPs 1.01 (0.85-1.20, p=0.878)
Nota. Sin Estamento: Number in dataframe = 875, Number in model = 526, Missing = 349, AIC = 707.7, C-statistic = 0.629, H&L = Chi-sq(8) 8.60 (p=0.377)
Con estamento: Number in dataframe = 875, Number in model = 526, Missing = 349, AIC = 708.9, C-statistic = 0.644, H&L = Chi-sq(8) 6.09 (p=0.637)
Con Estamento y Sexo: Number in dataframe = 875, Number in model = 516, Missing = 359, AIC = 687.8, C-statistic = 0.656, H&L = Chi-sq(8) 7.14 (p=0.522)
Con Interacción: Number in dataframe = 875, Number in model = 516, Missing = 359, AIC = 689.7, C-statistic = 0.656, H&L = Chi-sq(8) 10.19 (p=0.252)
dependent2 = "tamizaje_dep"
explanatory02 = c("p40_istas_soporte","ratio_nec_insuf")
explanatory12 = c("p40_istas_soporte","ratio_nec_insuf", "estamento")
explanatory22 = c("p40_istas_soporte","ratio_nec_insuf","estamento", "p45_demo_sexo")
explanatory32 = c("p40_istas_soporte*ratio_nec_insuf", "estamento", "p45_demo_sexo")

#tamizaje_ans  tamizaje_dep

model12<-
surveymonkey_accionsalududp_df2_cor_table2 %>%
  dplyr::mutate(
  p40_istas_soporte= ff_label(p40_istas_soporte,"Soporte Pares y Superiores ISTAS21"),  
  ratio_nec_insuf= ff_label(ratio_nec_insuf, "Razón EPPs insuficientes por aquellos necesarios"),
  estamento= ff_label(estamento, "Estamento"),
  tamizaje_dep= ff_label(tamizaje_dep, "Presencia Sint. Depresiva")) %>% 
  glmmulti(dependent2, explanatory02, family = "binomial") %>%
  fit2df(exp = TRUE, estimate_name = "OR1", estimate_suffix = "Sin Estamento")

#tidy(glm(tamizaje_ans~ p40_istas_soporte*p11_exp_c19_miedo_pand+estamento, data=na.omit(surveymonkey_accionsalududp_df2_cor_table[,ord_vec]), family="binomial"))

fit_metrics12 = surveymonkey_accionsalududp_df2_cor_table2 %>%
  glmmulti(dependent2, explanatory02, family = "binomial") %>%
  ff_metrics()


model22<-
surveymonkey_accionsalududp_df2_cor_table2 %>%
  dplyr::mutate(
  p40_istas_soporte= ff_label(p40_istas_soporte,"Soporte Pares y Superiores ISTAS21"),  
  ratio_nec_insuf= ff_label(ratio_nec_insuf, "Razón EPPs insuficientes por aquellos necesarios"),
  estamento= ff_label(estamento, "Estamento"),
  tamizaje_dep= ff_label(tamizaje_dep, "Presencia Sint. Depresiva")) %>% 
  glmmulti(dependent2, explanatory12, family = "binomial") %>%
  fit2df(exp = TRUE, estimate_name = "OR2", estimate_suffix = "Con Estamento")

fit_metrics22 = surveymonkey_accionsalududp_df2_cor_table2 %>%
  glmmulti(dependent2, explanatory12, family = "binomial") %>%
  ff_metrics()


model32<-
surveymonkey_accionsalududp_df2_cor_table2 %>%
    dplyr::mutate(
  p40_istas_soporte= ff_label(p40_istas_soporte,"Soporte Pares y Superiores ISTAS21"),  
  ratio_nec_insuf= ff_label(ratio_nec_insuf, "Razón EPPs insuficientes por aquellos necesarios"),
  estamento= ff_label(estamento, "Estamento"),
  p45_demo_sexo= ff_label(factor(p45_demo_sexo), "Sexo Mujer"),
  tamizaje_dep= ff_label(tamizaje_dep, "Presencia Sint. Depresiva")) %>% 
  glmmulti(dependent2, explanatory22, family = "binomial") %>%
  fit2df(exp = TRUE, estimate_name = "OR3", estimate_suffix = "Estamento+ Sexo")

fit_metrics32 = surveymonkey_accionsalududp_df2_cor_table2 %>%
  glmmulti(dependent2, explanatory22, family = "binomial") %>%
  ff_metrics()

model42<-
surveymonkey_accionsalududp_df2_cor_table2 %>%
    dplyr::mutate(
  p40_istas_soporte= ff_label(p40_istas_soporte,"Soporte Pares y Superiores ISTAS21"),  
  ratio_nec_insuf= ff_label(ratio_nec_insuf, "Razón EPPs insuficientes por aquellos necesarios"),
  estamento= ff_label(estamento, "Estamento"),
  p45_demo_sexo= ff_label(factor(p45_demo_sexo), "Sexo Mujer"),
  tamizaje_dep= ff_label(tamizaje_dep, "Presencia Sint. Depresiva")) %>% 
  glmmulti(dependent2, explanatory32, family = "binomial") %>%
  fit2df(exp = TRUE, estimate_name = "OR4", estimate_suffix = "Estamento+ Sexo+ Soporte x Razón EPPs")

fit_metrics42 = surveymonkey_accionsalududp_df2_cor_table2 %>%
  glmmulti(dependent2, explanatory32, family = "binomial") %>%
  ff_metrics()


model42 %>% 
  dplyr::left_join(model32, by=c("explanatory")) %>% 
  dplyr::left_join(model22, by=c("explanatory")) %>% 
  dplyr::left_join(model12, by=c("explanatory")) %>% 
  dplyr::mutate(Variable=c("Soporte Pares y Superiores ISTAS21",
                      "Razón EPPs insuficientes por aquellos necesarios",
                      "Estamento- Enfermeros",
                      "Estamento- Médicos",
                      "Estamento- Otros profesionales no médicos",
                      "Estamento- Técnicos y auxiliares",
                      "Sexo (1= Mujer)",
                      "Soporte x Razón EPPs")) %>% 
  dplyr::select(Variable, `OR4Estamento+ Sexo+ Soporte x Razón EPPs`, `OR3Estamento+ Sexo`,`OR2Con Estamento`,`OR1Sin Estamento`) %>% 
  knitr::kable(row.names=FALSE, 
               align=c("l", "l", "c", "c", "c", "c"),
               caption="Tabla 5b. Coeficientes Asociaciones con Sintomatología Depresiva") %>% 
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover","condensed"),font_size= 13) %>% 
  kableExtra::add_footnote(paste0("Nota. Sin Estamento: ",fit_metrics12,"\nCon estamento: ",fit_metrics22,"\nCon Estamento y Sexo: ", fit_metrics32, "\nCon Interacción: ",fit_metrics42), notation = "none") %>% 
  kableExtra::scroll_box(width = "100%", height = "370px")
Tabla 5b. Coeficientes Asociaciones con Sintomatología Depresiva
Variable OR4Estamento+ Sexo+ Soporte x Razón EPPs OR3Estamento+ Sexo OR2Con Estamento OR1Sin Estamento
Soporte Pares y Superiores ISTAS21 0.88 (0.81-0.95, p=0.001) 0.87 (0.81-0.92, p<0.001) 0.87 (0.82-0.92, p<0.001) 0.87 (0.82-0.92, p<0.001)
Razón EPPs insuficientes por aquellos necesarios 2.24 (0.29-19.07, p=0.448) 1.38 (0.78-2.45, p=0.268) 1.58 (0.90-2.78, p=0.110) 1.55 (0.89-2.70, p=0.121)
Estamento- Enfermeros 1.29 (0.63-2.66, p=0.492) 1.28 (0.63-2.66, p=0.495) 1.35 (0.67-2.77, p=0.401)
Estamento- Médicos 0.80 (0.34-1.84, p=0.599) 0.80 (0.34-1.83, p=0.591) 0.75 (0.32-1.72, p=0.500)
Estamento- Otros profesionales no médicos 1.02 (0.55-1.93, p=0.955) 1.01 (0.55-1.91, p=0.970) 0.97 (0.53-1.83, p=0.933)
Estamento- Técnicos y auxiliares 0.95 (0.46-2.01, p=0.902) 0.95 (0.45-1.99, p=0.887) 0.92 (0.44-1.93, p=0.826)
Sexo (1= Mujer) 1.49 (0.94-2.41, p=0.095) 1.48 (0.93-2.38, p=0.103)
Soporte x Razón EPPs 0.96 (0.80-1.14, p=0.636)
Nota. Sin Estamento: Number in dataframe = 875, Number in model = 526, Missing = 349, AIC = 667.2, C-statistic = 0.635, H&L = Chi-sq(8) 7.52 (p=0.482)
Con estamento: Number in dataframe = 875, Number in model = 526, Missing = 349, AIC = 672.3, C-statistic = 0.646, H&L = Chi-sq(8) 7.35 (p=0.500)
Con Estamento y Sexo: Number in dataframe = 875, Number in model = 516, Missing = 359, AIC = 657.7, C-statistic = 0.651, H&L = Chi-sq(8) 3.26 (p=0.917)
Con Interacción: Number in dataframe = 875, Number in model = 516, Missing = 359, AIC = 659.4, C-statistic = 0.65, H&L = Chi-sq(8) 2.87 (p=0.942)

Se realizaron con los datos completos disponibles (n= 523).

ORs_table_long_wide<-
model4 %>% 
  dplyr::left_join(model3, by=c("explanatory")) %>% 
  dplyr::left_join(model2, by=c("explanatory")) %>% 
  dplyr::left_join(model1, by=c("explanatory")) %>% 
  dplyr::mutate(Variable=c("Soporte Pares y\nSuperiores ISTAS21",
                      "Razón EPPs\nInsuficientes/Necesarios",
                      "Estamento- Enfermeros",
                      "Estamento- Médicos",
                      "Estamento- Otros\nprofesionales no médicos",
                      "Estamento- Técnicos\ny auxiliares",
                      "Sexo (1= Mujer)",
                      "Soporte x Razón EPPs")) %>% 
  dplyr::select(Variable, `OR4Estamento+ Sexo+ Soporte x Razón EPPs`, `OR3Estamento+ Sexo`,`OR2Con Estamento`,`OR1Sin Estamento`) %>% 
  dplyr::mutate(OR4_est=as.numeric(str_sub( `OR4Estamento+ Sexo+ Soporte x Razón EPPs`, 1, 4))) %>% 
  dplyr::mutate(OR4_lcl=as.numeric(str_sub( `OR4Estamento+ Sexo+ Soporte x Razón EPPs`, 7, 10))) %>% 
  dplyr::mutate(OR4_ucl=as.numeric(str_sub( `OR4Estamento+ Sexo+ Soporte x Razón EPPs`, 12, 15))) %>% 
  dplyr::mutate(OR3_est=as.numeric(str_sub( `OR3Estamento+ Sexo`, 1, 4))) %>% 
  dplyr::mutate(OR3_lcl=as.numeric(str_sub( `OR3Estamento+ Sexo`, 7, 10))) %>% 
  dplyr::mutate(OR3_ucl=as.numeric(str_sub( `OR3Estamento+ Sexo`, 12, 15))) %>% 
  dplyr::mutate(OR2_est=as.numeric(str_sub( `OR2Con Estamento`, 1, 4))) %>% 
  dplyr::mutate(OR2_lcl=as.numeric(str_sub( `OR2Con Estamento`, 7, 10))) %>% 
  dplyr::mutate(OR2_ucl=as.numeric(str_sub( `OR2Con Estamento`, 12, 15))) %>% 
  dplyr::mutate(OR1_est=as.numeric(str_sub( `OR1Sin Estamento`, 1, 4))) %>% 
  dplyr::mutate(OR1_lcl=as.numeric(str_sub( `OR1Sin Estamento`, 7, 10))) %>% 
  dplyr::mutate(OR1_ucl=as.numeric(str_sub( `OR1Sin Estamento`, 12, 15))) %>% 
  dplyr::select(-`OR4Estamento+ Sexo+ Soporte x Razón EPPs`, -`OR3Estamento+ Sexo`,-`OR2Con Estamento`,-`OR1Sin Estamento`) %>% 
  melt(id.vars="Variable") %>% 
  tidyr::separate(variable,into=c("Modelo","metric"),sep="_") %>% 
  tidyr::pivot_wider(id_cols = c("Variable","Modelo"),names_from="metric")


  p1<-
    ORs_table_long_wide %>% 
ggplot2::ggplot(aes(x = `Variable`, y = `est`, fill = Modelo)) +  
  ylim(0,4)+
  geom_hline(yintercept = 1, alpha=0.8, colour = "gray10",linetype = 2) +
  geom_bar(stat="identity", position=position_dodge())+
  geom_text(aes(label=`est`), position=position_dodge(width=1.1), vjust = -10, size = 4.5) +
  geom_errorbar(aes(ymin=lcl, ymax=ucl,alpha=.65), width=.2,
                 position=position_dodge(.9)) +
  labs(y="Estimación de Asociaciones (Odds Ratio)")+
  theme_sjplot() +
  scale_fill_manual(values=c("grey15", "grey35", "grey55", "grey80"), labels=c("Sin Estamento","Con Estamento","Con Estamento\ny Sexo","Con Interacción")) +
  theme(legend.position = "bottom")+
    theme(axis.text.x=element_text(size=13, angle=45, vjust=.5),
        axis.title.x = element_text(size=15),
        axis.title.y = element_text(size=15),
        legend.title = element_text(size=15),
        legend.text = element_text(size=11))
p1
Figura 2. Chances de Presentar Sintomatología Ansiosa

Figura 2. Chances de Presentar Sintomatología Ansiosa

  jpeg("_Fig2_chances_sint_ansiosa.jpg", width = 13, height = 13, units = 'in', res = 600)
  p1+ theme(plot.background = element_rect(fill=NA, color = NA))
  dev.off()
## png 
##   2
ORs_table_long_wide2<-
model42 %>% 
  dplyr::left_join(model32, by=c("explanatory")) %>% 
  dplyr::left_join(model22, by=c("explanatory")) %>% 
  dplyr::left_join(model12, by=c("explanatory")) %>% 
  dplyr::mutate(Variable=c("Soporte Pares y\nSuperiores ISTAS21",
                      "Razón EPPs\nInsuficientes/Necesarios",
                      "Estamento- Enfermeros",
                      "Estamento- Médicos",
                      "Estamento- Otros\nprofesionales no médicos",
                      "Estamento- Técnicos\ny auxiliares",
                      "Sexo (1= Mujer)",
                      "Soporte x Razón EPPs")) %>% 
  dplyr::select(Variable, `OR4Estamento+ Sexo+ Soporte x Razón EPPs`, `OR3Estamento+ Sexo`,`OR2Con Estamento`,`OR1Sin Estamento`) %>% 
  dplyr::mutate(OR4_est=as.numeric(str_sub( `OR4Estamento+ Sexo+ Soporte x Razón EPPs`, 1, 4))) %>% 
  dplyr::mutate(OR4_lcl=as.numeric(str_sub( `OR4Estamento+ Sexo+ Soporte x Razón EPPs`, 7, 10))) %>% 
  dplyr::mutate(OR4_ucl=as.numeric(str_sub( `OR4Estamento+ Sexo+ Soporte x Razón EPPs`, 12, 15))) %>% 
  dplyr::mutate(OR3_est=as.numeric(str_sub( `OR3Estamento+ Sexo`, 1, 4))) %>% 
  dplyr::mutate(OR3_lcl=as.numeric(str_sub( `OR3Estamento+ Sexo`, 7, 10))) %>% 
  dplyr::mutate(OR3_ucl=as.numeric(str_sub( `OR3Estamento+ Sexo`, 12, 15))) %>% 
  dplyr::mutate(OR2_est=as.numeric(str_sub( `OR2Con Estamento`, 1, 4))) %>% 
  dplyr::mutate(OR2_lcl=as.numeric(str_sub( `OR2Con Estamento`, 7, 10))) %>% 
  dplyr::mutate(OR2_ucl=as.numeric(str_sub( `OR2Con Estamento`, 12, 15))) %>% 
  dplyr::mutate(OR1_est=as.numeric(str_sub( `OR1Sin Estamento`, 1, 4))) %>% 
  dplyr::mutate(OR1_lcl=as.numeric(str_sub( `OR1Sin Estamento`, 7, 10))) %>% 
  dplyr::mutate(OR1_ucl=as.numeric(str_sub( `OR1Sin Estamento`, 12, 15))) %>% 
  dplyr::select(-`OR4Estamento+ Sexo+ Soporte x Razón EPPs`, -`OR3Estamento+ Sexo`,-`OR2Con Estamento`,-`OR1Sin Estamento`) %>% 
  melt(id.vars="Variable") %>% 
  tidyr::separate(variable,into=c("Modelo","metric"),sep="_") %>% 
  tidyr::pivot_wider(id_cols = c("Variable","Modelo"),names_from="metric")


  p2<-
    ORs_table_long_wide2 %>% 
ggplot2::ggplot(aes(x = `Variable`, y = `est`, fill = Modelo)) +  
  ylim(0,20)+
  geom_hline(yintercept = 1, alpha=0.8, colour = "gray10",linetype = 2) +
  geom_bar(stat="identity", position=position_dodge())+
  geom_text(aes(label=`est`), position=position_dodge(width=1.1), vjust = -10, size = 4.5) +
  geom_errorbar(aes(ymin=lcl, ymax=ucl,alpha=.65), width=.2,
                 position=position_dodge(.9)) +
  labs(y="Estimación de Asociaciones (Odds Ratio)")+
  theme_sjplot() +
  scale_fill_manual(values=c("grey15", "grey35", "grey55", "grey80"), labels=c("Sin Estamento","Con Estamento","Con Estamento\ny Sexo","Con Interacción")) +
  theme(legend.position = "bottom")+
    theme(axis.text.x=element_text(size=13, angle=45, vjust=.5),
        axis.title.x = element_text(size=15),
        axis.title.y = element_text(size=15),
        legend.title = element_text(size=15),
        legend.text = element_text(size=11))
p2
Figura 3. Chances de Presentar Sintomatología Depresiva

Figura 3. Chances de Presentar Sintomatología Depresiva

  jpeg("_Fig3_chances_sint_depresiva.jpg", width = 13, height = 13, units = 'in', res = 600)
  p2+ theme(plot.background = element_rect(fill=NA, color = NA))
  dev.off()
## png 
##   2
fmla2 <- as.formula(paste0( "tamizaje_ans ~ ","p40_istas_soporte+ ratio_nec_insuf + estamento+ p45_demo_sexo"))
    # fit glm model
    assign(paste0("reg_log_glm_tamizaje_ans"), glm(fmla2, data= dplyr::mutate(surveymonkey_accionsalududp_df2_cor_table2,p45_demo_sexo=factor(p45_demo_sexo)), family=binomial()))
    
    #jtools::summ(reg_log_glm_tamizaje_dep)

preddat_soporte <- 
  predict(reg_log_glm_tamizaje_ans,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(quantile(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,.95,na.rm=T),
                              quantile(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,.05,na.rm=T)),
          ratio_nec_insuf=c(median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T),
                                   median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T)),
          p45_demo_sexo=c("0","0"),
          estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_ans, Exp=T)[which(grepl("p40_istas_soporte",tidy(reg_log_glm_tamizaje_ans, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))

preddat_miedo <- 
  predict(reg_log_glm_tamizaje_ans,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T),
                              median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T)),
          ratio_nec_insuf=c(quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.95,na.rm=T),
                                   quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.05,na.rm=T)),
          p45_demo_sexo=c("0","0"),
          estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_ans, Exp=T)[which(grepl("ratio_nec_insuf",tidy(reg_log_glm_tamizaje_ans, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))


preddat_mujer <- 
  predict(reg_log_glm_tamizaje_ans,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T),
                              median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T)),
          ratio_nec_insuf=c(median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T),
                                   median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T)),
          p45_demo_sexo=c("0","1"),
          estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_ans, Exp=T)[which(grepl("p45_demo_sexo",tidy(reg_log_glm_tamizaje_ans, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))

p4a<-
rbind(cbind(preddat_soporte,cat=c("95%","5%"),var=rep("Soporte Pares y Sup",2)),
      cbind(preddat_miedo,cat=c("95%","5%"),var=rep("Razón EPPs",2)),
      cbind(preddat_mujer,cat=c("Hombre","Mujer"),var=rep("Sexo",2))) %>% 
     dplyr::mutate(var=factor(var, levels=c("Soporte Pares y Sup","Razón EPPs","Sexo"))) %>% 
     dplyr::group_by(var) %>% 
     dplyr::mutate(cat=factor(cat)) %>% 
     dplyr::ungroup() %>% 
  dplyr::mutate(lab=paste0(round(fit,2)*100,"%"), half=(fit/10)*4) %>% 
  ggplot2::ggplot(aes(x = var, y = fit, fill=cat)) +  
  scale_y_continuous(breaks = seq(0,1,by=.1),labels = scales::percent_format(accuracy = 1))+
  geom_bar(stat = "identity", position = "dodge", width = 0.8)+
  geom_text(aes(label=`p_val_lab`, y=.9), size = 5) +
  #geom_text(aes(label=lab, y=.0), position=position_dodge(width=0.9), vjust = -.5, size = 5) +
  geom_errorbar(aes(ymin=fit-se.fit, ymax=fit+se.fit), width=.2,
                 position=position_dodge(.8)) +
  theme_sjplot() +
  scale_fill_manual(name="Valor", values=c("grey50","grey20","grey50","grey20")) +
  theme(legend.position = "bottom")+
    theme(axis.text.x= element_text(size=15),
          axis.text.y= element_text(size=15),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        title = element_blank(),
        legend.title = element_text(size=15),
        legend.text = element_text(size=14),
        plot.caption = element_blank())+#element_text(hjust = 0))+
  labs(title="Probabilidad condicional de presentar Sintomatología Ansiosa",
  subtitle="manteniendo valores iguales en el resto de las variables",
  caption=paste0("Nota. Barras verticales, Intervalos de Error;\nResiliencia, ptje percentil 95= ",quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.95,na.rm=T),"; ptje percentil 05=",quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.05,na.rm=T)))+
     theme(
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    line = element_blank())+
    geom_label(aes(y=half, label=lab),
      #position = position_dodge(width = .5),    # move to center of bars
              #vjust = 0,    # nudge above top of bar
            position = position_dodge(width = .8),
            vjust = .1,
            #position_stack(vjust = 0.5),
              size = 8,
            #direction = "y",
            #force=1,
            #seed=123,
            colour = "white", fontface = "bold")

p4a
Figura 4a. Probabilidad de Presentar Sintomatología Ansiosa, manteniendo constantes el resto de las variables

Figura 4a. Probabilidad de Presentar Sintomatología Ansiosa, manteniendo constantes el resto de las variables

  jpeg("_Fig3.jpg", height = 7, width = 11.5, units = 'in', res = 600)
  p4a+ theme(plot.background = element_rect(fill=NA, color = NA))
  dev.off()
## png 
##   2
fmla2b <- as.formula(paste0( "tamizaje_dep ~ ","p40_istas_soporte+ ratio_nec_insuf+ estamento+ p45_demo_sexo"))
    # fit glm model
    assign(paste0("reg_log_glm_tamizaje_dep"), glm(fmla2b, data= dplyr::mutate(surveymonkey_accionsalududp_df2_cor_table2,p45_demo_sexo=factor(p45_demo_sexo)), family=binomial()))
    
    #jtools::summ(reg_log_glm_tamizaje_dep)

preddat_soporte2 <- 
  predict(reg_log_glm_tamizaje_dep,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(quantile(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,.95,na.rm=T),
                              quantile(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,.05,na.rm=T)),
          ratio_nec_insuf=c(median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T),
                                   median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T)),
          p45_demo_sexo=c("0","0"),
          estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_dep, Exp=T)[which(grepl("p40_istas_soporte",tidy(reg_log_glm_tamizaje_dep, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))

preddat_miedo2 <- 
  predict(reg_log_glm_tamizaje_dep,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T),
                              median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T)),
          ratio_nec_insuf=c(quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.95,na.rm=T),
                                   quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.05,na.rm=T)),
          p45_demo_sexo=c("0","0"),
          estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_dep, Exp=T)[which(grepl("ratio_nec_insuf",tidy(reg_log_glm_tamizaje_dep, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))


preddat_mujer2 <- 
  predict(reg_log_glm_tamizaje_dep,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T),
                              median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T)),
          ratio_nec_insuf=c(median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T),
                                   median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T)),
          p45_demo_sexo=c("0","1"),
          estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_dep, Exp=T)[which(grepl("p45_demo_sexo",tidy(reg_log_glm_tamizaje_dep, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))

p4b<-
rbind(cbind(preddat_soporte2,cat=c("95%","5%"),var=rep("Soporte Pares y Sup",2)),
      cbind(preddat_miedo2,cat=c("95%","5%"),var=rep("Razón EPPs",2)),
      cbind(preddat_mujer2,cat=c("Hombre","Mujer"),var=rep("Sexo",2))) %>% 
     dplyr::mutate(var=factor(var, levels=c("Soporte Pares y Sup","Razón EPPs","Sexo"))) %>% 
     dplyr::group_by(var) %>% 
     dplyr::mutate(cat=factor(cat)) %>% 
     dplyr::ungroup() %>% 
  dplyr::mutate(lab=paste0(round(fit,2)*100,"%"), half=(fit/10)*4) %>% 
  ggplot2::ggplot(aes(x = var, y = fit, fill=cat)) +  
  scale_y_continuous(breaks = seq(0,1,by=.1),labels = scales::percent_format(accuracy = 1))+
  geom_bar(stat = "identity", position = "dodge", width = 0.8)+
  geom_text(aes(label=`p_val_lab`, y=.9), size = 5) +
  #geom_text(aes(label=lab, y=.0), position=position_dodge(width=0.9), vjust = -.5, size = 5) +
  geom_errorbar(aes(ymin=fit-se.fit, ymax=fit+se.fit), width=.2,
                 position=position_dodge(.8)) +
  theme_sjplot() +
  scale_fill_manual(name="Valor", values=c("grey50","grey20","grey50","grey20")) +
  theme(legend.position = "bottom")+
    theme(axis.text.x= element_text(size=15),
          axis.text.y= element_text(size=15),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        title = element_blank(),
        legend.title = element_text(size=15),
        legend.text = element_text(size=14),
        plot.caption = element_blank())+#element_text(hjust = 0))+
  labs(title="Probabilidad condicional de presentar Sintomatología Depresiva",
  subtitle="manteniendo valores iguales en el resto de las variables",
  caption=paste0("Nota. Barras verticales, Intervalos de Error;\nResiliencia, ptje percentil 95= ",quantile(surveymonkey_accionsalududp_df2_cor_table2$p11_exp_c19_miedo_pand,.95,na.rm=T),"; ptje percentil 05=",quantile(surveymonkey_accionsalududp_df2_cor_table2$p11_exp_c19_miedo_pand,.05,na.rm=T)))+
     theme(
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    line = element_blank())+
    geom_label(aes(y=half, label=lab),
      #position = position_dodge(width = .5),    # move to center of bars
              #vjust = 0,    # nudge above top of bar
            position = position_dodge(width = .8),
            vjust = .1,
            #position_stack(vjust = 0.5),
              size = 8,
            #direction = "y",
            #force=1,
            #seed=123,
            colour = "white", fontface = "bold")
p4b
Figura 4b. Probabilidad de Presentar Sintomatología Depresiva, manteniendo constantes el resto de las variables

Figura 4b. Probabilidad de Presentar Sintomatología Depresiva, manteniendo constantes el resto de las variables

  jpeg("_Fig4.jpg", height = 7, width = 11.5, units = 'in', res = 600)
  p4b+ theme(plot.background = element_rect(fill=NA, color = NA))
  dev.off()
## png 
##   2


2.3 Relación con variables de resultado

Para ver cuán relventas fueron los modelos propuestos más arriba, se comparó la importancia de hasta 1,000 modelos distintos con distintas combinaciones de las variables explicativas, en explicar la sintomatología ansiosa y depresiva. Entre las variables incorporadas se encuentra el estamento, la razón de EPPs, el soporte pares y supervisores y el sexo.

library(glmulti)
#sin_otros_prob_sm+ dg_cons_dep

res <- glmulti::glmulti(tamizaje_ans ~ p40_istas_soporte+ ratio_nec_insuf+ estamento+ p45_demo_sexo, #tal vez  no debería meter esta última variable.
               data=surveymonkey_accionsalududp_df2_cor_table2,
               level=2, #The level of interaction between explanatory variables to be considered. Currently only 1 (only main effects) or 2 (main effects plus all pairwise interactions) are supported.
               fitfunction=glm, crit="aicc", 
               family=binomial,
               marginality=T,#Whether to use the general marginality rule or not. Default is FALSE. With TRUE, all predictors found in interaction terms are also included as main effects.
               confsetsize = 1000 #How many models should be returned in the confidence set of models?
               )
## Initialization...
## TASK: Exhaustive screening of candidate set.
## Fitting...
## 
## After 50 models:
## Best model: tamizaje_ans~1+p40_istas_soporte+ratio_nec_insuf+p45_demo_sexo
## Crit= 683.331845347383
## Mean crit= 712.918114925291
## 
## After 100 models:
## Best model: tamizaje_ans~1+p40_istas_soporte+ratio_nec_insuf+p45_demo_sexo
## Crit= 683.331845347383
## Mean crit= 704.747814622929
## Completed.
#t is not iterative (all models are compared), and is fully automatic (no intervention of the user is required). It is primarily intended to be used for exploratory analyses with many candidate explanatory variables (say 10 to 20)
##########################################################################################
##################DEBIESE INCORPORAR EL TIPO DE PLAN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
##########################################################################################

#http://www.metafor-project.org/doku.php/tips:model_selection_with_glmulti_and_mumin

#But let's take a look at the top 10 models:
top <- weightable(res) #Prepares a table with model formulas, IC values and IC relative supports
top <- top[top$aicc <= min(top$aicc) + 5,]

############################################################################################

###########################################################################################
plot.glmulti<-function(x, type="p", ...) 
{
  if ( type == "p") {
    plot(x@crits,xlab="Mejores modelos",
         ylab=paste("Soporte (",x@params$crit,")"),pch=19, main="Perfil de Criterio de Informción", ...)
    abline(h=x@crits[1]+2,col="red")
        return(assign("ic_glmulti",data.table::data.table(data.frame(imp),keep.rownames = T),envir = .GlobalEnv))

  } else if (type == "w") {
    ww = exp(-(x@crits - x@crits[1])/2)
    ww=ww/sum(ww)
    plot(ww,xlab="Mejores modelos",
         ylab=paste("Peso de la evidencia (",x@params$crit,")"),pch=19, main="Perfil de peso de los modelos", ...)
    cucu=function(i) sum(ww[1:i])
    wwc=lapply(1:length(ww),cucu)
    abline(v=min(which(wwc>=0.95)),col="red")
  } else if (type=="r") {
    if (length(x@objects)) {
      # shows some diagnostics of the fit
      dev.new()
      par(mfrow=c(2,min(length(x@crits), 5)))
      for (k in 1:min(length(x@crits), 5)) 
        plot(x@objects[[k]],which=c(1), main=deparse(x@formulas[[k]]),...)
      for (k in 1:min(length(x@crits), 5)) 
        plot(x@objects[[k]],which=c(2),...)
    } else warning("Unavailable: use includeobjects=T when calling glmulti.")       
  } else if (type=="s") {
    # plots variable (i.e. terms) importances
    ww = exp(-(x@crits - x@crits[1])/2)
    ww=ww/sum(ww)
    # handle synonymies for interactions
    
    # this translates to unique notations (e.g. x:y and y:x are the same)
    clartou=function(x) {
      sort(strsplit(x, ":")[[1]])-> pieces
      if (length(pieces)>1) paste(pieces[1],":",pieces[2],sep="")
      else x
    }
    # list terms in models
    tet = lapply(x@formulas, function(x) sapply(attr(delete.response(terms(x)),"term.labels"), clartou))
    # all unique terms
    unique(unlist(tet))-> allt
    # importances
    sapply(allt, function(x) sum(ww[sapply(tet, function(t) x%in%t)]))-> imp
    # draw
    #par(oma=c(0,13,0,0))
    barplot(sort(imp),xlab="",xlim=c(0,1), ylab="",horiz=T,las=2, names.arg=allt[order(imp)],main="Importancia promediada por el modelo de términos", ...)#Promediado por el modelo Model-averaged importance of terms
    abline(v=0.8, col="red")
    return(assign(paste0("var_imp_glmulti_",gsub(".*y \\=  (.+) \\, xr.*", "\\1", x@call)[2]),data.table::data.table(data.frame(imp),keep.rownames = T),envir = .GlobalEnv))
  } else    warning("plot: Invalid type argument for plotting glmulti objects.")
}
plot(res, type="s")
############################################################################################
data.frame(res@crits)%>% dplyr::mutate(rn=row_number())%>%
    ggplot(aes(x=rn,y=res.crits))+
    geom_point(color="steelblue")+
   sjPlot::theme_sjplot2() + 
  ylab("Soporte (aicc)")+
  theme(axis.text.x = element_text(size=8,vjust = .5,angle=25), axis.text.y = element_text(size=10),
        axis.title.y = element_text(size = 14)) +
  theme(
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    line = element_blank(),
    plot.caption= element_text(hjust=0))+
  geom_hline(yintercept=res@crits[1]+2, color="red", linetype=2,size=1)+
  xlab("Mejores modelos")+
  labs(caption=paste0("Línea roja segmentada= AICc mínimo más 8 puntos (",round(res@crits[1]+8,2),")"))
Figura 5. Modelos ordenados y AICC

Figura 5. Modelos ordenados y AICC


Se seleccionó el primer modelo dado que presentó valores más parsimoniosos pero con términos menos complejos (AICc= 683.8, Soporte relativo de Criterio de Información= 0.223).


top %>% 
    knitr::kable(.,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
                 caption="Tabla 6. Contraste Modelos",
                 col.names= c("Modelos","AICc","Pesos"),
                 align =c("l","l",rep('c', 101))) %>% 
    #col.names = c("Variable","Category","OR", "95% IC"))%>%
    kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 12) %>% 
    kableExtra::scroll_box(width = "100%", height = "375px")  
Tabla 6. Contraste Modelos
Modelos AICc Pesos
tamizaje_ans ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo 683.3318 0.2232116
tamizaje_ans ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + p45_demo_sexo:p40_istas_soporte 683.9166 0.1666218
tamizaje_ans ~ 1 + p40_istas_soporte + p45_demo_sexo 685.1013 0.0921455
tamizaje_ans ~ 1 + p40_istas_soporte + p45_demo_sexo + p45_demo_sexo:p40_istas_soporte 685.3341 0.0820206
tamizaje_ans ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + ratio_nec_insuf:p40_istas_soporte 685.3578 0.0810568
tamizaje_ans ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + p45_demo_sexo:ratio_nec_insuf 685.3706 0.0805408
tamizaje_ans ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + p45_demo_sexo:p40_istas_soporte + p45_demo_sexo:ratio_nec_insuf 685.8432 0.0635896
tamizaje_ans ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + ratio_nec_insuf:p40_istas_soporte + p45_demo_sexo:p40_istas_soporte 685.9525 0.0602070
tamizaje_ans ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + ratio_nec_insuf:p40_istas_soporte + p45_demo_sexo:ratio_nec_insuf 687.4037 0.0291421
tamizaje_ans ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + ratio_nec_insuf:p40_istas_soporte + p45_demo_sexo:p40_istas_soporte + p45_demo_sexo:ratio_nec_insuf 687.8936 0.0228112
tamizaje_ans ~ 1 + estamento + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo 688.0508 0.0210864
#par(oma=c(0,0,0,24))
ggplot(var_imp_glmulti_tamizaje_ans, aes(x=reorder(rn, -imp),y=imp))+
  geom_bar(stat="identity",alpha=.7, fill="steelblue")+
    sjPlot::theme_sjplot2() + 
  ylab("Importancia Promediada por el Modelo")+#Model-averaged importance
  theme(axis.text.x = element_text(size=6.5,vjust = .5,angle=25), 
        axis.text.y = element_text(size=10),
        axis.title.y = element_text(size = 14),
        plot.caption= element_text(hjust=0)) +
  theme(
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    line = element_blank())+
  geom_hline(yintercept=.5, color="red", linetype=2)+
  xlab("Terms")+
  labs(caption="Nota. Línea segmentada roja=umbral del 50% de importancia relativa")
Figura 6. Importancia de los términos promediada por el modelo

Figura 6. Importancia de los términos promediada por el modelo


Por lo visto, el sexo y el soporte de pares y superiores y la razón EPPs explican mayormente la sintomatología ansiosa. Sin embargo, el estamento no es del todo importante como variable explicativa.


#para seleccionar el primer modelo
options(knitr.kable.NA = '')
 
or_raw<-
data.table::data.table(Epi::ci.lin(
  glm(tamizaje_ans  ~ p40_istas_soporte+ ratio_nec_insuf ,data=surveymonkey_accionsalududp_df2_cor_table2, family= "binomial"),Exp=T),keep.rownames = T)%>%
dplyr::select(-Estimate, -StdErr,-z)%>%
      dplyr::mutate(`exp(Est.)`=sprintf("%04.2f",as.numeric(`exp(Est.)`)))%>%
      dplyr::mutate(OR=`exp(Est.)`)%>%
      dplyr::mutate(OR=dplyr::case_when(P<.001~paste0(OR,"***"),P<.01~paste0(OR,"**"),P<.05~paste0(OR,"*"),TRUE~OR))%>%
      dplyr::mutate(`2.5%`= sprintf("%04.2f",as.numeric(`2.5%`)))%>%
      dplyr::mutate(`97.5%`=sprintf("%04.2f",as.numeric(`97.5%`)))%>%
      dplyr::mutate("95% IC"=paste0("[",`2.5%`,"-",`97.5%`,"]"))%>%
      dplyr::mutate("95% IC"= ifelse(grepl("NA]",`95% IC`),NA_character_,`95% IC`))%>%
    dplyr::select(rn,OR,`95% IC`,`2.5%`,`97.5%`)%>%
  dplyr::filter(!grepl("Intercept",rn)) %>% 
    dplyr::mutate(OR_num=readr::parse_number(OR, "\\d+")) %>% 
  dplyr::mutate(model="Primer Modelo (Más Simple)")

or1<-
Epi::ci.lin(res@objects[[1]], Exp=T) %>% 
  data.table(keep.rownames = T) %>% 
dplyr::select(-Estimate, -StdErr,-z) %>%
      dplyr::mutate(`exp(Est.)`=sprintf("%04.2f",as.numeric(`exp(Est.)`)))%>%
      dplyr::mutate(OR=`exp(Est.)`)%>%
      dplyr::mutate(OR=dplyr::case_when(P<.001~paste0(OR,"***"),P<.01~paste0(OR,"**"),P<.05~paste0(OR,"*"),TRUE~OR))%>%
      dplyr::mutate(`2.5%`= sprintf("%04.2f",as.numeric(`2.5%`)))%>%
      dplyr::mutate(`97.5%`=sprintf("%04.2f",as.numeric(`97.5%`)))%>%
      dplyr::mutate("95% IC"=paste0("[",`2.5%`,"-",`97.5%`,"]"))%>%
      dplyr::mutate("95% IC"= ifelse(grepl("NA]",`95% IC`),NA_character_,`95% IC`))%>%
      dplyr::mutate(Variable= 
                      dplyr::case_when(
                        grepl("p40_istas_rel_su",rn)~"Relación con Supervisores (ISTAS-21)",
                        grepl("p45_demo_sexoMujer$",rn)~"Sexo(Mujer)", 
                        T~NA_character_))%>%
    dplyr::select(rn,OR,`95% IC`,`2.5%`,`97.5%`)%>%
  dplyr::filter(!grepl("Intercept",rn))%>%
  dplyr::mutate(OR_num=readr::parse_number(OR, "\\d+")) %>% 
  dplyr::mutate(model="Segundo Modelo (Controles), seleccionado")

or2<-
Epi::ci.lin(res@objects[[2]], Exp=T) %>% 
  data.table(keep.rownames = T) %>% 
dplyr::select(-Estimate, -StdErr,-z) %>%
      dplyr::mutate(`exp(Est.)`=sprintf("%04.2f",as.numeric(`exp(Est.)`)))%>%
      dplyr::mutate(OR=`exp(Est.)`)%>%
      dplyr::mutate(OR=dplyr::case_when(P<.001~paste0(OR,"***"),P<.01~paste0(OR,"**"),P<.05~paste0(OR,"*"),TRUE~OR))%>%
      dplyr::mutate(`2.5%`= sprintf("%04.2f",as.numeric(`2.5%`)))%>%
      dplyr::mutate(`97.5%`=sprintf("%04.2f",as.numeric(`97.5%`)))%>%
      dplyr::mutate("95% IC"=paste0("[",`2.5%`,"-",`97.5%`,"]"))%>%
      dplyr::mutate("95% IC"= ifelse(grepl("NA]",`95% IC`),NA_character_,`95% IC`))%>%
    dplyr::select(rn,OR,`95% IC`,`2.5%`,`97.5%`)%>%
  dplyr::filter(!grepl("Intercept",rn))%>%
  dplyr::mutate(OR_num=readr::parse_number(OR, "\\d+")) %>% 
  dplyr::mutate(model="Tercer Modelo (Interacción)")


rbind.data.frame(or_raw,or1,or2) %>% 
  dplyr::mutate(Variable= 
                  dplyr::case_when(
                    grepl("p40_istas_soporte:p45_demo_sexo$",rn)~"Rel. Pares y Supervisores (ISTAS-21) x Sexo",
                    grepl("p40_istas_soporte$",rn)~"Relación con Pares y Supervisores (ISTAS-21)",
                    grepl("ratio_nec_insuf$",rn)~"Razón EPPs",
                    grepl("p45_demo_sexo$",rn)~"Sexo(Mujer)", 
                    T~NA_character_))%>%
  dplyr::select(Variable,everything()) %>% 
  dplyr::select(-rn,-`2.5%`,-`97.5%`,-OR_num,-model) %>% 
  knitr::kable(.,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption="Tabla 7. Coeficientes Impacto en Sintomatología Ansiosa",
                 align =c("l","l",rep('c', 101))) %>% 
               #col.names = c("Variable","Category","OR", "95% IC"))%>%
   kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 11)%>%
  kableExtra::add_footnote( c(paste("Nota. AICc=",round(res@objects[[1]]$aic,3)),
                              paste("Modelo definido=",top$model[1])), notation = "none")%>%
  kableExtra::pack_rows("Primer Modelo (Más simple)", 1, 2) %>%
  kableExtra::pack_rows("Segundo Modelo (Incorporando Controles), seleccionado", 3, 5) %>%
  kableExtra::pack_rows("Tercer Modelo (Incorporando Interacción)", 6, 9) %>%
  kableExtra::scroll_box(width = "100%", height = "375px")
Tabla 7. Coeficientes Impacto en Sintomatología Ansiosa
Variable OR 95% IC
Primer Modelo (Más simple)
Relación con Pares y Supervisores (ISTAS-21) 0.89*** [0.84-0.95]
Razón EPPs 1.91* [1.10-3.30]
Segundo Modelo (Incorporando Controles), seleccionado
Relación con Pares y Supervisores (ISTAS-21) 0.89*** [0.84-0.95]
Razón EPPs 1.74 [0.99-3.04]
Sexo(Mujer) 2.11*** [1.36-3.29]
Tercer Modelo (Incorporando Interacción)
Relación con Pares y Supervisores (ISTAS-21) 0.83** [0.72-0.95]
Razón EPPs 1.70 [0.97-2.97]
Sexo(Mujer) 0.68 [0.10-4.64]
Rel. Pares y Supervisores (ISTAS-21) x Sexo 1.10 [0.94-1.28]
Nota. AICc= 683.254
Modelo definido= tamizaje_ans ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo
#mod <- res@objects[[1]]
#nullmod <- glm(abandono_temp ~ 1,data=CONS_C1_df_dup_JUL_2020_match_top_sel2,family= "binomial")
#1-logLik(mod)/logLik(nullmod)
#https://thestatsgeek.com/2014/02/08/r-squared-in-logistic-regression/

#round(Epi::ci.lin(glm(abandono_temp ~ 1+compromiso_biopsicosocial+ origen_ingreso_mod +  dg_cie_10_rec + dg_trs_fisico,data=CONS_C1_df_dup_JUL_2020_match_top_sel2,family= "binomial"),Exp=T),3)

#abandono_temp ~ 1 + compromiso_biopsicosocial + origen_ingreso_mod + dg_cie_10 + dg_trs_fisico + dg_trs_fisico:compromiso_biopsicosocial
#print(res@formulas[[2]])

El primer modelo incorpora menos términos pero de igual manera encuentra asociaciones con sintomatología ansiosa, sexo, razón epps y relación con pares y supervisores (no se contempla el estamento). Dichas asociaciones identifican que aún controlando por el resto de las variables, ser mujer reporta 2 veces mayores chances de presentar sintomatología ansiosa y mayores puntajes de relación con pares y supervisores se asocian con menores chances de reportar sintomatología ansiosa.


library(glmulti)
#sin_otros_prob_sm+ dg_cons_dep

res2 <- glmulti::glmulti(tamizaje_dep ~ p40_istas_soporte+ ratio_nec_insuf+ estamento+ p45_demo_sexo, #tal vez  no debería meter esta última variable.
               data=surveymonkey_accionsalududp_df2_cor_table2,
               level=2, #The level of interaction between explanatory variables to be considered. Currently only 1 (only main effects) or 2 (main effects plus all pairwise interactions) are supported.
               fitfunction=glm, 
               crit="aicc", 
               family=binomial,
               marginality=T,#Whether to use the general marginality rule or not. Default is FALSE. With TRUE, all predictors found in interaction terms are also included as main effects.
               confsetsize = 1000 #How many models should be returned in the confidence set of models?
               )
## Initialization...
## TASK: Exhaustive screening of candidate set.
## Fitting...
## 
## After 50 models:
## Best model: tamizaje_dep~1+p40_istas_soporte+p45_demo_sexo
## Crit= 650.550283993849
## Mean crit= 679.165379177613
## 
## After 100 models:
## Best model: tamizaje_dep~1+p40_istas_soporte+p45_demo_sexo
## Crit= 650.550283993849
## Mean crit= 671.753990439424
## Completed.
#t is not iterative (all models are compared), and is fully automatic (no intervention of the user is required). It is primarily intended to be used for exploratory analyses with many candidate explanatory variables (say 10 to 20)
##########################################################################################
##################DEBIESE INCORPORAR EL TIPO DE PLAN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
##########################################################################################

#http://www.metafor-project.org/doku.php/tips:model_selection_with_glmulti_and_mumin

#But let's take a look at the top 10 models:
top2 <- weightable(res2) #Prepares a table with model formulas, IC values and IC relative supports
top2 <- top2[top2$aicc <= min(top2$aicc) + 5,]

plot(res2, type="s")
############################################################################################
data.frame(res2@crits)%>% dplyr::mutate(rn=row_number())%>%
    ggplot(aes(x=rn,y=res2.crits))+
    geom_point(color="steelblue")+
   sjPlot::theme_sjplot2() + 
  ylab("Soporte (aicc)")+
  theme(axis.text.x = element_text(size=8,vjust = .5,angle=25), axis.text.y = element_text(size=10),
        axis.title.y = element_text(size = 14)) +
  theme(
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    line = element_blank(),
    plot.caption= element_text(hjust=0))+
  geom_hline(yintercept=res2@crits[1]+2, color="red", linetype=2,size=1)+
  xlab("Mejores modelos")+
  labs(caption=paste0("Línea roja segmentada= AICc mínimo más 8 puntos (",round(res2@crits[1]+8,2),")"))
Figura 7. Modelos ordenados y AICC

Figura 7. Modelos ordenados y AICC


Se seleccionó el segundo modelo dado que presentó valores más parsimoniosos pero con términos menos complejos (AICc= 651.38, Soporte relativo de Criterio de Información= 0.184).

top2 %>% 
    knitr::kable(.,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
                 caption="Tabla 8. Contraste Modelos",
                 col.names= c("Modelos","AICc","Pesos"),
                 align =c("l","l",rep('c', 101))) %>% 
    #col.names = c("Variable","Category","OR", "95% IC"))%>%
    kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 12) %>% 
    kableExtra::scroll_box(width = "100%", height = "375px")  
Tabla 8. Contraste Modelos
Modelos AICc Pesos
tamizaje_dep ~ 1 + p40_istas_soporte + p45_demo_sexo 650.5503 0.2896402
tamizaje_dep ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo 651.4603 0.1837595
tamizaje_dep ~ 1 + p40_istas_soporte + p45_demo_sexo + p45_demo_sexo:p40_istas_soporte 652.0575 0.1363213
tamizaje_dep ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + p45_demo_sexo:p40_istas_soporte 653.0810 0.0817202
tamizaje_dep ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + ratio_nec_insuf:p40_istas_soporte 653.2510 0.0750593
tamizaje_dep ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + p45_demo_sexo:ratio_nec_insuf 653.4908 0.0665776
tamizaje_dep ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + ratio_nec_insuf:p40_istas_soporte + p45_demo_sexo:p40_istas_soporte 654.8686 0.0334317
tamizaje_dep ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + p45_demo_sexo:p40_istas_soporte + p45_demo_sexo:ratio_nec_insuf 655.1153 0.0295511
tamizaje_dep ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo + ratio_nec_insuf:p40_istas_soporte + p45_demo_sexo:ratio_nec_insuf 655.2958 0.0270018
#par(oma=c(0,0,0,24))
ggplot(var_imp_glmulti_tamizaje_dep, aes(x=reorder(rn, -imp),y=imp))+
  geom_bar(stat="identity",alpha=.7, fill="steelblue")+
    sjPlot::theme_sjplot2() + 
  ylab("Importancia Promediada por el Modelo")+#Model-averaged importance
  theme(axis.text.x = element_text(size=6.5,vjust = .5,angle=25), 
        axis.text.y = element_text(size=10),
        axis.title.y = element_text(size = 14),
        plot.caption= element_text(hjust=0)) +
  theme(
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    line = element_blank())+
  geom_hline(yintercept=.5, color="red", linetype=2)+
  xlab("Terms")+
  labs(caption="Nota. Línea segmentada roja=umbral del 50% de importancia relativa")
Figura 8. Importancia de los términos promediada por el modelo

Figura 8. Importancia de los términos promediada por el modelo


Por lo visto, el soporte de pares y superiores, el sexo y la razón EPPs explican mayormente la sintomatología depresiva, aunque no el estamento. Considerando la tabla anterior sumado a la figura ya mostrada, decidimos elegir el segundo modelo, que incorpora la variable Razón EPPs, a pesar de no obtener el mejor ajuste.


#para seleccionar el primer modelo
options(knitr.kable.NA = '')
 
or_raw2<-
data.table::data.table(Epi::ci.lin(
  glm(tamizaje_dep  ~ p40_istas_soporte+ ratio_nec_insuf,data=surveymonkey_accionsalududp_df2_cor_table2, family= "binomial"),Exp=T),keep.rownames = T)%>%
dplyr::select(-Estimate, -StdErr,-z)%>%
      dplyr::mutate(`exp(Est.)`=sprintf("%04.2f",as.numeric(`exp(Est.)`)))%>%
      dplyr::mutate(OR=`exp(Est.)`)%>%
      dplyr::mutate(OR=dplyr::case_when(P<.001~paste0(OR,"***"),P<.01~paste0(OR,"**"),P<.05~paste0(OR,"*"),TRUE~OR))%>%
      dplyr::mutate(`2.5%`= sprintf("%04.2f",as.numeric(`2.5%`)))%>%
      dplyr::mutate(`97.5%`=sprintf("%04.2f",as.numeric(`97.5%`)))%>%
      dplyr::mutate("95% IC"=paste0("[",`2.5%`,"-",`97.5%`,"]"))%>%
      dplyr::mutate("95% IC"= ifelse(grepl("NA]",`95% IC`),NA_character_,`95% IC`))%>%
    dplyr::select(rn,OR,`95% IC`,`2.5%`,`97.5%`)%>%
  dplyr::filter(!grepl("Intercept",rn)) %>% 
    dplyr::mutate(OR_num=readr::parse_number(OR, "\\d+")) %>% 
  dplyr::mutate(model="Primer Modelo (Simple)")

or12<-
Epi::ci.lin(res2@objects[[1]], Exp=T) %>% 
  data.table(keep.rownames = T) %>% 
dplyr::select(-Estimate, -StdErr,-z) %>%
      dplyr::mutate(`exp(Est.)`=sprintf("%04.2f",as.numeric(`exp(Est.)`)))%>%
      dplyr::mutate(OR=`exp(Est.)`)%>%
      dplyr::mutate(OR=dplyr::case_when(P<.001~paste0(OR,"***"),P<.01~paste0(OR,"**"),P<.05~paste0(OR,"*"),TRUE~OR))%>%
      dplyr::mutate(`2.5%`= sprintf("%04.2f",as.numeric(`2.5%`)))%>%
      dplyr::mutate(`97.5%`=sprintf("%04.2f",as.numeric(`97.5%`)))%>%
      dplyr::mutate("95% IC"=paste0("[",`2.5%`,"-",`97.5%`,"]"))%>%
      dplyr::mutate("95% IC"= ifelse(grepl("NA]",`95% IC`),NA_character_,`95% IC`))%>%
      dplyr::mutate(Variable= 
                      dplyr::case_when(
                        grepl("p40_istas_rel_su",rn)~"Relación con Supervisores (ISTAS-21)",
                        grepl("p45_demo_sexoMujer$",rn)~"Sexo(Mujer)", 
                        T~NA_character_))%>%
    dplyr::select(rn,OR,`95% IC`,`2.5%`,`97.5%`)%>%
  dplyr::filter(!grepl("Intercept",rn))%>%
  dplyr::mutate(OR_num=readr::parse_number(OR, "\\d+")) %>% 
  dplyr::mutate(model="Segundo Modelo (Controles)")

or22<-
Epi::ci.lin(res2@objects[[2]], Exp=T) %>% 
  data.table(keep.rownames = T) %>% 
dplyr::select(-Estimate, -StdErr,-z) %>%
      dplyr::mutate(`exp(Est.)`=sprintf("%04.2f",as.numeric(`exp(Est.)`)))%>%
      dplyr::mutate(OR=`exp(Est.)`)%>%
      dplyr::mutate(OR=dplyr::case_when(P<.001~paste0(OR,"***"),P<.01~paste0(OR,"**"),P<.05~paste0(OR,"*"),TRUE~OR))%>%
      dplyr::mutate(`2.5%`= sprintf("%04.2f",as.numeric(`2.5%`)))%>%
      dplyr::mutate(`97.5%`=sprintf("%04.2f",as.numeric(`97.5%`)))%>%
      dplyr::mutate("95% IC"=paste0("[",`2.5%`,"-",`97.5%`,"]"))%>%
      dplyr::mutate("95% IC"= ifelse(grepl("NA]",`95% IC`),NA_character_,`95% IC`))%>%
    dplyr::select(rn,OR,`95% IC`,`2.5%`,`97.5%`)%>%
  dplyr::filter(!grepl("Intercept",rn))%>%
  dplyr::mutate(OR_num=readr::parse_number(OR, "\\d+")) %>% 
  dplyr::mutate(model="Tercer Modelo (Más Razón EPPs), seleccionado")


rbind.data.frame(or_raw2,or12,or22) %>% 
  dplyr::mutate(Variable= 
                  dplyr::case_when(
                    grepl("p40_istas_soporte:p11_exp_c19_miedo_pand$",rn)~"Rel. Pares y Supervisores (ISTAS-21) x Miedo Pandemia",
                    grepl("p40_istas_soporte$",rn)~"Relación con Pares y Supervisores (ISTAS-21)",
                    grepl("ratio_nec_insuf$",rn)~"Razón EPPs",
                    grepl("p45_demo_sexo$",rn)~"Sexo(Mujer)", 
                    T~NA_character_))%>%
  dplyr::select(Variable,everything()) %>% 
  dplyr::select(-rn,-`2.5%`,-`97.5%`,-OR_num,-model) %>% 
  knitr::kable(.,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption="Tabla 9. Coeficientes Impacto en Sintomatología Depresiva",
                 align =c("l","l",rep('c', 101))) %>% 
               #col.names = c("Variable","Category","OR", "95% IC"))%>%
   kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 11)%>%
  kableExtra::add_footnote( c(paste("Nota. AICc=",round(res2@objects[[2]]$aic,3)),
                              paste("Modelo definido=",top2$model[2])), notation = "none")%>%
  kableExtra::pack_rows("Primer Modelo (Más simple)", 1, 2) %>%
  kableExtra::pack_rows("Segundo Modelo (Incorporando Controles)", 3, 4) %>%
  kableExtra::pack_rows("Tercer Modelo (Incorporando Razón EPPs), seleccionado", 5, 7) %>%
  kableExtra::scroll_box(width = "100%", height = "375px")
Tabla 9. Coeficientes Impacto en Sintomatología Depresiva
Variable OR 95% IC
Primer Modelo (Más simple)
Relación con Pares y Supervisores (ISTAS-21) 0.87*** [0.82-0.93]
Razón EPPs 1.55 [0.89-2.70]
Segundo Modelo (Incorporando Controles)
Relación con Pares y Supervisores (ISTAS-21) 0.86*** [0.81-0.92]
Sexo(Mujer) 1.59* [1.01-2.51]
Tercer Modelo (Incorporando Razón EPPs), seleccionado
Relación con Pares y Supervisores (ISTAS-21) 0.87*** [0.82-0.92]
Razón EPPs 1.36 [0.77-2.39]
Sexo(Mujer) 1.55 [0.98-2.46]
Nota. AICc= 651.382
Modelo definido= tamizaje_dep ~ 1 + p40_istas_soporte + ratio_nec_insuf + p45_demo_sexo
#mod <- res@objects[[1]]
#nullmod <- glm(abandono_temp ~ 1,data=CONS_C1_df_dup_JUL_2020_match_top_sel2,family= "binomial")
#1-logLik(mod)/logLik(nullmod)
#https://thestatsgeek.com/2014/02/08/r-squared-in-logistic-regression/

#round(Epi::ci.lin(glm(abandono_temp ~ 1+compromiso_biopsicosocial+ origen_ingreso_mod +  dg_cie_10_rec + dg_trs_fisico,data=CONS_C1_df_dup_JUL_2020_match_top_sel2,family= "binomial"),Exp=T),3)

#abandono_temp ~ 1 + compromiso_biopsicosocial + origen_ingreso_mod + dg_cie_10 + dg_trs_fisico + dg_trs_fisico:compromiso_biopsicosocial
#print(res@formulas[[2]])


Del modelo seleccionado, el efecto del sexo resulta no significativo producto de la incorporación de la razón EPPs como confusor. Por otra parte, la relación con pares y supervisores no se ve del todo atenuada por la incorporación de la razón EPPs, indicando que a mayores puntajes de relación con pares y supervisores, menor chance de presentar sintomatología depresiva. Es importante mencionar que el estamento no fue una variable que tuviera mayor impacto.


fmla3 <- as.formula(paste0( "tamizaje_ans ~ ","p40_istas_soporte+ ratio_nec_insuf+ p45_demo_sexo"))
    # fit glm model
    assign(paste0("reg_log_glm_tamizaje_ans3"), glm(fmla3, data= dplyr::mutate(surveymonkey_accionsalududp_df2_cor_table2,p45_demo_sexo=factor(p45_demo_sexo)), family=binomial()))
    
    #jtools::summ(reg_log_glm_tamizaje_dep)

preddat_soporte <- 
  predict(reg_log_glm_tamizaje_ans3,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(quantile(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,.95,na.rm=T),
                              quantile(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,.05,na.rm=T)),
          ratio_nec_insuf=c(median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T),
                                   median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T)),
          p45_demo_sexo=c("0","0")),
         # estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_ans3, Exp=T)[which(grepl("p40_istas_soporte",tidy(reg_log_glm_tamizaje_ans3, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))

preddat_miedo <- 
  predict(reg_log_glm_tamizaje_ans3,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T),
                              median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T)),
          ratio_nec_insuf=c(quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.95,na.rm=T),
                                   quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.05,na.rm=T)),
          p45_demo_sexo=c("0","0")),
         # estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_ans3, Exp=T)[which(grepl("ratio_nec_insuf",tidy(reg_log_glm_tamizaje_ans3, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))


preddat_mujer <- 
  predict(reg_log_glm_tamizaje_ans3,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T),
                              median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T)),
          ratio_nec_insuf=c(median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T),
                                   median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T)),
          p45_demo_sexo=c("0","1")),
         # estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_ans3, Exp=T)[which(grepl("p45_demo_sexo",tidy(reg_log_glm_tamizaje_ans3, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))

p5a<-
rbind(cbind(preddat_soporte,cat=c("95%","5%"),var=rep("Soporte Pares y Sup",2)),
      cbind(preddat_miedo,cat=c("95%","5%"),var=rep("Razón EPPs",2)),
      cbind(preddat_mujer,cat=c("Hombre","Mujer"),var=rep("Sexo",2))) %>% 
     dplyr::mutate(var=factor(var, levels=c("Soporte Pares y Sup","Razón EPPs","Sexo"))) %>% 
     dplyr::group_by(var) %>% 
     dplyr::mutate(cat=factor(cat)) %>% 
     dplyr::ungroup() %>% 
  dplyr::mutate(lab=paste0(round(fit,2)*100,"%"), half=(fit/10)*4) %>% 
  ggplot2::ggplot(aes(x = var, y = fit, fill=cat)) +  
  scale_y_continuous(breaks = seq(0,1,by=.1),labels = scales::percent_format(accuracy = 1))+
  geom_bar(stat = "identity", position = "dodge", width = 0.8)+
  geom_text(aes(label=`p_val_lab`, y=.9), size = 5) +
  #geom_text(aes(label=lab, y=.0), position=position_dodge(width=0.9), vjust = -.5, size = 5) +
  geom_errorbar(aes(ymin=fit-se.fit, ymax=fit+se.fit), width=.2,
                 position=position_dodge(.8)) +
  theme_sjplot() +
  scale_fill_manual(name="Valor", values=c("grey50","grey20","grey50","grey20")) +
  theme(legend.position = "bottom")+
    theme(axis.text.x= element_text(size=15),
          axis.text.y= element_text(size=15),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        title = element_blank(),
        legend.title = element_text(size=15),
        legend.text = element_text(size=14),
        plot.caption = element_blank())+#element_text(hjust = 0))+
  labs(title="Probabilidad condicional de presentar Sintomatología Ansiosa",
  subtitle="manteniendo valores iguales en el resto de las variables",
  caption=paste0("Nota. Barras verticales, Intervalos de Error;\nResiliencia, ptje percentil 95= ",quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.95,na.rm=T),"; ptje percentil 05=",quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.05,na.rm=T)))+
     theme(
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    line = element_blank())+
    geom_label(aes(y=half, label=lab),
      #position = position_dodge(width = .5),    # move to center of bars
              #vjust = 0,    # nudge above top of bar
            position = position_dodge(width = .8),
            vjust = .1,
            #position_stack(vjust = 0.5),
              size = 8,
            #direction = "y",
            #force=1,
            #seed=123,
            colour = "white", fontface = "bold")

p5a
Figura 9a. Probabilidad de Presentar Sintomatología Ansiosa, manteniendo constantes el resto de las variables

Figura 9a. Probabilidad de Presentar Sintomatología Ansiosa, manteniendo constantes el resto de las variables

fmla4 <- as.formula(paste0( "tamizaje_dep ~ ","p40_istas_soporte+ ratio_nec_insuf+ p45_demo_sexo"))
    # fit glm model
    assign(paste0("reg_log_glm_tamizaje_dep4"), glm(fmla4, data= dplyr::mutate(surveymonkey_accionsalududp_df2_cor_table2,p45_demo_sexo=factor(p45_demo_sexo)), family=binomial()))
    
    #jtools::summ(reg_log_glm_tamizaje_dep)

preddat_soporte4 <- 
  predict(reg_log_glm_tamizaje_dep4,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(quantile(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,.95,na.rm=T),
                              quantile(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,.05,na.rm=T)),
          ratio_nec_insuf=c(median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T),
                                   median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T)),
          p45_demo_sexo=c("0","0")),
         # estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_dep4, Exp=T)[which(grepl("p40_istas_soporte",tidy(reg_log_glm_tamizaje_dep4, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))

preddat_miedo4 <- 
  predict(reg_log_glm_tamizaje_dep4,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T),
                              median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T)),
          ratio_nec_insuf=c(quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.95,na.rm=T),
                                   quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.05,na.rm=T)),
          p45_demo_sexo=c("0","0")),
         # estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_dep4, Exp=T)[which(grepl("ratio_nec_insuf",tidy(reg_log_glm_tamizaje_dep4, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))


preddat_mujer4 <- 
  predict(reg_log_glm_tamizaje_dep4,
  type = "response",
  newdata=data.frame(
          p40_istas_soporte=c(median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T),
                              median(surveymonkey_accionsalududp_df2_cor_table2$p42_res_total,na.rm=T)),
          ratio_nec_insuf=c(median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T),
                                   median(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf, na.rm=T)),
          p45_demo_sexo=c("0","1")),
         # estamento=rep("Enfermeros",2)), 
               se.fit=TRUE) %>% 
  as.data.frame() %>% 
  dplyr::mutate(p_val=as.numeric(tidy(reg_log_glm_tamizaje_dep4, Exp=T)[which(grepl("p45_demo_sexo",tidy(reg_log_glm_tamizaje_dep4, Exp=T)$term)),5])) %>% 
  dplyr::mutate(p_val=dplyr::case_when(p_val<0.001~"<0.001",
                                       p_val>=0.05~"NS",
                                       T~as.character(round(p_val,3)))) %>% 
  dplyr::mutate(p_val_lab=dplyr::case_when(p_val=="<0.001"~paste0("p ",p_val),
                                           T~paste0("p=",p_val)))

p5b<-
rbind(cbind(preddat_soporte4,cat=c("95%","5%"),var=rep("Soporte Pares y Sup",2)),
      cbind(preddat_miedo4,cat=c("95%","5%"),var=rep("Razón EPPs",2)),
      cbind(preddat_mujer4,cat=c("Hombre","Mujer"),var=rep("Sexo",2))) %>% 
     dplyr::mutate(var=factor(var, levels=c("Soporte Pares y Sup","Razón EPPs","Sexo"))) %>% 
     dplyr::group_by(var) %>% 
     dplyr::mutate(cat=factor(cat)) %>% 
     dplyr::ungroup() %>% 
  dplyr::mutate(lab=paste0(round(fit,2)*100,"%"), half=(fit/10)*4) %>% 
  ggplot2::ggplot(aes(x = var, y = fit, fill=cat)) +  
  scale_y_continuous(breaks = seq(0,1,by=.1),labels = scales::percent_format(accuracy = 1))+
  geom_bar(stat = "identity", position = "dodge", width = 0.8)+
  geom_text(aes(label=`p_val_lab`, y=.9), size = 5) +
  #geom_text(aes(label=lab, y=.0), position=position_dodge(width=0.9), vjust = -.5, size = 5) +
  geom_errorbar(aes(ymin=fit-se.fit, ymax=fit+se.fit), width=.2,
                 position=position_dodge(.8)) +
  theme_sjplot() +
  scale_fill_manual(name="Valor", values=c("grey50","grey20","grey50","grey20")) +
  theme(legend.position = "bottom")+
    theme(axis.text.x= element_text(size=15),
          axis.text.y= element_text(size=15),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        title = element_blank(),
        legend.title = element_text(size=15),
        legend.text = element_text(size=14),
        plot.caption = element_blank())+#element_text(hjust = 0))+
  labs(title="Probabilidad condicional de presentar Sintomatología Ansiosa",
  subtitle="manteniendo valores iguales en el resto de las variables",
  caption=paste0("Nota. Barras verticales, Intervalos de Error;\nResiliencia, ptje percentil 95= ",quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.95,na.rm=T),"; ptje percentil 05=",quantile(surveymonkey_accionsalududp_df2_cor_table2$ratio_nec_insuf,.05,na.rm=T)))+
     theme(
    panel.grid.minor = element_blank(), 
    panel.grid.major = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_blank(),
    line = element_blank())+
    geom_label(aes(y=half, label=lab),
      #position = position_dodge(width = .5),    # move to center of bars
              #vjust = 0,    # nudge above top of bar
            position = position_dodge(width = .8),
            vjust = .1,
            #position_stack(vjust = 0.5),
              size = 8,
            #direction = "y",
            #force=1,
            #seed=123,
            colour = "white", fontface = "bold")

p5b
Figura 9b. Probabilidad de Presentar Sintomatología Depresiva, manteniendo constantes el resto de las variables

Figura 9b. Probabilidad de Presentar Sintomatología Depresiva, manteniendo constantes el resto de las variables


2.4 Ecuaciones estructurales

library(lavaan)
ord_vec_a<-
c("p45_demo_sexo", "tamizaje_ans", "tamizaje_dep")

ord_vec_b<-
    c(
    "p5_animo_1",  "p5_animo_2", "p5_animo_3",  "p5_animo_4",
    "p40_cond_trab_istas_08", "p40_cond_trab_istas_09",
    "p40_cond_trab_istas_06", "p40_cond_trab_istas_07",
     "p45_demo_sexo")

modelo_simple_ans <- "
      # direct effect
      tamizaje_ans ~ c*p40_istas_soporte
      # mediator
      ratio_nec_insuf~ a*p40_istas_soporte+ p45_demo_sexo
      #mediator effect
      tamizaje_ans ~ b*ratio_nec_insuf+ p45_demo_sexo
      #indirect effect (a*b)
      ab := a*b
      total effect:= c + (a*b) "

modelo_simple_dep <- "
      # direct effect
      tamizaje_dep ~ c*p40_istas_soporte
      # mediator
      ratio_nec_insuf~ a*p40_istas_soporte+ p45_demo_sexo
      #mediator effect
      tamizaje_dep ~ b*ratio_nec_insuf+ p45_demo_sexo
      #indirect effect (a*b)
      ab := a*b
      total effect:= c + (a*b) "


modelo_final <- "
      SM =~ p5_animo_1+  p5_animo_2+ p5_animo_3+  p5_animo_4
      PSICOSOC =~p40_cond_trab_istas_06+ p40_cond_trab_istas_07+ p40_cond_trab_istas_08+ p40_cond_trab_istas_09
      # direct effect
      SM ~ c*PSICOSOC
      # mediator
      ratio_nec_insuf~ a*PSICOSOC+ p45_demo_sexo
      #mediator effect
      SM ~ b*ratio_nec_insuf+ p45_demo_sexo
      #indirect effect (a*b)
      ab := a*b
      total effect:= c + (a*b) "


modelo_final_sin_med <- "
      SM =~ p5_animo_1+ p5_animo_2+ p5_animo_3+ p5_animo_4
      PSICOSOC =~p40_cond_trab_istas_06+ p40_cond_trab_istas_07+ p40_cond_trab_istas_08+ p40_cond_trab_istas_09
      SM ~ PSICOSOC+ ratio_nec_insuf+ p45_demo_sexo"


modelo_final_sin_med2 <- "
      SM =~ p5_animo_1+ p5_animo_2+ p5_animo_3+ p5_animo_4
      PSICOSOC =~p40_cond_trab_istas_06+ p40_cond_trab_istas_07+ p40_cond_trab_istas_08+ p40_cond_trab_istas_09
      SM ~ PSICOSOC+ ratio_nec_insuf+ p45_demo_sexo+ estamento"

SEM_a <- sem(modelo_simple_ans, data=surveymonkey_accionsalududp_df2_cor_table2, ordered=ord_vec_a, 
            estimator= "WLSMV", warn = T, std.lv=T, parameterization="theta")#

SEM_b <- sem(modelo_simple_dep, data=surveymonkey_accionsalududp_df2_cor_table2, ordered=ord_vec_a, 
            estimator= "WLSMV", warn = T, std.lv=T, parameterization="theta")#

SEM_c <- sem(modelo_final, data=surveymonkey_accionsalududp_df2_cor_table2%>% 
               dplyr::mutate_at(vars("p40_cond_trab_istas_08", "p40_cond_trab_istas_09","p40_cond_trab_istas_06", "p40_cond_trab_istas_07"),~fct_rev(.)), ordered=ord_vec_b, 
            estimator= "WLSMV", warn = T, std.lv=T, parameterization="theta")#

SEM_d <- sem(modelo_final_sin_med, data=surveymonkey_accionsalududp_df2_cor_table2 %>% 
               dplyr::mutate_at(vars("p40_cond_trab_istas_08", "p40_cond_trab_istas_09","p40_cond_trab_istas_06", "p40_cond_trab_istas_07"),~fct_rev(.)), ordered=ord_vec_b, 
            estimator= "WLSMV", warn = T, std.lv=T)#

SEM_e <- sem(modelo_final_sin_med2, data=surveymonkey_accionsalududp_df2_cor_table2%>% 
               dplyr::mutate_at(vars("p40_cond_trab_istas_08", "p40_cond_trab_istas_09","p40_cond_trab_istas_06", "p40_cond_trab_istas_07"),~fct_rev(.)), ordered=c(ord_vec_b,"estamento"), 
            estimator= "WLSMV", warn = T, std.lv=T)#


2.4.1 Modelo sobre ansiedad

summary(SEM_a, fit.measures=TRUE, rsq=TRUE, standardized=TRUE)
## lavaan 0.6-7 ended normally after 27 iterations
## 
##   Estimator                                       DWLS
##   Optimization method                           NLMINB
##   Number of free parameters                          8
##                                                       
##                                                   Used       Total
##   Number of observations                           516         875
##                                                                   
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                                 0.000       0.000
##   Degrees of freedom                                 0           0
## 
## Model Test Baseline Model:
## 
##   Test statistic                                 3.904       3.904
##   Degrees of freedom                                 1           1
##   P-value                                        0.048       0.048
##   Scaling correction factor                                  1.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000       1.000
##   Tucker-Lewis Index (TLI)                       1.000       1.000
##                                                                   
##   Robust Comparative Fit Index (CFI)                            NA
##   Robust Tucker-Lewis Index (TLI)                               NA
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000       0.000
##   90 Percent confidence interval - lower         0.000       0.000
##   90 Percent confidence interval - upper         0.000       0.000
##   P-value RMSEA <= 0.05                             NA          NA
##                                                                   
##   Robust RMSEA                                                  NA
##   90 Percent confidence interval - lower                     0.000
##   90 Percent confidence interval - upper                     0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000       0.000
## 
## Parameter Estimates:
## 
##   Standard errors                           Robust.sem
##   Information                                 Expected
##   Information saturated (h1) model        Unstructured
## 
## Regressions:
##                     Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   tamizaje_ans ~                                                         
##     p40_sts_sp (c)    -0.070    0.019   -3.793    0.000   -0.070   -0.210
##   ratio_nec_insuf ~                                                      
##     p40_sts_sp (a)    -0.020    0.005   -4.255    0.000   -0.020   -0.191
##     p45_dem_sx         0.093    0.039    2.385    0.017    0.093    0.120
##   tamizaje_ans ~                                                         
##     rat_nc_nsf (b)     0.338    0.170    1.990    0.047    0.338    0.104
##     p45_dem_sx         0.466    0.139    3.345    0.001    0.466    0.187
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .tamizaje_ans      0.000                               0.000    0.000
##    .ratio_nec_insf    0.403    0.059    6.801    0.000    0.403    1.230
## 
## Thresholds:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     tamizaje_ns|t1   -0.326    0.261   -1.246    0.213   -0.326   -0.307
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .tamizaje_ans      1.000                               1.000    0.888
##    .ratio_nec_insf    0.102    0.010   10.599    0.000    0.102    0.945
## 
## Scales y*:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     tamizaje_ans      0.994                               0.994    1.000
## 
## R-Square:
##                    Estimate
##     tamizaje_ans      0.112
##     ratio_nec_insf    0.055
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     ab               -0.007    0.004   -1.796    0.072   -0.007   -0.020
##     totaleffect      -0.077    0.018   -4.254    0.000   -0.077   -0.230
#subset(lavaan::modindices(SEM_a)[order(lavaan::modindices(SEM_a)$mi, decreasing=TRUE), ], mi > 5 & abs(sepc.all)>0.2)

El efecto nulo encontrado en el modelo más complejo se contrastó mediante un análisis de sensibilidad utilizando simulaciones de Monte Carlo de 5,000 iteraciones.

med0a <- 'a*b'
medabc0a <- ' c + a*b'
myParams0a <- c("a","b")
myCoefs_final0a <- coef(SEM_a)[myParams0a]
myACM_final0a <- vcov(SEM_a)[myParams0a, myParams0a]

set.seed(2125)
fit_SEM_c_0a <- semTools::monteCarloMed(med0a, myCoefs_final0a, ACM = myACM_final0a, rep=10000 , CI=95, plot=TRUE)
Figura 10a. Simulaciones Monte Carlo, Sintomatología Ansiosa

Figura 10a. Simulaciones Monte Carlo, Sintomatología Ansiosa

print(fit_SEM_c_0a)
## $`Point Estimate`
## [1] -0.006651143
## 
## $`95% Confidence Interval`
##           
## LL -0.0151
## UL  0.0001
paste0("OR= ",round(exp(fit_SEM_c_0a$`Point Estimate`),3),"[",
       round(exp(fit_SEM_c_0a$`95% Confidence Interval`)[1],3),"-",
       round(exp(fit_SEM_c_0a$`95% Confidence Interval`)[2],3),"]")
## [1] "OR= 0.993[0.985-1]"

En efecto, la mediación no ejerció un efecto sinificativo, siendo valores Odds ratio que circundan en efectos nulos (0.985-1).

standardizedSolution(SEM_a) %>% 
  dplyr::mutate(reg=paste0(lhs,"_",op,"_",rhs)) %>%
  dplyr::filter(reg %in% c("tamizaje_ans_~_p40_istas_soporte", "tamizaje_ans_~_ratio_nec_insuf", "ratio_nec_insuf_~_p40_istas_soporte", "ab_:=_a*b", "totaleffect_:=_c+(a*b)")) %>%
  mutate_if(is.numeric, round, 3) %>%
  mutate(est.std, STD=ifelse(pvalue<.001, paste0(round(exp(est.std),3),"***"),
                             ifelse(pvalue<.01, paste0(round(exp(est.std),3),"**"),
                                    ifelse(pvalue<.05, paste0(round(exp(est.std),3),"*"), round(exp(est.std),3))))) %>% 
    knitr::kable(.,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption="Tabla 10a. Prueba Mediación, Modelo sobre Sintomatología Ansiosa",
                 align =c("l","l",rep('c', 101))) %>% 
               #col.names = c("Variable","Category","OR", "95% IC"))%>%
   kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 13) %>% 
  kableExtra::scroll_box(width = "100%", height = "375px")
Tabla 10a. Prueba Mediación, Modelo sobre Sintomatología Ansiosa
lhs op rhs est.std se z pvalue ci.lower ci.upper reg STD
tamizaje_ans ~ p40_istas_soporte -0.210 0.053 -3.970 0.000 -0.314 -0.107 tamizaje_ans_~_p40_istas_soporte 0.811***
ratio_nec_insuf ~ p40_istas_soporte -0.191 0.041 -4.671 0.000 -0.270 -0.111 ratio_nec_insuf_~_p40_istas_soporte 0.826***
tamizaje_ans ~ ratio_nec_insuf 0.104 0.052 1.999 0.046 0.002 0.207 tamizaje_ans_~_ratio_nec_insuf 1.11*
ab := a*b -0.020 0.011 -1.811 0.070 -0.041 0.002 ab_:=_a*b 0.98
totaleffect := c+(a*b) -0.230 0.051 -4.504 0.000 -0.331 -0.130 totaleffect_:=_c+(a*b) 0.795***


2.4.2 Modelo sobre depresión

summary(SEM_b, fit.measures=TRUE, rsq=TRUE, standardized=TRUE)
## lavaan 0.6-7 ended normally after 28 iterations
## 
##   Estimator                                       DWLS
##   Optimization method                           NLMINB
##   Number of free parameters                          8
##                                                       
##                                                   Used       Total
##   Number of observations                           516         875
##                                                                   
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                                 0.000       0.000
##   Degrees of freedom                                 0           0
## 
## Model Test Baseline Model:
## 
##   Test statistic                                 1.097       1.097
##   Degrees of freedom                                 1           1
##   P-value                                        0.295       0.295
##   Scaling correction factor                                  1.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000       1.000
##   Tucker-Lewis Index (TLI)                       1.000       1.000
##                                                                   
##   Robust Comparative Fit Index (CFI)                            NA
##   Robust Tucker-Lewis Index (TLI)                               NA
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000       0.000
##   90 Percent confidence interval - lower         0.000       0.000
##   90 Percent confidence interval - upper         0.000       0.000
##   P-value RMSEA <= 0.05                             NA          NA
##                                                                   
##   Robust RMSEA                                                  NA
##   90 Percent confidence interval - lower                     0.000
##   90 Percent confidence interval - upper                     0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.000       0.000
## 
## Parameter Estimates:
## 
##   Standard errors                           Robust.sem
##   Information                                 Expected
##   Information saturated (h1) model        Unstructured
## 
## Regressions:
##                     Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   tamizaje_dep ~                                                         
##     p40_sts_sp (c)    -0.087    0.019   -4.641    0.000   -0.087   -0.264
##   ratio_nec_insuf ~                                                      
##     p40_sts_sp (a)    -0.020    0.005   -4.255    0.000   -0.020   -0.191
##     p45_dem_sx         0.093    0.039    2.385    0.017    0.093    0.120
##   tamizaje_dep ~                                                         
##     rat_nc_nsf (b)     0.187    0.179    1.049    0.294    0.187    0.058
##     p45_dem_sx         0.267    0.142    1.876    0.061    0.267    0.108
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .tamizaje_dep      0.000                               0.000    0.000
##    .ratio_nec_insf    0.403    0.059    6.801    0.000    0.403    1.230
## 
## Thresholds:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     tamizaje_dp|t1   -0.441    0.268   -1.647    0.100   -0.441   -0.419
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .tamizaje_dep      1.000                               1.000    0.902
##    .ratio_nec_insf    0.102    0.010   10.599    0.000    0.102    0.945
## 
## Scales y*:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     tamizaje_dep      0.998                               0.998    1.000
## 
## R-Square:
##                    Estimate
##     tamizaje_dep      0.098
##     ratio_nec_insf    0.055
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     ab               -0.004    0.004   -1.018    0.309   -0.004   -0.011
##     totaleffect      -0.091    0.019   -4.900    0.000   -0.091   -0.275
#subset(lavaan::modindices(SEM_b)[order(lavaan::modindices(SEM_b)$mi, decreasing=TRUE), ], mi > 5 & abs(sepc.all)>0.2)

El efecto nulo encontrado en el modelo más complejo se contrastó mediante un análisis de sensibilidad utilizando simulaciones de Monte Carlo de 10,000 iteraciones.

#```{r sem0b_c,dpi = 96, message=F, error=T, eval=T, warnings=F}

med0b <- 'a*b'
medabc0b <- ' c + a*b'
myParams0b <- c("a","b")
myCoefs_final0b <- coef(SEM_b)[myParams0b]
myACM_final0b <- vcov(SEM_b)[myParams0b, myParams0b]

set.seed(2125)
fit_SEM_c_0b <- semTools::monteCarloMed(med0b, myCoefs_final0b, ACM = myACM_final0b, rep=10000 , CI=95, plot=TRUE)
Figura 10b. Simulaciones Monte Carlo, Sintomatología Depresiva

Figura 10b. Simulaciones Monte Carlo, Sintomatología Depresiva

print(fit_SEM_c_0b)
## $`Point Estimate`
## [1] -0.003684002
## 
## $`95% Confidence Interval`
##           
## LL -0.0118
## UL  0.0033
paste0("OR= ",round(exp(fit_SEM_c_0b$`Point Estimate`),3),"[",
       round(exp(fit_SEM_c_0b$`95% Confidence Interval`)[1],3),"-",
       round(exp(fit_SEM_c_0b$`95% Confidence Interval`)[2],3),"]")
## [1] "OR= 0.996[0.988-1.003]"

Se descarta el efecto, siendo valores Odds ratio que se superponen a los efectos nulos (0.988-1.003).

standardizedSolution(SEM_b) %>% 
  dplyr::mutate(reg=paste0(lhs,"_",op,"_",rhs)) %>%
  dplyr::filter(reg %in% c("tamizaje_dep_~_p40_istas_soporte", "tamizaje_dep_~_ratio_nec_insuf", "ratio_nec_insuf_~_p40_istas_soporte", "ab_:=_a*b", "totaleffect_:=_c+(a*b)")) %>%
  mutate_if(is.numeric, round, 3) %>%
  mutate(est.std, STD=ifelse(pvalue<.001, paste0(round(exp(est.std),3),"***"),
                             ifelse(pvalue<.01, paste0(round(exp(est.std),3),"**"),
                                    ifelse(pvalue<.05, paste0(round(exp(est.std),3),"*"), round(exp(est.std),3))))) %>% 
    knitr::kable(.,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption="Tabla 10a. Prueba Mediación, Modelo sobre Sintomatología Depresiva",
                 align =c("l","l",rep('c', 101))) %>% 
               #col.names = c("Variable","Category","OR", "95% IC"))%>%
   kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 13) %>% 
  kableExtra::scroll_box(width = "100%", height = "375px")
Tabla 10a. Prueba Mediación, Modelo sobre Sintomatología Depresiva
lhs op rhs est.std se z pvalue ci.lower ci.upper reg STD
tamizaje_dep ~ p40_istas_soporte -0.264 0.053 -4.977 0.000 -0.368 -0.160 tamizaje_dep_~_p40_istas_soporte 0.768***
ratio_nec_insuf ~ p40_istas_soporte -0.191 0.041 -4.671 0.000 -0.270 -0.111 ratio_nec_insuf_~_p40_istas_soporte 0.826***
tamizaje_dep ~ ratio_nec_insuf 0.058 0.056 1.051 0.293 -0.050 0.167 tamizaje_dep_~_ratio_nec_insuf 1.06
ab := a*b -0.011 0.011 -1.021 0.307 -0.032 0.010 ab_:=_a*b 0.989
totaleffect := c+(a*b) -0.275 0.052 -5.302 0.000 -0.376 -0.173 totaleffect_:=_c+(a*b) 0.76***


2.4.3 Mediación, alternativa

#Mediación -ans
 med.fit_ans <- lm(ratio_nec_insuf ~ p40_istas_soporte + p45_demo_sexo, data = surveymonkey_accionsalududp_df2_cor_table2)
 out.fit_ans <- glm(tamizaje_ans ~ ratio_nec_insuf+ p40_istas_soporte + p45_demo_sexo, data = surveymonkey_accionsalududp_df2_cor_table2, family = binomial("logit"))
  set.seed(2125)
med.out_ans <- mediation::mediate(med.fit_ans, out.fit_ans, treat = "p40_istas_soporte", mediator = "ratio_nec_insuf",
robustSE = TRUE, sims = 10000)

  med.fit_dep <- lm(ratio_nec_insuf ~ p40_istas_soporte + p45_demo_sexo, data = surveymonkey_accionsalududp_df2_cor_table2)
  out.fit_dep <- glm(tamizaje_dep ~ ratio_nec_insuf+ p40_istas_soporte + p45_demo_sexo, data = surveymonkey_accionsalududp_df2_cor_table2, family = binomial("logit"))
 set.seed(2125)
  med.out_dep <- mediation::mediate(med.fit_dep, out.fit_dep, treat = "p40_istas_soporte", mediator = "ratio_nec_insuf",
robustSE = TRUE, sims = 10000)

#average causal mediation effects ACME
#average direct effects (ADE)

#sens.out <- #mediation::medsens(med.out_dep, rho.by = 0.1, effect.type = "indirect", sims = 100)

summary(med.out_ans)
## 
## Causal Mediation Analysis 
## 
## Quasi-Bayesian Confidence Intervals
## 
##                          Estimate 95% CI Lower 95% CI Upper p-value    
## ACME (control)           -0.00173     -0.00411         0.00  0.0576 .  
## ACME (treated)           -0.00183     -0.00429         0.00  0.0576 .  
## ADE (control)            -0.01793     -0.02171        -0.01  0.0002 ***
## ADE (treated)            -0.01802     -0.02175        -0.01  0.0002 ***
## Total Effect             -0.01975     -0.02288        -0.01  0.0002 ***
## Prop. Mediated (control)  0.08132     -0.00268         0.23  0.0578 .  
## Prop. Mediated (treated)  0.08714     -0.00285         0.23  0.0578 .  
## ACME (average)           -0.00178     -0.00420         0.00  0.0576 .  
## ADE (average)            -0.01797     -0.02172        -0.01  0.0002 ***
## Prop. Mediated (average)  0.08423     -0.00275         0.23  0.0578 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 516 
## 
## 
## Simulations: 10000
summary(med.out_dep)
## 
## Causal Mediation Analysis 
## 
## Quasi-Bayesian Confidence Intervals
## 
##                          Estimate 95% CI Lower 95% CI Upper p-value    
## ACME (control)           -0.00105     -0.00338         0.00    0.29    
## ACME (treated)           -0.00112     -0.00355         0.00    0.29    
## ADE (control)            -0.02511     -0.02921        -0.02  <2e-16 ***
## ADE (treated)            -0.02518     -0.02918        -0.02  <2e-16 ***
## Total Effect             -0.02623     -0.02973        -0.02  <2e-16 ***
## Prop. Mediated (control)  0.03674     -0.03480         0.13    0.29    
## Prop. Mediated (treated)  0.03960     -0.03708         0.14    0.29    
## ACME (average)           -0.00108     -0.00347         0.00    0.29    
## ADE (average)            -0.02515     -0.02921        -0.02  <2e-16 ***
## Prop. Mediated (average)  0.03817     -0.03620         0.14    0.29    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Sample Size Used: 516 
## 
## 
## Simulations: 10000
#https://m-clark.github.io/posts/2019-03-12-mediation-models/
#https://cran.r-project.org/web/packages/mediation/vignettes/mediation.pdf

Tampoco se identificaron efectos de mediación en los modelos utilizados en el paquete mediation.


2.4.4 Modelo más complejo, efecto sobre SM (Ansiedad y Depresión)

summary(SEM_c, fit.measures=TRUE, rsq=TRUE, standardized=TRUE)
## lavaan 0.6-7 ended normally after 99 iterations
## 
##   Estimator                                       DWLS
##   Optimization method                           NLMINB
##   Number of free parameters                         43
##                                                       
##                                                   Used       Total
##   Number of observations                           516         875
##                                                                   
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                               181.674     231.430
##   Degrees of freedom                                32          32
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  0.816
##   Shift parameter                                            8.714
##        simple second-order correction                             
## 
## Model Test Baseline Model:
## 
##   Test statistic                             11185.859    6616.674
##   Degrees of freedom                                36          36
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.694
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.987       0.970
##   Tucker-Lewis Index (TLI)                       0.985       0.966
##                                                                   
##   Robust Comparative Fit Index (CFI)                            NA
##   Robust Tucker-Lewis Index (TLI)                               NA
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.095       0.110
##   90 Percent confidence interval - lower         0.082       0.097
##   90 Percent confidence interval - upper         0.109       0.124
##   P-value RMSEA <= 0.05                          0.000       0.000
##                                                                   
##   Robust RMSEA                                                  NA
##   90 Percent confidence interval - lower                        NA
##   90 Percent confidence interval - upper                        NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.068       0.068
## 
## Parameter Estimates:
## 
##   Standard errors                           Robust.sem
##   Information                                 Expected
##   Information saturated (h1) model        Unstructured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SM =~                                                                 
##     p5_animo_1        1.365    0.121   11.287    0.000    1.457    0.824
##     p5_animo_2        1.217    0.100   12.182    0.000    1.298    0.792
##     p5_animo_3        1.062    0.089   11.901    0.000    1.133    0.750
##     p5_animo_4        1.574    0.147   10.725    0.000    1.680    0.859
##   PSICOSOC =~                                                           
##     p40_cnd_tr__06    2.444    0.307    7.954    0.000    2.444    0.926
##     p40_cnd_tr__07    3.279    0.744    4.404    0.000    3.279    0.957
##     p40_cnd_tr__08    0.802    0.065   12.264    0.000    0.802    0.626
##     p40_cnd_tr__09    0.791    0.071   11.147    0.000    0.791    0.620
## 
## Regressions:
##                     Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SM ~                                                                   
##     PSICOSOC   (c)    -0.310    0.058   -5.361    0.000   -0.291   -0.291
##   ratio_nec_insuf ~                                                      
##     PSICOSOC   (a)    -0.066    0.016   -4.149    0.000   -0.066   -0.201
##     p45_dem_sx         0.107    0.039    2.759    0.006    0.107    0.138
##   SM ~                                                                   
##     rat_nc_nsf (b)     0.165    0.155    1.065    0.287    0.155    0.051
##     p45_dem_sx         0.409    0.120    3.412    0.001    0.383    0.163
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .p5_animo_1        0.000                               0.000    0.000
##    .p5_animo_2        0.000                               0.000    0.000
##    .p5_animo_3        0.000                               0.000    0.000
##    .p5_animo_4        0.000                               0.000    0.000
##    .p40_cnd_tr__06    0.000                               0.000    0.000
##    .p40_cnd_tr__07    0.000                               0.000    0.000
##    .p40_cnd_tr__08    0.000                               0.000    0.000
##    .p40_cnd_tr__09    0.000                               0.000    0.000
##    .ratio_nec_insf    0.155    0.043    3.596    0.000    0.155    0.472
##    .SM                0.000                               0.000    0.000
##     PSICOSOC          0.000                               0.000    0.000
## 
## Thresholds:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     p5_animo_1|t1    -0.899    0.190   -4.729    0.000   -0.899   -0.509
##     p5_animo_1|t2     1.566    0.209    7.486    0.000    1.566    0.886
##     p5_animo_1|t3     3.041    0.258   11.801    0.000    3.041    1.721
##     p5_animo_2|t1    -1.314    0.184   -7.124    0.000   -1.314   -0.802
##     p5_animo_2|t2     0.760    0.177    4.295    0.000    0.760    0.464
##     p5_animo_2|t3     2.255    0.209   10.773    0.000    2.255    1.376
##     p5_animo_3|t1    -1.012    0.164   -6.174    0.000   -1.012   -0.669
##     p5_animo_3|t2     0.913    0.165    5.545    0.000    0.913    0.604
##     p5_animo_3|t3     2.177    0.196   11.133    0.000    2.177    1.441
##     p5_animo_4|t1    -0.800    0.195   -4.105    0.000   -0.800   -0.409
##     p5_animo_4|t2     1.746    0.233    7.477    0.000    1.746    0.893
##     p5_animo_4|t3     3.496    0.301   11.609    0.000    3.496    1.788
##     p40_cnd___06|1   -5.197    0.612   -8.489    0.000   -5.197   -1.968
##     p40_cnd___06|2   -3.755    0.492   -7.632    0.000   -3.755   -1.422
##     p40_cnd___06|3   -2.479    0.390   -6.354    0.000   -2.479   -0.939
##     p40_cnd___06|4   -0.342    0.281   -1.216    0.224   -0.342   -0.130
##     p40_cnd___07|1   -6.494    1.271   -5.111    0.000   -6.494   -1.894
##     p40_cnd___07|2   -4.301    0.941   -4.572    0.000   -4.301   -1.255
##     p40_cnd___07|3   -2.207    0.572   -3.859    0.000   -2.207   -0.644
##     p40_cnd___07|4    0.588    0.381    1.546    0.122    0.588    0.172
##     p40_cnd___08|1   -2.808    0.203  -13.801    0.000   -2.808   -2.191
##     p40_cnd___08|2   -2.058    0.166  -12.403    0.000   -2.058   -1.605
##     p40_cnd___08|3   -0.990    0.145   -6.812    0.000   -0.990   -0.772
##     p40_cnd___08|4    0.307    0.139    2.204    0.028    0.307    0.239
##     p40_cnd___09|1   -3.134    0.262  -11.965    0.000   -3.134   -2.458
##     p40_cnd___09|2   -2.393    0.193  -12.370    0.000   -2.393   -1.877
##     p40_cnd___09|3   -1.270    0.149   -8.542    0.000   -1.270   -0.996
##     p40_cnd___09|4    0.370    0.138    2.680    0.007    0.370    0.290
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .p5_animo_1        1.000                               1.000    0.320
##    .p5_animo_2        1.000                               1.000    0.372
##    .p5_animo_3        1.000                               1.000    0.438
##    .p5_animo_4        1.000                               1.000    0.262
##    .p40_cnd_tr__06    1.000                               1.000    0.143
##    .p40_cnd_tr__07    1.000                               1.000    0.085
##    .p40_cnd_tr__08    1.000                               1.000    0.608
##    .p40_cnd_tr__09    1.000                               1.000    0.615
##    .ratio_nec_insf    0.101    0.010   10.333    0.000    0.101    0.940
##    .SM                1.000                               0.878    0.878
##     PSICOSOC          1.000                               1.000    1.000
## 
## Scales y*:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     p5_animo_1        0.572                               0.572    1.000
##     p5_animo_2        0.616                               0.616    1.000
##     p5_animo_3        0.667                               0.667    1.000
##     p5_animo_4        0.517                               0.517    1.000
##     p40_cnd_tr__06    0.379                               0.379    1.000
##     p40_cnd_tr__07    0.292                               0.292    1.000
##     p40_cnd_tr__08    0.780                               0.780    1.000
##     p40_cnd_tr__09    0.784                               0.784    1.000
## 
## R-Square:
##                    Estimate
##     p5_animo_1        0.680
##     p5_animo_2        0.628
##     p5_animo_3        0.562
##     p5_animo_4        0.738
##     p40_cnd_tr__06    0.857
##     p40_cnd_tr__07    0.915
##     p40_cnd_tr__08    0.392
##     p40_cnd_tr__09    0.385
##     ratio_nec_insf    0.060
##     SM                0.122
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     ab               -0.011    0.010   -1.040    0.298   -0.010   -0.010
##     totaleffect      -0.321    0.056   -5.771    0.000   -0.301   -0.301
#subset(lavaan::modindices(SEM_c)[order(lavaan::modindices(SEM_c)$mi, decreasing=TRUE), ], mi > 5 & abs(sepc.all)>0.2)

El efecto nulo encontrado en el modelo más complejo se contrastó mediante un análisis de sensibilidad utilizando simulaciones de Monte Carlo de 10,000 iteraciones.

med <- 'a*b'
medabc <- ' c + a*b'
myParams <- c("a","b")
myCoefs_final <- coef(SEM_c)[myParams]
myACM_final <- vcov(SEM_c)[myParams, myParams]

set.seed(2125)
fit_SEM_c_final<-semTools::monteCarloMed(med, myCoefs_final, ACM = myACM_final, rep=10000 , CI=95, plot=TRUE)
Figura 10c. Simulaciones Monte Carlo, Sintomatología Ansiosa y Depresiva

Figura 10c. Simulaciones Monte Carlo, Sintomatología Ansiosa y Depresiva

print(fit_SEM_c_final)
## $`Point Estimate`
## [1] -0.01089818
## 
## $`95% Confidence Interval`
##           
## LL -0.0344
## UL  0.0095
paste0("OR= ",round(exp(fit_SEM_c_final$`Point Estimate`),3),"[",
       round(exp(fit_SEM_c_final$`95% Confidence Interval`)[1],3),"-",
       round(exp(fit_SEM_c_final$`95% Confidence Interval`)[2],3),"]")
## [1] "OR= 0.989[0.966-1.01]"

En efecto, la mediación no ejerció un efecto significativo, siendo valores Odds ratio que circundan en efectos nulos (0.966-1.01).

standardizedSolution(SEM_c) %>% 
  dplyr::mutate(reg=paste0(lhs,"_",op,"_",rhs)) %>%
  dplyr::filter(reg %in% c("SM_~_PSICOSOC", "SM_~_ratio_nec_insuf", "ratio_nec_insuf_~_PSICOSOC", "ab_:=_a*b", "totaleffect_:=_c+(a*b)")) %>%
  mutate_if(is.numeric, round, 3) %>%
  mutate(est.std, STD=ifelse(pvalue<.001, paste0(round(exp(est.std),3),"***"),
                             ifelse(pvalue<.01, paste0(round(exp(est.std),3),"**"),
                                    ifelse(pvalue<.05, paste0(round(exp(est.std),3),"*"), round(exp(est.std),3))))) %>% 
    knitr::kable(.,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption="Tabla 10c. Prueba Mediación, Modelo Final sobre Salud Mental",
                 align =c("l","l",rep('c', 101))) %>% 
               #col.names = c("Variable","Category","OR", "95% IC"))%>%
   kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 13) %>% 
  kableExtra::scroll_box(width = "100%", height = "375px")
Tabla 10c. Prueba Mediación, Modelo Final sobre Salud Mental
lhs op rhs est.std se z pvalue ci.lower ci.upper reg STD
SM ~ PSICOSOC -0.291 0.050 -5.833 0.000 -0.388 -0.193 SM_~_PSICOSOC 0.748***
ratio_nec_insuf ~ PSICOSOC -0.201 0.045 -4.435 0.000 -0.290 -0.112 ratio_nec_insuf_~_PSICOSOC 0.818***
SM ~ ratio_nec_insuf 0.051 0.048 1.062 0.288 -0.043 0.144 SM_~_ratio_nec_insuf 1.052
ab := a*b -0.010 0.010 -1.040 0.298 -0.029 0.009 ab_:=_a*b 0.99
totaleffect := c+(a*b) -0.301 0.047 -6.349 0.000 -0.394 -0.208 totaleffect_:=_c+(a*b) 0.74***

A partir de la tabla anterior podemos observar que el efecto mediador sólo añadió una magnitud muy menor al efecto total.


2.4.5 Modelo más complejo, efecto sobre SM (Ansiedad y Depresión), sin mediación

summary(SEM_d, fit.measures=TRUE, rsq=TRUE, standardized=TRUE)
## lavaan 0.6-7 ended normally after 22 iterations
## 
##   Estimator                                       DWLS
##   Optimization method                           NLMINB
##   Number of free parameters                         39
##                                                       
##                                                   Used       Total
##   Number of observations                           516         875
##                                                                   
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                               222.487     250.045
##   Degrees of freedom                                33          33
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  0.925
##   Shift parameter                                            9.482
##        simple second-order correction                             
## 
## Model Test Baseline Model:
## 
##   Test statistic                             10654.171    6198.110
##   Degrees of freedom                                28          28
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.722
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.982       0.965
##   Tucker-Lewis Index (TLI)                       0.985       0.970
##                                                                   
##   Robust Comparative Fit Index (CFI)                            NA
##   Robust Tucker-Lewis Index (TLI)                               NA
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.106       0.113
##   90 Percent confidence interval - lower         0.093       0.100
##   90 Percent confidence interval - upper         0.119       0.126
##   P-value RMSEA <= 0.05                          0.000       0.000
##                                                                   
##   Robust RMSEA                                                  NA
##   90 Percent confidence interval - lower                        NA
##   90 Percent confidence interval - upper                        NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.074       0.074
## 
## Parameter Estimates:
## 
##   Standard errors                           Robust.sem
##   Information                                 Expected
##   Information saturated (h1) model        Unstructured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SM =~                                                                 
##     p5_animo_1        0.789    0.025   31.119    0.000    0.841    0.829
##     p5_animo_2        0.757    0.026   29.681    0.000    0.807    0.796
##     p5_animo_3        0.709    0.028   25.008    0.000    0.756    0.747
##     p5_animo_4        0.816    0.024   34.242    0.000    0.870    0.857
##   PSICOSOC =~                                                           
##     p40_cnd_tr__06    0.922    0.017   53.168    0.000    0.922    0.922
##     p40_cnd_tr__07    0.958    0.019   50.142    0.000    0.958    0.958
##     p40_cnd_tr__08    0.611    0.032   19.251    0.000    0.611    0.611
##     p40_cnd_tr__09    0.605    0.035   17.186    0.000    0.605    0.605
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SM ~                                                                  
##     PSICOSOC         -0.300    0.055   -5.415    0.000   -0.281   -0.281
##     ratio_nec_insf    0.362    0.157    2.309    0.021    0.339    0.111
##     p45_demo_sexo     0.388    0.120    3.243    0.001    0.364    0.155
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .p5_animo_1        0.000                               0.000    0.000
##    .p5_animo_2        0.000                               0.000    0.000
##    .p5_animo_3        0.000                               0.000    0.000
##    .p5_animo_4        0.000                               0.000    0.000
##    .p40_cnd_tr__06    0.000                               0.000    0.000
##    .p40_cnd_tr__07    0.000                               0.000    0.000
##    .p40_cnd_tr__08    0.000                               0.000    0.000
##    .p40_cnd_tr__09    0.000                               0.000    0.000
##    .SM                0.000                               0.000    0.000
##     PSICOSOC          0.000                               0.000    0.000
## 
## Thresholds:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     p5_animo_1|t1    -0.508    0.109   -4.668    0.000   -0.508   -0.501
##     p5_animo_1|t2     0.903    0.113    7.976    0.000    0.903    0.890
##     p5_animo_1|t3     1.746    0.125   13.931    0.000    1.746    1.721
##     p5_animo_2|t1    -0.807    0.114   -7.101    0.000   -0.807   -0.797
##     p5_animo_2|t2     0.472    0.109    4.316    0.000    0.472    0.466
##     p5_animo_2|t3     1.394    0.120   11.643    0.000    1.394    1.375
##     p5_animo_3|t1    -0.647    0.109   -5.963    0.000   -0.647   -0.640
##     p5_animo_3|t2     0.643    0.109    5.929    0.000    0.643    0.636
##     p5_animo_3|t3     1.491    0.124   12.032    0.000    1.491    1.474
##     p5_animo_4|t1    -0.365    0.103   -3.557    0.000   -0.365   -0.360
##     p5_animo_4|t2     0.966    0.107    9.019    0.000    0.966    0.951
##     p5_animo_4|t3     1.882    0.120   15.720    0.000    1.882    1.853
##     p40_cnd___06|1   -2.081    0.143  -14.547    0.000   -2.081   -2.081
##     p40_cnd___06|2   -1.532    0.123  -12.431    0.000   -1.532   -1.532
##     p40_cnd___06|3   -1.042    0.114   -9.131    0.000   -1.042   -1.042
##     p40_cnd___06|4   -0.216    0.110   -1.973    0.048   -0.216   -0.216
##     p40_cnd___07|1   -2.005    0.141  -14.260    0.000   -2.005   -2.005
##     p40_cnd___07|2   -1.359    0.119  -11.407    0.000   -1.359   -1.359
##     p40_cnd___07|3   -0.739    0.111   -6.640    0.000   -0.739   -0.739
##     p40_cnd___07|4    0.091    0.108    0.842    0.400    0.091    0.091
##     p40_cnd___08|1   -2.292    0.161  -14.260    0.000   -2.292   -2.292
##     p40_cnd___08|2   -1.700    0.134  -12.655    0.000   -1.700   -1.700
##     p40_cnd___08|3   -0.858    0.118   -7.244    0.000   -0.858   -0.858
##     p40_cnd___08|4    0.166    0.113    1.470    0.142    0.166    0.166
##     p40_cnd___09|1   -2.563    0.213  -12.058    0.000   -2.563   -2.563
##     p40_cnd___09|2   -1.974    0.152  -12.981    0.000   -1.974   -1.974
##     p40_cnd___09|3   -1.081    0.120   -8.985    0.000   -1.081   -1.081
##     p40_cnd___09|4    0.222    0.111    1.990    0.047    0.222    0.222
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .p5_animo_1        0.322                               0.322    0.313
##    .p5_animo_2        0.375                               0.375    0.366
##    .p5_animo_3        0.452                               0.452    0.441
##    .p5_animo_4        0.274                               0.274    0.266
##    .p40_cnd_tr__06    0.151                               0.151    0.151
##    .p40_cnd_tr__07    0.083                               0.083    0.083
##    .p40_cnd_tr__08    0.626                               0.626    0.626
##    .p40_cnd_tr__09    0.634                               0.634    0.634
##    .SM                1.000                               0.880    0.880
##     PSICOSOC          1.000                               1.000    1.000
## 
## Scales y*:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     p5_animo_1        1.000                               1.000    1.000
##     p5_animo_2        1.000                               1.000    1.000
##     p5_animo_3        1.000                               1.000    1.000
##     p5_animo_4        1.000                               1.000    1.000
##     p40_cnd_tr__06    1.000                               1.000    1.000
##     p40_cnd_tr__07    1.000                               1.000    1.000
##     p40_cnd_tr__08    1.000                               1.000    1.000
##     p40_cnd_tr__09    1.000                               1.000    1.000
## 
## R-Square:
##                    Estimate
##     p5_animo_1        0.687
##     p5_animo_2        0.634
##     p5_animo_3        0.559
##     p5_animo_4        0.734
##     p40_cnd_tr__06    0.849
##     p40_cnd_tr__07    0.917
##     p40_cnd_tr__08    0.374
##     p40_cnd_tr__09    0.366
##     SM                0.120
#subset(lavaan::modindices(SEM_a)[order(lavaan::modindices(SEM_a)$mi, decreasing=TRUE), ], mi > 5 & abs(sepc.all)>0.2)
subset(lavaan::modindices(SEM_d)[order(lavaan::modindices(SEM_d)$mi, decreasing=TRUE), ], mi > 5 & abs(sepc.all)>0.2)
##                        lhs op                    rhs     mi    epc sepc.lv
## 108 p40_cond_trab_istas_08 ~~ p40_cond_trab_istas_09 98.063  0.394   0.394
## 103 p40_cond_trab_istas_06 ~~ p40_cond_trab_istas_07 89.657  0.790   0.790
## 111               PSICOSOC  ~        ratio_nec_insuf 45.681 -0.639  -0.639
## 81              p5_animo_1 ~~             p5_animo_2 39.926  0.308   0.308
## 107 p40_cond_trab_istas_07 ~~ p40_cond_trab_istas_09 35.894 -0.385  -0.385
## 110               PSICOSOC  ~                     SM 34.062 -0.908  -0.969
## 94              p5_animo_3 ~~             p5_animo_4 31.504  0.269   0.269
## 104 p40_cond_trab_istas_06 ~~ p40_cond_trab_istas_08 29.450 -0.329  -0.329
## 105 p40_cond_trab_istas_06 ~~ p40_cond_trab_istas_09 28.387 -0.333  -0.333
## 106 p40_cond_trab_istas_07 ~~ p40_cond_trab_istas_08 17.800 -0.258  -0.258
## 82              p5_animo_1 ~~             p5_animo_3 15.291 -0.209  -0.209
## 89              p5_animo_2 ~~             p5_animo_4 11.982 -0.199  -0.199
## 88              p5_animo_2 ~~             p5_animo_3 11.008 -0.171  -0.171
## 83              p5_animo_1 ~~             p5_animo_4  8.546 -0.170  -0.170
##     sepc.all sepc.nox
## 108    0.625    0.625
## 103    7.061    7.061
## 111   -0.210   -0.639
## 81     0.887    0.887
## 107   -1.678   -1.678
## 110   -0.969   -0.969
## 94     0.763    0.763
## 104   -1.072   -1.072
## 105   -1.077   -1.077
## 106   -1.133   -1.133
## 82    -0.549   -0.549
## 89    -0.619   -0.619
## 88    -0.415   -0.415
## 83    -0.570   -0.570
summary(SEM_e, fit.measures=TRUE, rsq=TRUE, standardized=TRUE)
## lavaan 0.6-7 ended normally after 24 iterations
## 
##   Estimator                                       DWLS
##   Optimization method                           NLMINB
##   Number of free parameters                         40
##                                                       
##                                                   Used       Total
##   Number of observations                           516         875
##                                                                   
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                               233.723     255.083
##   Degrees of freedom                                40          40
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  0.961
##   Shift parameter                                           11.985
##        simple second-order correction                             
## 
## Model Test Baseline Model:
## 
##   Test statistic                             10721.953    6229.578
##   Degrees of freedom                                28          28
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.724
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.982       0.965
##   Tucker-Lewis Index (TLI)                       0.987       0.976
##                                                                   
##   Robust Comparative Fit Index (CFI)                            NA
##   Robust Tucker-Lewis Index (TLI)                               NA
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.097       0.102
##   90 Percent confidence interval - lower         0.085       0.090
##   90 Percent confidence interval - upper         0.109       0.114
##   P-value RMSEA <= 0.05                          0.000       0.000
##                                                                   
##   Robust RMSEA                                                  NA
##   90 Percent confidence interval - lower                        NA
##   90 Percent confidence interval - upper                        NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.075       0.075
## 
## Parameter Estimates:
## 
##   Standard errors                           Robust.sem
##   Information                                 Expected
##   Information saturated (h1) model        Unstructured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SM =~                                                                 
##     p5_animo_1        0.789    0.025   31.641    0.000    0.842    0.830
##     p5_animo_2        0.759    0.025   30.262    0.000    0.810    0.799
##     p5_animo_3        0.712    0.028   25.416    0.000    0.759    0.750
##     p5_animo_4        0.816    0.024   34.445    0.000    0.870    0.857
##   PSICOSOC =~                                                           
##     p40_cnd_tr__06    0.921    0.017   53.153    0.000    0.921    0.921
##     p40_cnd_tr__07    0.958    0.019   50.303    0.000    0.958    0.958
##     p40_cnd_tr__08    0.609    0.032   19.177    0.000    0.609    0.609
##     p40_cnd_tr__09    0.605    0.035   17.204    0.000    0.605    0.605
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SM ~                                                                  
##     PSICOSOC         -0.302    0.055   -5.472    0.000   -0.283   -0.283
##     ratio_nec_insf    0.369    0.158    2.337    0.019    0.346    0.114
##     p45_demo_sexo     0.382    0.120    3.194    0.001    0.358    0.152
##     estamento        -0.015    0.041   -0.361    0.718   -0.014   -0.017
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .p5_animo_1        0.000                               0.000    0.000
##    .p5_animo_2        0.000                               0.000    0.000
##    .p5_animo_3        0.000                               0.000    0.000
##    .p5_animo_4        0.000                               0.000    0.000
##    .p40_cnd_tr__06    0.000                               0.000    0.000
##    .p40_cnd_tr__07    0.000                               0.000    0.000
##    .p40_cnd_tr__08    0.000                               0.000    0.000
##    .p40_cnd_tr__09    0.000                               0.000    0.000
##    .SM                0.000                               0.000    0.000
##     PSICOSOC          0.000                               0.000    0.000
## 
## Thresholds:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     p5_animo_1|t1    -0.418    0.169   -2.470    0.014   -0.418   -0.412
##     p5_animo_1|t2     0.995    0.175    5.699    0.000    0.995    0.981
##     p5_animo_1|t3     1.838    0.181   10.126    0.000    1.838    1.811
##     p5_animo_2|t1    -0.948    0.176   -5.396    0.000   -0.948   -0.935
##     p5_animo_2|t2     0.333    0.172    1.931    0.054    0.333    0.328
##     p5_animo_2|t3     1.256    0.178    7.049    0.000    1.256    1.239
##     p5_animo_3|t1    -0.829    0.169   -4.899    0.000   -0.829   -0.819
##     p5_animo_3|t2     0.464    0.169    2.751    0.006    0.464    0.458
##     p5_animo_3|t3     1.315    0.177    7.432    0.000    1.315    1.299
##     p5_animo_4|t1    -0.326    0.159   -2.051    0.040   -0.326   -0.321
##     p5_animo_4|t2     1.006    0.162    6.219    0.000    1.006    0.991
##     p5_animo_4|t3     1.921    0.160   12.025    0.000    1.921    1.892
##     p40_cnd___06|1   -2.276    0.191  -11.887    0.000   -2.276   -2.276
##     p40_cnd___06|2   -1.728    0.183   -9.454    0.000   -1.728   -1.728
##     p40_cnd___06|3   -1.237    0.177   -7.003    0.000   -1.237   -1.237
##     p40_cnd___06|4   -0.409    0.174   -2.352    0.019   -0.409   -0.409
##     p40_cnd___07|1   -2.215    0.184  -12.070    0.000   -2.215   -2.215
##     p40_cnd___07|2   -1.570    0.178   -8.843    0.000   -1.570   -1.570
##     p40_cnd___07|3   -0.948    0.171   -5.533    0.000   -0.948   -0.948
##     p40_cnd___07|4   -0.116    0.168   -0.689    0.491   -0.116   -0.116
##     p40_cnd___08|1   -2.506    0.194  -12.891    0.000   -2.506   -2.506
##     p40_cnd___08|2   -1.916    0.180  -10.665    0.000   -1.916   -1.916
##     p40_cnd___08|3   -1.073    0.169   -6.347    0.000   -1.073   -1.073
##     p40_cnd___08|4   -0.045    0.164   -0.274    0.784   -0.045   -0.045
##     p40_cnd___09|1   -2.615    0.268   -9.771    0.000   -2.615   -2.615
##     p40_cnd___09|2   -2.025    0.210   -9.635    0.000   -2.025   -2.025
##     p40_cnd___09|3   -1.133    0.184   -6.147    0.000   -1.133   -1.133
##     p40_cnd___09|4    0.170    0.178    0.955    0.339    0.170    0.170
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .p5_animo_1        0.320                               0.320    0.311
##    .p5_animo_2        0.371                               0.371    0.361
##    .p5_animo_3        0.447                               0.447    0.437
##    .p5_animo_4        0.273                               0.273    0.265
##    .p40_cnd_tr__06    0.151                               0.151    0.151
##    .p40_cnd_tr__07    0.083                               0.083    0.083
##    .p40_cnd_tr__08    0.629                               0.629    0.629
##    .p40_cnd_tr__09    0.634                               0.634    0.634
##    .SM                1.000                               0.879    0.879
##     PSICOSOC          1.000                               1.000    1.000
## 
## Scales y*:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     p5_animo_1        1.000                               1.000    1.000
##     p5_animo_2        1.000                               1.000    1.000
##     p5_animo_3        1.000                               1.000    1.000
##     p5_animo_4        1.000                               1.000    1.000
##     p40_cnd_tr__06    1.000                               1.000    1.000
##     p40_cnd_tr__07    1.000                               1.000    1.000
##     p40_cnd_tr__08    1.000                               1.000    1.000
##     p40_cnd_tr__09    1.000                               1.000    1.000
## 
## R-Square:
##                    Estimate
##     p5_animo_1        0.689
##     p5_animo_2        0.639
##     p5_animo_3        0.563
##     p5_animo_4        0.735
##     p40_cnd_tr__06    0.849
##     p40_cnd_tr__07    0.917
##     p40_cnd_tr__08    0.371
##     p40_cnd_tr__09    0.366
##     SM                0.121
#subset(lavaan::modindices(SEM_a)[order(lavaan::modindices(SEM_a)$mi, decreasing=TRUE), ], mi > 5 & abs(sepc.all)>0.2)
subset(lavaan::modindices(SEM_e)[order(lavaan::modindices(SEM_d)$mi, decreasing=TRUE), ], mi > 5 & abs(sepc.all)>0.2)
##                        lhs op                    rhs     mi    epc sepc.lv
## 113 p40_cond_trab_istas_08 ~~ p40_cond_trab_istas_09 98.410  0.394   0.394
## 108 p40_cond_trab_istas_06 ~~ p40_cond_trab_istas_07 89.523  0.789   0.789
## 116               PSICOSOC  ~        ratio_nec_insuf 41.518 -0.612  -0.612
## 86              p5_animo_1 ~~             p5_animo_2 42.073  0.312   0.312
## 112 p40_cond_trab_istas_07 ~~ p40_cond_trab_istas_09 35.704 -0.384  -0.384
## 115               PSICOSOC  ~                     SM 31.432 -0.873  -0.931
## 99              p5_animo_3 ~~             p5_animo_4 32.830  0.270   0.270
## 109 p40_cond_trab_istas_06 ~~ p40_cond_trab_istas_08 29.434 -0.328  -0.328
## 110 p40_cond_trab_istas_06 ~~ p40_cond_trab_istas_09 28.215 -0.331  -0.331
## 111 p40_cond_trab_istas_07 ~~ p40_cond_trab_istas_08 17.700 -0.257  -0.257
## 87              p5_animo_1 ~~             p5_animo_3 15.798 -0.210  -0.210
## 94              p5_animo_2 ~~             p5_animo_4 12.349 -0.199  -0.199
## 93              p5_animo_2 ~~             p5_animo_3 12.582 -0.182  -0.182
## 88              p5_animo_1 ~~             p5_animo_4  8.814 -0.170  -0.170
##     sepc.all sepc.nox
## 113    0.624    0.624
## 108    7.034    7.034
## 116   -0.201   -0.612
## 86     0.905    0.905
## 112   -1.671   -1.671
## 115   -0.931   -0.931
## 99     0.772    0.772
## 109   -1.061   -1.061
## 110   -1.070   -1.070
## 111   -1.122   -1.122
## 87    -0.554   -0.554
## 94    -0.626   -0.626
## 93    -0.446   -0.446
## 88    -0.576   -0.576


data.table::data.table(cbind(modelo= c("SM ~ Psicosocial +Miedo+ Sexo","SM ~ Psicosocial +Razón EPPs+ Sexo+ Estamento"),
                             rbind(ajusteAFC(SEM_d),ajusteAFC(SEM_e))),keep.rownames = F) %>% 
  knitr::kable(.,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
               caption = paste0("Tabla 27. Comparativo Índices de Ajuste de Modelos Propuestos"),
               align =c('l',rep('c', 101)),
               col.names = c("Modelos","Código", "gl","WLS X2","CMIN/df","aGFI","GFI", "RMSEA\n[IC 90%]","CFit","CFI","NNFI","SRMR")) %>%
      #kableExtra::row_spec(1, bold= T, color= "black", background= "white")%>%
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 12)
Tabla 27. Comparativo Índices de Ajuste de Modelos Propuestos
Modelos Código gl WLS X2 CMIN/df aGFI GFI RMSEA [IC 90%] CFit CFI NNFI SRMR
SM ~ Psicosocial +Miedo+ Sexo SEM_d 33 222.487 6.742 0.964 0.983 0.106[0.093-0.119] 0.000 0.982 0.985 0.074
SM ~ Psicosocial +Razón EPPs+ Sexo+ Estamento SEM_e 40 233.723 5.843 0.962 0.981 0.097[0.085-0.109] 0.000 0.982 0.987 0.075
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#Para ver el número de parámetros
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_

if(no_mostrar==1){
for (i in 2:100){
  ano<-i
  try(semPlot::semPaths(SEM_d, 
                  residuals=T, 
                  what="std", 
                  label.cex=1.5, 
                  edge.label.cex=1,
                  fade=FALSE,
                  thresholds = F,
                  edge.label.position=rep(.5,ano),
                  filetype="pdf",
                  filename=paste0("Número de parámetros ",ano),
                  intercepts=F)
    )
  }
}
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#standardizedSolution(SEM_d)

semPlot::semPaths(SEM_d, 
  
    residuals=T, 
    what="std", 
    #label.cex=c(2,2,2,4), 
    edge.label.cex=.5,
    fade=FALSE,
    thresholds = F,
    #33 en total
    edge.label.position=c(rep(c(0.45,0.55),7),
                          rep(c(0.45,0.55),7),rep(0.5,5)), #10 pars
    nodeLabels=c("animo_1","animo_2","animo_3","animo_4",
                 "istas_06",
                 "istas_07","istas_08","istas_09","Razón\nEPPs",
                  "Sexo",
                 "Ans\ny Dep","Soporte\nSup y Par"),
    intercepts=F, 
    curveAdjacent = TRUE,
    title=F, 
    layout="tree3",
    sizeMan=10, 
    gui = T, 
    allVars = FALSE,
    cut=1.1,
    sizeLat=11, 
    edge.color="black",
    curvePivot=T,
    borders=FALSE, 
    edge.width = 0.3, 
    node.width =.5, 
    node.height= .5,
    label.scale=T,
    curve = -.3,
    mar = c(5.8, 0.8, 7.8, 0.8))
Figura 11. Cargas factoriales estandarizadas y comunalidades para modelo de Ecuaciones Estructurales

Figura 11. Cargas factoriales estandarizadas y comunalidades para modelo de Ecuaciones Estructurales

  jpeg("_SEM_PATH.jpg", height = 11.5, width = 11.5, units = 'in', res = 600)
  semPlot::semPaths(SEM_d, 
  
    residuals=T, 
    what="std", 
    #label.cex=c(2,2,2,4), 
    edge.label.cex=.5,
    fade=FALSE,
    thresholds = F,
    #33 en total
    edge.label.position=c(rep(c(0.45,0.55),7),
                          rep(c(0.45,0.55),7),rep(0.5,5)), #10 pars
    nodeLabels=c("animo_1","animo_2","animo_3","animo_4",
                 "istas_06",
                 "istas_07","istas_08","istas_09","Razón\nEPPs",
                  "Sexo",
                 "Ans\ny Dep","Soporte\nSup y Par"),
    intercepts=F, 
    curveAdjacent = TRUE,
    title=F, 
    layout="tree3",
    sizeMan=10, 
    gui = T, 
    allVars = FALSE,
    cut=1.1,
    sizeLat=11, 
    edge.color="black",
    curvePivot=T,
    borders=FALSE, 
    edge.width = 0.3, 
    node.width =.5, 
    node.height= .5,
    label.scale=T,
    curve = -.3,
    mar = c(5.8, 0.8, 7.8, 0.8))
  dev.off()
## png 
##   2
  • p40_cond_trab_istas_06 (En su trabajo principal: | Su superior directo, ¿está dispuesto a escuchar sus problemas en el trabajo?)

  • p40_cond_trab_istas_07 (En su trabajo principal: | ¿Recibe ayuda y apoyo de su superior directo?)

  • p40_cond_trab_istas_08 (En su trabajo principal: | ¿Recibe ayuda y apoyo para el trabajo de sus compañeras o compañeros de trabajo?)

  • p40_cond_trab_istas_09 (En su trabajo principal: | ¿Hay un buen ambiente entre usted y sus compañeros y compañeras de trabajo?)

  • p5_animo_1 (Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | Me he sentido Nervioso, ansioso o con los nervios de punta.)

  • p5_animo_2 (Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | No he podido dejar de preocuparme.)

  • p5_animo_3 (Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | He sentido falta de interés o poca satisfacción en hacer cosas.)

  • p5_animo_4 (Señale con qué frecuencia ha experimentado las siguientes situaciones en los últimos 7 días | Me he sentido decaído, deprimido o desesperanzado.)

3 Información de la Sesión

Sys.getenv("R_LIBS_USER")
## [1] "C:/Users/andre/Google Drive/AccionSaludUDP_win/renv/library/R-4.0/x86_64-w64-mingw32;C:/Users/andre/AppData/Local/Temp/Rtmpugl6J7/renv-system-library"
rstudioapi::getSourceEditorContext()
## Document Context: 
## - id:        '50227AD6'
## - path:      'C:/Users/andre/Google Drive/AccionSaludUDP_win/Articulo2.Rmd'
## - contents:  <2619 rows>
## Document Selection:
## - [2589, 21] -- [2589, 21]: ''
sessionInfo()
## R version 4.0.2 (2020-06-22)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19042)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=Spanish_Chile.1252  LC_CTYPE=Spanish_Chile.1252   
## [3] LC_MONETARY=Spanish_Chile.1252 LC_NUMERIC=C                  
## [5] LC_TIME=Spanish_Chile.1252    
## 
## attached base packages:
##  [1] parallel  grid      splines   stats     graphics  grDevices datasets 
##  [8] utils     methods   base     
## 
## other attached packages:
##  [1] diagram_1.6.5              shape_1.4.6               
##  [3] finalfit_1.0.2             mediation_4.5.0           
##  [5] sandwich_3.0-0             Matrix_1.2-18             
##  [7] glmulti_1.0.8              leaps_3.1                 
##  [9] rJava_1.0-4                jtools_2.1.3              
## [11] heatmaply_1.2.1            viridis_0.5.1             
## [13] viridisLite_0.3.0          random.polychor.pa_1.1.4-4
## [15] boot_1.3-25                semTools_0.5-4            
## [17] semPlot_1.1.2              lavaan_0.6-7              
## [19] parameters_0.11.0          rpivotTable_0.3.0         
## [21] survminer_0.4.8            ggpubr_0.4.0              
## [23] ggfortify_0.4.11           forcats_0.5.1             
## [25] purrr_0.3.4                tibble_3.0.6              
## [27] tidyverse_1.3.0            factoextra_1.0.7          
## [29] ggiraph_0.7.8              nFactors_2.4.1            
## [31] homals_1.0-8               radiant_1.3.2             
## [33] radiant.multivariate_1.3.5 radiant.model_1.3.14      
## [35] radiant.basics_1.3.4       radiant.design_1.3.5      
## [37] radiant.data_1.3.12        tidyr_1.1.2               
## [39] magrittr_2.0.1             ggcorrplot_0.1.3          
## [41] MVN_5.8                    polycor_0.7-10            
## [43] mvtnorm_1.1-1              GPArotation_2014.11-1     
## [45] psych_2.0.12               wordcloud_2.6             
## [47] RColorBrewer_1.1-2         wordcloud2_0.2.1          
## [49] tm_0.7-8                   NLP_0.2-1                 
## [51] skimr_2.1.2                ExPanDaR_0.5.3            
## [53] devtools_2.3.2             usethis_2.0.0             
## [55] sqldf_0.4-11               RSQLite_2.2.3             
## [57] gsubfn_0.7                 proto_1.0.0               
## [59] altair_4.1.1               rbokeh_0.5.1              
## [61] rio_0.5.16                 SCtools_0.3.1             
## [63] future_1.21.0              doParallel_1.0.16         
## [65] iterators_1.0.13           foreach_1.5.1             
## [67] ggforce_0.3.2              dplyr_1.0.4               
## [69] compareGroups_4.4.6        Hmisc_4.4-2               
## [71] Formula_1.2-4              survival_3.1-12           
## [73] ggsci_2.9                  MASS_7.3-51.6             
## [75] astsa_1.12                 vcd_1.4-8                 
## [77] Epi_2.43                   lmtest_0.9-38             
## [79] zoo_1.8-8                  tsModel_0.6               
## [81] foreign_0.8-80             sjPlot_2.8.7              
## [83] textreg_0.1.5              estimatr_0.30.2           
## [85] rjson_0.2.20               janitor_2.1.0             
## [87] lattice_0.20-41            DT_0.17                   
## [89] data.table_1.13.6          stringr_1.4.0             
## [91] readr_1.4.0                gganimate_1.0.7           
## [93] htmlwidgets_1.5.3          lubridate_1.7.9.2         
## [95] plotly_4.9.3               ggplot2_3.3.3             
## [97] pacman_0.5.1              
## 
## loaded via a namespace (and not attached):
##   [1] pander_0.6.3            pbapply_1.4-3           haven_2.3.1            
##   [4] tcltk_4.0.2             vctrs_0.3.6             mgcv_1.8-31            
##   [7] blob_1.2.1              prodlim_2019.11.13      later_1.1.0.1          
##  [10] nloptr_1.2.2.2          DBI_1.1.1               jpeg_0.1-8.1           
##  [13] sjmisc_2.8.6            pls_2.7-3               kutils_1.70            
##  [16] laeken_0.5.1            regsem_1.6.2            sROC_0.1-2             
##  [19] markdown_1.1            DEoptimR_1.0-8          Rcpp_1.0.6             
##  [22] KernSmooth_2.23-17      promises_1.1.1          ggeffects_1.0.1        
##  [25] pkgload_1.1.0           fs_1.5.0                mnormt_2.0.2           
##  [28] ranger_0.12.1           digest_0.6.27           png_0.1-7              
##  [31] crul_1.0.0              pkgconfig_2.0.3         gower_0.2.2            
##  [34] estimability_1.3        minqa_1.2.4             reticulate_1.18        
##  [37] gistr_0.9.0             modeltools_0.2-23       nortest_1.0-4          
##  [40] xfun_0.20               tidyselect_1.1.0        performance_0.7.0      
##  [43] reshape2_1.4.4          kernlab_0.9-29          randomizr_0.20.0       
##  [46] pcaPP_1.9-73            pkgbuild_1.2.0          rlang_0.4.10           
##  [49] AlgDesign_1.2.0         manipulateWidget_0.10.1 HardyWeinberg_1.7.1    
##  [52] hexbin_1.28.2           glue_1.4.2              gdtools_0.2.3          
##  [55] pryr_0.1.4              registry_0.5-1          modelr_0.1.8           
##  [58] fpc_2.2-9               emmeans_1.5.4           sgeostat_1.0-27        
##  [61] lava_1.6.8.1            tictoc_1.0              rockchalk_1.8.144      
##  [64] ggsignif_0.6.0          bayestestR_0.8.2        recipes_0.1.15         
##  [67] kableExtra_1.3.1        labeling_0.4.2          GGally_2.1.0           
##  [70] import_1.2.0            httpuv_1.5.5            class_7.3-17           
##  [73] corpcor_1.6.9           qgraph_1.6.9            webshot_0.5.2          
##  [76] jsonlite_1.7.2          tmvnsim_1.0-2           bit_4.0.4              
##  [79] shinyFiles_0.9.0        mime_0.9                systemfonts_1.0.0      
##  [82] gridExtra_2.3           zCompositions_1.3.4     stringi_1.5.3          
##  [85] insight_0.12.0          processx_3.4.5          sem_3.1-11             
##  [88] bitops_1.0-6            cli_2.3.0               maps_3.3.0             
##  [91] rrcov_1.5-5             mvoutlier_2.0.9         energy_1.7-7           
##  [94] officer_0.3.16          rstudioapi_0.13         TSP_1.1-10             
##  [97] sfsmisc_1.1-8           nlme_3.1-148            ks_1.11.7              
## [100] lpSolve_5.6.15          listenv_0.8.0           miniUI_0.1.1.1         
## [103] survMisc_0.5.5          httpcode_0.3.0          prabclus_2.3-2         
## [106] NADA_1.6-1.1            dbplyr_2.1.0            sessioninfo_1.1.1      
## [109] readxl_1.3.1            lifecycle_0.2.0         timeDate_3043.102      
## [112] munsell_0.5.0           cellranger_1.1.0        robCompositions_2.3.0  
## [115] moments_0.14            ggalluvial_0.12.3       vegawidget_0.3.2       
## [118] visNetwork_2.0.9        codetools_0.2-16        coda_0.19-4            
## [121] mi_1.0                  htmlTable_2.1.0         xtable_1.8-4           
## [124] diptest_0.75-7          OpenMx_2.18.1           scatterplot3d_0.3-41   
## [127] abind_1.4-5             farver_2.0.3            parallelly_1.23.0      
## [130] km.ci_0.5-2             askpass_1.1             sjstats_0.18.1         
## [133] rgl_0.104.16            patchwork_1.1.1         cluster_2.1.0          
## [136] dendextend_1.14.0       fda_5.1.9               ellipsis_0.3.1         
## [139] prettyunits_1.1.1       reprex_1.0.0            ggridges_0.5.3         
## [142] mclust_5.4.7            flextable_0.6.3         igraph_1.2.6           
## [145] sjlabelled_1.1.7        pdp_0.7.0               remotes_2.2.0          
## [148] slam_0.1-48             etm_1.1.1               VIM_6.1.0              
## [151] testthat_3.0.1          htmltools_0.5.1.1       yaml_2.2.1             
## [154] XML_3.99-0.5            fds_1.8                 e1071_1.7-4            
## [157] hdrcde_3.4              withr_2.4.1             xgboost_1.3.2.1        
## [160] bit64_4.0.5             effectsize_0.4.3        robustbase_0.93-7      
## [163] progressr_0.7.0         data.tree_1.0.0         memoise_2.0.0          
## [166] evaluate_0.14           pwr_1.3-0               callr_3.5.1            
## [169] ps_1.5.0                curl_4.3                DiagrammeR_1.0.6.1     
## [172] fdrtool_1.2.16          highr_0.8               checkmate_2.0.0        
## [175] renv_0.13.2             cachem_1.0.3            desc_1.2.0             
## [178] cmprsk_2.2-10           truncnorm_1.0-8         openxlsx_4.2.3         
## [181] rstatix_0.6.0           ggrepel_0.9.1           shinycssloaders_1.0.0  
## [184] easyalluvial_0.3.0      rprojroot_2.0.2         tools_4.0.2            
## [187] rainbow_3.6             Rsolnp_1.16             RCurl_1.98-1.2         
## [190] mice_3.13.0             ape_5.4-1               car_3.0-10             
## [193] pbivnorm_0.6.0          xml2_1.3.2              httr_1.4.2             
## [196] assertthat_0.2.1        rmarkdown_2.6           globals_0.14.0         
## [199] R6_2.5.0                nnet_7.3-14             progress_1.2.2         
## [202] gtools_3.8.2            statmod_1.4.35          repr_1.1.3             
## [205] lisrelToR_0.1.4         clustMixType_0.2-9      snakecase_0.11.0       
## [208] carData_3.0-4           colorspace_2.0-0        generics_0.1.0         
## [211] stats4_4.0.2            base64enc_0.1-3         chron_2.3-56           
## [214] pillar_1.4.7            tweenr_1.0.1            sp_1.4-5               
## [217] uuid_0.1-4              plyr_1.8.6              gtable_0.3.0           
## [220] rvest_0.3.6             zip_2.1.1               knitr_1.31             
## [223] latticeExtra_0.6-29     fastmap_1.1.0           seriation_1.2-9        
## [226] crosstalk_1.1.1         flexmix_2.3-17          NeuralNetTools_1.5.2   
## [229] broom_0.7.4             arm_1.11-2              openssl_1.4.3          
## [232] scales_1.1.1            backports_1.2.1         writexl_1.3.1          
## [235] ipred_0.9-9             lme4_1.1-26             hms_1.0.0              
## [238] shiny_1.6.0             KMsurv_0.1-5            polyclip_1.10-0        
## [241] numDeriv_2016.8-1.1     glasso_1.11             lazyeval_0.2.2         
## [244] cvTools_0.3.2           crayon_1.4.0            shinyAce_0.4.1         
## [247] pROC_1.17.0.1           matrixcalc_1.0-3        reshape_0.8.8          
## [250] rpart_4.1-15            compiler_4.0.2
save.image("__accion_salud_regresion_jun_21_2.RData")


unlink("*_cache", recursive = T, force = T, expand = TRUE)