Tutores:

Dr. David Tejada

Dr. Cesar Gavidia

Especialistas en Epidemiología e Investigación en Salud

Instalar y cargar la librería readxl

#install.packages("readxl")
library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3

Conocer y establecer el directorio de trabajo

getwd()
## [1] "C:/Users/Dr. David Tejada/OneDrive/Escritorio/Clases a R2"

Establecer el directorio de trabajo

setwd("C:/Users/Dr. David Tejada/OneDrive/Escritorio")

Cargar la base de datos

baseerc <- read_excel("C:/Users/Dr. David Tejada/OneDrive/Escritorio/erc_r2.xlsx")

Verificar la estructura de mis datos

str(baseerc)
## tibble [174 × 59] (S3: tbl_df/tbl/data.frame)
##  $ cor             : num [1:174] 6 9 10 11 12 15 20 21 25 26 ...
##  $ inic            : chr [1:174] "DAVM" "MDC" "MAD" "LAS" ...
##  $ erc             : chr [1:174] "Si" "No" "No" "No" ...
##  $ estad_erc       : chr [1:174] "est5" "NA" "NA" "NA" ...
##  $ ano_diag        : chr [1:174] "2021" "NA" "NA" "NA" ...
##  $ munic           : chr [1:174] "Tejutla" "Dulce Nombre de María" "Dulce Nombre de María" "Santa Rita" ...
##  $ area_ur         : chr [1:174] "rur" "urb" "urb" "rur" ...
##  $ edad            : num [1:174] 52 57 80 44 63 42 60 79 67 59 ...
##  $ sex             : chr [1:174] "mas" "fem" "fem" "mas" ...
##  $ educ            : chr [1:174] "Si" "Si" "Si" "Si" ...
##  $ niv_educ        : chr [1:174] "bachi" "basi1_6" "basi1_6" "basi1_6" ...
##  $ est_civ         : chr [1:174] "casad" "viud" "viud" "vivi_parej" ...
##  $ act_lab         : chr [1:174] "emplea" "amacas" "desemp" "agric" ...
##  $ act_lab_otr     : chr [1:174] "NA" "NA" "NA" "NA" ...
##  $ agric           : chr [1:174] "No" "No" "No" "Si" ...
##  $ tabac           : chr [1:174] "Si" "No" "No" "No" ...
##  $ alcoh           : chr [1:174] "No" "No" "No" "No" ...
##  $ sal             : chr [1:174] "No" "No" "Si" "No" ...
##  $ agua_adec       : chr [1:174] "No" "No" "No" "Si" ...
##  $ No_agua_adec    : chr [1:174] "Si" "Si" "Si" "No" ...
##  $ frut_verd       : chr [1:174] "Si" "Si" "Si" "No" ...
##  $ No_frut_verd    : chr [1:174] "No" "No" "No" "Si" ...
##  $ ejerc           : chr [1:174] "Si" "Si" "Si" "Si" ...
##  $ No_ejerc        : chr [1:174] "No" "No" "No" "No" ...
##  $ act_temper      : chr [1:174] "Si" "No" "No" "Si" ...
##  $ bajpes_prem     : chr [1:174] "No" "No" "No" "No" ...
##  $ dm              : chr [1:174] "Si" "No" "Si" "No" ...
##  $ dm_tx           : chr [1:174] "Si" "NA" "Si" "NA" ...
##  $ chol            : chr [1:174] "Si" "Si" "No" "No" ...
##  $ chol_tx         : chr [1:174] "Si" "Si" "NA" "NA" ...
##  $ hta             : chr [1:174] "Si" "Si" "Si" "Si" ...
##  $ hta_tx          : chr [1:174] "Si" "Si" "Si" "Si" ...
##  $ enf_autoin      : chr [1:174] "No" "No" "No" "No" ...
##  $ obesi           : chr [1:174] "Si" "Si" "No" "No" ...
##  $ ivu_rec         : chr [1:174] "Si" "No" "No" "No" ...
##  $ lit_ren         : chr [1:174] "No" "No" "No" "No" ...
##  $ af_dm           : chr [1:174] "Si" "Si" "Si" "No" ...
##  $ af_hta          : chr [1:174] "Si" "Si" "No" "Si" ...
##  $ af_acv          : chr [1:174] "No" "Si" "Si" "No" ...
##  $ af_erc          : chr [1:174] "No" "No" "No" "No" ...
##  $ af_iam          : chr [1:174] "No" "No" "No" "No" ...
##  $ af_dislip       : chr [1:174] "Si" "Si" "Si" "No" ...
##  $ af_otra         : chr [1:174] "Si" "No" "No" "No" ...
##  $ af_otra_especif : chr [1:174] "Cáncer cérvix" "NA" "NA" "NA" ...
##  $ uso_plagui      : chr [1:174] "No" "No" "Si" "Si" ...
##  $ tip_activiplagui: chr [1:174] "NA" "NA" "otr_act" "mas_act" ...
##  $ fum_nfum        : chr [1:174] "NA" "NA" "0" "1" ...
##  $ epp_plagui      : chr [1:174] "NA" "NA" "No" "Si" ...
##  $ aines           : chr [1:174] "No" "No" "No" "No" ...
##  $ per_abdo        : num [1:174] 103 95 95 82 95 94 88 75 95 115 ...
##  $ per_abdories    : chr [1:174] "Si" "Si" "Si" "No" ...
##  $ estatur_cm      : num [1:174] 162 153 148 167 151 163 168 141 165 174 ...
##  $ estat_mt        : num [1:174] 1.62 1.53 1.48 1.67 1.51 1.63 1.68 1.41 1.65 1.74 ...
##  $ peso            : num [1:174] 87 70 62 75 70.5 74 79.8 57 63.5 98 ...
##  $ IMC             : num [1:174] 33.2 29.9 28.3 26.9 30.9 ...
##  $ est_nutr        : chr [1:174] "obesidad" "obesidad" "sobrepeso" "sobrepeso" ...
##  $ obesib          : chr [1:174] "Si" "Si" "No" "No" ...
##  $ sobrepes        : chr [1:174] "No" "No" "Si" "Si" ...
##  $ sobpes_obes     : chr [1:174] "Si" "Si" "Si" "Si" ...

Correr un “summary” con variables caracter

