+ - 0:00:00
Notes for current slide
Notes for next slide

R aplicado a la ECH

Setiembre 2020
Gabriela Mathieu

Creative Commons License
Creative Commons Attribution 4.0 International License

Objetivos del curso

  • Introducción al lenguaje R usando RStudio aplicado a la ECH.

  • Manejar un gran conjunto de funciones: básicas y más avanzadas

  • Generar autonomía para usar R y seguir aprendiendo después del curso.

  • Introducir el paquete ech para lograr rápidamente:

    • Calcular nuevas variables.

    • Estimar indicadores: estimación puntual y por intervalo

    • Crea visualizaciones atractivas e informativas.

¿Quiénes usan/usamos R?

Intro R

Ayuda

Buscar ayuda

  • Ayuda en R:

    • Si sabemos el nombre de la función exactamente: ?gini, help('gini')
    • Si no sabemos el nombre exacto pero debería contener el término gini: ??gini
  • Ayuda externa a R:

RStudio

Script

Script

  • Un archivo donde se escribe la sintaxis (el código) y luego se envía a la consola.

Script

  • Un archivo donde se escribe la sintaxis (el código) y luego se envía a la consola.

  • Un script permite reproducir nuestro análisis o que otra persona lo haga.

Script

  • Un archivo donde se escribe la sintaxis (el código) y luego se envía a la consola.

  • Un script permite reproducir nuestro análisis o que otra persona lo haga.

  • Tendrá una extensión .R y al hacer doble click sobre el archivo se abre RStudio.

Script

  • Un archivo donde se escribe la sintaxis (el código) y luego se envía a la consola.

  • Un script permite reproducir nuestro análisis o que otra persona lo haga.

  • Tendrá una extensión .R y al hacer doble click sobre el archivo se abre RStudio.

  • Es clave comentar el código, los comentarios deben ir precedidos por #.

Script

  • Un archivo donde se escribe la sintaxis (el código) y luego se envía a la consola.

  • Un script permite reproducir nuestro análisis o que otra persona lo haga.

  • Tendrá una extensión .R y al hacer doble click sobre el archivo se abre RStudio.

  • Es clave comentar el código, los comentarios deben ir precedidos por #.

  • Los comentarios se verán de un color diferente al código, incluso cuando se comenta parte de un código.

Script

  • Un archivo donde se escribe la sintaxis (el código) y luego se envía a la consola.

  • Un script permite reproducir nuestro análisis o que otra persona lo haga.

  • Tendrá una extensión .R y al hacer doble click sobre el archivo se abre RStudio.

  • Es clave comentar el código, los comentarios deben ir precedidos por #.

  • Los comentarios se verán de un color diferente al código, incluso cuando se comenta parte de un código.

  • Un comentario se envía a la consola pero no se ejecuta nada.

Autocompleta código

La ventana de script colorea y autocompleta código. Muestra el help de la función.

Comentarios

Espacio de trabajo (workspace / environment)

  • Se ubica en la memoria RAM.

Espacio de trabajo (workspace / environment)

  • Se ubica en la memoria RAM.

  • La colección de objetos generados en una sesión.

Espacio de trabajo (workspace / environment)

  • Se ubica en la memoria RAM.

  • La colección de objetos generados en una sesión.

  • ls() para obtener el listado de los objetos almacenados en la memoria RAM.

Espacio de trabajo (workspace / environment)

  • Se ubica en la memoria RAM.

  • La colección de objetos generados en una sesión.

  • ls() para obtener el listado de los objetos almacenados en la memoria RAM.

  • Al cerrar Rstudio se pierden, pero tenemos la sintaxis para volver a crearlos :)

Espacio de trabajo (workspace / environment)

  • Se ubica en la memoria RAM.

  • La colección de objetos generados en una sesión.

  • ls() para obtener el listado de los objetos almacenados en la memoria RAM.

  • Al cerrar Rstudio se pierden, pero tenemos la sintaxis para volver a crearlos :)

  • Un objeto no modifica un archivo a menos que se guarde/exporte como tal usando una función para tal fin. No es posible modificar un archivo por error.

Espacio de trabajo (workspace / environment)

  • Se ubica en la memoria RAM.

  • La colección de objetos generados en una sesión.

  • ls() para obtener el listado de los objetos almacenados en la memoria RAM.

  • Al cerrar Rstudio se pierden, pero tenemos la sintaxis para volver a crearlos :)

  • Un objeto no modifica un archivo a menos que se guarde/exporte como tal usando una función para tal fin. No es posible modificar un archivo por error.

  • Para eliminar objetos puede utilizar la orden rm().

