¡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
Mide la fuerza de la relación, lineal si es de Pearson.
Debemos recordar que la correlación puede tener un valor:
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
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!
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
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)
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)))
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))
lienzo2 +
geom_text(aes(label=as_label(t_loc)))
Este tipo de gráficos funciona mejor si lo que tenemos son pocos casos.
lienzo2 +
geom_point(alpha=0.2)+
geom_smooth(method=lm) +
facet_wrap(~as_label(t_loc)) +
theme_light()
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
Envía el código. Comenta brevemente los resultados del gráfico https://www.dropbox.com/request/36qKUmJxI6Mp5rQGyyck