summary(baseerc)
##       cor             inic               erc             estad_erc        
##  Min.   :  6.00   Length:174         Length:174         Length:174        
##  1st Qu.: 80.25   Class :character   Class :character   Class :character  
##  Median :153.00   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :141.71                                                           
##  3rd Qu.:202.75                                                           
##  Max.   :251.00                                                           
##    ano_diag            munic             area_ur               edad     
##  Length:174         Length:174         Length:174         Min.   :21.0  
##  Class :character   Class :character   Class :character   1st Qu.:40.0  
##  Mode  :character   Mode  :character   Mode  :character   Median :50.0  
##                                                           Mean   :51.1  
##                                                           3rd Qu.:61.0  
##                                                           Max.   :89.0  
##      sex                educ             niv_educ           est_civ         
##  Length:174         Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##    act_lab          act_lab_otr           agric              tabac          
##  Length:174         Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     alcoh               sal             agua_adec         No_agua_adec      
##  Length:174         Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##   frut_verd         No_frut_verd          ejerc             No_ejerc        
##  Length:174         Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##   act_temper        bajpes_prem             dm               dm_tx          
##  Length:174         Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##      chol             chol_tx              hta               hta_tx         
##  Length:174         Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##   enf_autoin           obesi             ivu_rec            lit_ren         
##  Length:174         Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     af_dm              af_hta             af_acv             af_erc         
##  Length:174         Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     af_iam           af_dislip           af_otra          af_otra_especif   
##  Length:174         Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##   uso_plagui        tip_activiplagui     fum_nfum          epp_plagui       
##  Length:174         Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##     aines              per_abdo      per_abdories         estatur_cm   
##  Length:174         Min.   : 56.00   Length:174         Min.   :130.0  
##  Class :character   1st Qu.: 88.00   Class :character   1st Qu.:151.2  
##  Mode  :character   Median : 97.50   Mode  :character   Median :157.0  
##                     Mean   : 96.24                      Mean   :157.9  
##                     3rd Qu.:103.75                      3rd Qu.:164.0  
##                     Max.   :136.00                      Max.   :185.0  
##     estat_mt          peso             IMC          est_nutr        
##  Min.   :1.300   Min.   : 39.00   Min.   :17.54   Length:174        
##  1st Qu.:1.512   1st Qu.: 61.25   1st Qu.:25.40   Class :character  
##  Median :1.570   Median : 71.00   Median :28.25   Mode  :character  
##  Mean   :1.579   Mean   : 71.45   Mean   :28.75                     
##  3rd Qu.:1.640   3rd Qu.: 80.00   3rd Qu.:31.66                     
##  Max.   :1.850   Max.   :119.00   Max.   :55.33                     
##     obesib            sobrepes         sobpes_obes       
##  Length:174         Length:174         Length:174        
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character  
##                                                          
##                                                          
## 

Conversión de variables tipo caracter a factor

Método converncional - variable por variable

baseerc$erc <- as.factor(baseerc$erc)
baseerc$estad_erc <- as.factor(baseerc$estad_erc)
str(baseerc)
## tibble [174 × 59] (S3: tbl_df/tbl/data.frame)
##  $ cor             : num [1:174] 6 9 10 11 12 15 20 21 25 26 ...
##  $ inic            : chr [1:174] "DAVM" "MDC" "MAD" "LAS" ...
##  $ erc             : Factor w/ 2 levels "No","Si": 2 1 1 1 2 1 2 2 2 1 ...
##  $ estad_erc       : Factor w/ 7 levels "est1","est2",..: 6 7 7 7 2 7 2 4 2 7 ...
##  $ ano_diag        : chr [1:174] "2021" "NA" "NA" "NA" ...
##  $ munic           : chr [1:174] "Tejutla" "Dulce Nombre de María" "Dulce Nombre de María" "Santa Rita" ...
##  $ area_ur         : chr [1:174] "rur" "urb" "urb" "rur" ...
##  $ edad            : num [1:174] 52 57 80 44 63 42 60 79 67 59 ...
##  $ sex             : chr [1:174] "mas" "fem" "fem" "mas" ...
##  $ educ            : chr [1:174] "Si" "Si" "Si" "Si" ...
##  $ niv_educ        : chr [1:174] "bachi" "basi1_6" "basi1_6" "basi1_6" ...
##  $ est_civ         : chr [1:174] "casad" "viud" "viud" "vivi_parej" ...
##  $ act_lab         : chr [1:174] "emplea" "amacas" "desemp" "agric" ...
##  $ act_lab_otr     : chr [1:174] "NA" "NA" "NA" "NA" ...
##  $ agric           : chr [1:174] "No" "No" "No" "Si" ...
##  $ tabac           : chr [1:174] "Si" "No" "No" "No" ...
##  $ alcoh           : chr [1:174] "No" "No" "No" "No" ...
##  $ sal             : chr [1:174] "No" "No" "Si" "No" ...
##  $ agua_adec       : chr [1:174] "No" "No" "No" "Si" ...
##  $ No_agua_adec    : chr [1:174] "Si" "Si" "Si" "No" ...
##  $ frut_verd       : chr [1:174] "Si" "Si" "Si" "No" ...
##  $ No_frut_verd    : chr [1:174] "No" "No" "No" "Si" ...
##  $ ejerc           : chr [1:174] "Si" "Si" "Si" "Si" ...
##  $ No_ejerc        : chr [1:174] "No" "No" "No" "No" ...
##  $ act_temper      : chr [1:174] "Si" "No" "No" "Si" ...
##  $ bajpes_prem     : chr [1:174] "No" "No" "No" "No" ...
##  $ dm              : chr [1:174] "Si" "No" "Si" "No" ...
##  $ dm_tx           : chr [1:174] "Si" "NA" "Si" "NA" ...
##  $ chol            : chr [1:174] "Si" "Si" "No" "No" ...
##  $ chol_tx         : chr [1:174] "Si" "Si" "NA" "NA" ...
##  $ hta             : chr [1:174] "Si" "Si" "Si" "Si" ...
##  $ hta_tx          : chr [1:174] "Si" "Si" "Si" "Si" ...
##  $ enf_autoin      : chr [1:174] "No" "No" "No" "No" ...
##  $ obesi           : chr [1:174] "Si" "Si" "No" "No" ...
##  $ ivu_rec         : chr [1:174] "Si" "No" "No" "No" ...
##  $ lit_ren         : chr [1:174] "No" "No" "No" "No" ...
##  $ af_dm           : chr [1:174] "Si" "Si" "Si" "No" ...
##  $ af_hta          : chr [1:174] "Si" "Si" "No" "Si" ...
##  $ af_acv          : chr [1:174] "No" "Si" "Si" "No" ...
##  $ af_erc          : chr [1:174] "No" "No" "No" "No" ...
##  $ af_iam          : chr [1:174] "No" "No" "No" "No" ...
##  $ af_dislip       : chr [1:174] "Si" "Si" "Si" "No" ...
##  $ af_otra         : chr [1:174] "Si" "No" "No" "No" ...
##  $ af_otra_especif : chr [1:174] "Cáncer cérvix" "NA" "NA" "NA" ...
##  $ uso_plagui      : chr [1:174] "No" "No" "Si" "Si" ...
##  $ tip_activiplagui: chr [1:174] "NA" "NA" "otr_act" "mas_act" ...
##  $ fum_nfum        : chr [1:174] "NA" "NA" "0" "1" ...
##  $ epp_plagui      : chr [1:174] "NA" "NA" "No" "Si" ...
##  $ aines           : chr [1:174] "No" "No" "No" "No" ...
##  $ per_abdo        : num [1:174] 103 95 95 82 95 94 88 75 95 115 ...
##  $ per_abdories    : chr [1:174] "Si" "Si" "Si" "No" ...
##  $ estatur_cm      : num [1:174] 162 153 148 167 151 163 168 141 165 174 ...
##  $ estat_mt        : num [1:174] 1.62 1.53 1.48 1.67 1.51 1.63 1.68 1.41 1.65 1.74 ...
##  $ peso            : num [1:174] 87 70 62 75 70.5 74 79.8 57 63.5 98 ...
##  $ IMC             : num [1:174] 33.2 29.9 28.3 26.9 30.9 ...
##  $ est_nutr        : chr [1:174] "obesidad" "obesidad" "sobrepeso" "sobrepeso" ...
##  $ obesib          : chr [1:174] "Si" "Si" "No" "No" ...
##  $ sobrepes        : chr [1:174] "No" "No" "Si" "Si" ...
##  $ sobpes_obes     : chr [1:174] "Si" "Si" "Si" "Si" ...

