Muestras complejas con R

Graficas con R

Por Julio César Martínez Sánchez

1. Introducción

El objetivo de este tutorial es introducir al usuario en el manejo de graficas con R. Se usan las bases de datos de la Encuesta Nacional de Ocupación y Empleo (ENOE) del primer trimestre de 2016, las cuales se encuentran en la página de INEGI.

1.1 Cargar paquetes

Para poder hacer las graficas correspondientes se requieren los siguientes paquetes:

data.table, foreign, questionr, survey, ggplot2, gridExtra, grid. En caso de que no esténn disponibles, se pueden instalar con el siguiente comando: If they are not already installed, they can install with the next command:

#Instalar los paquete necesarios
install.packages(c("data.table","foreign","questionr","survey","ggplot2","gridExtra","grid"))
Cargar las librerias que se van a utilizar
library(data.table)
library(foreign)
library(questionr)
library(survey)
library(ggplot2)
library(gridExtra)
library(grid)
Definir el directorio raíz y cargar las bases de datos
setwd("C:/Users/JC/Desktop/D/1")
SDEMT116<-data.frame(read.dbf("sdemt116.dbf"))

1.2 Variables

Para iniciar con el análisis conviene identificar las variables que se van a utilizar y adecuar el formato. En este caso la población de referencia es la población ocupada (CLASE2) y la variable que se van a utilizar es edad (EDA). Además, para que un registro de la encuesta sea válido, debe de tratarse de un residente habitual (C_RES) con entrevista completa (R_DEF). Para fines prácticos, conviene que estas variables sean numéricas, por lo tanto se adecúan con este formato:
#Convertir las variables a num?ricas
SDEMT116$R_DEF <-as.numeric(as.character(SDEMT116$R_DEF))
SDEMT116$C_RES <-as.numeric(as.character(SDEMT116$C_RES))
SDEMT116$EDA <-as.numeric(as.character(SDEMT116$EDA))
SDEMT116$CLASE2 <-as.numeric(as.character(SDEMT116$CLASE2))

#Filtrar a la poblaci?n que es de inter?s
SD<-SDEMT116[which(SDEMT116$CLASE2==1 & (SDEMT116$EDA>=15 & SDEMT116$EDA<=98) & SDEMT116$R_DEF==0 & (SDEMT116$C_RES==1 | SDEMT116$C_RES==3)),]

1.3 Recodificación de variables

Para que las gráficas tengan sentido, se recomienda etiquetar las variables
#Variable Sexo (SEX)
SD$SEXO <- factor(SD$SEX,levels = c(1,2),labels = c("Hombre", "Mujer"))

#Verificar la recodificaci?n con un tabulado simple
wtd.table(SD$SEXO,weights = SD$FAC)
##   Hombre    Mujer 
## 31481902 19296727
#Variable Posici?n en la ocupaci?n (POS_OCU)
SD$POS_OCU <- factor(SD$POS_OCU,levels = c(1,2,3,4,5),labels = c("Subordinados", "Empleadores","CtaPropia", "SinPago","NE"))

#Verificar la recodificaci?n con un tabulado simple
wtd.table(SD$POS_OCU)
## Subordinados  Empleadores    CtaPropia      SinPago           NE 
##       118061         7720        33765         7194            0

2. Gráficas

2.1 Con 1 Variable Discreta

Para hacer las gráficas se usará la función ggplot, la cual se encuentra en el paquete ggplot2. Esta función es muy ?til ya que permite crear una gráfica en tres pasos:
#1) Indicar la base de datos y la variable
g1<-ggplot(SD,aes(POS_OCU))
#2) Definir el tipo de gr?fica y definir las caracter?sticas
g1+geom_bar(fill="deepskyblue2",aes(weights=SD$FAC))
#3) Agregar las capas que se requieran.
g1+geom_bar(fill="deepskyblue2",aes(weights=SD$FAC))+
  ggtitle("Posici?n en la Ocupaci?n")+
  xlab("Rango de horas")+
  ylab("N?mero de personas")

2.2 Con 2 Variable Discreta

2.2.1 Opción 1

Para crear una gráfica con dos variables discretas se puede usar la capa denominada facet_wrap()
g2<-ggplot(SD,aes(POS_OCU))
g2+geom_bar(fill="yellowgreen",aes(weights=SD$FAC))+
  facet_wrap(~ SEX)+
  ggtitle("Posici?n en la Ocupaci?n")+
  xlab("Rango de horas")+
  ylab("N?mero de personas")

2.2.2 Opción 2

Tambi?n se puede usar la opci?n fill e indicar qu? variable se utilizar?
g3<-ggplot(SD,aes(x=CS_P13_1,fill=SEX))
g3+geom_bar(aes(weights=SD$FAC),position = "dodge")+
  ggtitle("Posici?n en la Ocupaci?n")+
  xlab("Rango de horas")+
  ylab("N?mero de personas")

2.3 Con 1 Variable Contínua

g4<-ggplot(SD,aes(EDA))
g4+geom_area(stat = "bin",binwidth = 5,aes(weights=SD$FAC))

2.4 Agregar gráficas

# Se crea la gr?fica y se guarda
grafica1<-
  g1+geom_bar(fill="deepskyblue2",aes(weights=SD$FAC))+
  ggtitle("Posici?n en la Ocupaci?n")+
  xlab("Rango de horas")+
  ylab("N?mero de personas")

grafica2<-
  g2+geom_bar(fill="yellowgreen",aes(weights=SD$FAC))+
  facet_wrap(~ SEX)+
  ggtitle("Posici?n en la Ocupaci?n")+
  xlab("Rango de horas")+
  ylab("N?mero de personas")

grafica3<-
  g3+geom_bar(aes(weights=SD$FAC),position = "dodge")+
  ggtitle("Posici?n en la Ocupaci?n")+
  xlab("Rango de horas")+
  ylab("N?mero de personas")

grafica4<-
  g4+geom_area(stat = "bin",binwidth = 5,aes(weights=SD$FAC))+
  ggtitle("Edad")+
  xlab("Rango")+
  ylab("Personas")


grid.arrange(grafica1, grafica2,grafica3,grafica4,nrow=4)

3. Referencias