PEC 3

Solución PAC3

Itxaso Yuguero Garmendia

Última modificación

24 de novembre de 2024

Actividad 1

En esta actividad estudiaremos el marco de datos de la European Social Survey (ESS), estudiaremos esta base de datos mediante el estudio del Objeto Cron que vemos a continuación.

Mostrar codigo
#Recuerda que todos los chunks están en eval = FALSE; para activarlos debes cambiar a eval = TRUE.
library(readxl)
cron <- read_xlsx("CRON_fin.xlsx")

El número de variables del objeto Cron es 24 y de 6032 de observaciones. La unidad de observación del marco de datos es el individuo ya que se basa en las respuestas individuales a la encuesta.

Las 24 variables son las siguientes: - cntry: País, - gndr: Género - agea: Edad - eduyrs: Años de educación a tiempo completo completados - eisced: Nivel más alto de educación - hincfel: Percepción sobre los ingresos del hogar en la actualidad - hinctnta: Ingreso neto total del hogar, de todas las fuentes - netusoft: Uso de Internet, con qué frecuencia - region: Región - W4q1 hasta W4q15: Variables categóricas obtenidas en las encuestas.

Mostrar codigo
#A continuación visualizamos el objeto Cron
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>
Mostrar codigo
glimpse(cron)
Rows: 6,032
Columns: 24
$ cntry    <chr> "AT", "AT", "AT", "AT", "AT", "AT", "AT", "AT", "AT", "AT", "…
$ gndr     <dbl> 1, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 1…
$ agea     <dbl> 73, 41, 35, 55, 65, 27, 35, 20, 68, 51, 66, 56, 51, 67, 48, 3…
$ eduyrs   <dbl> 11, 13, 14, 12, 12, 21, 20, 14, 25, 14, 13, 16, 13, 11, 25, 1…
$ eisced   <dbl> 3, 6, 5, 3, 2, 6, 7, 4, 7, 5, 3, 4, 5, 3, 55, 3, 7, 5, 3, 3, …
$ hincfel  <dbl> 1, 2, 1, 1, 1, 2, 2, 3, 1, 1, 2, 2, 1, 2, 2, 2, 1, 1, 1, 2, 2…
$ hinctnta <dbl> 10, 77, 3, 77, 7, 77, 6, 8, 8, 7, 5, 7, 8, 7, 5, 5, 8, 6, 10,…
$ netusoft <dbl> 5, 5, 5, 4, 5, 5, 5, 5, 5, 4, 5, 5, 5, 2, 5, 5, 5, 5, 5, 3, 4…
$ region   <chr> "AT32", "AT22", "AT22", "AT34", "AT12", "AT31", "AT31", "AT12…
$ w4q1     <dbl> 4, 4, 4, 3, 4, 4, 5, 3, 3, 3, 4, 4, 4, 2, 4, 4, 4, 4, 4, 3, 3…
$ w4q2     <dbl> 4, 4, 5, 3, 5, 4, 3, 3, 2, 4, 4, 3, 4, 3, 4, 5, 4, 4, 4, 3, 3…
$ w4q3     <dbl> 3, 3, 4, 3, 3, 2, 1, 1, 4, 3, 2, 4, 3, 3, 2, 1, 3, 1, 2, 2, 3…
$ w4q4     <dbl> 3, 4, 3, 3, 4, 3, 4, 2, 3, 2, 3, 3, 4, 2, 3, 1, 2, 4, 3, 2, 3…
$ w4q5     <dbl> 4, 4, 5, 4, 5, 4, 5, 4, 3, 4, 5, 4, 4, 3, 5, 4, 4, 3, 4, 4, 3…
$ w4q6     <dbl> 5, 4, 5, 4, 5, 4, 5, 5, 4, 4, 5, 5, 5, 5, 5, 5, 5, 4, 5, 3, 4…
$ w4q7     <dbl> 4, 2, 4, 2, 5, 2, 3, 3, 2, 2, 3, 2, 2, 2, 1, 2, 3, 2, 2, 4, 3…
$ w4q8     <dbl> 4, 4, 2, 4, 5, 4, 5, 4, 4, 3, 5, 3, 2, 2, 5, 1, 4, 4, 2, 3, 4…
$ w4q9     <dbl> 5, 4, 4, 4, 5, 4, 5, 5, 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 4, 4, 3…
$ w4q10    <dbl> 4, 3, 5, 4, 4, 3, 5, 3, 2, 3, 4, 4, 4, 3, 3, 4, 4, 4, 4, 2, 4…
$ w4q11    <dbl> 5, 3, 5, 2, 1, 2, 3, 3, 2, 3, 5, 2, 3, 4, 1, 3, 4, 1, 4, 3, 3…
$ w4q12    <dbl> 5, 4, 3, 4, 5, 4, 3, 4, 4, 3, 4, 3, 4, 4, 4, 4, 4, 3, 4, 3, 2…
$ w4q13    <dbl> 5, 4, 2, 4, 5, 4, 4, 5, 4, 3, 5, 4, 5, 4, 5, 5, 3, 4, 4, 4, 3…
$ w4q14    <dbl> 5, 4, 3, 4, 5, 4, 5, 4, 4, 4, 5, 5, 5, 4, 5, 5, 4, 4, 4, 4, 3…
$ w4q15    <dbl> 4, 4, 3, 4, 5, 4, 4, 2, 4, 3, 4, 5, 3, 4, 4, 5, 4, 4, 4, 3, 3…
Mostrar codigo
#Páises de los individuos encuestados que se han estudiado
unique_countries <- unique(cron$cntry)
print (unique_countries)
 [1] "AT" "BE" "CZ" "FI" "FR" "GB" "IS" "IT" "PT" "SE" "SI"
