Mostrar codigo
library(readxl)
<- read_xlsx("CRON_fin.xlsx") cron
En esta actividad utilizaremos un marco de datos que contiene información de la European Social Survey (ESS). La ESS es una encuesta que se realiza a nivel europeo y es ampliamente utilizada en los campos de la Sociología y la Ciencia Política. Con estos datos, analizaremos las diversas dimensiones del desarrollo social entre países. Importaremos los datos almacenados en CRON_fin.xlsx con la función read_xls() y le daremos el nombre de cron. Una vez realizada la importación, asegúrate de que en el Environment aparezca el objeto cron.
library(readxl)
<- read_xlsx("CRON_fin.xlsx") cron
Realiza una exploración rápida del mismo con las funciones que conoces, identificando el número de observaciones, qué variables tiene, cómo están codificadas y la unidad de observación.
cron
# A tibble: 6,032 × 24
cntry gndr agea eduyrs eisced hincfel hinctnta netusoft region w4q1 w4q2
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <dbl>
1 AT 1 73 11 3 1 10 5 AT32 4 4
2 AT 2 41 13 6 2 77 5 AT22 4 4
3 AT 1 35 14 5 1 3 5 AT22 4 5
4 AT 1 55 12 3 1 77 4 AT34 3 3
5 AT 2 65 12 2 1 7 5 AT12 4 5
6 AT 2 27 21 6 2 77 5 AT31 4 4
7 AT 2 35 20 7 2 6 5 AT31 5 3
8 AT 2 20 14 4 3 8 5 AT12 3 3
9 AT 1 68 25 7 1 8 5 AT12 3 2
10 AT 1 51 14 5 1 7 4 AT21 3 4
# ℹ 6,022 more rows
# ℹ 13 more variables: w4q3 <dbl>, w4q4 <dbl>, w4q5 <dbl>, w4q6 <dbl>,
# w4q7 <dbl>, w4q8 <dbl>, w4q9 <dbl>, w4q10 <dbl>, w4q11 <dbl>, w4q12 <dbl>,
# w4q13 <dbl>, w4q14 <dbl>, w4q15 <dbl>
head(cron)
# A tibble: 6 × 24
cntry gndr agea eduyrs eisced hincfel hinctnta netusoft region w4q1 w4q2
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <dbl>
1 AT 1 73 11 3 1 10 5 AT32 4 4
2 AT 2 41 13 6 2 77 5 AT22 4 4
3 AT 1 35 14 5 1 3 5 AT22 4 5
4 AT 1 55 12 3 1 77 4 AT34 3 3
5 AT 2 65 12 2 1 7 5 AT12 4 5
6 AT 2 27 21 6 2 77 5 AT31 4 4
# ℹ 13 more variables: w4q3 <dbl>, w4q4 <dbl>, w4q5 <dbl>, w4q6 <dbl>,
# w4q7 <dbl>, w4q8 <dbl>, w4q9 <dbl>, w4q10 <dbl>, w4q11 <dbl>, w4q12 <dbl>,
# w4q13 <dbl>, w4q14 <dbl>, w4q15 <dbl>
str(cron)
tibble [6,032 × 24] (S3: tbl_df/tbl/data.frame)
$ cntry : chr [1:6032] "AT" "AT" "AT" "AT" ...
$ gndr : num [1:6032] 1 2 1 1 2 2 2 2 1 1 ...
$ agea : num [1:6032] 73 41 35 55 65 27 35 20 68 51 ...
$ eduyrs : num [1:6032] 11 13 14 12 12 21 20 14 25 14 ...
$ eisced : num [1:6032] 3 6 5 3 2 6 7 4 7 5 ...
$ hincfel : num [1:6032] 1 2 1 1 1 2 2 3 1 1 ...
$ hinctnta: num [1:6032] 10 77 3 77 7 77 6 8 8 7 ...
$ netusoft: num [1:6032] 5 5 5 4 5 5 5 5 5 4 ...
$ region : chr [1:6032] "AT32" "AT22" "AT22" "AT34" ...
$ w4q1 : num [1:6032] 4 4 4 3 4 4 5 3 3 3 ...
$ w4q2 : num [1:6032] 4 4 5 3 5 4 3 3 2 4 ...
$ w4q3 : num [1:6032] 3 3 4 3 3 2 1 1 4 3 ...
$ w4q4 : num [1:6032] 3 4 3 3 4 3 4 2 3 2 ...
$ w4q5 : num [1:6032] 4 4 5 4 5 4 5 4 3 4 ...
$ w4q6 : num [1:6032] 5 4 5 4 5 4 5 5 4 4 ...
$ w4q7 : num [1:6032] 4 2 4 2 5 2 3 3 2 2 ...
$ w4q8 : num [1:6032] 4 4 2 4 5 4 5 4 4 3 ...
$ w4q9 : num [1:6032] 5 4 4 4 5 4 5 5 4 3 ...
$ w4q10 : num [1:6032] 4 3 5 4 4 3 5 3 2 3 ...
$ w4q11 : num [1:6032] 5 3 5 2 1 2 3 3 2 3 ...
$ w4q12 : num [1:6032] 5 4 3 4 5 4 3 4 4 3 ...
$ w4q13 : num [1:6032] 5 4 2 4 5 4 4 5 4 3 ...
$ w4q14 : num [1:6032] 5 4 3 4 5 4 5 4 4 4 ...
$ w4q15 : num [1:6032] 4 4 3 4 5 4 4 2 4 3 ...
dim(cron)
[1] 6032 24
summary(cron)
cntry gndr agea eduyrs
Length:6032 Min. :1.000 Min. : 17.00 Min. : 0.00
Class :character 1st Qu.:1.000 1st Qu.: 37.00 1st Qu.:12.00
Mode :character Median :2.000 Median : 51.00 Median :15.00
Mean :1.536 Mean : 50.83 Mean :15.63
3rd Qu.:2.000 3rd Qu.: 63.00 3rd Qu.:17.00
Max. :9.000 Max. :999.00 Max. :99.00
eisced hincfel hinctnta netusoft
Min. : 1.000 Min. :1.000 Min. : 1.00 Min. :1.000
1st Qu.: 4.000 1st Qu.:1.000 1st Qu.: 5.00 1st Qu.:5.000
Median : 5.000 Median :1.000 Median : 7.00 Median :5.000
Mean : 5.208 Mean :1.658 Mean :12.46 Mean :4.791
3rd Qu.: 6.000 3rd Qu.:2.000 3rd Qu.: 9.00 3rd Qu.:5.000
Max. :99.000 Max. :9.000 Max. :99.00 Max. :9.000
region w4q1 w4q2 w4q3
Length:6032 Min. :1.000 Min. :1.000 Min. :1.000
Class :character 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:1.000
Mode :character Median :4.000 Median :4.000 Median :2.000
Mean :4.122 Mean :4.066 Mean :2.273
3rd Qu.:5.000 3rd Qu.:5.000 3rd Qu.:3.000
Max. :9.000 Max. :9.000 Max. :9.000
w4q4 w4q5 w4q6 w4q7 w4q8
Min. :1.000 Min. :1.000 Min. :1.00 Min. :1.000 Min. :1.000
1st Qu.:3.000 1st Qu.:4.000 1st Qu.:4.00 1st Qu.:2.000 1st Qu.:4.000
Median :3.000 Median :4.000 Median :5.00 Median :3.000 Median :4.000
Mean :3.224 Mean :4.229 Mean :4.58 Mean :3.064 Mean :4.059
3rd Qu.:4.000 3rd Qu.:5.000 3rd Qu.:5.00 3rd Qu.:4.000 3rd Qu.:5.000
Max. :9.000 Max. :9.000 Max. :9.00 Max. :9.000 Max. :9.000
w4q9 w4q10 w4q11 w4q12
Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
1st Qu.:4.000 1st Qu.:3.000 1st Qu.:2.000 1st Qu.:4.000
Median :5.000 Median :4.000 Median :3.000 Median :4.000
Mean :4.495 Mean :3.818 Mean :3.017 Mean :4.163
3rd Qu.:5.000 3rd Qu.:4.000 3rd Qu.:4.000 3rd Qu.:5.000
Max. :9.000 Max. :9.000 Max. :9.000 Max. :9.000
w4q13 w4q14 w4q15
Min. :1.000 Min. :1.000 Min. :1.000
1st Qu.:4.000 1st Qu.:4.000 1st Qu.:3.000
Median :5.000 Median :5.000 Median :4.000
Mean :4.501 Mean :4.526 Mean :3.988
3rd Qu.:5.000 3rd Qu.:5.000 3rd Qu.:4.000
Max. :9.000 Max. :9.000 Max. :9.000
Para examinar a fondo la tabla, es importante que utilices el libro de códigos CRON2W4e01 codebook.html incluido en el archivo zip que te has descargado. Responde las siguientes preguntas con el resultado y un breve análisis.
w4q13
y comenta el resultado.table(cron$w4q13)
1 2 3 4 5 9
17 68 429 2094 3370 54
# La tabla muestra la existencia de seis valores, que se distribuyen de forma desigual. La mayoría se concentra en el valor "5", y la minoría en el valor "1".
cntry
. Representa la frecuencia y comenta brevemente el resultado.table(cron$cntry)
AT BE CZ FI FR GB IS IT PT SE SI
647 573 284 739 724 487 525 243 396 845 569
# En la tabla se muestra que los países más seleccionados son Suecia, Finlandia y Austria. Los menos elegidos son Italia y Chequia.
w4q3
en Portugal, Francia y Suecia y razona sobre los resultados. Pista: usa filter(), count(x) y ten en cuenta que la variable w4q3 indica la prioridad de “Enfatizar los valores religiosos”.library(dplyr)
|>
cron filter(cntry %in% c("PT", "FR", "SE")) |>
count(cntry, w4q3)
# A tibble: 18 × 3
cntry w4q3 n
<chr> <dbl> <int>
1 FR 1 355
2 FR 2 140
3 FR 3 147
4 FR 4 51
5 FR 5 16
6 FR 9 15
7 PT 1 96
8 PT 2 89
9 PT 3 139
10 PT 4 49
11 PT 5 17
12 PT 9 6
13 SE 1 312
14 SE 2 309
15 SE 3 159
16 SE 4 48
17 SE 5 9
18 SE 9 8
# Asumiento que respecto a la idea de "enfatizar los valores religiosos", el 1 representa "Nada de acuerdo" y el 5 "Muy de acuerdo", siendo el 9 un "No sabe, no contesta", considero que es una representación de cómo de religiosa es la población de Portugal, Francia y Suecia. Los tres muestran una tendencia por el rechazo a enfatizar los valores religiosos, especialmente Suecia, que encaja con su tradición secular. A su vez, el país que tiene más "tolerancia" hacia el énfasis de estos valores es Portugal, cuyo valor más repetido es el 3 (neutral), frente a Francia y Suecia, cuyo valor más repetido siempre es el 1; tiene sentido debido a su tradición religiosa.
4.¿Qué porcentaje de personas ha respondido con un valor de 5 a la pregunta w4q15
?
<- nrow(cron)
total <- sum(cron$w4q15 == 5)
valor_cinco *100/total valor_cinco
[1] 21.76724
# Un 21.77%, aproximadamente
w4q1
?table(cron$w4q1)
1 2 3 4 5 9
42 117 896 3067 1890 20
# El valor más repetido es el 4, con 3067 respuestas.
eduyrs
por país y comenta brevemente el resultado más alto y el más bajo.<- cron |>
media_mediana group_by(cntry) |>
summarise(
media = mean(eduyrs, na.rm = TRUE),
mediana = median(eduyrs, na.rm = TRUE))
print(media_mediana)
# A tibble: 11 × 3
cntry media mediana
<chr> <dbl> <dbl>
1 AT 15.8 14
2 BE 15.3 15
3 CZ 17.1 13
4 FI 15.8 16
5 FR 15.1 14
6 GB 15.7 16
7 IS 16.9 17
8 IT 15.5 14
9 PT 13.7 12
10 SE 16.4 14
11 SI 14.5 14
eduyrs
. (Pista: te resultará más práctico si creas un nuevo dataset, por ejemplo cron_2
)<- cron |>
cron_2 filter(eduyrs != 77 & eduyrs != 88 & eduyrs != 99)
cron_2
, haz un boxplot de la distribución de la variable eduyrs
por país y comenta los resultados.library(ggplot2)
ggplot(cron_2, aes(x = cntry, y = eduyrs)) +
geom_boxplot()
# En este boxplot se muestra que la mediana de estos paíse suele rondar entre 12 y 15 años de educación, con algunos casos atípicos. El país que tiene una mediana superior es Islandia, mientras que el país con el Q1 más superior es Gran Bretaña. El país con la mediana más baja es Portugal, que a su vez tiene el Q4 más bajo. El país que tiene el Q4 más alto es Eslovenia, junto con Bélgica y Chequia, y el que tiene el Q1 más bajo es Serbia junto a Chequia de nuevo. Chequia y Bélgica tienen una distribución compacta, mientras que países como Gran Bretaña, Islandia o Suecia muestran una mayor dispersión.
En esta actividad analizaremos una versión ampliada del marco de datos `gapminder``. El proyecto Gapminder está orientado a recopilar datos de los países en diversas dimensiones del desarrollo, como el medio ambiente, la pobreza o el mercado laboral. Descargaremos una versión reducida de los datos, que se encuentra en el paquete dslabs.Si no tienes el paquete instalado lo tendrás que instalar con la función install.packages(“dslabs”) y despues cargarlo.
library(dslabs)
<- tibble(dslabs::gapminder) gap
gap
. No olvides explicar si tenemos NA y en qué variables. gap
# A tibble: 10,545 × 9
country year infant_mortality life_expectancy fertility population gdp
<fct> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Albania 1960 115. 62.9 6.19 1636054 NA
2 Algeria 1960 148. 47.5 7.65 11124892 1.38e10
3 Angola 1960 208 36.0 7.32 5270844 NA
4 Antigua… 1960 NA 63.0 4.43 54681 NA
5 Argenti… 1960 59.9 65.4 3.11 20619075 1.08e11
6 Armenia 1960 NA 66.9 4.55 1867396 NA
7 Aruba 1960 NA 65.7 4.82 54208 NA
8 Austral… 1960 20.3 70.9 3.45 10292328 9.67e10
9 Austria 1960 37.3 68.8 2.7 7065525 5.24e10
10 Azerbai… 1960 NA 61.3 5.57 3897889 NA
# ℹ 10,535 more rows
# ℹ 2 more variables: continent <fct>, region <fct>
head(gap)
# A tibble: 6 × 9
country year infant_mortality life_expectancy fertility population gdp
<fct> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Albania 1960 115. 62.9 6.19 1636054 NA
2 Algeria 1960 148. 47.5 7.65 11124892 1.38e10
3 Angola 1960 208 36.0 7.32 5270844 NA
4 Antigua … 1960 NA 63.0 4.43 54681 NA
5 Argentina 1960 59.9 65.4 3.11 20619075 1.08e11
6 Armenia 1960 NA 66.9 4.55 1867396 NA
# ℹ 2 more variables: continent <fct>, region <fct>
str(gap)
tibble [10,545 × 9] (S3: tbl_df/tbl/data.frame)
$ country : Factor w/ 185 levels "Albania","Algeria",..: 1 2 3 4 5 6 7 8 9 10 ...
$ year : int [1:10545] 1960 1960 1960 1960 1960 1960 1960 1960 1960 1960 ...
$ infant_mortality: num [1:10545] 115.4 148.2 208 NA 59.9 ...
$ life_expectancy : num [1:10545] 62.9 47.5 36 63 65.4 ...
$ fertility : num [1:10545] 6.19 7.65 7.32 4.43 3.11 4.55 4.82 3.45 2.7 5.57 ...
$ population : num [1:10545] 1636054 11124892 5270844 54681 20619075 ...
$ gdp : num [1:10545] NA 1.38e+10 NA NA 1.08e+11 ...
$ continent : Factor w/ 5 levels "Africa","Americas",..: 4 1 1 2 2 3 2 5 4 3 ...
$ region : Factor w/ 22 levels "Australia and New Zealand",..: 19 11 10 2 15 21 2 1 22 21 ...
dim(gap)
[1] 10545 9
summary(gap)
country year infant_mortality life_expectancy
Albania : 57 Min. :1960 Min. : 1.50 Min. :13.20
Algeria : 57 1st Qu.:1974 1st Qu.: 16.00 1st Qu.:57.50
Angola : 57 Median :1988 Median : 41.50 Median :67.54
Antigua and Barbuda: 57 Mean :1988 Mean : 55.31 Mean :64.81
Argentina : 57 3rd Qu.:2002 3rd Qu.: 85.10 3rd Qu.:73.00
Armenia : 57 Max. :2016 Max. :276.90 Max. :83.90
(Other) :10203 NA's :1453
fertility population gdp continent
Min. :0.840 Min. :3.124e+04 Min. :4.040e+07 Africa :2907
1st Qu.:2.200 1st Qu.:1.333e+06 1st Qu.:1.846e+09 Americas:2052
Median :3.750 Median :5.009e+06 Median :7.794e+09 Asia :2679
Mean :4.084 Mean :2.701e+07 Mean :1.480e+11 Europe :2223
3rd Qu.:6.000 3rd Qu.:1.523e+07 3rd Qu.:5.540e+10 Oceania : 684
Max. :9.220 Max. :1.376e+09 Max. :1.174e+13
NA's :187 NA's :185 NA's :2972
region
Western Asia :1026
Eastern Africa : 912
Western Africa : 912
Caribbean : 741
South America : 684
Southern Europe: 684
(Other) :5586
# Hay 10545 observaciones y 9 variables (country, year, infant_mortality, life_expectancy, fertility, population, gdp, continent, region). Excluyendo las dos primeras variables, las demás tienen 1453, 0, 187, 0, 2972, 0 y 0 NAs.
|>
gap filter((country == "Argentina" | country == "Spain") & year >= 1966 & year <= 2016) |>
ggplot(aes(x = year, y = fertility, color = country)) +
geom_line()
# Argentina siempre ha superado a España en fertilidad desde 1966, como se muestra en el gráfico. Al inicio no estaban tan lejos entre sí, ambos estaban cerca de la cifra 3.0; pero a mediados de los 70, Argentina subió hasta alcanzar su pico a finales de década, en casi 3.5, mientras que España no dejó de bajar hasta llegar a su valor más bajo a finales de los 90, estando casi a 1.0. A partir de su pico, la fertilidad en Argentina no ha dejado de bajar, hasta llegar a algo más de 2.0, mientras que España subió tras su valor más bajo ligeramente, quedando a día de hoy en 1.5.
|>
gap filter((country == "Argentina" | country == "Spain") & year >= 1966 & year <= 2016) |>
ggplot(aes(x = fertility)) +
geom_histogram() +
facet_wrap(~ country)
|>
gap filter(continent == "Americas" & year >= 1960 & year <= 2016 &
!(country == "Antigua and Barbuda" |
== "Aruba" |
country == "St. Lucia" |
country == "St. Vincent and the Grenadines" |
country == "Haiti" |
country == "Bahamas" |
country == "Barbados" |
country == "Grenada" |
country == "Greenland" |
country == "Jamaica" |
country == "Suriname" |
country == "Trinidad and Tobago" |
country == "United States" |
country == "Belize")) |>
country ggplot(aes(x = year, y = life_expectancy, color = country)) +
geom_line()
# ¿Cómo ha evolucionado la esperanza de vida en América Latina?
# La esperanza de vida en América Latina ha ido en ascenso desde los 60 hasta la actualidad, con algunas caídas en años clave, pero todos con una tendencia positiva.