Espacio de trabajo (workspace / environment)

  • Se ubica en la memoria RAM.

  • La colección de objetos generados en una sesión.

  • ls() para obtener el listado de los objetos almacenados en la memoria RAM.

  • Al cerrar Rstudio se pierden, pero tenemos la sintaxis para volver a crearlos :)

  • Un objeto no modifica un archivo a menos que se guarde/exporte como tal usando una función para tal fin. No es posible modificar un archivo por error.

  • Para eliminar objetos puede utilizar la orden rm().

  • Al cerrar RStudio te consulta si querés guardar el espacio de trabajo (workspace), no lo guardes nunca, no sirve para nada. En vez de eso, configura RStudio para que no te haga más esa pregunta.

Save workspace

R 'base'

Vector

  • Un vector es una colección de uno o más objetos del mismo tipo (números o caracteres pero no ambos).

Vector

  • Un vector es una colección de uno o más objetos del mismo tipo (números o caracteres pero no ambos).

  • Según sus elementos será la clase del vector: character, numeric, logical

Vector

  • Un vector es una colección de uno o más objetos del mismo tipo (números o caracteres pero no ambos).

  • Según sus elementos será la clase del vector: character, numeric, logical

  • La función c() crea un vector.

Vector

  • Un vector es una colección de uno o más objetos del mismo tipo (números o caracteres pero no ambos).

  • Según sus elementos será la clase del vector: character, numeric, logical

  • La función c() crea un vector.

  • Cada elemento va separado por una coma

Vector

  • Un vector es una colección de uno o más objetos del mismo tipo (números o caracteres pero no ambos).

  • Según sus elementos será la clase del vector: character, numeric, logical

  • La función c() crea un vector.

  • Cada elemento va separado por una coma

  • Con la función class() compruebo que tipo de objeto es

Nombrar objetos

  • Para nombrar objetos se pueden usar: letras, números, punto, guión bajo

Nombrar objetos

  • Para nombrar objetos se pueden usar: letras, números, punto, guión bajo

  • No puede empezar con números ni guión bajo: 2019ech _ech

Nombrar objetos

  • Para nombrar objetos se pueden usar: letras, números, punto, guión bajo

  • No puede empezar con números ni guión bajo: 2019ech _ech

  • Si empieza con punto debe seguirle una letra: .ech

Nombrar objetos

  • Para nombrar objetos se pueden usar: letras, números, punto, guión bajo

  • No puede empezar con números ni guión bajo: 2019ech _ech

  • Si empieza con punto debe seguirle una letra: .ech

  • Lo común es que comiencen con una letra: ech_2019

Nombrar objetos

  • Para nombrar objetos se pueden usar: letras, números, punto, guión bajo

  • No puede empezar con números ni guión bajo: 2019ech _ech

  • Si empieza con punto debe seguirle una letra: .ech

  • Lo común es que comiencen con una letra: ech_2019

  • R es sensible a mayúsculas y minúsculas: no es lo mismo Ech que ech

Nombrar objetos

  • Para nombrar objetos se pueden usar: letras, números, punto, guión bajo

  • No puede empezar con números ni guión bajo: 2019ech _ech

  • Si empieza con punto debe seguirle una letra: .ech

  • Lo común es que comiencen con una letra: ech_2019

  • R es sensible a mayúsculas y minúsculas: no es lo mismo Ech que ech

  • Esto último vale también para los nombres de funciones, no es lo mismo View() que view(), la segunda no existe.