Mostrar codigo
#Número de Páises que se han estudiado
length(unique_countries)
[1] 11
Mostrar codigo
#Edades de los individuos encuestados que se han estudiado
unique_age <- unique (cron$agea)
print (unique_age)
 [1]  73  41  35  55  65  27  20  68  51  66  56  67  48  39  54  47  45  81  53
[20]  28  58  19  44  34  30  29  40  31  60  59  61  18  52  32  79  71  43  46
[39]  75  21  42  57  64  24  25  74  62  23  33  38  50  37  70  88  22  49  78
[58]  72  26  63  89  80  69  83  36  77  76  84  17  90  87  86  82  85 999
Mostrar codigo
#Número de edades que se han estudiado
length(unique_age)
[1] 75
Mostrar codigo
#Regiones de los individuos encuestados que se han estudiado
unique_region <- unique (cron$region)
print(unique_region)
  [1] "AT32"  "AT22"  "AT34"  "AT12"  "AT31"  "AT21"  "AT13"  "AT11"  "AT33" 
 [10] "BE33"  "BE24"  "BE23"  "BE32"  "BE25"  "BE34"  "BE22"  "BE31"  "BE21" 
 [19] "BE10"  "BE35"  "CZ080" "CZ053" "CZ031" "CZ020" "CZ010" "CZ051" "CZ064"
 [28] "CZ071" "CZ052" "CZ042" "CZ041" "CZ032" "CZ072" "CZ063" "FI1B1" "FI1C2"
 [37] "FI1C3" "FI1D1" "FI197" "FI1C1" "FI1D2" "FI194" "FI196" "FI193" "FI1D3"
 [46] "FI195" "FI1D9" "FI1C5" "FI1D7" "FI1C4" "FI1D8" "FI1D5" "FI200" "FRK2" 
 [55] "FRF1"  "FRH0"  "FR10"  "FRJ2"  "FRL0"  "FRI1"  "FRD2"  "FRE1"  "FRG0" 
 [64] "FRJ1"  "FRC1"  "FRE2"  "FRB0"  "FRK1"  "FRI2"  "FRD1"  "FRF3"  "FRC2" 
 [73] "FRI3"  "FRF2"  "UKL"   "UKH"   "UKM"   "UKD"   "UKK"   "UKI"   "UKC"  
 [82] "UKE"   "UKF"   "UKJ"   "UKG"   "UKN"   "IS002" "IS001" "ITC"   "ITH"  
 [91] "ITF"   "ITI"   "ITG"   "PT17"  "PT11"  "PT16"  "PT18"  "PT15"  "SE21" 
[100] "SE31"  "SE11"  "SE22"  "SE32"  "SE23"  "SE12"  "SE33"  "SI032" "SI037"
[109] "SI035" "SI041" "SI042" "SI043" "SI034" "SI031" "SI038" "SI044" "SI036"
[118] "SI033"
Mostrar codigo
#Número de Regiones que se han estudiado
length(unique_region)
[1] 118
Mostrar codigo
#Años de estudio de los individios encuestados que se han estudiado
unique_yearsedu <- unique (cron$eduyrs)
print(unique_yearsedu)
 [1] 11 13 14 12 21 20 25 16 15 18  9 10 22 17  8 99 19 23 26  7 28  5 24 88 27
[26]  6 77 30 32 40  4  1  0 45 29  2  3 36
Mostrar codigo
#Número de Años de estudio que se han estudiado
length(unique_yearsedu)
[1] 38
Mostrar codigo
#Nivel de estudio de los individios encuestados que se han estudiado
unique_edulevel <- unique (cron$eisced)
print(unique_edulevel)
 [1]  3  6  5  2  7  4 55  1 99 88 77
Mostrar codigo
#Número niveles de estudio que se han estudiado
length(unique_edulevel)
[1] 11
Mostrar codigo
#Percepción sobre los ingresos del hogar en la actualidad de los individios encuestados que se han estudiado
unique_percep <- unique (cron$hincfel)
print(unique_percep)
[1] 1 2 3 4 9 7 8
Mostrar codigo
#Número de Percepción sobre los ingresos del hogar en la actualidad que se han estudiado
length(unique_percep)
[1] 7
Mostrar codigo
#Ingreso neto total del hogar, de todas las fuentes de los individios encuestados que se han estudiado
unique_ingreso <- unique (cron$hinctnta)
print(unique_ingreso)
 [1] 10 77  3  7  6  8  5  9  1 99  4  2 88
Mostrar codigo
#Número de Ingreso neto total del hogar, de todas las fuentes que se han estudiado
length(unique_ingreso)
[1] 13

Actividad 2

1.A continuación vemos la tabla de frecuencias de la variable w4q13 que pregunta lo siguiente: Para hacer de [país] una sociedad ideal: Proteger los derechos humanos. Esta variable puede tener hasta 6 valores, como vemos a continuación:

Value Category - 1 Not a priority at all - 2 A small priority - 3 A medium priority - 4 An important priority - 5 A top priority - 9 No answer*

Lo que la tabla de frecuencia nos muestra es la frecuencia de los diferentes valores de la variable. Vemos pues que el valor 5. A top priority es aquel que más encuestados han respondido para esta variable.

Mostrar codigo
table(cron$w4q13)

   1    2    3    4    5    9 
  17   68  429 2094 3370   54 

2.Vemos tanto en la gráfica como en los números la frecuencia absoluta de la variable cntry. Vemos que existen 11 valores para cntry y lo que la frecuencia absoluta nos muestra es cuántas veces aparece cada país en la muestra.

Mostrar codigo
frecuencia_cntry <- table(cron$cntry)
frecuencia_cntry

 AT  BE  CZ  FI  FR  GB  IS  IT  PT  SE  SI 
647 573 284 739 724 487 525 243 396 845 569 
Mostrar codigo
barplot(frecuencia_cntry)

  1. Vemos a continuación las respuestas a la variable w4q3 en Portugal, Francia y Suecia. Esta variable w4q3 indica la prioridad de “Enfatizar los valores religiosos”, donde la respuesta 1 es que no es una prioridad para nada y la 5 es que es un prioridad top. Vemos como para Francia y Suecia, la mayoría de repsuestas son el 1, esto es, que para la mayoría la los valores religiosos no son prioritarios para una sociedad ideal. En el caso de Portugal, vemos que la mayoria de respuestas son el 3 que valora esto como una prioridad media. Esto nos da una muestra de que posiblemente por tradición cultural al ser Suecia y Francia sociedades más laicas dan menos importancia a la relogión que POrtugal que es un país con gran tradición religiosa.
Mostrar codigo
# Portugal
portugal <- cron %>% filter(cntry == "PT") %>% count(w4q3)
portugal
# A tibble: 6 × 2
   w4q3     n
  <dbl> <int>
1     1    96
2     2    89
3     3   139
4     4    49
5     5    17
6     9     6
Mostrar codigo
# Francia
francia <- cron %>% filter(cntry == "FR") %>% count(w4q3)
francia
# A tibble: 6 × 2
   w4q3     n
  <dbl> <int>
1     1   355
2     2   140
3     3   147
4     4    51
5     5    16
6     9    15
Mostrar codigo
# Suecia
suecia <- cron %>% filter(cntry == "SE") %>% count(w4q3)
suecia
# A tibble: 6 × 2
   w4q3     n
  <dbl> <int>
1     1   312
2     2   309
3     3   159
4     4    48
5     5     9
6     9     8

4.El porcentaje de personas que han repondido con un 5 a la pregunta w4q15 es ed un 21.76%

Mostrar codigo
respuesta_5 <- sum(cron$w4q15 == 5, na.rm = TRUE)
total_respuestas <- sum(!is.na(cron$w4q15))

porcentaje_5 <- (respuesta_5 / total_respuestas) * 100
porcentaje_5
[1] 21.76724
  1. La moda es el valor que aparece con más frecuencia en una distribución. Para la variable w4q1 la moda es el valor 4 como vemos tanto en la tabla de frecuencia y en el histograma.
Mostrar codigo
table(cron$w4q1)

   1    2    3    4    5    9 
  42  117  896 3067 1890   20 
Mostrar codigo
hist(cron$w4q1)

  1. A continuación vemos la media y la mediana de la variable eduyrs por país. Esta variables mide los años de educación de los encuestados. Vemos que el valor más bajo es para Portugal con una media de 13,7 años y una mediana de 12 años de educación y el más alto es para Chequia con 17.1 años y una mediana de 13 años. Interesante que en el caso de Chequia a pesar de ser el país con una media mayor tiene una de las medianas más bajas junto a Portugal.
Mostrar codigo
estadisticas_eduyrs <- cron %>%
  group_by(cntry) %>%
  summarise(
    media = mean(eduyrs, na.rm = TRUE),
    mediana = median(eduyrs, na.rm = TRUE)
  )
estadisticas_eduyrs
# 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

7.Creamos cron_2 eliminando los valores 77, 88 y 99 de la variable eduyrs

Mostrar codigo
cron_2 <- cron %>%
  filter(!eduyrs %in% c(77, 88, 99))
head (cron_2)
# 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>
  1. El boxplot nos permite observar la distribución de los años de educación en cada país. La línea gruesa dentro de la caja indica donde se sitúa la median por lo que vemos que Gran Bretaña, Finlandia e Islandia tienen las medianas más elevadas lo que nos indica un nivel educativo más alto por su lado vemos como Portugal y Chequia tienen las medianas más bajas. También observamos que la dispersión en los años de educación es grande en Finlandia, Gran Bretaña, Portugal, esto demuestra que hay mucha diferencia dentro de esos países en cuanto a los años de educación respecta.
Mostrar codigo
boxplot(eduyrs ~ cntry, data = cron_2)

Actividad 3

Mostrar codigo
library(dslabs)
gap <- tibble(dslabs::gapminder)
  1. En el marco de datos de ‘dslabs’ encontramos 9 variables y 10545 observaciones. La unidad de análisis del proyecto Gapminder es el país. Las variables que mide este marco de datos son el país, el año, la mortalidad infantil, esperanza de vida, fertilidad, población, PIB, continente y región. De estas variables, hemos encontrado NA en mortalidad infantil, población, PIB y fertilidad
Mostrar codigo
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>
Mostrar codigo
glimpse(gap)
Rows: 10,545
Columns: 9
$ country          <fct> "Albania", "Algeria", "Angola", "Antigua and Barbuda"…
$ year             <int> 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960,…
$ infant_mortality <dbl> 115.40, 148.20, 208.00, NA, 59.87, NA, NA, 20.30, 37.…
$ life_expectancy  <dbl> 62.87, 47.50, 35.98, 62.97, 65.39, 66.86, 65.66, 70.8…
$ fertility        <dbl> 6.19, 7.65, 7.32, 4.43, 3.11, 4.55, 4.82, 3.45, 2.70,…
$ population       <dbl> 1636054, 11124892, 5270844, 54681, 20619075, 1867396,…
$ gdp              <dbl> NA, 13828152297, NA, NA, 108322326649, NA, NA, 966778…
$ continent        <fct> Europe, Africa, Africa, Americas, Americas, Asia, Ame…
$ region           <fct> Southern Europe, Northern Africa, Middle Africa, Cari…
Mostrar codigo
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  
  1. La gráfica inferior nos muestra la evolución de la tasa de fertilidad en Angola y en Suecia entre 1966 y 2016. En el caso de Angola vemos como la tasa de fertilidad es mucho mayor que la de Suecia. La tasa de fertilidad para Angola ha ido disminuyendo desde 1066 hasta 2026. En el caso de Suecia, vemos como la tasa de fertilidad ha ido variando con picos a principio de 1990 y bajadas a finales del esa misma década. Si bien la total ha bajado la bajada en Suecia no es tan significativa como en Angola.
Mostrar codigo
gap %>% 
  filter(country %in% c("Angola", "Sweden"), year >= 1966 & year <= 2016) %>%
  ggplot(aes(x = year, y = fertility, color = country)) + 
  geom_line() +
  labs(title = "Evolución de la Fertilidad en Angola y Suecia (1966-2016)",
       x = "Año",
       y = "Tasa de Fertilidad") +
  theme_minimal()

  1. Histogramas separados por facets sobre la tasa de fertilidad en Angola y Suecia entre 1966 y 2016.
Mostrar codigo
gap %>%
  filter(country %in% c("Angola", "Sweden")) %>%
  ggplot(aes(x = fertility)) + 
  geom_histogram() + 
  facet_wrap(~ year) 

  1. El tipo de gráfica utilizado es diagrama de dispersión (scatter plot) que nos permite observar visualmente la correlación entre ambas variables. Además, agregando una línea de tendencia obtenemos mayor claridad para el análisis de los datos.
    En este caso la gráfica muestra una relación entre el PIB y la esperanza de vida en Brasil. Esta relación es positiva esto puede interpretarse como que un mayor desarrollo económico está relacionado con un aumento de la esperanza de vida pues aumenta la calidad de vida de la ciudadanía como la disminución de la desigualdad, el aumento de la educación o el acceso de mayor parte de la población a servicios de salud.
Mostrar codigo
gap %>%
  filter(country == "Brazil", year >= 1960, year <= 2016) %>%
  ggplot(aes(x = life_expectancy, y = gdp)) + 
  geom_point() + 
  geom_smooth(method = "lm", se = FALSE, color = "red") + 
labs(title = "Brasil: Relación entre PIB y Esperanza de vida (1960-2016)",
       x = "Esperanza de vida",
       y = "PIB")