Previo

¡Recuerda poner el directorio!

setwd("/Users/anaescoto/Dropbox/2020/R_invierno")

Vamos a importar la base completa del cuestionario sociodemográfico de la Encuesta Nacional de Ocupación y Empleo, trimestre III de 2019

library(haven)
SDEMT319 <- read_dta("./datos/SDEMT319.dta")

Vamos a llamar algunas librerías básicas, el tidyverse (que son muchas librerías) y sjlabelled que nos sirve para el manejo de etiquetas

library(tidyverse)
## ── Attaching packages ──────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.2.1     ✔ purrr   0.3.3
## ✔ tibble  2.1.3     ✔ dplyr   0.8.3
## ✔ tidyr   1.0.0     ✔ stringr 1.4.0
## ✔ readr   1.3.1     ✔ forcats 0.4.0
## ── Conflicts ─────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(sjlabelled)
## 
## Attaching package: 'sjlabelled'
## The following object is masked from 'package:forcats':
## 
##     as_factor
## The following object is masked from 'package:dplyr':
## 
##     as_label
## The following objects are masked from 'package:haven':
## 
##     as_factor, read_sas, read_spss, read_stata, write_sas,
##     zap_labels

También vamos usar la base de Índice de Competitividad Internacional ICI, desarrollado por el Instituto Mexicano de Competitividad. (véase http://imco.org.mx/indices/mexico-suenos-sin-oportunidad/)

library(readxl)
ICI_2018 <- read_excel("./datos/ICI_2018.xlsx",
sheet = "para_importar")
## New names:
## * `` -> ...128
## * `` -> ...129
## * `` -> ...132
## * `PIB (Paridad de Poder Adquisitivo)` -> `PIB (Paridad de Poder Adquisitivo)...135`
## * `PIB (Paridad de Poder Adquisitivo)` -> `PIB (Paridad de Poder Adquisitivo)...136`
## * … and 6 more problems

Medidas de asociación: correlación

Mide la fuerza de la relación, lineal si es de Pearson.

Debemos recordar que la correlación puede tener un valor:

  • 1 es una correlación positiva perfecta
  • 0 es sin correlación (los valores no parecen vinculados en absoluto)
  • -1 es una correlación negativa perfecta)
  • image image

    Elementos importantes

    • El coeficiente de correlación, r, no hace ninguna distinción entre las variables explicativas y dependientes. No hace ninguna diferencia cuál variable por X y cuál se llama Y en el cálculo de la correlación.

    • r utiliza los valores estandarizados de las observaciones, r no cambia cuando cambiamos las unidades de medida de x, y, o ambos. La medición de la altura en pulgadas en lugar de centímetros y el peso en libras en lugar de kilogramos no cambia la correlación entre la altura y el peso. La correlación, r, en sí no tiene unidad de medida; sólo es un númer

    Aplicación con R

    Para observar la relación que pudiera existir entre la tasa de homicidios y la producción per cápita

    cor(ICI_2018$`Homicidios dolosos`, ICI_2018$`PIB per cápita...139`)
    ## [1] -0.4788776
    cor(ICI_2018$`Homicidios dolosos`, ICI_2018$`PIB per cápita...139`, use="pairwise")
    ## [1] -0.4788776

    ¡La correlación es negativa!

    Tipos de correlación

    Por default está la correlación de Pearson, pero en realidad podemos obtener otros tipos

    #Pearson - default
    cor(ICI_2018$`Homicidios dolosos`, ICI_2018$`PIB per cápita...139`, 
        use = "pairwise", method = "pearson")
    ## [1] -0.4788776
    #Tau-Kendall
    cor(ICI_2018$`Homicidios dolosos`, ICI_2018$`PIB per cápita...139`, 
        use = "pairwise", method = "kendall")
    ## [1] -0.3754153
    #Rho-Spearman
    cor(ICI_2018$`Homicidios dolosos`, ICI_2018$`PIB per cápita...139`, 
        use = "pairwise", method = "spearman")
    ## [1] -0.5203866

    Con dplyr:

    ICI_2018 %>% 
      with(cor(`Homicidios dolosos`,`PIB per cápita...139`))
    ## [1] -0.4788776

    Gráficos bivariados

    Vamos a hacer un par de gráficos de dos variables. Vamos a graficar los datos de los ingresos por hora de la ENOE y los años de escolaridad (anios_esc). Este gráfico se conoce como un scatterplot.

    ggplot(aes(x=anios_esc, y=log(ing_x_hrs+1)), 
                    data = SDEMT319[SDEMT319$clase2==1 & SDEMT319$anios_esc<99
                                    & !is.na(SDEMT319$anios_esc)
                                    & !is.na(SDEMT319$ing_x_hrs),])

    O bien podemos crear una nueva base.

    df_lienzo2<-SDEMT319 %>% 
                  filter(SDEMT319$clase2==1  & anios_esc<99 ) %>% 
                    select(ing_x_hrs,anios_esc, t_loc, sex)
    df_lienzo2<-na.omit(df_lienzo2)

    Una vez ya tenemos esta base, vamos a graficar

    lienzo2<-ggplot(data=df_lienzo2, aes(x=anios_esc, y=log(ing_x_hrs+1)))
    lienzo2 + geom_point() #punto

    Cuando trabajamos con datos discretos (como los años de escolaridad) preferimos ver los datos que no superpongan

    lienzo2 + geom_jitter()

    lienzo2 + geom_point(alpha=0.2) 

    lienzo2 + geom_jitter(alpha=0.2) 

    Agregando subgrupos a nuestros gráficos

    Con subgrupos podemos agregar otra variable en nuestro gráficos

    lienzo2 + geom_jitter(aes(shape=as_label(t_loc)))

    lienzo2 + geom_jitter(aes(colour =as_label(t_loc)))

    Con una regresión lineal

    lienzo2 + 
      geom_point()+
      geom_smooth(method=lm)

    Para tener un subgráfico por región. A veces vale la pena hacer un objeto ggplot y luego modificarlo. En general podemos “sumar” nuevas opciones

    Regiones por columnas

    lienzo2 + 
      geom_point()+
      geom_smooth(method=lm) +
      facet_grid(. ~ as_label(t_loc))

    Regiones por filas

    lienzo2 + 
      geom_point()+
      geom_smooth(method=lm) +
      facet_grid(as_label(t_loc) ~ .)

    Regiones por filas y columnas (con dos variables)

    lienzo2 + 
      geom_point()+
      geom_smooth(method=lm) +
      facet_grid(as_label(sex) ~ as_label(t_loc))

    Recuadros por Regiones

    lienzo2 + 
      geom_point()+
      geom_smooth(method=lm) +
      facet_wrap(~as_label(t_loc))

    Etiquetas

    lienzo2 + 
      geom_text(aes(label=as_label(t_loc)))

    Este tipo de gráficos funciona mejor si lo que tenemos son pocos casos.

    Combinando varias geometrías

    lienzo2 + 
      geom_point(alpha=0.2)+
      geom_smooth(method=lm) +
      facet_wrap(~as_label(t_loc)) +
      theme_light()

    Guardar un gráfico

    La función es “ggsave”. Revisemos la ayuda de este comando.

    grafico<-lienzo2 + 
      geom_point(alpha=0.2)+
      geom_smooth(method=lm) +
      facet_wrap(~as_label(t_loc))
      geom_text(aes(label=rownames(df_lienzo2)))
    ## mapping: label = ~rownames(df_lienzo2) 
    ## geom_text: parse = FALSE, check_overlap = FALSE, na.rm = FALSE
    ## stat_identity: na.rm = FALSE
    ## position_identity
    ggsave("grafico.png", grafico, dpi = 300)
    ## Saving 7 x 5 in image

    Ejercicio

    • Realiza un gráfico de dispersión (scatterplot) con la variable “ingocup” y la edad del jefe de hogar. Como es una variable de hogar, filtra por que tengas solamente a los jefes de hogar (par_c==101). Agrega alguna capa a este gráfico como tercera variable.
    • Calcula la correlación para estas variables “ingocup” y la edad del jefe de hogar. Recuerda el filtro.
    • Realiza un gráfico escogiendo variables de la base ICI_2018. ¡Ten cuidado con los nombres!. Calcula la correlación para estas variables.

    Envía el código. Comenta brevemente los resultados del gráfico https://www.dropbox.com/request/36qKUmJxI6Mp5rQGyyck