Ejercicio (6')

  • Crea un objeto llamado nombre con tu nombre escrito todo en minúscula <br

  • Crea un objeto llamado apellido con tu apellido escrito todo en minúscula

  • Crea un objeto llamado edad con tu edad en números

  • Pregunta la clase de cada uno de esos objetos e imprime el contenido de cada objeto.

  • Crea un objeto llamado nombre_completo que contenga tu nombre y tu apellido, reutilizando los objetos creados. La función paste() puede ser de ayuda.

  • ¿Cuántos caracteres tiene el objeto nombre, y el objeto apellido? La función nchar() puede ser de ayuda.

Atajos de teclado

Atajos de teclado

Advertencias (warnings)

  • Mensajes de advertencia (Warnings): no necesariamente hay un error (ejecuta los comandos y solo te advierte de posibles inconvenientes).
x1 <- c(2, 8, 3, 4, 1)
x2 <- c(0, 7, 5, 5, 6, 1)
pmax(x1, x2)
Warning in pmax(x1, x2): an argument will be fractionally recycled
[1] 2 8 5 5 6 2

Errores (errors)

  • Mensajes de error aparecen en la consola con el texto Error: ....

Errores (errors)

  • Mensajes de error aparecen en la consola con el texto Error: ....

  • El error impide que se ejecute(n) la(s) líneas con error.

Errores (errors)

  • Mensajes de error aparecen en la consola con el texto Error: ....

  • El error impide que se ejecute(n) la(s) líneas con error.

  • Un error en el código es una orden que R no puede interpretar .

Errores (errors)

  • Mensajes de error aparecen en la consola con el texto Error: ....

  • El error impide que se ejecute(n) la(s) líneas con error.

  • Un error en el código es una orden que R no puede interpretar .

  • Pueden deberse a funciones mal escritas , expresiones erróneas o incompletas, objetos que no han sido declarados, etc


Errores (errors)

  • Mensajes de error aparecen en la consola con el texto Error: ....

  • El error impide que se ejecute(n) la(s) líneas con error.

  • Un error en el código es una orden que R no puede interpretar .

  • Pueden deberse a funciones mal escritas , expresiones erróneas o incompletas, objetos que no han sido declarados, etc


  • Con práctica y la ayuda de los foros se aprende a entender los mensajes de error.

Paquetes

Encuesta Continua de Hogares

Características

  • La Encuesta Continua de Hogares (ECH), releva información de los hogares particulares uruguayos, realizada anualmente por el Instituto Nacional de Estadística (INE).

Características

  • La Encuesta Continua de Hogares (ECH), releva información de los hogares particulares uruguayos, realizada anualmente por el Instituto Nacional de Estadística (INE).

  • Un hogar particular "es la persona o grupo de personas que habitan bajo un mismo techo y que al menos para su alimentación, dependen de un fondo común" (Metodología ENHA 2006).

Características

  • La Encuesta Continua de Hogares (ECH), releva información de los hogares particulares uruguayos, realizada anualmente por el Instituto Nacional de Estadística (INE).

  • Un hogar particular "es la persona o grupo de personas que habitan bajo un mismo techo y que al menos para su alimentación, dependen de un fondo común" (Metodología ENHA 2006).

  • Se debe definir una persona jefa de hogar la que se tomará como referencia para determinar la relación entre quienes integran el hogar.

Características

  • La Encuesta Continua de Hogares (ECH), releva información de los hogares particulares uruguayos, realizada anualmente por el Instituto Nacional de Estadística (INE).

  • Un hogar particular "es la persona o grupo de personas que habitan bajo un mismo techo y que al menos para su alimentación, dependen de un fondo común" (Metodología ENHA 2006).

  • Se debe definir una persona jefa de hogar la que se tomará como referencia para determinar la relación entre quienes integran el hogar.

  • Los objetivos son obtener indicadores para monitorear la evolución del mercado de trabajo, el ingreso de los hogares y las condiciones de vida de la población.

Características

  • La Encuesta Continua de Hogares (ECH), releva información de los hogares particulares uruguayos, realizada anualmente por el Instituto Nacional de Estadística (INE).

  • Un hogar particular "es la persona o grupo de personas que habitan bajo un mismo techo y que al menos para su alimentación, dependen de un fondo común" (Metodología ENHA 2006).

  • Se debe definir una persona jefa de hogar la que se tomará como referencia para determinar la relación entre quienes integran el hogar.

  • Los objetivos son obtener indicadores para monitorear la evolución del mercado de trabajo, el ingreso de los hogares y las condiciones de vida de la población.

  • Los microdatos se obtienen desde la web del INE

Dimensiones

  • La ECH releva información referente a la vivienda, el hogar y las personas:

    • Características de la vivienda

      • Tenencia
      • Materiales de construcción, etc.
    • Características del hogar

      • Cantidad de personas
      • Relaciones de parentesco, etc.
    • Características de las personas que integran los hogares relevados

      • Situación ocupacional de las personas de 14 o más años
      • Ingresos
      • Educación, etc.

ech

Paquete ech

  • Es un paquete de R para facilitar el procesamientode la Encuesta Continua de Hogares.

  • En su versión actual admite trabajar con las ECH de 2011 a 2019.

  • Está pensado para trabajar con los microdatos fusionados (hogares y personas).

  • Está en proceso de aceptación en CRAN. Ahora disponible en github.

  • Lo desarrollo junto a Richard Detomasi.

Historia y motivación de ech

  • Una puerta de entrada a R.

  • Democratizar el uso de la ECH, brindando una herramienta libre y gratuita.

  • Fomentar la publicación de código, no tan común por acá.

  • Al principio era rech y así lo presentamos en diferentes eventos de R.

  • Luego conocimos otros proyectos similares: eph (Argentina) y casen (Chile)... Cambiamos el nombre y quitamos la parte de visualización y Richard creó geouy

Ventajas de usar ech

  • Función para descargar los microdatos desde la web del INE

  • Funciones para calcular variables: mercado de trabajo, ingresos, educación, etc.

  • Funciones para estimar indicadores: devuelven siempre un data.frame en formato tidy

  • Funciones para descargar los datos de IPC, IPAB, entre otros, también en un formato tidy.

  • Función para descargar el diccionario comparado entre bases de distintos años.

  • Documentación para facilitar su uso

devtools::install_github()

Instalar y cargar ech

  • Un paquete se instala una única vez.

  • Para instalarlo desde CRAN usamos la función install.packages() .

  • Para instalarlo desde github usamos la función install_github(). Esta función está en el paquete devtools, si no lo tenemos instalado debemos hacerlo.

# instalamos devtools desde CRAN
install.packages("devtools")
# instalamos ech desde github
devtools::install_github("calcita/ech")
  • Lo cargamos a la sesión de trabajo con la función library()
library(ech)

ech::get_microdata()

Descargar, descomprimir y leer

La función get_microdata() se encarga de:

  • descargar los microdatos del año indicado desde la web del INE

  • descomprimir el archivo

  • leer en R el archivo que contiene datos de personas y hogares fusionado

  • guardar el objeto en formato RData (opcional)

# leer archivo de 2019
ech19 <- get_microdata(year = 2019, folder = "/home/calcita/Desktop", toR = FALSE)
# consultar clase de objeto
class(ech19)

El archivo descargado, va por defecto a una carpeta temporal si no definimos una ruta en el argumento folder.

Directorio de trabajo (working directory)

  • Refiere a los archivos que están en la computadora

Directorio de trabajo (working directory)

  • Refiere a los archivos que están en la computadora

    - getwd(): muestra la ruta del directorio de trabajo. R trabaja por defecto en cierta carpeta que se llama directorio de trabajo donde va a leer y guardar los archivos.

Directorio de trabajo (working directory)

  • Refiere a los archivos que están en la computadora

    - getwd(): muestra la ruta del directorio de trabajo. R trabaja por defecto en cierta carpeta que se llama directorio de trabajo donde va a leer y guardar los archivos.

    - setwd(): define el directorio de trabajo, para modificarlo.
    • No es recomendable que la correcta ejecución de la sintaxis dependa de una ruta específica...
    • Más adelante veremos qué es trabajar en proyecto (Rproj) para salvar este problema.

Directorio de trabajo (working directory)

  • Refiere a los archivos que están en la computadora

    - getwd(): muestra la ruta del directorio de trabajo. R trabaja por defecto en cierta carpeta que se llama directorio de trabajo donde va a leer y guardar los archivos.

    - setwd(): define el directorio de trabajo, para modificarlo.
    • No es recomendable que la correcta ejecución de la sintaxis dependa de una ruta específica...
    • Más adelante veremos qué es trabajar en proyecto (Rproj) para salvar este problema.
  • dir(): muestra los archivos que están en el directorio de trabajo

Directorio de trabajo (working directory)

  • Refiere a los archivos que están en la computadora

    - getwd(): muestra la ruta del directorio de trabajo. R trabaja por defecto en cierta carpeta que se llama directorio de trabajo donde va a leer y guardar los archivos.

    - setwd(): define el directorio de trabajo, para modificarlo.
    • No es recomendable que la correcta ejecución de la sintaxis dependa de una ruta específica...
    • Más adelante veremos qué es trabajar en proyecto (Rproj) para salvar este problema.
  • dir(): muestra los archivos que están en el directorio de trabajo

    - R no entiende el \ (con backslash se escriben las rutas en Windows)

Directorio de trabajo (working directory)

  • Refiere a los archivos que están en la computadora

    - getwd(): muestra la ruta del directorio de trabajo. R trabaja por defecto en cierta carpeta que se llama directorio de trabajo donde va a leer y guardar los archivos.

    - setwd(): define el directorio de trabajo, para modificarlo.
    • No es recomendable que la correcta ejecución de la sintaxis dependa de una ruta específica...
    • Más adelante veremos qué es trabajar en proyecto (Rproj) para salvar este problema.
  • dir(): muestra los archivos que están en el directorio de trabajo

    - R no entiende el \ (con backslash se escriben las rutas en Windows)

    - Las rutas en R se definen con / y también es válido usar \\

Explorar los datos

"Ver" los datos

# ver los primeros casos del objeto en la consola
head(ech19)
# A tibble: 3 x 8
numero nper anio mes dpto nomdpto secc segm
<chr> <dbl> <chr> <dbl+lbl> <dbl+lbl> <chr> <chr> <chr>
1 2019000001 1 2019 8 [Agosto] 14 [Rocha] ROCHA 00 000
2 2019000001 2 2019 8 [Agosto] 14 [Rocha] ROCHA 00 000
3 2019000002 1 2019 2 [Febrero] 15 [Salto] SALTO 00 000
# ver los últimos casos del objeto en la consola
tail(ech19)
# ver el conjunto de datos en un ventana
View(ech19)
# ver que contiene directo en la consola. No recomendado!!!
ech19

¿Qué queremos averiguar de estos datos?

  • Primero me hago preguntas, luego pienso cuál es el código que las responde

¿Qué queremos averiguar de estos datos?

  • Primero me hago preguntas, luego pienso cuál es el código que las responde

  • ¿Cuáles son las variables? ¿Cuántas son?

¿Qué queremos averiguar de estos datos?

  • Primero me hago preguntas, luego pienso cuál es el código que las responde

  • ¿Cuáles son las variables? ¿Cuántas son?

  • ¿Cuántas observaciones tiene?

¿Qué queremos averiguar de estos datos?

  • Primero me hago preguntas, luego pienso cuál es el código que las responde

  • ¿Cuáles son las variables? ¿Cuántas son?

  • ¿Cuántas observaciones tiene?

  • ¿Cuál es el identificador del hogar?

¿Qué queremos averiguar de estos datos?

  • Primero me hago preguntas, luego pienso cuál es el código que las responde

  • ¿Cuáles son las variables? ¿Cuántas son?

  • ¿Cuántas observaciones tiene?

  • ¿Cuál es el identificador del hogar?

  • ¿Hay datos faltantes?

¿Qué queremos averiguar de estos datos?

  • Primero me hago preguntas, luego pienso cuál es el código que las responde

  • ¿Cuáles son las variables? ¿Cuántas son?

  • ¿Cuántas observaciones tiene?

  • ¿Cuál es el identificador del hogar?

  • ¿Hay datos faltantes?

  • ¿Hay casos duplicados?

Explorar los datos

Las funciones dim() y names() admiten un data frame como argumento.

dim(ech19) # cantidad de filas y columnas
[1] 107871 556
nrow(ech19) # cantidad de filas
[1] 107871
ncol(ech19) # cantidad de columnas
[1] 556
names(ech19) # nombre de variables
sort(names(ech19)) # ver los nombres por orden alfabético

ech::organize_names()

Estandarizar los nombres de variables

  • Los nombres de las variables pueden sufrir modificaciones entre un año y otro de la encuesta.

  • La función organize_names() convierte todos los nombres a la ECH 2017

  • Las variables pueden sufrir entre un año y otro un cambio en sus categorías, esto se contempla en las funciones que crean variables.

  • Estandarizar los nombres facilita el uso de ech pero no es imprescindible.

# estandarizo nombres
ech19 <- organize_names(data = ech19, year = 2019)

Explorar los datos

La función summary() admite un data frame como argumento pero también una variable.

# estructura del objeto
str(ech19)
# resumen descriptivo de variables
summary(ech19)
# una variable específica
summary(ech19$region_3)

Para acceder a una variable de un data frame es necesario escribir <objeto>$<variable>

Variables numéricas

La variable d9 es el "número de habitaciones residenciales".

# Máximo
max(ech19$d9)
[1] 18
# Mínimo
min(ech19$d9)
[1] 1
# Promedio
mean(ech19$d9)
[1] 3.657359
# Mediana
median(ech19$d9)
[1] 4
# Varianza
var(ech19$d9)
[1] 1.450789
# Desvío estándar
sd(ech19$d9)
[1] 1.204487

Variables categóricas

La función table() permite hacer una tabla de frecuencias absolutas.

table(ech19$nomdpto)
ARTIGAS CANELONES CERRO LARGO COLONIA DURAZNO
2881 16543 3237 4398 2216
FLORES FLORIDA LAVALLEJA MALDONADO MONTEVIDEO
1113 2372 1946 5193 38207
PAYSANDU RIO NEGRO RIVERA ROCHA SALTO
4090 1896 3999 3207 4757
SAN JOSE SORIANO TACUAREMBO TREINTA Y TRES
4155 2732 3227 1702
# Tabla de frecuencias relativas
?prop.table

La salida que generan estas funciones no es tidy y conforme más categorías tiene una variable se vuelve más confusa.

Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow