Usando la data ‘OXFAM_IEP_ENADES_2024.xlsx’, desarrolle las siguientes preguntas:
library(readxl)
datos <- read_excel('OXFAM_IEP_ENADES_2024.xlsx', na = c('99','99999'))
datos |> na.omit()
## # A tibble: 102 × 91
## NC ponderab edad edadr sexo dep prov dist macrozona zona2 ambito2
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2.03e8 0.861 25 2 2 3 301 30101 4 7 2
## 2 2.03e8 0.906 47 3 1 4 402 40201 4 4 2
## 3 2.03e8 0.892 34 2 1 12 1203 120301 5 8 2
## 4 2.03e8 0.861 35 2 2 12 1203 120305 5 8 2
## 5 2.03e8 1.22 42 3 2 15 1501 150106 1 1 1
## 6 2.03e8 0.874 45 3 2 22 2201 220105 5 8 2
## 7 2.03e8 1.21 27 2 1 3 302 30201 4 7 2
## 8 2.03e8 0.874 49 3 2 4 401 40112 4 7 2
## 9 2.03e8 0.874 50 3 2 4 401 40102 4 7 2
## 10 2.03e8 1.17 28 2 2 22 2201 220101 5 8 2
## # ℹ 92 more rows
## # ℹ 80 more variables: zonali1 <dbl>, zonali2 <dbl>, region <dbl>, ur <dbl>,
## # ambito <dbl>, hogar <dbl>, hijos18 <dbl>, edu <dbl>, edu2 <dbl>,
## # edupadre <dbl>, edupadre2 <dbl>, edumadre <dbl>, edumadre2 <dbl>,
## # origen <dbl>, ocupa <dbl>, ocupa2 <dbl>, NSE <dbl>, NSE1 <dbl>, NSE2 <dbl>,
## # P01 <dbl>, P02 <dbl>, P02a <dbl>, P03 <dbl>, P03a <dbl>, P05 <dbl>,
## # P05a <dbl>, P06 <dbl>, P06a <dbl>, P07 <dbl>, P08 <dbl>, P09 <dbl>, …
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
datos |>
mutate(sexo = case_when(sexo == 1 ~ "Hombre",
sexo == 2 ~ "Mujer",
sexo == 3 ~ "Otro"),
region = case_when(region == 1 ~ "Costa",
region == 2 ~ "Sierra",
region == 3 ~ "Selva"),
ur = case_when(ur == 1 ~ "Urbana",
ur == 2 ~ "Rural"),
edu = case_when(edu %in% 1:2 ~ "Sin educación",
edu %in% 3:4 ~ "Primaria",
edu %in% c(5,6,8) ~ "Secundaria",
edu %in% c(7,9,10) ~ "Superior"),
edu = factor(edu, levels = c("Sin educación","Primaria",
"Secundaria","Superior")),
edu2 = ifelse(edu2 == 1, "E. Básica","E. Superior"),
edupadre = case_when(edupadre %in% 1:2 ~ "Sin educación",
edupadre %in% 3:4 ~ "Primaria",
edupadre %in% c(5,6,8) ~ "Secundaria",
edupadre %in% c(7,9,10) ~ "Superior" ),
ocupa = case_when(ocupa == 1 ~ "Solo trabaja",
ocupa == 2 ~ "Solo estudia",
ocupa == 3 ~ "Trabaja y estudia",
ocupa == 4 ~ "Está jubilado(a)",
ocupa == 5 ~ "Está desempleado(a)",
ocupa == 6 ~ "Solo se dedica a tareas del hogar",
ocupa == 7 ~ "Ni estudia ni trabaja ni se dedica a labores del hogar",
ocupa == 8 ~ "Trabaja y hace las tareas del hogar"),
P07 = case_when(P07 == 4 ~ "Mucho",
P07 == 3 ~ "Algo",
P07 == 2 ~ "Poco",
P07 == 1 ~ "Nada"),
P08 = case_when(P08 == 1 ~ "Ha aumentado",
P08 == 2 ~ "Se mantiene igual",
P08 == 3 ~ "Ha disminuido"),
P16 = case_when(P16 == 1 ~ "Les alcanza bien y pueden ahorrar",
P16 == 2 ~ "Les alcanza justo sin grandes dificultades",
P16 == 3 ~ "No les alcanza y tienen dificultades",
P16 == 4 ~ "No les alcanza y tienen grandes dificultades"),
P26 = case_when(P26 == 1 ~ "Muy desigual",
P26 == 2 ~ "Algo desigual",
P26 == 3 ~ "Poco desigual",
P26 == 4 ~ "Nada desigual"),
P27 = case_when(P27 == 1 ~ "Está gobernado por unos cuantos grupos poderosos en su propio beneficio",
P27 == 2 ~ "Está gobernado para el bien de todo el pueblo")) -> datos1
## Warning: package 'ggQC' was built under R version 4.4.2
library(dplyr)
datos1 |> pull(edad) |> QCrange() # Funcion que nos da el resultado como un solo valor
## [1] 72
## # A tibble: 1 × 1
## Rango
## <dbl>
## 1 72
Interpretación: La amplitud de la edad de las personas encuestadas es de 72 años.
## # A tibble: 2 × 2
## sexo Rango
## <chr> <dbl>
## 1 Mujer 62
## 2 Hombre 72
## # A tibble: 2 × 2
## sexo Rango
## <chr> <dbl>
## 1 Hombre 72
## 2 Mujer 62
Los dos códigos significan lo mismos, pero se escriben de diferentes formas.
Interpretación: La amplitud de la edad de las mujeres encuestadas es de 62 años, y de los hombres es de 72 años.
Ante ello podemos detectar un incoveniente al usar el rango, lo cual era sensible a los valores atípicos, y ello puede afectar nuestras medidas. Ante ello podemos usar el \(\mathbf{Rango}\) \(\mathbf{intercuatil}\) para solucionar dicho incoveniente.
## [1] 23
## # A tibble: 1 × 1
## RIC
## <dbl>
## 1 23
Interpretación: La amplitud del 50% central de la edad de los encuestados es de 23 años.
datos1 |>
group_by(P08) |> #Segun el diccionario la variable P08 nos muestra ello
summarise(RIC = IQR(edad)) |>
filter(!is.na(P08))
## # A tibble: 3 × 2
## P08 RIC
## <chr> <dbl>
## 1 Ha aumentado 23
## 2 Ha disminuido 27
## 3 Se mantiene igual 21
Podemos haber filtrado los datos de solo los que nos piden, pero usando la función group_by vemos todo ello.
Interpretación: La amplitud en el 50% central de la edad de las personas que creen que la diferencia entre ricos y pobres ha aumentado es de 23 años, mientras que en el grupo que cree que ha disminuido, es de 27 años.
## [1] 227.2625
Interpretación: 277.26 años al cuadrado.
## [1] NA
Como nos da NA, significa que esa columna tiene NA, para ello usaremos el siguiente argumento.
## [1] 4.144413
Interpretación: 4.14 personas al cuadrado.
## # A tibble: 1 × 1
## desv
## <dbl>
## 1 14.4
Interpretación: Las edades están en promedio aproximadamente alejados 14.4 años de la edad promedio
## # A tibble: 2 × 2
## P27 desv
## <chr> <dbl>
## 1 Está gobernado para el bien de todo el pueblo 1302.
## 2 Está gobernado por unos cuantos grupos poderosos en su propio beneficio 2227.
Intepretación: El monto mínimo mensual que requiere para vivir en el hogar se desvía alrededor 1302 soles de su promedio en aquellos que piensan que el país está gobernado para el bien de todo el pueblo; y para aquellos que creen que el Perú es gobernado por unos cuantos grupos poderosos en su propio beneficio se desvía alrededor 2227 de su promedio.
Las desviacion estándar nos dice que tanto aproximadamente se alejan los datos de su promedio, pero si nuestros datos son muy altos la desviación estándar tiende ser mayor y ello puede ocasionar sesgos, entonces es conveniente allí usar el coeficiente de variación. Si se quiere comparar datos, si las medias son parecidas y las medidas son iguales se usa d.estándar; de caso contrario usar coeficiente de variabilidad.
## Warning: package 'sjstats' was built under R version 4.4.2
## [1] 36.36129
## # A tibble: 1 × 1
## coef_var
## <dbl>
## 1 36.4
Rpta: 36.4
## # A tibble: 2 × 2
## sexo cv
## <chr> <dbl>
## 1 Hombre 37.3
## 2 Mujer 35.3
Rpta: Los hombres muestran una edad más variable con un CV = 37.3% frente al CV = 35.3% de las mujeres
## # A tibble: 3 × 2
## region cv
## <chr> <dbl>
## 1 Costa 46.0
## 2 Selva 47.1
## 3 Sierra 45.6
Rpta: En la selva, con 47.1%, frente a la sierra 45.6% y la costa 46%
El coeficiente sirve más para comparar medidas.
## # A tibble: 2 × 2
## ur RIC_Hombres
## <chr> <dbl>
## 1 Rural 24
## 2 Urbana 24
Rpta: La amplitud del 50% central de la edad de los hombres que viven en zonas rurales es de 24 años.
## # A tibble: 4 × 2
## P22 desv
## <dbl> <dbl>
## 1 1 2.00
## 2 2 2.12
## 3 3 1.99
## 4 4 2.02
Interpretación: La cantidad de miembros en el hogar se desvía alrededor de 2 miembros de su promedio aquellos que creen que la desigualdad en personas LGTBIQ es muy grave; mientras que los que creen que es nada grave se desvía alrededor de 2 miembros de su promedio también.
library(sjstats)
datos1 |> filter(sexo == "Mujer" & region == "Costa") |> group_by(P26) |> summarize(CV = cv(edad)*100) |> filter(!is.na(P26))
## # A tibble: 4 × 2
## P26 CV
## <chr> <dbl>
## 1 Algo desigual 36.1
## 2 Muy desigual 33.4
## 3 Nada desigual 36.5
## 4 Poco desigual 39.0
datos1 |> filter(sexo == "Mujer" & region == "Selva") |> group_by(P26) |> summarize(CV = cv(edad)*100) |> filter(!is.na(P26))
## # A tibble: 3 × 2
## P26 CV
## <chr> <dbl>
## 1 Algo desigual 36.7
## 2 Muy desigual 33.4
## 3 Poco desigual 33.7
Rpta: La edad de las mujeres que viven en la Costa y creen que la justicia es muy desigual es menos variable con un CV = 33.37%; mientras que las mujeres que viven en la Sierra lo es más con un CV = 33.39 %.
## # A tibble: 2 × 3
## sexo n porc
## <chr> <int> <dbl>
## 1 Hombre 733 48.6
## 2 Mujer 775 51.4
Rpta: El 48.6 % de los encuestados son hombres y el 51.39% restantes son mujeres.
Una tabla como esta sirve para variables cualitativas y cuantitativas que tomen pocos valores, por ejemplo: cantidad de cursos matriculados en un ciclo aprox es 4 a 6 cursos.Ya que si son valores grandes es recomendable hacer una tabla con intervalos para ello
## # A tibble: 16 × 3
## sexo ocupa n
## <chr> <chr> <int>
## 1 Hombre Está desempleado(a) 35
## 2 Hombre Está jubilado(a) 28
## 3 Hombre Ni estudia ni trabaja ni se dedica a labores del hogar 8
## 4 Hombre Solo estudia 22
## 5 Hombre Solo se dedica a tareas del hogar 13
## 6 Hombre Solo trabaja 526
## 7 Hombre Trabaja y estudia 88
## 8 Hombre Trabaja y hace las tareas del hogar 8
## 9 Mujer Está desempleado(a) 33
## 10 Mujer Está jubilado(a) 9
## 11 Mujer Ni estudia ni trabaja ni se dedica a labores del hogar 6
## 12 Mujer Solo estudia 41
## 13 Mujer Solo se dedica a tareas del hogar 272
## 14 Mujer Solo trabaja 254
## 15 Mujer Trabaja y estudia 87
## 16 Mujer Trabaja y hace las tareas del hogar 66
## # A tibble: 8 × 3
## ocupa Hombre Mujer
## <chr> <dbl> <dbl>
## 1 Está desempleado(a) 35 33
## 2 Está jubilado(a) 28 9
## 3 Ni estudia ni trabaja ni se dedica a labores del hogar 8 6
## 4 Solo estudia 22 41
## 5 Solo se dedica a tareas del hogar 13 272
## 6 Solo trabaja 526 254
## 7 Trabaja y estudia 88 87
## 8 Trabaja y hace las tareas del hogar 8 66
# la función spread coloca a la variable sexo de forma más ordenada, para sacar mejores conclusiones
Es más conveniente verlo en porcentajes.
datos1 |>
count(sexo,ocupa) |>
filter(!is.na(ocupa)) |>
group_by(ocupa) |>
mutate(prop = n / sum(n)*100) |>
select(-n) |>
spread(sexo, prop, fill = 0)
## # A tibble: 8 × 3
## # Groups: ocupa [8]
## ocupa Hombre Mujer
## <chr> <dbl> <dbl>
## 1 Está desempleado(a) 51.5 48.5
## 2 Está jubilado(a) 75.7 24.3
## 3 Ni estudia ni trabaja ni se dedica a labores del hogar 57.1 42.9
## 4 Solo estudia 34.9 65.1
## 5 Solo se dedica a tareas del hogar 4.56 95.4
## 6 Solo trabaja 67.4 32.6
## 7 Trabaja y estudia 50.3 49.7
## 8 Trabaja y hace las tareas del hogar 10.8 89.2
Interpretación: El 51.5% de las personas desempleadas son hombres
datos1 |>
count(sexo,ocupa) |>
filter(!is.na(ocupa)) |>
group_by(sexo) |>
mutate(prop = n / sum(n)*100) |>
select(-n) |>
spread(sexo, prop, fill = 0)
## # A tibble: 8 × 3
## ocupa Hombre Mujer
## <chr> <dbl> <dbl>
## 1 Está desempleado(a) 4.81 4.30
## 2 Está jubilado(a) 3.85 1.17
## 3 Ni estudia ni trabaja ni se dedica a labores del hogar 1.10 0.781
## 4 Solo estudia 3.02 5.34
## 5 Solo se dedica a tareas del hogar 1.79 35.4
## 6 Solo trabaja 72.3 33.1
## 7 Trabaja y estudia 12.1 11.3
## 8 Trabaja y hace las tareas del hogar 1.10 8.59
Interpretación: El 4.81% de los hombres está desempleado
La diferencia de los códigos radica en group_by: uno es tomando en cuenta ocupación y otro con sexo, por ende, la interpretaciones serán tomados en cuenta la ocupación y sexo, respectivamente.
## # A tibble: 14 × 3
## hogar n porce
## <dbl> <int> <dbl>
## 1 1 92 6.12
## 2 2 153 10.2
## 3 3 250 16.6
## 4 4 349 23.2
## 5 5 282 18.8
## 6 6 173 11.5
## 7 7 85 5.65
## 8 8 71 4.72
## 9 9 18 1.20
## 10 10 19 1.26
## 11 11 4 0.266
## 12 12 5 0.332
## 13 13 2 0.133
## 14 15 1 0.0665
Podemos simplificar la tabla con la función Freq() del paquete “Desctools”
## Warning: package 'DescTools' was built under R version 4.4.2
## level freq perc cumfreq cumperc
## 1 [1,4] 844 56.1% 844 56.1%
## 2 (4,7] 540 35.9% 1'384 92.0%
## 3 (7,10] 108 7.2% 1'492 99.2%
## 4 (10,13] 11 0.7% 1'503 99.9%
## 5 (13,15] 1 0.1% 1'504 100.0%
Con la variable edad.
## level freq perc cumfreq cumperc
## 1 [10,30] 437 29.0% 437 29.0%
## 2 (30,50] 651 43.2% 1'088 72.1%
## 3 (50,70] 362 24.0% 1'450 96.2%
## 4 (70,90] 58 3.8% 1'508 100.0%
Gráfico de barras
datos1 |>
pull(sexo) |>
table() |>
barplot(main = "Distribución de encuestados por sexo",
xlab = "Sexo",
ylab = "Frecuencia",
col = "darkblue")
datos1 |>
pull(region) |>
table() |>
barplot(main = "Distribución de encuestados por región de residencia",
xlab = "Región",
ylab = "Frecuencia",
col = c("darkblue","forestgreen","gold"))
Gráficos circular
datos1 |>
pull(region) |>
table() |>
pie(main = "Distribución de encuestados por región de residencia",
col = c("darkblue","forestgreen","gold"))
Se recomienda usar el barplot() para variables cualitativas con más
categorías.
datos1 |>
count(region) |>
mutate(PORC = round(100*n/sum(n))) -> tabla
tabla |> pull(PORC,region) -> partes
library(waffle)
## Warning: package 'waffle' was built under R version 4.4.2
## Cargando paquete requerido: ggplot2
waffle(partes, title = "Distribución de encuestados por región de residencia",
rows = 10, colors = c("darkblue","forestgreen","gold"))
Explicación del código: tabla: es una tabla contenida con la cantidad de encuestados en esa región con su respectivo porcentaje, luego de tabla solo extraigo la región y el porcentaje como un vector.
Se observa que en la región costa hay más encuestados que en sierra y selva.
datos |>
pull(edad) |>
hist(main = "Distribución de encuestados por edad",
xlab = "Edad", ylab = "Frecuencia (número de encuestados)",
col = "gold")
datos |>
pull(P15) |>
hist(main = "Distribución de encuestados por monto mínimo para vivir en el hogar",
xlab = "Monto mínimo mensual que requiere su hogar para vivir",
ylab = "Frecuencia (número de encuestados)",
col = "gold",
breaks = seq(0,40000,2000))
Diagrama de cajas
datos |>
pull(edad) |>
boxplot(main = "Distribución de encuestados por edad",
ylab = "Edad",
col = "gold")
datos1 |> pull(edad) |> density() |>
plot(main = "Distribución de la edad",
xlab= "Edad" , ylab = "Densidad", col = "red")
Se observa que hay más encuestados de 20 a 40 años es más denso, en
otras palabras.
datos |>
pull(P15) |>
boxplot(main = "Distribución de encuestados por monto mínimo para vivir en el hogar",
ylab = "Monto mínimo",
col = "gold")