Método avanzado - combinación de uso de la función pipe operator y mutate

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
baseerc <- baseerc %>%
  mutate_if(is.character, as.factor)
str(baseerc)
## tibble [174 × 59] (S3: tbl_df/tbl/data.frame)
##  $ cor             : num [1:174] 6 9 10 11 12 15 20 21 25 26 ...
##  $ inic            : Factor w/ 174 levels "AAM","AAMV","ACFZ",..: 22 98 86 77 117 11 51 149 41 87 ...
##  $ erc             : Factor w/ 2 levels "No","Si": 2 1 1 1 2 1 2 2 2 1 ...
##  $ estad_erc       : Factor w/ 7 levels "est1","est2",..: 6 7 7 7 2 7 2 4 2 7 ...
##  $ ano_diag        : Factor w/ 12 levels "2010","2012",..: 9 12 12 12 9 12 10 10 10 12 ...
##  $ munic           : Factor w/ 16 levels "Arcatao","Azacualpa",..: 16 5 5 15 6 14 8 8 8 8 ...
##  $ area_ur         : Factor w/ 2 levels "rur","urb": 1 2 2 1 1 1 2 1 2 2 ...
##  $ edad            : num [1:174] 52 57 80 44 63 42 60 79 67 59 ...
##  $ sex             : Factor w/ 2 levels "fem","mas": 2 1 1 2 1 1 2 1 2 2 ...
##  $ educ            : Factor w/ 2 levels "No","Si": 2 2 2 2 2 1 2 1 2 2 ...
##  $ niv_educ        : Factor w/ 6 levels "bachi","basi1_6",..: 1 2 2 2 2 4 2 4 2 2 ...
##  $ est_civ         : Factor w/ 5 levels "casad","sep_divor",..: 1 4 4 5 3 3 2 1 1 2 ...
##  $ act_lab         : Factor w/ 7 levels "agric","amacas",..: 5 2 4 1 2 2 1 2 7 4 ...
##  $ act_lab_otr     : Factor w/ 10 levels "abogada","agente_seguridad",..: 8 8 8 8 8 8 8 8 7 8 ...
##  $ agric           : Factor w/ 2 levels "No","Si": 1 1 1 2 1 1 2 1 1 1 ...
##  $ tabac           : Factor w/ 2 levels "No","Si": 2 1 1 1 1 1 1 1 2 1 ...
##  $ alcoh           : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 2 1 ...
##  $ sal             : Factor w/ 2 levels "No","Si": 1 1 2 1 1 1 1 1 1 2 ...
##  $ agua_adec       : Factor w/ 2 levels "No","Si": 1 1 1 2 2 2 2 1 1 2 ...
##  $ No_agua_adec    : Factor w/ 2 levels "No","Si": 2 2 2 1 1 1 1 2 2 1 ...
##  $ frut_verd       : Factor w/ 2 levels "No","Si": 2 2 2 1 1 2 1 1 1 1 ...
##  $ No_frut_verd    : Factor w/ 2 levels "No","Si": 1 1 1 2 2 1 2 2 2 2 ...
##  $ ejerc           : Factor w/ 2 levels "No","Si": 2 2 2 2 1 2 2 2 1 2 ...
##  $ No_ejerc        : Factor w/ 2 levels "No","Si": 1 1 1 1 2 1 1 1 2 1 ...
##  $ act_temper      : Factor w/ 2 levels "No","Si": 2 1 1 2 1 1 2 2 2 2 ...
##  $ bajpes_prem     : Factor w/ 1 level "No": 1 1 1 1 1 1 1 1 1 1 ...
##  $ dm              : Factor w/ 2 levels "No","Si": 2 1 2 1 2 1 2 1 2 2 ...
##  $ dm_tx           : Factor w/ 3 levels "NA","No","Si": 3 1 3 1 3 1 3 1 3 3 ...
##  $ chol            : Factor w/ 2 levels "No","Si": 2 2 1 1 2 1 2 2 2 2 ...
##  $ chol_tx         : Factor w/ 3 levels "NA","No","Si": 3 3 1 1 3 1 3 3 3 3 ...
##  $ hta             : Factor w/ 2 levels "No","Si": 2 2 2 2 2 1 2 2 2 2 ...
##  $ hta_tx          : Factor w/ 3 levels "NA","No","Si": 3 3 3 3 3 1 3 3 3 3 ...
##  $ enf_autoin      : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 1 ...
##  $ obesi           : Factor w/ 2 levels "No","Si": 2 2 1 1 2 1 1 1 1 2 ...
##  $ ivu_rec         : Factor w/ 2 levels "No","Si": 2 1 1 1 1 1 1 1 1 1 ...
##  $ lit_ren         : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 1 ...
##  $ af_dm           : Factor w/ 2 levels "No","Si": 2 2 2 1 2 1 2 2 2 2 ...
##  $ af_hta          : Factor w/ 2 levels "No","Si": 2 2 1 2 2 1 2 1 1 2 ...
##  $ af_acv          : Factor w/ 2 levels "No","Si": 1 2 2 1 1 2 1 1 2 1 ...
##  $ af_erc          : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 2 1 1 2 ...
##  $ af_iam          : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 2 ...
##  $ af_dislip       : Factor w/ 2 levels "No","Si": 2 2 2 1 2 1 2 1 1 2 ...
##  $ af_otra         : Factor w/ 2 levels "No","Si": 2 1 1 1 1 1 1 1 1 1 ...
##  $ af_otra_especif : Factor w/ 10 levels "Asma","Cáncer",..: 3 7 7 7 7 7 7 7 7 7 ...
##  $ uso_plagui      : Factor w/ 2 levels "No","Si": 1 1 2 2 1 1 2 2 1 2 ...
##  $ tip_activiplagui: Factor w/ 4 levels "fum","mas_act",..: 3 3 4 2 3 3 2 4 3 2 ...
##  $ fum_nfum        : Factor w/ 3 levels "0","1","NA": 3 3 1 2 3 3 2 1 3 2 ...
##  $ epp_plagui      : Factor w/ 3 levels "NA","No","Si": 1 1 2 3 1 1 2 2 1 2 ...
##  $ aines           : Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 1 ...
##  $ per_abdo        : num [1:174] 103 95 95 82 95 94 88 75 95 115 ...
##  $ per_abdories    : Factor w/ 2 levels "No","Si": 2 2 2 1 2 2 1 1 1 2 ...
##  $ estatur_cm      : num [1:174] 162 153 148 167 151 163 168 141 165 174 ...
##  $ estat_mt        : num [1:174] 1.62 1.53 1.48 1.67 1.51 1.63 1.68 1.41 1.65 1.74 ...
##  $ peso            : num [1:174] 87 70 62 75 70.5 74 79.8 57 63.5 98 ...
##  $ IMC             : num [1:174] 33.2 29.9 28.3 26.9 30.9 ...
##  $ est_nutr        : Factor w/ 4 levels "bajo_peso","normal",..: 3 3 4 4 3 4 4 4 2 3 ...
##  $ obesib          : Factor w/ 2 levels "No","Si": 2 2 1 1 2 1 1 1 1 2 ...
##  $ sobrepes        : Factor w/ 2 levels "No","Si": 1 1 2 2 1 2 2 2 1 1 ...
##  $ sobpes_obes     : Factor w/ 2 levels "No","Si": 2 2 2 2 2 2 2 2 1 2 ...
summary(baseerc)
##       cor              inic     erc      estad_erc      ano_diag  
##  Min.   :  6.00   AAM    :  1   No:116   est1 :  1   NA     :116  
##  1st Qu.: 80.25   AAMV   :  1   Si: 58   est2 : 15   2023   : 14  
##  Median :153.00   ACFZ   :  1            est3a: 13   2021   :  8  
##  Mean   :141.71   ADMT   :  1            est3b: 18   2015   :  6  
##  3rd Qu.:202.75   AEAD   :  1            est4 : 10   2016   :  6  
##  Max.   :251.00   AEMS   :  1            est5 :  1   2022   :  6  
##                   (Other):168            NA   :116   (Other): 18  
##                    munic    area_ur       edad       sex      educ    
##  Chalatenango         :18   rur:91   Min.   :21.0   fem:112   No: 34  
##  Nueva Concepción     :15   urb:83   1st Qu.:40.0   mas: 62   Si:140  
##  San Francisco Lempa  :15            Median :50.0                     
##  Tejutla              :15            Mean   :51.1                     
##  Dulce Nombre de María:12            3rd Qu.:61.0                     
##  El Paraiso           :12            Max.   :89.0                     
##  (Other)              :87                                             
##     niv_educ        est_civ     act_lab             act_lab_otr  agric   
##  bachi  :29   casad     :79   agric :34   NA              :162   No:140  
##  basi1_6:74   sep_divor : 9   amacas:81   artesana        :  2   Si: 34  
##  basi7_9:28   solt      :28   comer :15   cocinero        :  2           
##  ninguno:34   viud      :16   desemp: 6   motorista       :  2           
##  tec    : 2   vivi_parej:42   emplea:24   abogada         :  1           
##  univer : 7                   estud : 2   agente_seguridad:  1           
##                               otr   :12   (Other)         :  4           
##  tabac    alcoh    sal      agua_adec No_agua_adec frut_verd No_frut_verd
##  No:163   No:161   No:134   No:86     No:88        No:98     No:76       
##  Si: 11   Si: 13   Si: 40   Si:88     Si:86        Si:76     Si:98       
##                                                                          
##                                                                          
##                                                                          
##                                                                          
##                                                                          
##  ejerc    No_ejerc act_temper bajpes_prem  dm      dm_tx    chol    chol_tx
##  No: 61   No:113   No:124     No:174      No:127   NA:127   No:92   NA:92  
##  Si:113   Si: 61   Si: 50                 Si: 47   No:  2   Si:82   No: 7  
##                                                    Si: 45           Si:75  
##                                                                            
##                                                                            
##                                                                            
##                                                                            
##  hta     hta_tx  enf_autoin obesi    ivu_rec  lit_ren  af_dm   af_hta  
##  No:99   NA:99   No:173     No:110   No:157   No:160   No:75   No: 68  
##  Si:75   No: 1   Si:  1     Si: 64   Si: 17   Si: 14   Si:99   Si:106  
##          Si:74                                                         
##                                                                        
##                                                                        
##                                                                        
##                                                                        
##  af_acv   af_erc   af_iam   af_dislip af_otra          af_otra_especif
##  No:144   No:135   No:145   No:110    No:164   NA              :164   
##  Si: 30   Si: 39   Si: 29   Si: 64    Si: 10   Asma            :  2   
##                                                Cáncer          :  1   
##                                                Cáncer cérvix   :  1   
##                                                Cáncer de hígado:  1   
##                                                Epilepsia       :  1   
##                                                (Other)         :  4   
##  uso_plagui tip_activiplagui fum_nfum epp_plagui aines       per_abdo     
##  No:132     fum    :  3      0 :  6   NA:132     No:171   Min.   : 56.00  
##  Si: 42     mas_act: 33      1 : 36   No: 39     Si:  3   1st Qu.: 88.00  
##             NA     :132      NA:132   Si:  3              Median : 97.50  
##             otr_act:  6                                   Mean   : 96.24  
##                                                           3rd Qu.:103.75  
##                                                           Max.   :136.00  
##                                                                           
##  per_abdories   estatur_cm       estat_mt          peso             IMC       
##  No: 62       Min.   :130.0   Min.   :1.300   Min.   : 39.00   Min.   :17.54  
##  Si:112       1st Qu.:151.2   1st Qu.:1.512   1st Qu.: 61.25   1st Qu.:25.40  
##               Median :157.0   Median :1.570   Median : 71.00   Median :28.25  
##               Mean   :157.9   Mean   :1.579   Mean   : 71.45   Mean   :28.75  
##               3rd Qu.:164.0   3rd Qu.:1.640   3rd Qu.: 80.00   3rd Qu.:31.66  
##               Max.   :185.0   Max.   :1.850   Max.   :119.00   Max.   :55.33  
##                                                                               
##       est_nutr  obesib   sobrepes sobpes_obes
##  bajo_peso: 2   No:110   No:104   No: 40     
##  normal   :38   Si: 64   Si: 70   Si:134     
##  obesidad :64                                
##  sobrepeso:70                                
##                                              
##                                              
## 

Medidas de tencencia central

Media

Método 1: Uso de la función “mean()”

# Cálculo la media de la variable 'edad'
media_edad <- mean(baseerc$edad, na.rm = TRUE)

# Cálculo la media de la variable 'IMC'
media_imc <- mean(baseerc$IMC, na.rm = TRUE)

# Mostrar las medias
media_edad
## [1] 51.10345
media_imc
## [1] 28.74524

Método 2: Usando la función summary()

# Resumen estadístico de la variable 'edad'
resumen_edad <- summary(baseerc$edad)

# Resumen estadístico de la variable 'IMC'
resumen_imc <- summary(baseerc$IMC)

# Mostrar los resúmenes
resumen_edad
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    21.0    40.0    50.0    51.1    61.0    89.0
resumen_imc
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   17.54   25.40   28.25   28.75   31.66   55.33

Método 3: Usando dplyr con summarise()

library(dplyr)

# Calcular la media de 'edad' y 'IMC' usando summarise
medias <- baseerc %>%
  summarise(
    media_edad = mean(edad, na.rm = TRUE),
    media_imc = mean(IMC, na.rm = TRUE)
  )

# Mostrar las medias
medias

Método 4: Usando sapply() para múltiples variables

# Seleccionar las variables numéricas
variables_numericas <- c("edad", "IMC", "estatur_cm", "peso")

# Calcular las medias usando sapply
medias_multiple <- sapply(baseerc[variables_numericas], mean, na.rm = TRUE)

# Mostrar las medias
medias_multiple
##       edad        IMC estatur_cm       peso 
##   51.10345   28.74524  157.85057   71.44833

Método 5:Usando colMeans() para todas las variables numéricas

# Calcular la media de todas las columnas numéricas
medias_todas <- colMeans(baseerc[sapply(baseerc, is.numeric)], na.rm = TRUE)

# Mostrar las medias
medias_todas
##        cor       edad   per_abdo estatur_cm   estat_mt       peso        IMC 
## 141.712644  51.103448  96.235632 157.850575   1.578506  71.448333  28.745242

Média y desviación estándar

Método 1: Usando mean() y sd() para una sola variable

Resultados numéricos

# Calcular la media y la desviación estándar de 'edad'
media_edad <- mean(baseerc$edad, na.rm = TRUE)
desviacion_edad <- sd(baseerc$edad, na.rm = TRUE)

# Calcular la media y la desviación estándar de 'IMC'
media_imc <- mean(baseerc$IMC, na.rm = TRUE)
desviacion_imc <- sd(baseerc$IMC, na.rm = TRUE)

# Mostrar los resultados
media_edad
## [1] 51.10345
desviacion_edad
## [1] 15.07287
media_imc
## [1] 28.74524
desviacion_imc
## [1] 5.789141

Resultados numéricos con su nombre e identificador

# Calcular y mostrar la media y la desviación estándar de 'edad'
media_edad <- mean(baseerc$edad, na.rm = TRUE)
desviacion_edad <- sd(baseerc$edad, na.rm = TRUE)

cat("Media de Edad:", media_edad, "\n")
## Media de Edad: 51.10345
cat("Desviación Estándar de Edad:", desviacion_edad, "\n\n")
## Desviación Estándar de Edad: 15.07287
# Calcular y mostrar la media y la desviación estándar de 'IMC'
media_imc <- mean(baseerc$IMC, na.rm = TRUE)
desviacion_imc <- sd(baseerc$IMC, na.rm = TRUE)

cat("Media de IMC:", media_imc, "\n")
## Media de IMC: 28.74524
cat("Desviación Estándar de IMC:", desviacion_imc, "\n\n")
## Desviación Estándar de IMC: 5.789141

Método 2: Usando dplyr con summarise()

library(dplyr)

# Calcular la media y la desviación estándar de 'edad' y 'IMC'
estadisticas <- baseerc %>%
  summarise(
    media_edad = mean(edad, na.rm = TRUE),
    desviacion_edad = sd(edad, na.rm = TRUE),
    media_imc = mean(IMC, na.rm = TRUE),
    desviacion_imc = sd(IMC, na.rm = TRUE)
  )

# Mostrar los resultados
estadisticas

Método 3: Usando sapply() para múltiples variables

# Seleccionar las variables numéricas
variables_numericas <- c("edad", "IMC", "estatur_cm", "peso")

# Calcular la media para cada variable numérica
medias_multiple <- sapply(baseerc[variables_numericas], mean, na.rm = TRUE)

# Calcular la desviación estándar para cada variable numérica
desviaciones_multiple <- sapply(baseerc[variables_numericas], sd, na.rm = TRUE)

# Mostrar los resultados
medias_multiple
##       edad        IMC estatur_cm       peso 
##   51.10345   28.74524  157.85057   71.44833
desviaciones_multiple
##       edad        IMC estatur_cm       peso 
##  15.072875   5.789141   9.225535  14.118988
# Seleccionar las variables numéricas
variables_numericas <- c("edad", "IMC", "estatur_cm", "peso")

# Calcular la media para cada variable numérica
medias_multiple <- sapply(baseerc[variables_numericas], mean, na.rm = TRUE)

# Calcular la desviación estándar para cada variable numérica
desviaciones_multiple <- sapply(baseerc[variables_numericas], sd, na.rm = TRUE)


cat("Medias múltiples:\n")
## Medias múltiples:
for(i in seq_along(medias_multiple)) {
  cat(names(medias_multiple)[i], " - Media:", medias_multiple[i], "\n")
}
## edad  - Media: 51.10345 
## IMC  - Media: 28.74524 
## estatur_cm  - Media: 157.8506 
## peso  - Media: 71.44833
cat("\nDesviaciones estándar múltiples:\n")
## 
## Desviaciones estándar múltiples:
for(i in seq_along(desviaciones_multiple)) {
  cat(names(desviaciones_multiple)[i], " - Desviación Estándar:", desviaciones_multiple[i], "\n")
}
## edad  - Desviación Estándar: 15.07287 
## IMC  - Desviación Estándar: 5.789141 
## estatur_cm  - Desviación Estándar: 9.225535 
## peso  - Desviación Estándar: 14.11899

Método 4: Usando colMeans() y apply() para todas las variables numéricas

# Calcular la media de todas las columnas numéricas
medias_todas <- colMeans(baseerc[sapply(baseerc, is.numeric)], na.rm = TRUE)

# Calcular la desviación estándar de todas las columnas numéricas
desviaciones_todas <- apply(baseerc[sapply(baseerc, is.numeric)], 2, sd, na.rm = TRUE)

# Mostrar los resultados
medias_todas
##        cor       edad   per_abdo estatur_cm   estat_mt       peso        IMC 
## 141.712644  51.103448  96.235632 157.850575   1.578506  71.448333  28.745242
desviaciones_todas
##         cor        edad    per_abdo  estatur_cm    estat_mt        peso 
## 71.86699469 15.07287460 13.32895043  9.22553473  0.09225535 14.11898808 
##         IMC 
##  5.78914058
# Calcular la media de todas las columnas numéricas
medias_todas <- colMeans(baseerc[sapply(baseerc, is.numeric)], na.rm = TRUE)

# Calcular la desviación estándar de todas las columnas numéricas
desviaciones_todas <- apply(baseerc[sapply(baseerc, is.numeric)], 2, sd, na.rm = TRUE)


cat("Medias de todas las variables numéricas:\n")
## Medias de todas las variables numéricas:
for(i in seq_along(medias_todas)) {
  cat(names(medias_todas)[i], " - Media:", medias_todas[i], "\n")
}
## cor  - Media: 141.7126 
## edad  - Media: 51.10345 
## per_abdo  - Media: 96.23563 
## estatur_cm  - Media: 157.8506 
## estat_mt  - Media: 1.578506 
## peso  - Media: 71.44833 
## IMC  - Media: 28.74524
cat("\nDesviaciones estándar de todas las variables numéricas:\n")
## 
## Desviaciones estándar de todas las variables numéricas:
for(i in seq_along(desviaciones_todas)) {
  cat(names(desviaciones_todas)[i], " - Desviación Estándar:", desviaciones_todas[i], "\n")
}
## cor  - Desviación Estándar: 71.86699 
## edad  - Desviación Estándar: 15.07287 
## per_abdo  - Desviación Estándar: 13.32895 
## estatur_cm  - Desviación Estándar: 9.225535 
## estat_mt  - Desviación Estándar: 0.09225535 
## peso  - Desviación Estándar: 14.11899 
## IMC  - Desviación Estándar: 5.789141

Método 4: Usando la función “purrr()” para todas las variables numéricas

library(purrr)

# Seleccionar las variables numéricas
variables_numericas <- baseerc %>% select_if(is.numeric)

# Calcular la media y la desviación estándar utilizando purrr::map_dbl
medias_purrr <- map_dbl(variables_numericas, ~ mean(.x, na.rm = TRUE))
desviaciones_purrr <- map_dbl(variables_numericas, ~ sd(.x, na.rm = TRUE))

# Mostrar los resultados
medias_purrr
##        cor       edad   per_abdo estatur_cm   estat_mt       peso        IMC 
## 141.712644  51.103448  96.235632 157.850575   1.578506  71.448333  28.745242
desviaciones_purrr
##         cor        edad    per_abdo  estatur_cm    estat_mt        peso 
## 71.86699469 15.07287460 13.32895043  9.22553473  0.09225535 14.11898808 
##         IMC 
##  5.78914058
library(purrr)

# Seleccionar las variables numéricas
variables_numericas <- baseerc %>% select_if(is.numeric)

# Calcular la media y la desviación estándar utilizando purrr::map_dbl
medias_purrr <- map_dbl(variables_numericas, ~ mean(.x, na.rm = TRUE))
desviaciones_purrr <- map_dbl(variables_numericas, ~ sd(.x, na.rm = TRUE))


cat("Medias utilizando purrr:\n")
## Medias utilizando purrr:
for(i in seq_along(medias_purrr)) {
  cat(names(medias_purrr)[i], " - Media:", medias_purrr[i], "\n")
}
## cor  - Media: 141.7126 
## edad  - Media: 51.10345 
## per_abdo  - Media: 96.23563 
## estatur_cm  - Media: 157.8506 
## estat_mt  - Media: 1.578506 
## peso  - Media: 71.44833 
## IMC  - Media: 28.74524
cat("\nDesviaciones estándar utilizando purrr:\n")
## 
## Desviaciones estándar utilizando purrr:
for(i in seq_along(desviaciones_purrr)) {
  cat(names(desviaciones_purrr)[i], " - Desviación Estándar:", desviaciones_purrr[i], "\n")
}
## cor  - Desviación Estándar: 71.86699 
## edad  - Desviación Estándar: 15.07287 
## per_abdo  - Desviación Estándar: 13.32895 
## estatur_cm  - Desviación Estándar: 9.225535 
## estat_mt  - Desviación Estándar: 0.09225535 
## peso  - Desviación Estándar: 14.11899 
## IMC  - Desviación Estándar: 5.789141

Medianas

Método 1: Usando quantile()

# Calcular y mostrar mediana, Q1, Q3 y rango intercuartílico de 'edad'
mediana_edad <- median(baseerc$edad, na.rm = TRUE)
q1_edad <- quantile(baseerc$edad, 0.25, na.rm = TRUE)
q3_edad <- quantile(baseerc$edad, 0.75, na.rm = TRUE)
iqr_edad <- q3_edad - q1_edad

cat("Mediana de Edad:", mediana_edad, "\n")
## Mediana de Edad: 50
cat("Cuartil 1 de Edad:", q1_edad, "\n")
## Cuartil 1 de Edad: 40
cat("Cuartil 3 de Edad:", q3_edad, "\n")
## Cuartil 3 de Edad: 61
cat("Rango Intercuartílico de Edad:", iqr_edad, "\n\n")
## Rango Intercuartílico de Edad: 21
# Calcular y mostrar mediana, Q1, Q3 y rango intercuartílico de 'IMC'
mediana_imc <- median(baseerc$IMC, na.rm = TRUE)
q1_imc <- quantile(baseerc$IMC, 0.25, na.rm = TRUE)
q3_imc <- quantile(baseerc$IMC, 0.75, na.rm = TRUE)
iqr_imc <- q3_imc - q1_imc
cat("Mediana de IMC:", mediana_imc, "\n")
## Mediana de IMC: 28.2511
cat("Cuartil 1 de IMC:", q1_imc, "\n")
## Cuartil 1 de IMC: 25.40203
cat("Cuartil 3 de IMC:", q3_imc, "\n")
## Cuartil 3 de IMC: 31.66004
cat("Rango Intercuartílico de IMC:", iqr_imc, "\n\n")
## Rango Intercuartílico de IMC: 6.258004

Método 2: Usando summary()

# Usar summary() para obtener un resumen de 'edad'
resumen_edad <- summary(baseerc$edad)
cat("Resumen de edad:\n")
## Resumen de edad:
print(resumen_edad)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    21.0    40.0    50.0    51.1    61.0    89.0
# Usar summary() para obtener un resumen de 'IMC'
resumen_imc <- summary(baseerc$IMC)
cat("Resumen de IMC:\n")
## Resumen de IMC:
print(resumen_imc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   17.54   25.40   28.25   28.75   31.66   55.33

Método 3: Usando dplyr con summarise()

library(dplyr)

# Calcular y mostrar mediana, Q1, Q3 y rango intercuartílico de 'edad' e 'IMC'
estadisticas <- baseerc %>%
  summarise(
    mediana_edad = median(edad, na.rm = TRUE),
    q1_edad = quantile(edad, 0.25, na.rm = TRUE),
    q3_edad = quantile(edad, 0.75, na.rm = TRUE),
    iqr_edad = IQR(edad, na.rm = TRUE),
    mediana_imc = median(IMC, na.rm = TRUE),
    q1_imc = quantile(IMC, 0.25, na.rm = TRUE),
    q3_imc = quantile(IMC, 0.75, na.rm = TRUE),
    iqr_imc = IQR(IMC, na.rm = TRUE)
  )

cat("Edad - Mediana:", estadisticas$mediana_edad, "\n")
## Edad - Mediana: 50
cat("Edad - Cuartil 1:", estadisticas$q1_edad, "\n")
## Edad - Cuartil 1: 40
cat("Edad - Cuartil 3:", estadisticas$q3_edad, "\n")
## Edad - Cuartil 3: 61
cat("Edad - Rango Intercuartílico:", estadisticas$iqr_edad, "\n")
## Edad - Rango Intercuartílico: 21
cat("IMC - Mediana:", estadisticas$mediana_imc, "\n")
## IMC - Mediana: 28.2511
cat("IMC - Cuartil 1:", estadisticas$q1_imc, "\n")
## IMC - Cuartil 1: 25.40203
cat("IMC - Cuartil 3:", estadisticas$q3_imc, "\n")
## IMC - Cuartil 3: 31.66004
cat("IMC - Rango Intercuartílico:", estadisticas$iqr_imc, "\n\n")
## IMC - Rango Intercuartílico: 6.258004

Método 4: Usando apply() para todas las variables numéricas

library(dplyr)

# Seleccionar solo las columnas numéricas
numericas <- baseerc %>% select(where(is.numeric))

# Función para calcular mediana, cuartiles y rango intercuartílico
calc_stats <- function(x) {
  mediana <- median(x, na.rm = TRUE)
  q1 <- quantile(x, 0.25, na.rm = TRUE)
  q3 <- quantile(x, 0.75, na.rm = TRUE)
  iqr <- IQR(x, na.rm = TRUE)
  return(c(Mediana = mediana, Q1 = q1, Q3 = q3, IQR = iqr))
}

# Aplicar la función a cada columna numérica
estadisticas_todas <- t(apply(numericas, 2, calc_stats))

# Imprimir los resultados
print(estadisticas_todas)
##             Mediana    Q1.25%    Q3.75%        IQR
## cor        153.0000  80.25000 202.75000 122.500000
## edad        50.0000  40.00000  61.00000  21.000000
## per_abdo    97.5000  88.00000 103.75000  15.750000
## estatur_cm 157.0000 151.25000 164.00000  12.750000
## estat_mt     1.5700   1.51250   1.64000   0.127500
## peso        71.0000  61.25000  80.00000  18.750000
## IMC         28.2511  25.40203  31.66004   6.258004
library(purrr)

# Seleccionar las variables numéricas
variables_numericas <- baseerc %>% select_if(is.numeric)

# Calcular la mediana, Q1, Q3 y rango intercuartílico utilizando purrr::map_df
estadisticas_purrr <- map_df(variables_numericas, ~ tibble(
  Mediana = median(.x, na.rm = TRUE),
  Q1 = quantile(.x, 0.25, na.rm = TRUE),
  Q3 = quantile(.x, 0.75, na.rm = TRUE),
  IQR = IQR(.x, na.rm = TRUE)
))

cat("Medianas, Cuartiles y Rangos Intercuartílicos utilizando purrr:\n")
## Medianas, Cuartiles y Rangos Intercuartílicos utilizando purrr:
print(estadisticas_purrr)
## # A tibble: 7 × 4
##   Mediana     Q1     Q3     IQR
##     <dbl>  <dbl>  <dbl>   <dbl>
## 1  153     80.2  203.   122.   
## 2   50     40     61     21    
## 3   97.5   88    104.    15.8  
## 4  157    151.   164     12.8  
## 5    1.57   1.51   1.64   0.127
## 6   71     61.2   80     18.8  
## 7   28.3   25.4   31.7    6.26

Moda

Método 1: Por variables individuales

# install.packages("modeest") 
library(modeest)
## Warning: package 'modeest' was built under R version 4.3.3
# Calcular la moda para una variable categórica
moda_categoria <- mlv(baseerc$sex, method = "mfv") # "mfv" es la moda más frecuente
cat("Moda de la variable 'sex' es:", moda_categoria, "\n")
## Moda de la variable 'sex' es: 1

Método 2: Por variables individuales y grupos específicos

#install.packages("modeest") 
library(modeest)

# Filtrar el grupo con ERC "si"
grupo_si <- baseerc[baseerc$erc == "Si", ]

# Calcular la moda de la edad para el grupo con ERC "si"
moda_edad <- mlv(grupo_si$edad, method = "mfv") # "mfv" es la moda más frecuente
# Calcular la moda de la edad para el grupo con ERC "si"
moda_sex <- mlv(grupo_si$sex, method = "mfv") # "mfv" es la moda más frecuente
# Imprimir la moda de la edad
cat("Moda de la edad del grupo con ERC 'si' es:", moda_edad, "\n")
## Moda de la edad del grupo con ERC 'si' es: 58
cat("Moda de la sex del grupo con ERC 'si' es:", moda_sex, "\n")
## Moda de la sex del grupo con ERC 'si' es: 2

Método 3: Aplicando una función

# Función para calcular la moda
calcular_moda <- function(x) {
  # Eliminar valores NA
  x <- na.omit(x)
  # Contar la frecuencia de cada valor
  freq <- table(x)
  # Encontrar el valor más frecuente
  moda <- names(freq)[which.max(freq)]
  return(moda)
}
library(dplyr)

# Seleccionar todas las columnas y calcular la moda
modas_todas <- baseerc %>%
  summarise(across(everything(), ~ calcular_moda(.)))

# Imprimir los resultados
cat("Modas de todas las variables:\n")
## Modas de todas las variables:
print(modas_todas)
## # A tibble: 1 × 59
##   cor   inic  erc   estad_erc ano_diag munic  area_ur edad  sex   educ  niv_educ
##   <chr> <chr> <chr> <chr>     <chr>    <chr>  <chr>   <chr> <chr> <chr> <chr>   
## 1 6     AAM   No    NA        NA       Chala… rur     58    fem   Si    basi1_6 
## # ℹ 48 more variables: est_civ <chr>, act_lab <chr>, act_lab_otr <chr>,
## #   agric <chr>, tabac <chr>, alcoh <chr>, sal <chr>, agua_adec <chr>,
## #   No_agua_adec <chr>, frut_verd <chr>, No_frut_verd <chr>, ejerc <chr>,
## #   No_ejerc <chr>, act_temper <chr>, bajpes_prem <chr>, dm <chr>, dm_tx <chr>,
## #   chol <chr>, chol_tx <chr>, hta <chr>, hta_tx <chr>, enf_autoin <chr>,
## #   obesi <chr>, ivu_rec <chr>, lit_ren <chr>, af_dm <chr>, af_hta <chr>,
## #   af_acv <chr>, af_erc <chr>, af_iam <chr>, af_dislip <chr>, af_otra <chr>, …

Método 4: Aplicando una función por grupo

# Función para calcular la moda
calcular_moda <- function(x) {
  # Eliminar valores NA
  x <- na.omit(x)
  # Contar la frecuencia de cada valor
  freq <- table(x)
  # Encontrar el valor más frecuente
  moda <- names(freq)[which.max(freq)]
  return(moda)
}

# Dividir el dataset por el valor de 'erc' y calcular la moda para cada grupo
modas_por_erc <- baseerc %>%
  group_by(erc) %>%
  summarise(across(everything(), ~ calcular_moda(.), .names = "moda_{col}"))

# Imprimir los resultados
cat("Modas de todas las variables divididas por 'erc':\n")
## Modas de todas las variables divididas por 'erc':
print(modas_por_erc)
## # A tibble: 2 × 59
##   erc   moda_cor moda_inic moda_estad_erc moda_ano_diag moda_munic  moda_area_ur
##   <fct> <chr>    <chr>     <chr>          <chr>         <chr>       <chr>       
## 1 No    9        AAMV      NA             NA            Chalatenan… rur         
## 2 Si    6        AAM       est3b          2023          Chalatenan… rur         
## # ℹ 52 more variables: moda_edad <chr>, moda_sex <chr>, moda_educ <chr>,
## #   moda_niv_educ <chr>, moda_est_civ <chr>, moda_act_lab <chr>,
## #   moda_act_lab_otr <chr>, moda_agric <chr>, moda_tabac <chr>,
## #   moda_alcoh <chr>, moda_sal <chr>, moda_agua_adec <chr>,
## #   moda_No_agua_adec <chr>, moda_frut_verd <chr>, moda_No_frut_verd <chr>,
## #   moda_ejerc <chr>, moda_No_ejerc <chr>, moda_act_temper <chr>,
## #   moda_bajpes_prem <chr>, moda_dm <chr>, moda_dm_tx <chr>, moda_chol <chr>, …

Pruebas de hipótesis sobre distribución de los datos

Hipótesis nula:

  • Los datos tienen una distribución normal
  • La muestra sigue la distribución normal especificada.
  • Los datos provienen de una distribución normal.

Hipótesis alterna:

  • Los datos No tienen una distribución normal
  • La muestra No sigue la distribución normal especificada.
  • Los datos No provienen de una distribución normal.

Umbral de decisión

El umbral de decisión en las pruebas de normalidad se establece utilizando el valor p obtenido de la prueba estadística.

Umbral de decisión (nivel de significancia, α): Es el valor de probabilidad que se define antes de realizar la prueba para determinar si se rechaza la hipótesis nula. Los valores comunes son 0,05 (5%) y 0,01 (1%).

Si el valor p es menor que el umbral de decisión (p < α): Se rechaza la hipótesis nula. Esto indica que hay evidencia suficiente para concluir que los datos no siguen una distribución normal (según la prueba realizada).

Si el valor p es mayor o igual al umbral de decisión (p ≥ α): No se rechaza la hipótesis nula. Esto sugiere que no hay evidencia suficiente para concluir que los datos no siguen una distribución normal.

El umbral de decisión en las pruebas de normalidad, como 0,05 o 0,01, se refiere al nivel de significancia (α), que está relacionado con dos tipos de errores:

1. Error Tipo I (α):

Es el error de rechazar la hipótesis nula cuando en realidad es verdadera. En otras palabras, es la probabilidad de concluir que los datos no siguen una distribución normal cuando en realidad sí lo hacen.

  • Con (α=0,05): Se asume un 5% de riesgo de cometer un Error Tipo I.
  • Con (α=0,01: Se asume un 1% de riesgo de cometer un Error Tipo I.

2. Error Tipo II (β):

Es el error de no rechazar la hipótesis nula cuando en realidad es falsa. En otras palabras, es la probabilidad de no detectar que los datos no siguen una distribución normal cuando en realidad no la siguen.

  • La tasa de Error Tipo II está inversamente relacionada con el nivel de significancia; a medida que se disminuye (α) (por ejemplo, pasando de 0,05 a 0,01), se aumenta la probabilidad de cometer un Error Tipo II, ya que se está siendo más conservador al rechazar la hipótesis nula.

Pruebas de normalidad

Carga de paquetes

library(stats)
library(nortest)
library(tseries)
## Warning: package 'tseries' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo

Prueba de Kolmogórov-Smirnov

library(stats)
resultado_ks <- ks.test(baseerc$edad, "pnorm", mean = mean(baseerc$edad, na.rm = TRUE), sd = sd(baseerc$edad, na.rm = TRUE))
## Warning in ks.test.default(baseerc$edad, "pnorm", mean = mean(baseerc$edad, :
## ties should not be present for the Kolmogorov-Smirnov test
# Imprimir resultados
print(resultado_ks)
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  baseerc$edad
## D = 0.054841, p-value = 0.672
## alternative hypothesis: two-sided

Prueba de Shapiro-Wilk

library(stats)
resultado_sw <- shapiro.test(baseerc$edad)
print(resultado_sw)
## 
##  Shapiro-Wilk normality test
## 
## data:  baseerc$edad
## W = 0.9844, p-value = 0.04915

Prueba de Anderson-Darling

library(nortest)
resultado_ad <- ad.test(baseerc$edad)
print(resultado_ad)
## 
##  Anderson-Darling normality test
## 
## data:  baseerc$edad
## A = 0.55528, p-value = 0.1499

Otras pruebas

# Cargar librerías necesarias
library(stats)
library(nortest)
library(tseries)

# Prueba de Jarque-Bera
resultado_jb <- jarque.bera.test(baseerc$edad)
print(resultado_jb)
## 
##  Jarque Bera Test
## 
## data:  baseerc$edad
## X-squared = 4.1978, df = 2, p-value = 0.1226
# Prueba de Lilliefors
resultado_lillie <- lillie.test(baseerc$edad)
print(resultado_lillie)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  baseerc$edad
## D = 0.054841, p-value = 0.227
# Prueba de Cramer-von Mises
resultado_cvm <- cvm.test(baseerc$edad)
print(resultado_cvm)
## 
##  Cramer-von Mises normality test
## 
## data:  baseerc$edad
## W = 0.072965, p-value = 0.2543

Ventajes del uso de cada prueba

Prueba de Shapiro-Wilk

Descripción: Evalúa si los datos provienen de una distribución normal. Es muy sensible y adecuada para tamaños de muestra pequeños y medianos. Uso en R: shapiro.test() Ventaja: Alta potencia para detectar desviaciones de la normalidad en muestras pequeñas.

Prueba de Kolmogórov-Smirnov

Descripción: Compara la distribución empírica de los datos con una distribución normal teórica. Requiere que se especifiquen la media y la desviación estándar de la distribución normal. Uso en R: ks.test() Ventaja: Versátil, se puede adaptar a distintas distribuciones teóricas, pero es menos sensible a desviaciones menores en distribuciones grandes.

Prueba de Anderson-Darling

Descripción: Evalúa la distancia entre la función de distribución acumulada empírica y la función de distribución acumulada teórica. Es más sensible a las colas de la distribución. Uso en R: ad.test() (requiere el paquete nortest) Ventaja: Alta sensibilidad en las colas de la distribución, lo que puede ser útil para detectar anomalías en los extremos.

Prueba de Jarque-Bera

Descripción: Basada en la asimetría y la curtosis de los datos. Es útil para grandes tamaños de muestra. Uso en R: jarque.bera.test() (requiere el paquete tseries) Ventaja: Evalúa tanto la asimetría como la curtosis, proporcionando una evaluación completa de la normalidad.

Prueba de Lilliefors

Descripción: Una versión de la prueba de Kolmogórov-Smirnov adaptada para comprobar la normalidad cuando los parámetros de la distribución normal no se conocen a priori. Uso en R: lillie.test() (requiere el paquete nortest) Ventaja: Adaptada a casos donde no se conocen los parámetros de la distribución.

Prueba de Cramer-von Mises

Descripción: Evalúa la desviación de la función de distribución empírica respecto a la distribución normal. Es otra alternativa que mide las diferencias entre distribuciones. Uso en R: cvm.test() (requiere el paquete nortest) Ventaja: Sensible a desviaciones tanto en el centro como en las colas de la distribución.