R Markdown

# Cargar los datos
M20 <- read.csv("Datos_molec_2020.csv")
Dicc20 <- read.csv("Diccionario_molec_2020.csv")
M24 <- read.csv("Datos_molec_2024.csv")
Dicc24 <- read.csv("Diccionario_molec_2024.csv")

# Ver la estructura del dataset M20
str(M20) # Muestra la estructura de la base de datos
## 'data.frame':    2010 obs. of  108 variables:
##  $ folio   : chr  "11A192" "11A192" "11A192" "12A192" ...
##  $ entidad : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ control : int  40060 40060 40060 40091 40091 40131 40131 40131 40131 40132 ...
##  $ viv_sel : int  1 3 2 4 1 2 3 4 1 1 ...
##  $ num_hog : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ hog_mud : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ n_ren_el: int  1 4 2 1 2 1 1 1 1 1 ...
##  $ cd      : int  14 14 14 14 14 14 14 14 14 14 ...
##  $ periodo : int  220 220 220 220 220 220 220 220 220 220 ...
##  $ sexo    : int  1 2 2 1 2 2 1 1 1 1 ...
##  $ edad    : int  48 41 55 55 60 48 67 40 43 68 ...
##  $ anio    : int  6 3 3 5 3 3 3 3 2 6 ...
##  $ nivel   : int  2 3 3 7 6 3 6 3 2 2 ...
##  $ cond_act: int  1 7 1 1 7 1 1 1 1 8 ...
##  $ p1      : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ p2      : int  1 2 2 1 1 1 1 1 2 1 ...
##  $ p3_1    : int  1 2 2 1 1 2 2 2 2 1 ...
##  $ p3_2    : int  1 2 2 2 2 1 2 2 2 2 ...
##  $ p3_3    : int  1 2 2 1 2 2 1 1 2 2 ...
##  $ p3_4    : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p3_5    : int  1 1 2 1 2 1 2 1 2 2 ...
##  $ p4      : int  1 0 0 2 2 0 0 0 0 1 ...
##  $ p5      : int  4 0 0 4 4 0 0 0 0 4 ...
##  $ p5_6esp : chr  "" "" "" "" ...
##  $ p6_1    : int  2 0 0 2 2 0 0 0 0 2 ...
##  $ p6_2    : int  2 0 0 2 2 0 0 0 0 2 ...
##  $ p6_3    : int  2 0 0 2 1 0 0 0 0 2 ...
##  $ p6_4    : int  1 0 0 1 2 0 0 0 0 1 ...
##  $ p6_5    : int  2 0 0 2 2 0 0 0 0 2 ...
##  $ p6_6    : int  2 0 0 2 2 0 0 0 0 2 ...
##  $ p6_6esp : chr  "" "" "" "" ...
##  $ p7      : int  2 0 0 2 2 0 0 0 0 2 ...
##  $ p7_3    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p8_1    : int  2 0 0 2 2 0 0 0 0 2 ...
##  $ p8_2    : int  1 0 0 1 1 0 0 0 0 1 ...
##  $ p9      : int  1 0 0 1 1 0 0 0 0 1 ...
##  $ p9_5esp : chr  "" "" "" "" ...
##  $ p10     : int  2 0 0 0 0 2 0 0 0 0 ...
##  $ p11     : int  4 0 0 0 0 4 0 0 0 0 ...
##  $ p11_6esp: chr  "" "" "" "" ...
##  $ p12_1   : int  2 0 0 0 0 2 0 0 0 0 ...
##  $ p12_2   : int  2 0 0 0 0 2 0 0 0 0 ...
##  $ p12_3   : int  2 0 0 0 0 2 0 0 0 0 ...
##  $ p12_4   : int  1 0 0 0 0 1 0 0 0 0 ...
##  $ p12_5   : int  2 0 0 0 0 2 0 0 0 0 ...
##  $ p12_6   : int  2 0 0 0 0 2 0 0 0 0 ...
##  $ p12_7   : int  1 0 0 0 0 2 0 0 0 0 ...
##  $ p12_8   : int  2 0 0 0 0 1 0 0 0 0 ...
##  $ p12_9   : int  2 0 0 0 0 2 0 0 0 0 ...
##  $ p12_9esp: chr  "" "" "" "" ...
##  $ p13     : int  2 0 0 0 0 2 0 0 0 0 ...
##  $ p13_3   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p14_1   : int  2 0 0 0 0 2 0 0 0 0 ...
##  $ p14_2   : int  1 0 0 0 0 1 0 0 0 0 ...
##  $ p15     : int  1 0 0 0 0 2 0 0 0 0 ...
##  $ p15_5esp: chr  "" "" "" "" ...
##  $ p16     : int  1 0 0 1 0 0 1 1 0 0 ...
##  $ p17     : int  4 0 0 4 0 0 3 4 0 0 ...
##  $ p17_6esp: chr  "" "" "" "" ...
##  $ p18_1   : int  2 0 0 1 0 0 1 2 0 0 ...
##  $ p18_2   : int  1 0 0 1 0 0 1 1 0 0 ...
##  $ p18_3   : int  2 0 0 1 0 0 2 2 0 0 ...
##  $ p18_4   : int  1 0 0 1 0 0 2 2 0 0 ...
##  $ p18_5   : int  1 0 0 1 0 0 1 1 0 0 ...
##  $ p19     : int  2 0 0 2 0 0 2 2 0 0 ...
##  $ p19_3   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p20_1   : int  2 0 0 2 0 0 2 2 0 0 ...
##  $ p20_2   : int  1 0 0 1 0 0 1 1 0 0 ...
##  $ p21     : int  2 0 0 2 0 0 2 2 0 0 ...
##  $ p21_5esp: chr  "" "" "" "" ...
##  $ p22     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p23_1   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p23_2   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p24     : int  5 5 0 2 0 3 0 1 0 0 ...
##  $ p25     : int  4 4 0 4 0 4 0 4 0 0 ...
##  $ p25_6esp: chr  "" "" "" "" ...
##  $ p26     : int  30 10 0 20 20 30 20 10 0 60 ...
##  $ p27     : int  2 2 0 2 2 2 1 2 0 2 ...
##  $ p28     : int  0 0 0 0 0 0 6 0 0 0 ...
##  $ p28_7esp: chr  "" "" "" "" ...
##  $ p29     : int  2 2 0 2 2 4 3 4 0 3 ...
##  $ p30     : int  3 3 0 3 3 4 3 4 0 3 ...
##  $ p31     : int  2 2 0 1 2 2 2 2 0 2 ...
##  $ p32     : int  0 0 3 0 0 0 0 0 3 0 ...
##  $ p32_6esp: chr  "" "" "" "" ...
##  $ p33_1   : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p33_2   : int  2 2 2 2 2 2 1 2 2 2 ...
##  $ p33_3   : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p33_4   : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p34_1   : int  2 2 2 1 2 3 3 3 3 1 ...
##  $ p34_2   : int  2 2 2 1 2 3 3 1 3 1 ...
##  $ p34_3   : int  2 2 2 2 2 1 3 3 3 1 ...
##  $ p34_3_1 : int  0 0 0 0 0 2 0 0 0 1 ...
##  $ p34_4   : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ p34_4_1 : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ p35     : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ p36_1   : int  1 1 2 1 2 1 3 3 3 3 ...
##  $ p36_2   : int  1 1 1 1 2 1 3 3 3 3 ...
##  $ p36_3   : int  1 1 1 1 2 1 1 1 3 1 ...
##   [list output truncated]
names(M20) # Muestra los nombres de las variables
##   [1] "folio"    "entidad"  "control"  "viv_sel"  "num_hog"  "hog_mud" 
##   [7] "n_ren_el" "cd"       "periodo"  "sexo"     "edad"     "anio"    
##  [13] "nivel"    "cond_act" "p1"       "p2"       "p3_1"     "p3_2"    
##  [19] "p3_3"     "p3_4"     "p3_5"     "p4"       "p5"       "p5_6esp" 
##  [25] "p6_1"     "p6_2"     "p6_3"     "p6_4"     "p6_5"     "p6_6"    
##  [31] "p6_6esp"  "p7"       "p7_3"     "p8_1"     "p8_2"     "p9"      
##  [37] "p9_5esp"  "p10"      "p11"      "p11_6esp" "p12_1"    "p12_2"   
##  [43] "p12_3"    "p12_4"    "p12_5"    "p12_6"    "p12_7"    "p12_8"   
##  [49] "p12_9"    "p12_9esp" "p13"      "p13_3"    "p14_1"    "p14_2"   
##  [55] "p15"      "p15_5esp" "p16"      "p17"      "p17_6esp" "p18_1"   
##  [61] "p18_2"    "p18_3"    "p18_4"    "p18_5"    "p19"      "p19_3"   
##  [67] "p20_1"    "p20_2"    "p21"      "p21_5esp" "p22"      "p23_1"   
##  [73] "p23_2"    "p24"      "p25"      "p25_6esp" "p26"      "p27"     
##  [79] "p28"      "p28_7esp" "p29"      "p30"      "p31"      "p32"     
##  [85] "p32_6esp" "p33_1"    "p33_2"    "p33_3"    "p33_4"    "p34_1"   
##  [91] "p34_2"    "p34_3"    "p34_3_1"  "p34_4"    "p34_4_1"  "p35"     
##  [97] "p36_1"    "p36_2"    "p36_3"    "p36_4"    "factor"   "h_lec"   
## [103] "mat_lec"  "perslec"  "l_format" "r_format" "p_format" "perslecl"
head(M20) # Muestra las primeras 6 filas
##    folio entidad control viv_sel num_hog hog_mud n_ren_el cd periodo sexo edad
## 1 11A192       1   40060       1       1       0        1 14     220    1   48
## 2 11A192       1   40060       3       1       0        4 14     220    2   41
## 3 11A192       1   40060       2       1       0        2 14     220    2   55
## 4 12A192       1   40091       4       1       0        1 14     220    1   55
## 5 12A192       1   40091       1       1       0        2 14     220    2   60
## 6 11B176       1   40131       2       1       0        1 14     220    2   48
##   anio nivel cond_act p1 p2 p3_1 p3_2 p3_3 p3_4 p3_5 p4 p5 p5_6esp p6_1 p6_2
## 1    6     2        1  1  1    1    1    1    2    1  1  4            2    2
## 2    3     3        7  1  2    2    2    2    2    1  0  0            0    0
## 3    3     3        1  1  2    2    2    2    2    2  0  0            0    0
## 4    5     7        1  1  1    1    2    1    2    1  2  4            2    2
## 5    3     6        7  1  1    1    2    2    2    2  2  4            2    2
## 6    3     3        1  1  1    2    1    2    2    1  0  0            0    0
##   p6_3 p6_4 p6_5 p6_6 p6_6esp p7 p7_3 p8_1 p8_2 p9 p9_5esp p10 p11 p11_6esp
## 1    2    1    2    2          2    0    2    1  1           2   4         
## 2    0    0    0    0          0    0    0    0  0           0   0         
## 3    0    0    0    0          0    0    0    0  0           0   0         
## 4    2    1    2    2          2    0    2    1  1           0   0         
## 5    1    2    2    2          2    0    2    1  1           0   0         
## 6    0    0    0    0          0    0    0    0  0           2   4         
##   p12_1 p12_2 p12_3 p12_4 p12_5 p12_6 p12_7 p12_8 p12_9 p12_9esp p13 p13_3
## 1     2     2     2     1     2     2     1     2     2            2     0
## 2     0     0     0     0     0     0     0     0     0            0     0
## 3     0     0     0     0     0     0     0     0     0            0     0
## 4     0     0     0     0     0     0     0     0     0            0     0
## 5     0     0     0     0     0     0     0     0     0            0     0
## 6     2     2     2     1     2     2     2     1     2            2     0
##   p14_1 p14_2 p15 p15_5esp p16 p17 p17_6esp p18_1 p18_2 p18_3 p18_4 p18_5 p19
## 1     2     1   1            1   4              2     1     2     1     1   2
## 2     0     0   0            0   0              0     0     0     0     0   0
## 3     0     0   0            0   0              0     0     0     0     0   0
## 4     0     0   0            1   4              1     1     1     1     1   2
## 5     0     0   0            0   0              0     0     0     0     0   0
## 6     2     1   2            0   0              0     0     0     0     0   0
##   p19_3 p20_1 p20_2 p21 p21_5esp p22 p23_1 p23_2 p24 p25 p25_6esp p26 p27 p28
## 1     0     2     1   2            0     0     0   5   4           30   2   0
## 2     0     0     0   0            0     0     0   5   4           10   2   0
## 3     0     0     0   0            0     0     0   0   0            0   0   0
## 4     0     2     1   2            0     0     0   2   4           20   2   0
## 5     0     0     0   0            0     0     0   0   0           20   2   0
## 6     0     0     0   0            0     0     0   3   4           30   2   0
##   p28_7esp p29 p30 p31 p32 p32_6esp p33_1 p33_2 p33_3 p33_4 p34_1 p34_2 p34_3
## 1            2   3   2   0              2     2     2     2     2     2     2
## 2            2   3   2   0              2     2     2     2     2     2     2
## 3            0   0   0   3              2     2     2     2     2     2     2
## 4            2   3   1   0              2     2     2     2     1     1     2
## 5            2   3   2   0              2     2     2     2     2     2     2
## 6            4   4   2   0              2     2     2     2     3     3     1
##   p34_3_1 p34_4 p34_4_1 p35 p36_1 p36_2 p36_3 p36_4 factor h_lec mat_lec
## 1       0     1       1   1     1     1     1     2  17463     1       2
## 2       0     1       1   1     1     1     1     1  37353     3       3
## 3       0     1       1   1     2     1     1     2  20668     4       4
## 4       0     1       1   1     1     1     1     1  30309     1       2
## 5       0     1       1   1     2     2     2     2  13886     1       1
## 6       2     1       1   1     1     1     1     1  33374     1       3
##   perslec l_format r_format p_format perslecl
## 1       1        2        2        2        1
## 2       1        0        0        0        2
## 3       2        0        0        0        2
## 4       1        2        0        2        1
## 5       1        2        0        0        1
## 6       1        0        2        0        1
# View(M20) # Abre la hoja electrónica para visualizar los datos

# Dimensiones del dataset M20
dimensiones_M20 <- dim(M20) # Cantidad de filas (registros) y columnas (variables)
cat("El dataset M20 tiene", dimensiones_M20[1], "registros y", dimensiones_M20[2], "columnas.\n")
## El dataset M20 tiene 2010 registros y 108 columnas.
# Lista de variables cuantitativas (que NO deben cambiar 0 a NA)
variables_cuantitativas <- c("p4", "p7_3", "p10", "p13_3", "p16", "p19_3", "p26")

# Reemplazar los valores 0 por NA en las variables que no son cuantitativas
for (var in names(M20)) {
  if (!(var %in% variables_cuantitativas)) {
    M20[[var]][M20[[var]] == 0] <- NA
  }
}

# Resumen general de las variables M20
summary(M20) # Proporciona un resumen que muestra la distribución de las variables y si hay datos faltantes
##     folio              entidad        control         viv_sel         num_hog 
##  Length:2010        Min.   : 1.0   Min.   :40025   Min.   :1.000   Min.   :1  
##  Class :character   1st Qu.: 9.0   1st Qu.:40153   1st Qu.:2.000   1st Qu.:1  
##  Mode  :character   Median :15.0   Median :40248   Median :3.000   Median :1  
##                     Mean   :15.6   Mean   :40307   Mean   :2.517   Mean   :1  
##                     3rd Qu.:20.0   3rd Qu.:40398   3rd Qu.:4.000   3rd Qu.:1  
##                     Max.   :32.0   Max.   :41420   Max.   :4.000   Max.   :1  
##                                                                               
##     hog_mud         n_ren_el            cd           periodo         sexo      
##  Min.   :1.000   Min.   : 1.000   Min.   : 1.00   Min.   :220   Min.   :1.000  
##  1st Qu.:1.000   1st Qu.: 1.000   1st Qu.: 2.00   1st Qu.:220   1st Qu.:1.000  
##  Median :1.000   Median : 1.000   Median : 9.00   Median :220   Median :2.000  
##  Mean   :1.079   Mean   : 1.734   Mean   :14.01   Mean   :220   Mean   :1.552  
##  3rd Qu.:1.000   3rd Qu.: 2.000   3rd Qu.:25.00   3rd Qu.:220   3rd Qu.:2.000  
##  Max.   :2.000   Max.   :10.000   Max.   :43.00   Max.   :220   Max.   :2.000  
##  NA's   :1922                                                                  
##       edad            anio          nivel           cond_act     
##  Min.   :18.00   Min.   :1.00   Min.   : 1.000   Min.   : 1.000  
##  1st Qu.:31.00   1st Qu.:3.00   1st Qu.: 3.000   1st Qu.: 1.000  
##  Median :44.00   Median :3.00   Median : 4.000   Median : 1.000  
##  Mean   :45.49   Mean   :3.47   Mean   : 4.559   Mean   : 3.289  
##  3rd Qu.:58.00   3rd Qu.:4.00   3rd Qu.: 7.000   3rd Qu.: 7.000  
##  Max.   :94.00   Max.   :6.00   Max.   :99.000   Max.   :99.000  
##                  NA's   :65     NA's   :62                       
##        p1              p2             p3_1            p3_2      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :1.000   Median :1.000   Median :2.000   Median :2.000  
##  Mean   :1.026   Mean   :1.403   Mean   :1.586   Mean   :1.681  
##  3rd Qu.:1.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :2.000   Max.   :2.000   Max.   :2.000   Max.   :2.000  
##                  NA's   :52      NA's   :52      NA's   :52     
##       p3_3            p3_4            p3_5            p4        
##  Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   : 0.000  
##  1st Qu.:1.000   1st Qu.:2.000   1st Qu.:1.00   1st Qu.: 0.000  
##  Median :2.000   Median :2.000   Median :2.00   Median : 0.000  
##  Mean   :1.699   Mean   :1.955   Mean   :1.63   Mean   : 1.428  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.00   3rd Qu.: 2.000  
##  Max.   :2.000   Max.   :2.000   Max.   :2.00   Max.   :60.000  
##  NA's   :52      NA's   :52      NA's   :52                     
##        p5          p5_6esp               p6_1            p6_2      
##  Min.   :1.000   Length:2010        Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   Class :character   1st Qu.:2.000   1st Qu.:1.000  
##  Median :4.000   Mode  :character   Median :2.000   Median :2.000  
##  Mean   :3.296                      Mean   :1.929   Mean   :1.686  
##  3rd Qu.:4.000                      3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :6.000                      Max.   :2.000   Max.   :2.000  
##  NA's   :1199                       NA's   :1199    NA's   :1199   
##       p6_3           p6_4            p6_5            p6_6      
##  Min.   :1.0    Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.0    1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2.000  
##  Median :2.0    Median :2.000   Median :2.000   Median :2.000  
##  Mean   :1.7    Mean   :1.577   Mean   :1.725   Mean   :1.995  
##  3rd Qu.:2.0    3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :2.0    Max.   :2.000   Max.   :2.000   Max.   :2.000  
##  NA's   :1199   NA's   :1199    NA's   :1199    NA's   :1199   
##    p6_6esp                p7             p7_3             p8_1      
##  Length:2010        Min.   :1.000   Min.   :     0   Min.   :1.000  
##  Class :character   1st Qu.:2.000   1st Qu.:     0   1st Qu.:2.000  
##  Mode  :character   Median :2.000   Median :     0   Median :2.000  
##                     Mean   :2.286   Mean   :  1631   Mean   :1.852  
##                     3rd Qu.:3.000   3rd Qu.:     0   3rd Qu.:2.000  
##                     Max.   :3.000   Max.   :999999   Max.   :2.000  
##                     NA's   :1199                     NA's   :1199   
##       p8_2             p9          p9_5esp               p10       
##  Min.   :1.000   Min.   :1.000   Length:2010        Min.   : 0.00  
##  1st Qu.:1.000   1st Qu.:1.000   Class :character   1st Qu.: 0.00  
##  Median :1.000   Median :1.000   Mode  :character   Median : 0.00  
##  Mean   :1.107   Mean   :1.216                      Mean   : 1.12  
##  3rd Qu.:1.000   3rd Qu.:1.000                      3rd Qu.: 2.00  
##  Max.   :2.000   Max.   :5.000                      Max.   :90.00  
##  NA's   :1199    NA's   :1199                                      
##       p11         p11_6esp             p12_1           p12_2      
##  Min.   :1.00   Length:2010        Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.00   Class :character   1st Qu.:2.000   1st Qu.:2.000  
##  Median :4.00   Mode  :character   Median :2.000   Median :2.000  
##  Mean   :3.47                      Mean   :1.913   Mean   :1.798  
##  3rd Qu.:4.00                      3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :6.00                      Max.   :2.000   Max.   :2.000  
##  NA's   :1386                      NA's   :1386    NA's   :1386   
##      p12_3           p12_4           p12_5           p12_6      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:1.000   1st Qu.:2.000   1st Qu.:2.000  
##  Median :2.000   Median :2.000   Median :2.000   Median :2.000  
##  Mean   :1.835   Mean   :1.723   Mean   :1.917   Mean   :1.763  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :2.000   Max.   :2.000   Max.   :2.000   Max.   :2.000  
##  NA's   :1386    NA's   :1386    NA's   :1386    NA's   :1386   
##      p12_7           p12_8           p12_9         p12_9esp        
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Length:2010       
##  1st Qu.:2.000   1st Qu.:1.000   1st Qu.:2.000   Class :character  
##  Median :2.000   Median :2.000   Median :2.000   Mode  :character  
##  Mean   :1.753   Mean   :1.678   Mean   :1.995                     
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000                     
##  Max.   :2.000   Max.   :2.000   Max.   :2.000                     
##  NA's   :1386    NA's   :1386    NA's   :1386                      
##       p13            p13_3             p14_1           p14_2      
##  Min.   :1.000   Min.   :   0.00   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:   0.00   1st Qu.:2.000   1st Qu.:1.000  
##  Median :2.000   Median :   0.00   Median :2.000   Median :1.000  
##  Mean   :2.301   Mean   :  19.04   Mean   :1.881   Mean   :1.104  
##  3rd Qu.:3.000   3rd Qu.:   0.00   3rd Qu.:2.000   3rd Qu.:1.000  
##  Max.   :3.000   Max.   :1200.00   Max.   :2.000   Max.   :2.000  
##  NA's   :1386                      NA's   :1386    NA's   :1386   
##       p15         p15_5esp              p16              p17       
##  Min.   :1.00   Length:2010        Min.   : 0.000   Min.   :1.000  
##  1st Qu.:1.00   Class :character   1st Qu.: 0.000   1st Qu.:3.000  
##  Median :1.00   Mode  :character   Median : 0.000   Median :3.000  
##  Mean   :1.29                      Mean   : 1.077   Mean   :3.292  
##  3rd Qu.:1.00                      3rd Qu.: 1.000   3rd Qu.:4.000  
##  Max.   :5.00                      Max.   :80.000   Max.   :6.000  
##  NA's   :1386                                       NA's   :1420   
##    p17_6esp             p18_1           p18_2           p18_3      
##  Length:2010        Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  Class :character   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Mode  :character   Median :1.000   Median :1.000   Median :1.000  
##                     Mean   :1.268   Mean   :1.336   Mean   :1.329  
##                     3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000  
##                     Max.   :2.000   Max.   :2.000   Max.   :2.000  
##                     NA's   :1420    NA's   :1420    NA's   :1420   
##      p18_4           p18_5            p19            p19_3         
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :   0.000  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2.000   1st Qu.:   0.000  
##  Median :1.000   Median :1.000   Median :2.000   Median :   0.000  
##  Mean   :1.444   Mean   :1.146   Mean   :2.407   Mean   :   6.793  
##  3rd Qu.:2.000   3rd Qu.:1.000   3rd Qu.:3.000   3rd Qu.:   0.000  
##  Max.   :2.000   Max.   :2.000   Max.   :3.000   Max.   :1300.000  
##  NA's   :1420    NA's   :1420    NA's   :1420                      
##      p20_1           p20_2            p21          p21_5esp        
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Length:2010       
##  1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.000   Class :character  
##  Median :2.000   Median :1.000   Median :1.000   Mode  :character  
##  Mean   :1.897   Mean   :1.085   Mean   :1.429                     
##  3rd Qu.:2.000   3rd Qu.:1.000   3rd Qu.:2.000                     
##  Max.   :2.000   Max.   :2.000   Max.   :5.000                     
##  NA's   :1420    NA's   :1420    NA's   :1420                      
##       p22            p23_1           p23_2            p24       
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :3.000   Median :2.000   Median :1.000   Median :2.000  
##  Mean   :3.236   Mean   :1.674   Mean   :1.281   Mean   :2.137  
##  3rd Qu.:5.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :5.000   Max.   :2.000   Max.   :2.000   Max.   :5.000  
##  NA's   :1921    NA's   :1921    NA's   :1921    NA's   :1286   
##       p25          p25_6esp              p26              p27       
##  Min.   :1.000   Length:2010        Min.   :  0.00   Min.   :1.000  
##  1st Qu.:2.000   Class :character   1st Qu.:  0.00   1st Qu.:2.000  
##  Median :3.000   Mode  :character   Median : 20.00   Median :2.000  
##  Mean   :2.989                      Mean   : 28.25   Mean   :1.832  
##  3rd Qu.:4.000                      3rd Qu.: 40.00   3rd Qu.:2.000  
##  Max.   :6.000                      Max.   :480.00   Max.   :2.000  
##  NA's   :1286                                        NA's   :599    
##       p28          p28_7esp              p29            p30       
##  Min.   :2.000   Length:2010        Min.   :1.00   Min.   :1.000  
##  1st Qu.:5.000   Class :character   1st Qu.:2.00   1st Qu.:3.000  
##  Median :5.000   Mode  :character   Median :2.00   Median :3.000  
##  Mean   :5.266                      Mean   :2.49   Mean   :3.027  
##  3rd Qu.:6.000                      3rd Qu.:3.00   3rd Qu.:4.000  
##  Max.   :7.000                      Max.   :4.00   Max.   :4.000  
##  NA's   :1773                       NA's   :599    NA's   :599    
##       p31             p32          p32_6esp             p33_1      
##  Min.   :1.000   Min.   :1.000   Length:2010        Min.   :1.000  
##  1st Qu.:1.000   1st Qu.:1.000   Class :character   1st Qu.:2.000  
##  Median :2.000   Median :3.000   Mode  :character   Median :2.000  
##  Mean   :1.561   Mean   :2.682                      Mean   :1.795  
##  3rd Qu.:2.000   3rd Qu.:3.000                      3rd Qu.:2.000  
##  Max.   :2.000   Max.   :6.000                      Max.   :2.000  
##  NA's   :599     NA's   :1463                       NA's   :52     
##      p33_2           p33_3           p33_4           p34_1      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:2.000   1st Qu.:2.000   1st Qu.:1.000  
##  Median :2.000   Median :2.000   Median :2.000   Median :2.000  
##  Mean   :1.868   Mean   :1.914   Mean   :1.826   Mean   :1.727  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :2.000   Max.   :2.000   Max.   :2.000   Max.   :3.000  
##  NA's   :52      NA's   :52      NA's   :52      NA's   :52     
##      p34_2           p34_3          p34_3_1          p34_4         p34_4_1    
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1.00  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.00   1st Qu.:1.00  
##  Median :1.000   Median :2.000   Median :2.000   Median :1.00   Median :1.00  
##  Mean   :1.494   Mean   :1.668   Mean   :1.688   Mean   :1.45   Mean   :1.81  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.00   3rd Qu.:2.00  
##  Max.   :3.000   Max.   :3.000   Max.   :3.000   Max.   :3.00   Max.   :6.00  
##  NA's   :52      NA's   :52      NA's   :1337    NA's   :52     NA's   :876   
##       p35            p36_1         p36_2           p36_3           p36_4      
##  Min.   :1.000   Min.   :1.0   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.000   1st Qu.:1.0   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :1.000   Median :1.0   Median :1.000   Median :1.000   Median :1.000  
##  Mean   :1.015   Mean   :1.5   Mean   :1.261   Mean   :1.377   Mean   :1.461  
##  3rd Qu.:1.000   3rd Qu.:2.0   3rd Qu.:1.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :2.000   Max.   :3.0   Max.   :3.000   Max.   :3.000   Max.   :3.000  
##  NA's   :52      NA's   :81    NA's   :81      NA's   :81      NA's   :81     
##      factor          h_lec          mat_lec         perslec     
##  Min.   : 2976   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:12684   1st Qu.:1.000   1st Qu.:2.000   1st Qu.:1.000  
##  Median :17143   Median :1.000   Median :3.000   Median :1.000  
##  Mean   :19353   Mean   :2.086   Mean   :2.784   Mean   :1.279  
##  3rd Qu.:24472   3rd Qu.:3.000   3rd Qu.:4.000   3rd Qu.:2.000  
##  Max.   :84991   Max.   :4.000   Max.   :4.000   Max.   :2.000  
##                  NA's   :52      NA's   :52      NA's   :52     
##     l_format        r_format       p_format        perslecl   
##  Min.   :1.000   Min.   :1.00   Min.   :1.000   Min.   :1.00  
##  1st Qu.:2.000   1st Qu.:2.00   1st Qu.:2.000   1st Qu.:1.00  
##  Median :2.000   Median :2.00   Median :2.000   Median :1.00  
##  Mean   :1.933   Mean   :1.91   Mean   :1.934   Mean   :1.34  
##  3rd Qu.:2.000   3rd Qu.:2.00   3rd Qu.:2.000   3rd Qu.:2.00  
##  Max.   :3.000   Max.   :3.00   Max.   :3.000   Max.   :2.00  
##  NA's   :1199    NA's   :1386   NA's   :1420    NA's   :52
# Verificación de datos faltantes en M20
na_totales_M20 <- sum(is.na(M20)) # Número total de datos faltantes en todo el dataset
cat("Hay un total de", na_totales_M20, "datos faltantes en el dataset M20.\n")
## Hay un total de 70339 datos faltantes en el dataset M20.
# Revisión de datos faltantes por variable en M20
na_por_variable_M20 <- colSums(is.na(M20)) # Número de datos faltantes por cada variable
porcentaje_na_por_variable_M20 <- colMeans(is.na(M20)) * 100 # Porcentaje de datos faltantes por variable

# Mostrar las variables con valores faltantes y su porcentaje en M20
cat("Variables con datos faltantes en M20:\n")
## Variables con datos faltantes en M20:
for (i in 1:ncol(M20)) {
  if (porcentaje_na_por_variable_M20[i] > 0) {
    cat(names(M20)[i], "tiene", na_por_variable_M20[i], "valores faltantes (", round(porcentaje_na_por_variable_M20[i], 2), "%).\n")
  }
}
## hog_mud tiene 1922 valores faltantes ( 95.62 %).
## anio tiene 65 valores faltantes ( 3.23 %).
## nivel tiene 62 valores faltantes ( 3.08 %).
## p2 tiene 52 valores faltantes ( 2.59 %).
## p3_1 tiene 52 valores faltantes ( 2.59 %).
## p3_2 tiene 52 valores faltantes ( 2.59 %).
## p3_3 tiene 52 valores faltantes ( 2.59 %).
## p3_4 tiene 52 valores faltantes ( 2.59 %).
## p3_5 tiene 52 valores faltantes ( 2.59 %).
## p5 tiene 1199 valores faltantes ( 59.65 %).
## p6_1 tiene 1199 valores faltantes ( 59.65 %).
## p6_2 tiene 1199 valores faltantes ( 59.65 %).
## p6_3 tiene 1199 valores faltantes ( 59.65 %).
## p6_4 tiene 1199 valores faltantes ( 59.65 %).
## p6_5 tiene 1199 valores faltantes ( 59.65 %).
## p6_6 tiene 1199 valores faltantes ( 59.65 %).
## p7 tiene 1199 valores faltantes ( 59.65 %).
## p8_1 tiene 1199 valores faltantes ( 59.65 %).
## p8_2 tiene 1199 valores faltantes ( 59.65 %).
## p9 tiene 1199 valores faltantes ( 59.65 %).
## p11 tiene 1386 valores faltantes ( 68.96 %).
## p12_1 tiene 1386 valores faltantes ( 68.96 %).
## p12_2 tiene 1386 valores faltantes ( 68.96 %).
## p12_3 tiene 1386 valores faltantes ( 68.96 %).
## p12_4 tiene 1386 valores faltantes ( 68.96 %).
## p12_5 tiene 1386 valores faltantes ( 68.96 %).
## p12_6 tiene 1386 valores faltantes ( 68.96 %).
## p12_7 tiene 1386 valores faltantes ( 68.96 %).
## p12_8 tiene 1386 valores faltantes ( 68.96 %).
## p12_9 tiene 1386 valores faltantes ( 68.96 %).
## p13 tiene 1386 valores faltantes ( 68.96 %).
## p14_1 tiene 1386 valores faltantes ( 68.96 %).
## p14_2 tiene 1386 valores faltantes ( 68.96 %).
## p15 tiene 1386 valores faltantes ( 68.96 %).
## p17 tiene 1420 valores faltantes ( 70.65 %).
## p18_1 tiene 1420 valores faltantes ( 70.65 %).
## p18_2 tiene 1420 valores faltantes ( 70.65 %).
## p18_3 tiene 1420 valores faltantes ( 70.65 %).
## p18_4 tiene 1420 valores faltantes ( 70.65 %).
## p18_5 tiene 1420 valores faltantes ( 70.65 %).
## p19 tiene 1420 valores faltantes ( 70.65 %).
## p20_1 tiene 1420 valores faltantes ( 70.65 %).
## p20_2 tiene 1420 valores faltantes ( 70.65 %).
## p21 tiene 1420 valores faltantes ( 70.65 %).
## p22 tiene 1921 valores faltantes ( 95.57 %).
## p23_1 tiene 1921 valores faltantes ( 95.57 %).
## p23_2 tiene 1921 valores faltantes ( 95.57 %).
## p24 tiene 1286 valores faltantes ( 63.98 %).
## p25 tiene 1286 valores faltantes ( 63.98 %).
## p27 tiene 599 valores faltantes ( 29.8 %).
## p28 tiene 1773 valores faltantes ( 88.21 %).
## p29 tiene 599 valores faltantes ( 29.8 %).
## p30 tiene 599 valores faltantes ( 29.8 %).
## p31 tiene 599 valores faltantes ( 29.8 %).
## p32 tiene 1463 valores faltantes ( 72.79 %).
## p33_1 tiene 52 valores faltantes ( 2.59 %).
## p33_2 tiene 52 valores faltantes ( 2.59 %).
## p33_3 tiene 52 valores faltantes ( 2.59 %).
## p33_4 tiene 52 valores faltantes ( 2.59 %).
## p34_1 tiene 52 valores faltantes ( 2.59 %).
## p34_2 tiene 52 valores faltantes ( 2.59 %).
## p34_3 tiene 52 valores faltantes ( 2.59 %).
## p34_3_1 tiene 1337 valores faltantes ( 66.52 %).
## p34_4 tiene 52 valores faltantes ( 2.59 %).
## p34_4_1 tiene 876 valores faltantes ( 43.58 %).
## p35 tiene 52 valores faltantes ( 2.59 %).
## p36_1 tiene 81 valores faltantes ( 4.03 %).
## p36_2 tiene 81 valores faltantes ( 4.03 %).
## p36_3 tiene 81 valores faltantes ( 4.03 %).
## p36_4 tiene 81 valores faltantes ( 4.03 %).
## h_lec tiene 52 valores faltantes ( 2.59 %).
## mat_lec tiene 52 valores faltantes ( 2.59 %).
## perslec tiene 52 valores faltantes ( 2.59 %).
## l_format tiene 1199 valores faltantes ( 59.65 %).
## r_format tiene 1386 valores faltantes ( 68.96 %).
## p_format tiene 1420 valores faltantes ( 70.65 %).
## perslecl tiene 52 valores faltantes ( 2.59 %).
# Repetir los mismos pasos para el dataset M24
# Ver la estructura del dataset M24
str(M24) # Muestra la estructura de la base de datos
## 'data.frame':    2016 obs. of  108 variables:
##  $ folio   : chr  "12B221" "12B221" "12B221" "12B221" ...
##  $ entidad : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ control : int  40002 40002 40002 40002 40003 40003 40003 40003 40028 40028 ...
##  $ viv_sel : int  2 1 3 4 1 2 4 3 2 3 ...
##  $ num_hog : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ hog_mud : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ n_ren_el: int  1 1 1 2 1 1 1 2 1 1 ...
##  $ cd      : int  14 14 14 14 14 14 14 14 14 14 ...
##  $ periodo : int  224 224 224 224 224 224 224 224 224 224 ...
##  $ sexo    : int  1 1 1 1 1 1 2 2 1 2 ...
##  $ edad    : int  52 55 59 30 54 30 66 45 26 41 ...
##  $ nivel   : int  3 3 3 4 3 4 2 3 4 4 ...
##  $ anio    : int  3 3 3 3 3 3 6 3 3 3 ...
##  $ cond_act: int  9 1 1 1 1 1 7 7 1 1 ...
##  $ p1      : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ p2      : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p3_1    : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p3_2    : int  2 2 2 2 2 2 2 2 1 2 ...
##  $ p3_3    : int  2 2 2 2 1 2 2 2 1 2 ...
##  $ p3_4    : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p3_5    : int  2 2 2 2 2 1 2 2 1 1 ...
##  $ p4      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p5      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p5_6esp : chr  "" "" "" "" ...
##  $ p6_1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p6_2    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p6_3    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p6_4    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p6_5    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p6_6    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p6_6esp : chr  "" "" "" "" ...
##  $ p7      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p7_3    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p8_1    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p8_2    : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p9      : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p9_5esp : chr  "" "" "" "" ...
##  $ p10     : int  0 0 0 0 0 0 0 0 2 0 ...
##  $ p11     : int  0 0 0 0 0 0 0 0 4 0 ...
##  $ p11_6esp: chr  "" "" "" "" ...
##  $ p12_1   : int  0 0 0 0 0 0 0 0 2 0 ...
##  $ p12_2   : int  0 0 0 0 0 0 0 0 2 0 ...
##  $ p12_3   : int  0 0 0 0 0 0 0 0 2 0 ...
##  $ p12_4   : int  0 0 0 0 0 0 0 0 1 0 ...
##  $ p12_5   : int  0 0 0 0 0 0 0 0 2 0 ...
##  $ p12_6   : int  0 0 0 0 0 0 0 0 2 0 ...
##  $ p12_7   : int  0 0 0 0 0 0 0 0 1 0 ...
##  $ p12_8   : int  0 0 0 0 0 0 0 0 2 0 ...
##  $ p12_9   : int  0 0 0 0 0 0 0 0 2 0 ...
##  $ p12_9esp: chr  "" "" "" "" ...
##  $ p13     : int  0 0 0 0 0 0 0 0 2 0 ...
##  $ p13_3   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p14_1   : int  0 0 0 0 0 0 0 0 1 0 ...
##  $ p14_2   : int  0 0 0 0 0 0 0 0 2 0 ...
##  $ p15     : int  0 0 0 0 0 0 0 0 1 0 ...
##  $ p15_5esp: chr  "" "" "" "" ...
##  $ p16     : int  0 0 0 0 1 0 0 0 1 0 ...
##  $ p17     : int  0 0 0 0 4 0 0 0 4 0 ...
##  $ p17_6esp: chr  "" "" "" "" ...
##  $ p18_1   : int  0 0 0 0 1 0 0 0 1 0 ...
##  $ p18_2   : int  0 0 0 0 1 0 0 0 2 0 ...
##  $ p18_3   : int  0 0 0 0 1 0 0 0 1 0 ...
##  $ p18_4   : int  0 0 0 0 1 0 0 0 1 0 ...
##  $ p18_5   : int  0 0 0 0 1 0 0 0 1 0 ...
##  $ p19     : int  0 0 0 0 2 0 0 0 2 0 ...
##  $ p19_3   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p20_1   : int  0 0 0 0 1 0 0 0 1 0 ...
##  $ p20_2   : int  0 0 0 0 2 0 0 0 2 0 ...
##  $ p21     : int  0 0 0 0 1 0 0 0 2 0 ...
##  $ p21_5esp: chr  "" "" "" "" ...
##  $ p22     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p23_1   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p23_2   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p24     : int  0 0 0 0 0 5 0 0 5 5 ...
##  $ p25     : int  0 0 0 0 0 4 0 0 1 4 ...
##  $ p25_6esp: chr  "" "" "" "" ...
##  $ p26     : int  0 0 0 0 20 15 0 0 20 10 ...
##  $ p27     : int  0 0 0 0 2 2 0 0 2 2 ...
##  $ p28     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ p28_7esp: chr  "" "" "" "" ...
##  $ p29     : int  0 0 0 0 2 2 0 0 2 2 ...
##  $ p30     : int  0 0 0 0 3 3 0 0 3 3 ...
##  $ p31     : int  0 0 0 0 2 2 0 0 2 2 ...
##  $ p32     : int  5 2 3 4 0 0 2 3 0 0 ...
##  $ p32_6esp: chr  "" "" "" "" ...
##  $ p33_1   : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p33_2   : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p33_3   : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p33_4   : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ p34_1   : int  2 2 2 2 2 1 2 2 1 1 ...
##  $ p34_2   : int  1 2 1 2 2 1 1 2 1 1 ...
##  $ p34_3   : int  2 2 2 2 2 1 2 2 1 1 ...
##  $ p34_3_1 : int  0 0 0 0 0 1 0 0 2 1 ...
##  $ p34_4   : int  1 2 1 1 1 1 1 1 1 1 ...
##  $ p34_4_1 : int  1 0 1 1 1 1 1 1 1 1 ...
##  $ p35     : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ p36_1   : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ p36_2   : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ p36_3   : int  1 1 1 1 1 1 1 1 1 1 ...
##   [list output truncated]
names(M24) # Muestra los nombres de las variables
##   [1] "folio"    "entidad"  "control"  "viv_sel"  "num_hog"  "hog_mud" 
##   [7] "n_ren_el" "cd"       "periodo"  "sexo"     "edad"     "nivel"   
##  [13] "anio"     "cond_act" "p1"       "p2"       "p3_1"     "p3_2"    
##  [19] "p3_3"     "p3_4"     "p3_5"     "p4"       "p5"       "p5_6esp" 
##  [25] "p6_1"     "p6_2"     "p6_3"     "p6_4"     "p6_5"     "p6_6"    
##  [31] "p6_6esp"  "p7"       "p7_3"     "p8_1"     "p8_2"     "p9"      
##  [37] "p9_5esp"  "p10"      "p11"      "p11_6esp" "p12_1"    "p12_2"   
##  [43] "p12_3"    "p12_4"    "p12_5"    "p12_6"    "p12_7"    "p12_8"   
##  [49] "p12_9"    "p12_9esp" "p13"      "p13_3"    "p14_1"    "p14_2"   
##  [55] "p15"      "p15_5esp" "p16"      "p17"      "p17_6esp" "p18_1"   
##  [61] "p18_2"    "p18_3"    "p18_4"    "p18_5"    "p19"      "p19_3"   
##  [67] "p20_1"    "p20_2"    "p21"      "p21_5esp" "p22"      "p23_1"   
##  [73] "p23_2"    "p24"      "p25"      "p25_6esp" "p26"      "p27"     
##  [79] "p28"      "p28_7esp" "p29"      "p30"      "p31"      "p32"     
##  [85] "p32_6esp" "p33_1"    "p33_2"    "p33_3"    "p33_4"    "p34_1"   
##  [91] "p34_2"    "p34_3"    "p34_3_1"  "p34_4"    "p34_4_1"  "p35"     
##  [97] "p36_1"    "p36_2"    "p36_3"    "p36_4"    "factor"   "h_lec"   
## [103] "mat_lec"  "perslec"  "l_format" "r_format" "p_format" "perslecl"
head(M24) # Muestra las primeras 6 filas
##    folio entidad control viv_sel num_hog hog_mud n_ren_el cd periodo sexo edad
## 1 12B221       1   40002       2       1       0        1 14     224    1   52
## 2 12B221       1   40002       1       1       0        1 14     224    1   55
## 3 12B221       1   40002       3       1       0        1 14     224    1   59
## 4 12B221       1   40002       4       1       0        2 14     224    1   30
## 5 11B213       1   40003       1       1       0        1 14     224    1   54
## 6 11B213       1   40003       2       1       0        1 14     224    1   30
##   nivel anio cond_act p1 p2 p3_1 p3_2 p3_3 p3_4 p3_5 p4 p5 p5_6esp p6_1 p6_2
## 1     3    3        9  1  2    2    2    2    2    2  0  0            0    0
## 2     3    3        1  1  2    2    2    2    2    2  0  0            0    0
## 3     3    3        1  1  2    2    2    2    2    2  0  0            0    0
## 4     4    3        1  1  2    2    2    2    2    2  0  0            0    0
## 5     3    3        1  1  2    2    2    1    2    2  0  0            0    0
## 6     4    3        1  1  2    2    2    2    2    1  0  0            0    0
##   p6_3 p6_4 p6_5 p6_6 p6_6esp p7 p7_3 p8_1 p8_2 p9 p9_5esp p10 p11 p11_6esp
## 1    0    0    0    0          0    0    0    0  0           0   0         
## 2    0    0    0    0          0    0    0    0  0           0   0         
## 3    0    0    0    0          0    0    0    0  0           0   0         
## 4    0    0    0    0          0    0    0    0  0           0   0         
## 5    0    0    0    0          0    0    0    0  0           0   0         
## 6    0    0    0    0          0    0    0    0  0           0   0         
##   p12_1 p12_2 p12_3 p12_4 p12_5 p12_6 p12_7 p12_8 p12_9 p12_9esp p13 p13_3
## 1     0     0     0     0     0     0     0     0     0            0     0
## 2     0     0     0     0     0     0     0     0     0            0     0
## 3     0     0     0     0     0     0     0     0     0            0     0
## 4     0     0     0     0     0     0     0     0     0            0     0
## 5     0     0     0     0     0     0     0     0     0            0     0
## 6     0     0     0     0     0     0     0     0     0            0     0
##   p14_1 p14_2 p15 p15_5esp p16 p17 p17_6esp p18_1 p18_2 p18_3 p18_4 p18_5 p19
## 1     0     0   0            0   0              0     0     0     0     0   0
## 2     0     0   0            0   0              0     0     0     0     0   0
## 3     0     0   0            0   0              0     0     0     0     0   0
## 4     0     0   0            0   0              0     0     0     0     0   0
## 5     0     0   0            1   4              1     1     1     1     1   2
## 6     0     0   0            0   0              0     0     0     0     0   0
##   p19_3 p20_1 p20_2 p21 p21_5esp p22 p23_1 p23_2 p24 p25 p25_6esp p26 p27 p28
## 1     0     0     0   0            0     0     0   0   0            0   0   0
## 2     0     0     0   0            0     0     0   0   0            0   0   0
## 3     0     0     0   0            0     0     0   0   0            0   0   0
## 4     0     0     0   0            0     0     0   0   0            0   0   0
## 5     0     1     2   1            0     0     0   0   0           20   2   0
## 6     0     0     0   0            0     0     0   5   4           15   2   0
##   p28_7esp p29 p30 p31 p32 p32_6esp p33_1 p33_2 p33_3 p33_4 p34_1 p34_2 p34_3
## 1            0   0   0   5              2     2     2     2     2     1     2
## 2            0   0   0   2              2     2     2     2     2     2     2
## 3            0   0   0   3              2     2     2     2     2     1     2
## 4            0   0   0   4              2     2     2     2     2     2     2
## 5            2   3   2   0              2     2     2     2     2     2     2
## 6            2   3   2   0              2     2     2     2     1     1     1
##   p34_3_1 p34_4 p34_4_1 p35 p36_1 p36_2 p36_3 p36_4 factor h_lec mat_lec
## 1       0     1       1   1     1     1     1     2  36731     4       4
## 2       0     2       0   1     1     1     1     2   9183     4       4
## 3       0     1       1   1     1     1     1     2  36731     4       4
## 4       0     1       1   1     1     1     1     1  18365     4       4
## 5       0     1       1   1     1     1     1     2   7488     3       3
## 6       1     1       1   1     1     1     1     1   7488     3       3
##   perslec l_format r_format p_format perslecl
## 1       2        0        0        0        2
## 2       2        0        0        0        2
## 3       2        0        0        0        2
## 4       2        0        0        0        2
## 5       1        0        0        1        1
## 6       1        0        0        0        2
# View(M24) # Abre la hoja electrónica para visualizar los datos

# Dimensiones del dataset M24
dimensiones_M24 <- dim(M24) # Cantidad de filas (registros) y columnas (variables)
cat("El dataset M24 tiene", dimensiones_M24[1], "registros y", dimensiones_M24[2], " columnas.\n")
## El dataset M24 tiene 2016 registros y 108  columnas.
# Reemplazar los valores 0 por NA en las variables que no son cuantitativas en M24
for (var in names(M24)) {
  if (!(var %in% variables_cuantitativas)) {
    M24[[var]][M24[[var]] == 0] <- NA
  }
}

# Resumen general de las variables M24
summary(M24) # Proporciona un resumen que muestra la distribución de las variables y si hay datos faltantes
##     folio              entidad         control         viv_sel         num_hog 
##  Length:2016        Min.   : 1.00   Min.   :40001   Min.   :1.000   Min.   :1  
##  Class :character   1st Qu.: 9.00   1st Qu.:40095   1st Qu.:1.750   1st Qu.:1  
##  Mode  :character   Median :15.00   Median :40190   Median :2.000   Median :1  
##                     Mean   :15.58   Mean   :40244   Mean   :2.493   Mean   :1  
##                     3rd Qu.:20.25   3rd Qu.:40315   3rd Qu.:3.000   3rd Qu.:1  
##                     Max.   :32.00   Max.   :41419   Max.   :4.000   Max.   :1  
##                                                                                
##     hog_mud         n_ren_el           cd           periodo         sexo      
##  Min.   :1.000   Min.   :1.000   Min.   : 1.00   Min.   :224   Min.   :1.000  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.: 2.00   1st Qu.:224   1st Qu.:1.000  
##  Median :1.000   Median :1.000   Median : 9.00   Median :224   Median :2.000  
##  Mean   :1.045   Mean   :1.673   Mean   :13.74   Mean   :224   Mean   :1.574  
##  3rd Qu.:1.000   3rd Qu.:2.000   3rd Qu.:25.00   3rd Qu.:224   3rd Qu.:2.000  
##  Max.   :2.000   Max.   :8.000   Max.   :43.00   Max.   :224   Max.   :2.000  
##  NA's   :1949                                                                 
##       edad           nivel             anio          cond_act     
##  Min.   :18.00   Min.   : 2.000   Min.   :1.000   Min.   : 1.000  
##  1st Qu.:33.00   1st Qu.: 3.000   1st Qu.:3.000   1st Qu.: 1.000  
##  Median :46.00   Median : 4.000   Median :3.000   Median : 1.000  
##  Mean   :46.49   Mean   : 4.766   Mean   :3.456   Mean   : 3.325  
##  3rd Qu.:59.00   3rd Qu.: 7.000   3rd Qu.:4.000   3rd Qu.: 7.000  
##  Max.   :94.00   Max.   :99.000   Max.   :9.000   Max.   :10.000  
##                  NA's   :45       NA's   :48                      
##        p1              p2             p3_1            p3_2      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2.000  
##  Median :1.000   Median :1.000   Median :2.000   Median :2.000  
##  Mean   :1.023   Mean   :1.439   Mean   :1.589   Mean   :1.786  
##  3rd Qu.:1.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :2.000   Max.   :2.000   Max.   :2.000   Max.   :2.000  
##                  NA's   :47      NA's   :47      NA's   :47     
##       p3_3            p3_4            p3_5             p4        
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   : 0.000  
##  1st Qu.:2.000   1st Qu.:2.000   1st Qu.:1.000   1st Qu.: 0.000  
##  Median :2.000   Median :2.000   Median :2.000   Median : 0.000  
##  Mean   :1.823   Mean   :1.958   Mean   :1.626   Mean   : 1.275  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.: 2.000  
##  Max.   :2.000   Max.   :2.000   Max.   :2.000   Max.   :70.000  
##  NA's   :47      NA's   :47      NA's   :47                      
##        p5          p5_6esp               p6_1            p6_2     
##  Min.   :1.000   Length:2016        Min.   :1.000   Min.   :1.00  
##  1st Qu.:3.000   Class :character   1st Qu.:2.000   1st Qu.:1.00  
##  Median :4.000   Mode  :character   Median :2.000   Median :2.00  
##  Mean   :3.358                      Mean   :1.925   Mean   :1.71  
##  3rd Qu.:4.000                      3rd Qu.:2.000   3rd Qu.:2.00  
##  Max.   :6.000                      Max.   :2.000   Max.   :2.00  
##  NA's   :1207                       NA's   :1207    NA's   :1207  
##       p6_3            p6_4            p6_5           p6_6      
##  Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1.000  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2.00   1st Qu.:2.000  
##  Median :2.000   Median :2.000   Median :2.00   Median :2.000  
##  Mean   :1.684   Mean   :1.609   Mean   :1.78   Mean   :1.995  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.00   3rd Qu.:2.000  
##  Max.   :2.000   Max.   :2.000   Max.   :2.00   Max.   :2.000  
##  NA's   :1207    NA's   :1207    NA's   :1207   NA's   :1207   
##    p6_6esp                p7             p7_3             p8_1      
##  Length:2016        Min.   :1.000   Min.   :     0   Min.   :1.000  
##  Class :character   1st Qu.:2.000   1st Qu.:     0   1st Qu.:2.000  
##  Mode  :character   Median :2.000   Median :     0   Median :2.000  
##                     Mean   :2.141   Mean   :  3115   Mean   :1.758  
##                     3rd Qu.:3.000   3rd Qu.:     0   3rd Qu.:2.000  
##                     Max.   :3.000   Max.   :999999   Max.   :2.000  
##                     NA's   :1207                     NA's   :1207   
##       p8_2             p9          p9_5esp               p10         
##  Min.   :1.000   Min.   :1.000   Length:2016        Min.   : 0.0000  
##  1st Qu.:1.000   1st Qu.:1.000   Class :character   1st Qu.: 0.0000  
##  Median :1.000   Median :1.000   Mode  :character   Median : 0.0000  
##  Mean   :1.189   Mean   :1.129                      Mean   : 0.6349  
##  3rd Qu.:1.000   3rd Qu.:1.000                      3rd Qu.: 0.0000  
##  Max.   :2.000   Max.   :5.000                      Max.   :25.0000  
##  NA's   :1207    NA's   :1207                                        
##       p11          p11_6esp             p12_1           p12_2      
##  Min.   :1.000   Length:2016        Min.   :1.000   Min.   :1.000  
##  1st Qu.:3.000   Class :character   1st Qu.:2.000   1st Qu.:2.000  
##  Median :4.000   Mode  :character   Median :2.000   Median :2.000  
##  Mean   :3.508                      Mean   :1.903   Mean   :1.831  
##  3rd Qu.:4.000                      3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :6.000                      Max.   :2.000   Max.   :2.000  
##  NA's   :1595                       NA's   :1595    NA's   :1595   
##      p12_3           p12_4           p12_5           p12_6      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:2.000   1st Qu.:2.000   1st Qu.:2.000  
##  Median :2.000   Median :2.000   Median :2.000   Median :2.000  
##  Mean   :1.777   Mean   :1.805   Mean   :1.857   Mean   :1.777  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :2.000   Max.   :2.000   Max.   :2.000   Max.   :2.000  
##  NA's   :1595    NA's   :1595    NA's   :1595    NA's   :1595   
##      p12_7           p12_8           p12_9         p12_9esp        
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Length:2016       
##  1st Qu.:2.000   1st Qu.:1.000   1st Qu.:2.000   Class :character  
##  Median :2.000   Median :2.000   Median :2.000   Mode  :character  
##  Mean   :1.767   Mean   :1.706   Mean   :1.998                     
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000                     
##  Max.   :2.000   Max.   :2.000   Max.   :2.000                     
##  NA's   :1595    NA's   :1595    NA's   :1595                      
##       p13            p13_3              p14_1           p14_2      
##  Min.   :1.000   Min.   :     0.0   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:     0.0   1st Qu.:2.000   1st Qu.:1.000  
##  Median :2.000   Median :     0.0   Median :2.000   Median :1.000  
##  Mean   :2.074   Mean   :   506.5   Mean   :1.782   Mean   :1.183  
##  3rd Qu.:3.000   3rd Qu.:     0.0   3rd Qu.:2.000   3rd Qu.:1.000  
##  Max.   :3.000   Max.   :999999.0   Max.   :2.000   Max.   :2.000  
##  NA's   :1595                       NA's   :1595    NA's   :1595   
##       p15          p15_5esp              p16               p17       
##  Min.   :1.000   Length:2016        Min.   : 0.0000   Min.   :1.000  
##  1st Qu.:1.000   Class :character   1st Qu.: 0.0000   1st Qu.:3.000  
##  Median :1.000   Mode  :character   Median : 0.0000   Median :3.000  
##  Mean   :1.287                      Mean   : 0.5749   Mean   :3.356  
##  3rd Qu.:1.000                      3rd Qu.: 0.0000   3rd Qu.:4.000  
##  Max.   :5.000                      Max.   :60.0000   Max.   :6.000  
##  NA's   :1595                                         NA's   :1668   
##    p17_6esp             p18_1           p18_2           p18_3      
##  Length:2016        Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  Class :character   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Mode  :character   Median :1.000   Median :1.000   Median :1.000  
##                     Mean   :1.253   Mean   :1.316   Mean   :1.368  
##                     3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000  
##                     Max.   :2.000   Max.   :2.000   Max.   :2.000  
##                     NA's   :1668    NA's   :1668    NA's   :1668   
##      p18_4           p18_5            p19            p19_3         
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :     0.0  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2.000   1st Qu.:     0.0  
##  Median :2.000   Median :1.000   Median :2.000   Median :     0.0  
##  Mean   :1.503   Mean   :1.236   Mean   :2.261   Mean   :   995.8  
##  3rd Qu.:2.000   3rd Qu.:1.000   3rd Qu.:3.000   3rd Qu.:     0.0  
##  Max.   :2.000   Max.   :2.000   Max.   :3.000   Max.   :999999.0  
##  NA's   :1668    NA's   :1668    NA's   :1668                      
##      p20_1           p20_2            p21          p21_5esp        
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Length:2016       
##  1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.000   Class :character  
##  Median :2.000   Median :1.000   Median :1.000   Mode  :character  
##  Mean   :1.805   Mean   :1.181   Mean   :1.397                     
##  3rd Qu.:2.000   3rd Qu.:1.000   3rd Qu.:2.000                     
##  Max.   :2.000   Max.   :2.000   Max.   :5.000                     
##  NA's   :1668    NA's   :1668    NA's   :1668                      
##       p22            p23_1          p23_2           p24             p25       
##  Min.   :1.000   Min.   :1.00   Min.   :1.00   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:1.00   1st Qu.:1.00   1st Qu.:1.000   1st Qu.:3.000  
##  Median :3.000   Median :1.00   Median :2.00   Median :2.000   Median :3.000  
##  Mean   :3.506   Mean   :1.41   Mean   :1.53   Mean   :2.184   Mean   :3.054  
##  3rd Qu.:5.000   3rd Qu.:2.00   3rd Qu.:2.00   3rd Qu.:2.000   3rd Qu.:4.000  
##  Max.   :5.000   Max.   :2.00   Max.   :2.00   Max.   :5.000   Max.   :6.000  
##  NA's   :1933    NA's   :1933   NA's   :1933   NA's   :1279    NA's   :1279   
##    p25_6esp              p26              p27             p28       
##  Length:2016        Min.   :  0.00   Min.   :1.000   Min.   :1.000  
##  Class :character   1st Qu.:  0.00   1st Qu.:2.000   1st Qu.:5.000  
##  Mode  :character   Median : 20.00   Median :2.000   Median :5.000  
##                     Mean   : 26.78   Mean   :1.836   Mean   :5.081  
##                     3rd Qu.: 30.00   3rd Qu.:2.000   3rd Qu.:6.000  
##                     Max.   :360.00   Max.   :2.000   Max.   :7.000  
##                                      NA's   :666     NA's   :1795   
##    p28_7esp              p29             p30             p31       
##  Length:2016        Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  Class :character   1st Qu.:2.000   1st Qu.:3.000   1st Qu.:1.000  
##  Mode  :character   Median :2.000   Median :3.000   Median :2.000  
##                     Mean   :2.508   Mean   :2.978   Mean   :1.576  
##                     3rd Qu.:3.000   3rd Qu.:3.000   3rd Qu.:2.000  
##                     Max.   :4.000   Max.   :4.000   Max.   :2.000  
##                     NA's   :666     NA's   :666     NA's   :666    
##       p32          p32_6esp             p33_1          p33_2      
##  Min.   :1.000   Length:2016        Min.   :1.00   Min.   :1.000  
##  1st Qu.:1.000   Class :character   1st Qu.:2.00   1st Qu.:2.000  
##  Median :3.000   Mode  :character   Median :2.00   Median :2.000  
##  Mean   :2.662                      Mean   :1.83   Mean   :1.913  
##  3rd Qu.:3.000                      3rd Qu.:2.00   3rd Qu.:2.000  
##  Max.   :6.000                      Max.   :2.00   Max.   :2.000  
##  NA's   :1397                       NA's   :47     NA's   :47     
##      p33_3           p33_4           p34_1          p34_2           p34_3     
##  Min.   :1.000   Min.   :1.000   Min.   :1.00   Min.   :1.000   Min.   :1.00  
##  1st Qu.:2.000   1st Qu.:2.000   1st Qu.:1.00   1st Qu.:1.000   1st Qu.:1.00  
##  Median :2.000   Median :2.000   Median :2.00   Median :2.000   Median :2.00  
##  Mean   :1.932   Mean   :1.867   Mean   :1.71   Mean   :1.512   Mean   :1.68  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.00   3rd Qu.:2.000   3rd Qu.:2.00  
##  Max.   :2.000   Max.   :2.000   Max.   :3.00   Max.   :3.000   Max.   :3.00  
##  NA's   :47      NA's   :47      NA's   :47     NA's   :47      NA's   :47    
##     p34_3_1          p34_4          p34_4_1           p35       
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :2.000   Median :1.000   Median :1.000   Median :1.000  
##  Mean   :1.646   Mean   :1.461   Mean   :1.793   Mean   :1.011  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:1.000  
##  Max.   :3.000   Max.   :3.000   Max.   :6.000   Max.   :2.000  
##  NA's   :1350    NA's   :47      NA's   :894     NA's   :47     
##      p36_1           p36_2           p36_3           p36_4      
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
##  Median :1.000   Median :1.000   Median :1.000   Median :1.000  
##  Mean   :1.404   Mean   :1.229   Mean   :1.338   Mean   :1.446  
##  3rd Qu.:2.000   3rd Qu.:1.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :3.000   Max.   :3.000   Max.   :3.000   Max.   :3.000  
##  NA's   :68      NA's   :68      NA's   :68      NA's   :68     
##      factor           h_lec          mat_lec         perslec     
##  Min.   :  3576   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.: 12994   1st Qu.:1.000   1st Qu.:2.000   1st Qu.:1.000  
##  Median : 18445   Median :1.000   Median :3.000   Median :1.000  
##  Mean   : 21196   Mean   :2.192   Mean   :2.779   Mean   :1.314  
##  3rd Qu.: 26839   3rd Qu.:4.000   3rd Qu.:4.000   3rd Qu.:2.000  
##  Max.   :124941   Max.   :4.000   Max.   :4.000   Max.   :2.000  
##                   NA's   :47      NA's   :47      NA's   :47     
##     l_format        r_format        p_format        perslecl    
##  Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
##  1st Qu.:2.000   1st Qu.:2.000   1st Qu.:2.000   1st Qu.:1.000  
##  Median :2.000   Median :2.000   Median :2.000   Median :1.000  
##  Mean   :1.864   Mean   :1.853   Mean   :1.833   Mean   :1.409  
##  3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :3.000   Max.   :3.000   Max.   :3.000   Max.   :2.000  
##  NA's   :1207    NA's   :1595    NA's   :1668    NA's   :47
# Verificación de datos faltantes en M24
na_totales_M24 <- sum(is.na(M24)) # Número total de datos faltantes en todo el dataset
cat("Hay un total de", na_totales_M24, "datos faltantes en el dataset M24.\n")
## Hay un total de 76421 datos faltantes en el dataset M24.
# Revisión de datos faltantes por variable en M24
na_por_variable_M24 <- colSums(is.na(M24)) # Número de datos faltantes por cada variable
porcentaje_na_por_variable_M24 <- colMeans(is.na(M24)) * 100 # Porcentaje de datos faltantes por variable

# Mostrar las variables con valores faltantes y su porcentaje en M24
cat("Variables con datos faltantes en M24:\n")
## Variables con datos faltantes en M24:
for (i in 1:ncol(M24)) {
  if (porcentaje_na_por_variable_M24[i] > 0) {
    cat(names(M24)[i], "tiene", na_por_variable_M24[i], "valores faltantes (", round(porcentaje_na_por_variable_M24[i], 2), "%).\n")
  }
}
## hog_mud tiene 1949 valores faltantes ( 96.68 %).
## nivel tiene 45 valores faltantes ( 2.23 %).
## anio tiene 48 valores faltantes ( 2.38 %).
## p2 tiene 47 valores faltantes ( 2.33 %).
## p3_1 tiene 47 valores faltantes ( 2.33 %).
## p3_2 tiene 47 valores faltantes ( 2.33 %).
## p3_3 tiene 47 valores faltantes ( 2.33 %).
## p3_4 tiene 47 valores faltantes ( 2.33 %).
## p3_5 tiene 47 valores faltantes ( 2.33 %).
## p5 tiene 1207 valores faltantes ( 59.87 %).
## p6_1 tiene 1207 valores faltantes ( 59.87 %).
## p6_2 tiene 1207 valores faltantes ( 59.87 %).
## p6_3 tiene 1207 valores faltantes ( 59.87 %).
## p6_4 tiene 1207 valores faltantes ( 59.87 %).
## p6_5 tiene 1207 valores faltantes ( 59.87 %).
## p6_6 tiene 1207 valores faltantes ( 59.87 %).
## p7 tiene 1207 valores faltantes ( 59.87 %).
## p8_1 tiene 1207 valores faltantes ( 59.87 %).
## p8_2 tiene 1207 valores faltantes ( 59.87 %).
## p9 tiene 1207 valores faltantes ( 59.87 %).
## p11 tiene 1595 valores faltantes ( 79.12 %).
## p12_1 tiene 1595 valores faltantes ( 79.12 %).
## p12_2 tiene 1595 valores faltantes ( 79.12 %).
## p12_3 tiene 1595 valores faltantes ( 79.12 %).
## p12_4 tiene 1595 valores faltantes ( 79.12 %).
## p12_5 tiene 1595 valores faltantes ( 79.12 %).
## p12_6 tiene 1595 valores faltantes ( 79.12 %).
## p12_7 tiene 1595 valores faltantes ( 79.12 %).
## p12_8 tiene 1595 valores faltantes ( 79.12 %).
## p12_9 tiene 1595 valores faltantes ( 79.12 %).
## p13 tiene 1595 valores faltantes ( 79.12 %).
## p14_1 tiene 1595 valores faltantes ( 79.12 %).
## p14_2 tiene 1595 valores faltantes ( 79.12 %).
## p15 tiene 1595 valores faltantes ( 79.12 %).
## p17 tiene 1668 valores faltantes ( 82.74 %).
## p18_1 tiene 1668 valores faltantes ( 82.74 %).
## p18_2 tiene 1668 valores faltantes ( 82.74 %).
## p18_3 tiene 1668 valores faltantes ( 82.74 %).
## p18_4 tiene 1668 valores faltantes ( 82.74 %).
## p18_5 tiene 1668 valores faltantes ( 82.74 %).
## p19 tiene 1668 valores faltantes ( 82.74 %).
## p20_1 tiene 1668 valores faltantes ( 82.74 %).
## p20_2 tiene 1668 valores faltantes ( 82.74 %).
## p21 tiene 1668 valores faltantes ( 82.74 %).
## p22 tiene 1933 valores faltantes ( 95.88 %).
## p23_1 tiene 1933 valores faltantes ( 95.88 %).
## p23_2 tiene 1933 valores faltantes ( 95.88 %).
## p24 tiene 1279 valores faltantes ( 63.44 %).
## p25 tiene 1279 valores faltantes ( 63.44 %).
## p27 tiene 666 valores faltantes ( 33.04 %).
## p28 tiene 1795 valores faltantes ( 89.04 %).
## p29 tiene 666 valores faltantes ( 33.04 %).
## p30 tiene 666 valores faltantes ( 33.04 %).
## p31 tiene 666 valores faltantes ( 33.04 %).
## p32 tiene 1397 valores faltantes ( 69.3 %).
## p33_1 tiene 47 valores faltantes ( 2.33 %).
## p33_2 tiene 47 valores faltantes ( 2.33 %).
## p33_3 tiene 47 valores faltantes ( 2.33 %).
## p33_4 tiene 47 valores faltantes ( 2.33 %).
## p34_1 tiene 47 valores faltantes ( 2.33 %).
## p34_2 tiene 47 valores faltantes ( 2.33 %).
## p34_3 tiene 47 valores faltantes ( 2.33 %).
## p34_3_1 tiene 1350 valores faltantes ( 66.96 %).
## p34_4 tiene 47 valores faltantes ( 2.33 %).
## p34_4_1 tiene 894 valores faltantes ( 44.35 %).
## p35 tiene 47 valores faltantes ( 2.33 %).
## p36_1 tiene 68 valores faltantes ( 3.37 %).
## p36_2 tiene 68 valores faltantes ( 3.37 %).
## p36_3 tiene 68 valores faltantes ( 3.37 %).
## p36_4 tiene 68 valores faltantes ( 3.37 %).
## h_lec tiene 47 valores faltantes ( 2.33 %).
## mat_lec tiene 47 valores faltantes ( 2.33 %).
## perslec tiene 47 valores faltantes ( 2.33 %).
## l_format tiene 1207 valores faltantes ( 59.87 %).
## r_format tiene 1595 valores faltantes ( 79.12 %).
## p_format tiene 1668 valores faltantes ( 82.74 %).
## perslecl tiene 47 valores faltantes ( 2.33 %).
M20final <- M20[,c("p4","p7","p8_1","p9","p26","p33_1")]
M24final <- M24[,c("p4","p7","p8_1","p9","p26","p33_1")]

zero_na_rows_M20 <- apply(M20final, 1, function(x) all(x %in% c(0, NA)))
M20final <- M20final[!zero_na_rows_M20, ]
cat("En M20final se eliminaron", sum(zero_na_rows_M20), "filas que contenían solo 0 y NA.\n")
## En M20final se eliminaron 52 filas que contenían solo 0 y NA.
zero_na_rows_M24 <- apply(M24final, 1, function(x) all(x %in% c(0, NA)))
M24final <- M24final[!zero_na_rows_M24, ]
cat("En M24final se eliminaron", sum(zero_na_rows_M24), "filas que contenían solo 0 y NA.\n")
## En M24final se eliminaron 47 filas que contenían solo 0 y NA.
same_value_rows_M20 <- apply(M20final, 1, function(x) all(x == x[1], na.rm = TRUE))
cat("En M20final se eliminaron", sum(same_value_rows_M20), "filas donde todas las variables eran iguales.\n")
## En M20final se eliminaron 0 filas donde todas las variables eran iguales.
same_value_rows_M24 <- apply(M24final, 1, function(x) all(x == x[1], na.rm = TRUE))
cat("En M24final se eliminaron", sum(same_value_rows_M24), "filas donde todas las variables eran iguales.\n")
## En M24final se eliminaron 0 filas donde todas las variables eran iguales.
write.csv(M20final, "M20final_limpio.csv", row.names = FALSE)
write.csv(M24final, "M24final_limpio.csv", row.names = FALSE)

library(ggplot2)
library(dplyr)
## 
## 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
library(moments)
Datos20 = read.csv("M20final_limpio.csv")
Datos24 = read.csv("M24final_limpio.csv")

#Intervalo de confianza para el numero de libros leidos en 2020

variable1 = as.numeric(as.character(Datos20$p4))  
install.packages("BSDA") 
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(BSDA) 
## Loading required package: lattice
## 
## Attaching package: 'BSDA'
## The following object is masked from 'package:datasets':
## 
##     Orange
z.test(variable1,conf.level=0.96, sigma.x=sd(variable1)) 
## 
##  One-sample z-Test
## 
## data:  variable1
## z = 18.691, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 96 percent confidence interval:
##  1.305180 1.627405
## sample estimates:
## mean of x 
##  1.466292

#Analisis La prueba sugiere que la media de libros leídos en 2020 es significativamente mayor que 0. Dado que el intervalo de confianza no incluye 0 y el valor z es muy alto, podemos concluir que los mexicanos leyeron en promedio entre 1.305 y 1.627 libros en 2020. El resultado refuerza que la media observada de 1.466 libros leídos es una estimación fiable, y la diferencia con 0 no es debida al azar. Este análisis indica que los hábitos de lectura de 2020 muestran un promedio de libros leídos claramente distinto de 0, con una media cercana a 1.5 libros leídos por persona en los últimos 12 meses.

#Intervalo de confianza para el numero de libros leidos en 2024

variable1.1 = as.numeric(as.character(Datos24$p4))  
install.packages("BSDA") 
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(BSDA) 
z.test(variable1.1,conf.level=0.96, sigma.x=sd(variable1.1)) 
## 
##  One-sample z-Test
## 
## data:  variable1.1
## z = 17.575, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 96 percent confidence interval:
##  1.152703 1.457759
## sample estimates:
## mean of x 
##  1.305231

#Prueba de hipótesis para la diferencia de medias del numero de libros leidos comparando 2020 y 2024 H0: Las medias son iguales. H1: Las medias son diferentes.

variable1 = as.numeric(as.character(Datos20$p4))  
variable1.1 = as.numeric(as.character(Datos24$p4))
z.test(x = variable1,y = variable1.1, conf.level=0.96,alternative = "two.sided", sigma.x=sd(variable1),sigma.y = sd(variable1.1)) 
## 
##  Two-sample z-Test
## 
## data:  variable1 and variable1.1
## z = 1.4909, p-value = 0.136
## alternative hypothesis: true difference in means is not equal to 0
## 96 percent confidence interval:
##  -0.06079951  0.38292162
## sample estimates:
## mean of x mean of y 
##  1.466292  1.305231

#Analisis No hay evidencia estadística suficiente para concluir que la cantidad promedio de libros leídos en 2020 fue significativamente diferente de la cantidad promedio de libros leídos en 2024. El valor p alto y el intervalo de confianza que incluye 0 respaldan esta conclusión.

#Intervalo de confianza para el numero de minutos leidos en 2020

variable2 = as.numeric(as.character(Datos20$p26))  
install.packages("BSDA") 
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(BSDA) 
z.test(variable2,conf.level=0.96, sigma.x=sd(variable2)) 
## 
##  One-sample z-Test
## 
## data:  variable2
## z = 38.798, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 96 percent confidence interval:
##  27.46442 30.53456
## sample estimates:
## mean of x 
##  28.99949

#Intervalo de confianza para el numero de minutos leidos en 2024

variable2.1 = as.numeric(as.character(Datos24$p26))  
install.packages("BSDA") 
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(BSDA) 
z.test(variable2.1,conf.level=0.96, sigma.x=sd(variable2.1)) 
## 
##  One-sample z-Test
## 
## data:  variable2.1
## z = 37.059, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 96 percent confidence interval:
##  25.90044 28.93959
## sample estimates:
## mean of x 
##  27.42001

#Prueba de hipótesis para la diferencia de medias en minutos de lectura continua comparando 2020 y 2024 H0: Las medias son iguales. H1: Las medias son diferentes.

variable2 = as.numeric(as.character(Datos20$p26)) 
variable2.1 = as.numeric(as.character(Datos24$p26)) 
z.test(x = variable2,y = variable2.1, conf.level=0.96, alternative = "two.sided", sigma.x=sd(variable2),sigma.y = sd(variable2.1)) 
## 
##  Two-sample z-Test
## 
## data:  variable2 and variable2.1
## z = 1.5018, p-value = 0.1332
## alternative hypothesis: true difference in means is not equal to 0
## 96 percent confidence interval:
##  -0.5805112  3.7394694
## sample estimates:
## mean of x mean of y 
##  28.99949  27.42001

#Analisis A pesar de que hay una diferencia observada en las medias de minutos leídos entre 2020 y 2024, esta diferencia no es significativa desde el punto de vista estadístico. Esto puede indicar que no ha habido un cambio notable en los hábitos de lectura en términos de tiempo dedicado entre estos años, lo que podría ser relevante para entender los patrones de lectura en México.

df_p7_2020=M20final %>% select(p7) %>% filter(p7 != 0 & p7!=999999)
df_p8_2020=M20final %>% select(p8_1) %>% filter(p8_1 != 0 & p8_1!=999999)


df_p7_2024=M24final %>% select(p7) %>% filter(p7 != 0 & p7!=999999)
df_p8_2024=M24final %>% select(p8_1) %>% filter(p8_1 != 0 & p8_1!=999999)

Tabla Contingencia p7 y p8 en 2020

Para esto, primero debemos recordar que para la variable p7, el valor 1 indica que el libro fue descargado gratuitamente, el valor 2 significa que fue regalado o prestado, mientras que el 3 significa que fue comprado. Para la variable 8, el valor 1 significa que el libro estaba en formato digital, mientras que el 2 significa que fue impreso.

tabla_contingencia_2020=table(df_p7_2020$p7,df_p8_2020$p8_1)

cat("Tabla contingencia p7 y p8 en 2020")
## Tabla contingencia p7 y p8 en 2020
print(tabla_contingencia_2020)
##    
##       1   2
##   1  90   7
##   2  13 372
##   3  17 312
chisq.test(tabla_contingencia_2020,correct=FALSE)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia_2020
## X-squared = 531.97, df = 2, p-value < 2.2e-16

Tabla Contingencia p7 y p8 en 2024

tabla_contingencia_2024=table(df_p7_2024$p7,df_p8_2024$p8_1)

cat("Tabla contingencia p7 y p8 en 2024")
## Tabla contingencia p7 y p8 en 2024
print(tabla_contingencia_2024)
##    
##       1   2
##   1 156  12
##   2  21 338
##   3  19 263
chisq.test(tabla_contingencia_2024,correct=FALSE) 
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia_2024
## X-squared = 544.07, df = 2, p-value < 2.2e-16

Prueba de proporción doble en 2020

Pruebas de hipótesis

# Con los libros descargados gratuitamente

n_2020_gratis = c(120,691)
x_2020_gratis = c(90,7)

cat("Proporcionalidad de libros descargados gratuitamente y formato")
## Proporcionalidad de libros descargados gratuitamente y formato
prop.test(x_2020_gratis,n_2020_gratis, p=c(0.8,0.05), correct= FALSE, conf.level = 0.96, alternative="greater")
## 
##  2-sample test for given proportions without continuity correction
## 
## data:  x_2020_gratis out of n_2020_gratis, null probabilities c(0.8, 0.05)
## X-squared = 24.999, df = 2, p-value = 3.728e-06
## alternative hypothesis: two.sided
## null values:
## prop 1 prop 2 
##   0.80   0.05 
## sample estimates:
##     prop 1     prop 2 
## 0.75000000 0.01013025
# Con los libros regalados o prestados

n_2020_regalados = c(120,691)
x_2020_regalados = c(13,372)

cat("Proporcionalidad de libros regalados o prestados y formato")
## Proporcionalidad de libros regalados o prestados y formato
prop.test(x_2020_regalados,n_2020_regalados, p=c(0.1,0.4), correct= FALSE, conf.level = 0.96, alternative="greater")
## 
##  2-sample test for given proportions without continuity correction
## 
## data:  x_2020_regalados out of n_2020_regalados, null probabilities c(0.1, 0.4)
## X-squared = 55.202, df = 2, p-value = 1.03e-12
## alternative hypothesis: two.sided
## null values:
## prop 1 prop 2 
##    0.1    0.4 
## sample estimates:
##    prop 1    prop 2 
## 0.1083333 0.5383502
# Con los libros comprados

n_2020_comprados = c(120,691)
x_2020_comprados = c(17,312)

cat("Proporcionalidad de libros comprados y formato")
## Proporcionalidad de libros comprados y formato
prop.test(x_2020_comprados,n_2020_comprados, p=c(0.2,0.5), correct= FALSE, conf.level = 0.96, alternative="greater")
## 
##  2-sample test for given proportions without continuity correction
## 
## data:  x_2020_comprados out of n_2020_comprados, null probabilities c(0.2, 0.5)
## X-squared = 9.0485, df = 2, p-value = 0.01084
## alternative hypothesis: two.sided
## null values:
## prop 1 prop 2 
##    0.2    0.5 
## sample estimates:
##    prop 1    prop 2 
## 0.1416667 0.4515195

Prueba de proporción doble en 2024

Pruebas de hipótesis

# Con los libros descargados gratuitamente

n_2024_gratis = c(196,613)
x_2024_gratis = c(156,12)

cat("Proporcionalidad de libros descargados gratuitamente y formato")
## Proporcionalidad de libros descargados gratuitamente y formato
prop.test(x_2024_gratis,n_2024_gratis, p=c(0.8,0.05), correct= FALSE, conf.level = 0.96, alternative="greater")
## 
##  2-sample test for given proportions without continuity correction
## 
## data:  x_2024_gratis out of n_2024_gratis, null probabilities c(0.8, 0.05)
## X-squared = 11.966, df = 2, p-value = 0.002521
## alternative hypothesis: two.sided
## null values:
## prop 1 prop 2 
##   0.80   0.05 
## sample estimates:
##     prop 1     prop 2 
## 0.79591837 0.01957586
# Con los libros regalados o prestados

n_2024_regalados = c(196,613)
x_2024_regalados = c(21,338)

cat("Proporcionalidad de libros regalados o prestados y formato")
## Proporcionalidad de libros regalados o prestados y formato
prop.test(x_2024_regalados,n_2024_regalados, p=c(0.1,0.4), correct= FALSE, conf.level = 0.96, alternative="greater")
## 
##  2-sample test for given proportions without continuity correction
## 
## data:  x_2024_regalados out of n_2024_regalados, null probabilities c(0.1, 0.4)
## X-squared = 58.647, df = 2, p-value = 1.84e-13
## alternative hypothesis: two.sided
## null values:
## prop 1 prop 2 
##    0.1    0.4 
## sample estimates:
##    prop 1    prop 2 
## 0.1071429 0.5513866
# Con los libros comprados

n_2024_comprados = c(196,613)
x_2024_comprados = c(19,263)

cat("Proporcionalidad de libros comprados y formato")
## Proporcionalidad de libros comprados y formato
prop.test(x_2024_comprados,n_2024_comprados, p=c(0.2,0.5), correct= FALSE, conf.level = 0.96, alternative="greater")
## 
##  2-sample test for given proportions without continuity correction
## 
## data:  x_2024_comprados out of n_2024_comprados, null probabilities c(0.2, 0.5)
## X-squared = 25.359, df = 2, p-value = 3.114e-06
## alternative hypothesis: two.sided
## null values:
## prop 1 prop 2 
##    0.2    0.5 
## sample estimates:
##     prop 1     prop 2 
## 0.09693878 0.42903752
library(dplyr)

p9_2020 <- M20$p9
p9_2024 <- M24$p9
p26_2020 <- M20$p26
p26_2024 <- M20$p26

# Verificar longitudes de las variables
length(p9_2020)  # 2000
## [1] 2010
length(p9_2024)  # 2300
## [1] 2016
length(p26_2020)  # 2000
## [1] 2010
length(p26_2024)  # 2300
## [1] 2010
# Definir las etiquetas
labels <- c(
  "No ha leído ",
  "En su casa ",
  "centro de estudios o lugar de trabajo",
  "En librerías ",
  "En el transporte",
  "Otro"
)
# Crea un dataframe para 2020
df_2020 <- data.frame(
  p9 = factor(p9_2020, levels = 0:5, labels = labels),
  p26 = p26_2020
)

# Crea un dataframe para 2024, limitando a los primeros 2010 registros
df_2024 <- data.frame(
  p9 = factor(p9_2024[1:2010], levels = 0:5, labels = labels),
  p26 = p26_2024[1:2010]
)

# Añade una columna para el año
df_2020$year <- 2020
df_2024$year <- 2024

# Combina los dataframes
df_combined <- bind_rows(df_2020, df_2024)

# Realiza el análisis ANOVA
anova_result <- aov(p26 ~ p9 * year, data = df_combined)
summary(anova_result)
##               Df  Sum Sq Mean Sq F value Pr(>F)    
## p9             4   13175    3294   2.399 0.0482 *  
## year           1  178794  178794 130.239 <2e-16 ***
## p9:year        4    1760     440   0.320 0.8644    
## Residuals   1606 2204750    1373                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 2404 observations deleted due to missingness
# Visualiza la relación
ggplot(df_combined, aes(x = p9, y = p26, fill = factor(year))) +
  geom_boxplot() +
  labs(x = "Lugar de Lectura (p9)", y = "Minutos Leídos Continuamente (p26)",
       title = "Relación entre el Lugar de Lectura y Minutos Leídos") +
  scale_fill_discrete(name = "Año") +
  theme_minimal()

# Filtrar datos para 2020
p26_casa_2020 <- M20final$p26[M20final$p9 == 1]
p26_libreria_2020 <- M20final$p26[M20final$p9 == 3]

# Filtrar datos para 2024
p26_casa_2024 <- M24final$p26[M24final$p9 == 1]
p26_libreria_2024 <- M24final$p26[M24final$p9 == 3]

# Prueba t para el año 2020
t_test_2020 <- t.test(p26_casa_2020, p26_libreria_2020, var.equal = FALSE)

# Prueba t para el año 2024
t_test_2024 <- t.test(p26_casa_2024, p26_libreria_2024, var.equal = FALSE)

# Resultados para el año 2020
print(t_test_2020)
## 
##  Welch Two Sample t-test
## 
## data:  p26_casa_2020 and p26_libreria_2020
## t = -1.4902, df = 11.208, p-value = 0.1638
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -55.99479  10.72179
## sample estimates:
## mean of x mean of y 
##   49.8635   72.5000
# Resultados para el año 2024
print(t_test_2024)
## 
##  Welch Two Sample t-test
## 
## data:  p26_casa_2024 and p26_libreria_2024
## t = -0.28906, df = 2.0748, p-value = 0.7989
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -44.87379  39.03930
## sample estimates:
## mean of x mean of y 
##  47.08276  50.00000
# Filtrar datos para 2020
p26_casa_2020 <- M20final$p26[M20final$p9 == 1]
p26_libreria_2020 <- M20final$p26[M20final$p9 == 3]

# Filtrar datos para 2024
p26_casa_2024 <- M24final$p26[M24final$p9 == 1]
p26_libreria_2024 <- M24final$p26[M24final$p9 == 3]
 # Prueba t para comparar minutos leídos en casa entre 2020 y 2024
t_test_casa <- t.test(p26_casa_2020, p26_casa_2024, var.equal = FALSE)

# Prueba t para comparar minutos leídos en librerías entre 2020 y 2024
t_test_libreria <- t.test(p26_libreria_2020, p26_libreria_2024, var.equal = FALSE)

# Resultados para la lectura en casa
print(t_test_casa)
## 
##  Welch Two Sample t-test
## 
## data:  p26_casa_2020 and p26_casa_2024
## t = 1.39, df = 1380.3, p-value = 0.1647
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -1.143575  6.705061
## sample estimates:
## mean of x mean of y 
##  49.86350  47.08276
# Resultados para la lectura en librerías
print(t_test_libreria)
## 
##  Welch Two Sample t-test
## 
## data:  p26_libreria_2020 and p26_libreria_2024
## t = 1.2412, df = 11.074, p-value = 0.2402
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -17.36547  62.36547
## sample estimates:
## mean of x mean of y 
##      72.5      50.0
# Seleccionar variables p33_1 a p33_4 para M20 y M24
M20_p33 <- M20[, c("p33_1", "p33_2", "p33_3", "p33_4")]
M24_p33 <- M24[, c("p33_1", "p33_2", "p33_3", "p33_4")]

# Función para calcular el porcentaje de "Sí" (1) en un año específico
calcular_porcentaje_si <- function(data, variable) {
  total <- length(data[[variable]])
  si <- sum(data[[variable]] == 1, na.rm = TRUE)
  porcentaje_si <- (si / total) * 100
  return(porcentaje_si)
}

# Calcular porcentaje de "Sí" en 2020 y 2024
porcentaje_si_2020_p33_1 <- calcular_porcentaje_si(M20, "p33_1")
porcentaje_si_2024_p33_1 <- calcular_porcentaje_si(M24, "p33_1")

porcentaje_si_2020_p33_2 <- calcular_porcentaje_si(M20, "p33_2")
porcentaje_si_2024_p33_2 <- calcular_porcentaje_si(M24, "p33_2")

porcentaje_si_2020_p33_3 <- calcular_porcentaje_si(M20, "p33_3")
porcentaje_si_2024_p33_3 <- calcular_porcentaje_si(M24, "p33_3")

porcentaje_si_2020_p33_4 <- calcular_porcentaje_si(M20, "p33_4")
porcentaje_si_2024_p33_4 <- calcular_porcentaje_si(M24, "p33_4")

# Calcular el cambio porcentual
cambio_porcentual_p33_1 <- porcentaje_si_2024_p33_1 - porcentaje_si_2020_p33_1
cambio_porcentual_p33_2 <- porcentaje_si_2024_p33_2 - porcentaje_si_2020_p33_2
cambio_porcentual_p33_3 <- porcentaje_si_2024_p33_3 - porcentaje_si_2020_p33_3
cambio_porcentual_p33_4 <- porcentaje_si_2024_p33_4 - porcentaje_si_2020_p33_4

# Imprimir resultados
cat("Cambio porcentual en p33_1 (tienda departamental):", cambio_porcentual_p33_1, "%\n")
## Cambio porcentual en p33_1 (tienda departamental): -3.333185 %
cat("Cambio porcentual en p33_2 (puesto de libros usados):", cambio_porcentual_p33_2, "%\n")
## Cambio porcentual en p33_2 (puesto de libros usados): -4.353826 %
cat("Cambio porcentual en p33_3 (biblioteca):", cambio_porcentual_p33_3, "%\n")
## Cambio porcentual en p33_3 (biblioteca): -1.761135 %
cat("Cambio porcentual en p33_4 (librería):", cambio_porcentual_p33_4, "%\n")
## Cambio porcentual en p33_4 (librería): -4.018746 %
# Seleccionar las variables relevantes
M20_p33 <- M20[, c("p33_1", "p33_2", "p33_3", "p33_4", "p8_1", "p8_2")]
M24_p33 <- M24[, c("p33_1", "p33_2", "p33_3", "p33_4", "p8_1", "p8_2")]

# Seleccionar las variables relevantes
M20_p33 <- M20[, c("p33_1", "p33_2", "p33_3", "p33_4", "p8_1", "p8_2")]
M24_p33 <- M24[, c("p33_1", "p33_2", "p33_3", "p33_4", "p8_1", "p8_2")]

# Función para contar respuestas "Sí" (1) para p8_1 y respuestas "No" (1) para p8_2
contar_respuestas <- function(data, lugar, p8_yes, p8_no) {
  # Filtrar datos para eliminar NA en el lugar y formato de lectura
  data_filtrada <- data[!is.na(data[[lugar]]) & !is.na(data[[p8_yes]]) & !is.na(data[[p8_no]]), ]
  
  # Contar respuestas "Sí" (1) para p8_1 y "No" (1) para p8_2
  conteo_yes <- sum(data_filtrada[[lugar]] == 1 & data_filtrada[[p8_yes]] == 1)
  conteo_no <- sum(data_filtrada[[lugar]] == 1 & data_filtrada[[p8_no]] == 1)
  
  return(c(conteo_yes, conteo_no))
}

# Contar respuestas para cada lugar en 2020
resultados_2020 <- sapply(c("p33_1", "p33_2", "p33_3", "p33_4"), 
                          contar_respuestas, data = M20_p33, 
                          p8_yes = "p8_1", p8_no = "p8_2")

# Contar respuestas para cada lugar en 2024
resultados_2024 <- sapply(c("p33_1", "p33_2", "p33_3", "p33_4"), 
                          contar_respuestas, data = M24_p33, 
                          p8_yes = "p8_1", p8_no = "p8_2")

# Crear un data frame con los resultados para ambos años
resultados_df <- data.frame(
  Lugar = rep(c("Tienda Departamental", "Puesto de Libros Usados", "Biblioteca", "Librería"), each = 2),
  Conteo = c(resultados_2020, resultados_2024),
  Respuesta = rep(c("Digital", "Impreso"), times = 4),
  Año = rep(c("2020", "2024"), each = 8)
)

# Graficar los resultados por separado para cada año
library(ggplot2)

ggplot(resultados_df, aes(x = Lugar, y = Conteo, fill = Respuesta)) +
  geom_bar(stat = "identity", position = "dodge") +
  facet_wrap(~ Año) +  # Separar gráficos por año
  labs(title = "Asistencia a Lugares Físicos y Formato de Lectura", 
       x = "Lugar", 
       y = "Número de Respuestas") +
  scale_fill_manual(values = c("skyblue", "orange")) +
  theme_minimal() +
  theme(legend.title = element_blank())

# Crear variables para M20
M20$p8_digital <- ifelse(M20$p8_1 == 1, 1, 0)  # 1 si es digital, 0 en caso contrario
M20$p8_fisico <- ifelse(M20$p8_2 == 1, 1, 0)    # 1 si es físico, 0 en caso contrario

# Crear variables para M24
M24$p8_digital <- ifelse(M24$p8_1 == 1, 1, 0)  # 1 si es digital, 0 en caso contrario
M24$p8_fisico <- ifelse(M24$p8_2 == 1, 1, 0)    # 1 si es físico, 0 en caso contrario

# Filtrar datos y eliminar NAs
M20_clean <- na.omit(M20[, c("p8_digital", "p8_fisico", "p33_1", "p33_2", "p33_3", "p33_4")])
M24_clean <- na.omit(M24[, c("p8_digital", "p8_fisico", "p33_1", "p33_2", "p33_3", "p33_4")])

# ANCOVA para M20
modelo_ancova_M20_digital <- aov(p8_digital ~ p33_1 + p33_2 + p33_3 + p33_4, data = M20_clean)
summary(modelo_ancova_M20_digital)
##              Df Sum Sq Mean Sq F value   Pr(>F)    
## p33_1         1   0.64   0.639   5.338   0.0211 *  
## p33_2         1   0.00   0.000   0.001   0.9747    
## p33_3         1   4.94   4.944  41.314 2.22e-10 ***
## p33_4         1   0.21   0.210   1.753   0.1858    
## Residuals   806  96.45   0.120                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelo_ancova_M20_fisico <- aov(p8_fisico ~ p33_1 + p33_2 + p33_3 + p33_4, data = M20_clean)
summary(modelo_ancova_M20_fisico)
##              Df Sum Sq Mean Sq F value   Pr(>F)    
## p33_1         1   0.15  0.1528   1.648   0.1997    
## p33_2         1   0.00  0.0001   0.001   0.9731    
## p33_3         1   2.46  2.4619  26.549 3.23e-07 ***
## p33_4         1   0.31  0.3112   3.356   0.0673 .  
## Residuals   806  74.74  0.0927                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# ANCOVA para M24
modelo_ancova_M24_digital <- aov(p8_digital ~ p33_1 + p33_2 + p33_3 + p33_4, data = M24_clean)
summary(modelo_ancova_M24_digital)
##              Df Sum Sq Mean Sq F value Pr(>F)  
## p33_1         1   0.04  0.0360   0.196 0.6578  
## p33_2         1   0.26  0.2626   1.433 0.2316  
## p33_3         1   0.92  0.9165   5.003 0.0256 *
## p33_4         1   0.00  0.0007   0.004 0.9520  
## Residuals   804 147.30  0.1832                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelo_ancova_M24_fisico <- aov(p8_fisico ~ p33_1 + p33_2 + p33_3 + p33_4, data = M24_clean)
summary(modelo_ancova_M24_fisico)
##              Df Sum Sq Mean Sq F value Pr(>F)  
## p33_1         1   0.03  0.0339   0.222 0.6380  
## p33_2         1   0.61  0.6084   3.979 0.0464 *
## p33_3         1   0.32  0.3233   2.114 0.1463  
## p33_4         1   0.17  0.1668   1.091 0.2966  
## Residuals   804 122.93  0.1529                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1