Sesión práctica 3

AE
25/2/2019

Matrices vrs. Data Frames

Matrices

Anteriormente, aprendimos a instalar paquetes y a importar bases de datos. Las matrices por lo general sólo almacenan un tipo de datos mientras que las data frames puede almacenar varios tipos de datos.

m <-matrix(1:20, ncol=2)
m
##       [,1] [,2]
##  [1,]    1   11
##  [2,]    2   12
##  [3,]    3   13
##  [4,]    4   14
##  [5,]    5   15
##  [6,]    6   16
##  [7,]    7   17
##  [8,]    8   18
##  [9,]    9   19
## [10,]   10   20

En general, los datos de una matriz son numéricos. R es muy potente para hacer operaciones con matrices.

Para poder llegar a ver los elementos individuales de una matriz, tenemos que usar los corchetes y revisar por ejemplo el elemento 5 de la columna 1

m[5,1] 
## [1] 5
m[5,2]
## [1] 15
m[, 1] # si queremos todas las filas, no ponemos nada
##  [1]  1  2  3  4  5  6  7  8  9 10
m[1, ] # si queremos todas las columnas no ponemos nada
## [1]  1 11
m[1:2,]
##      [,1] [,2]
## [1,]    1   11
## [2,]    2   12
m[c(1,5, 6),]
##      [,1] [,2]
## [1,]    1   11
## [2,]    5   15
## [3,]    6   16
n<-m[1,]

class(m)
## [1] "matrix"
class(n)
## [1] "integer"

Estos resultados se pueden asignar también a nuevos objetos, lo cual es muy útil cuando estemos filtrando caso.

Dataframes

Vamos a cargar la base del IMCO. Esta base tiene muchas variables cuantitativas y nos va a permitir revisar mucho más el análisis descriptivo. Luego volveremos a la base de LAPOP

library(readxl)
## Warning: package 'readxl' was built under R version 3.5.2
Excel_2016_IMCO <- read_excel("Excel_2016_IMCO.xlsx")
## New names:
## * `` -> `..101`
## * `` -> `..102`
## * `` -> `..103`

Para revisar el contenido de un data frame podemos usar, como lo hicimos en el ejercicio de la ENVIPE, el formado basededatos$var o usar corchete, checa como estas tres formas tan el mismo resultado

Excel_2016_IMCO$Homicidios
##  [1]  2.835806 33.383425 24.400662  9.115404  7.544968 71.222405  8.800367
##  [8] 32.885944 10.777257 13.354243 16.388085 61.673430  5.183388 14.372650
## [15] 11.992856 27.809580 31.702828  3.129508 12.485991 21.548750  9.433062
## [22]  5.850455 10.186679 11.015140 31.927418 19.175263 11.462458 16.604830
## [29]  5.942364 15.519103  2.330049 28.959639
Excel_2016_IMCO[["Homicidios"]]  # ¡Ojo con las comillas! 
##  [1]  2.835806 33.383425 24.400662  9.115404  7.544968 71.222405  8.800367
##  [8] 32.885944 10.777257 13.354243 16.388085 61.673430  5.183388 14.372650
## [15] 11.992856 27.809580 31.702828  3.129508 12.485991 21.548750  9.433062
## [22]  5.850455 10.186679 11.015140 31.927418 19.175263 11.462458 16.604830
## [29]  5.942364 15.519103  2.330049 28.959639
Excel_2016_IMCO[,5]  
## # A tibble: 32 x 1
##    `Robo de vehículos`
##                  <dbl>
##  1               4.78 
##  2              14.2  
##  3               4.04 
##  4               0.689
##  5               1.15 
##  6               4.84 
##  7               3.30 
##  8               2.40 
##  9               2.04 
## 10               1.94 
## # … with 22 more rows

Vamos a pedir cosas más especificas y podemos seleccionar observaciones o files

Excel_2016_IMCO[Excel_2016_IMCO$Homicidios>20,]
## # A tibble: 10 x 103
##    Code_edo edo   Homicidios Secuestros `Robo de vehícu… `Costos del del…
##    <chr>    <chr>      <dbl>      <dbl>            <dbl>            <dbl>
##  1 02       Baja…       33.4      0.396            14.2             3270.
##  2 03       Baja…       24.4      0                 4.04            3252.
##  3 06       Coli…       71.2      0.544             4.84            2205.
##  4 08       Chih…       32.9      0.240             2.40            2029.
##  5 12       Guer…       61.7      2.01              4.04            2410.
##  6 16       Mich…       27.8      0.540             2.82            2918.
##  7 17       More…       31.7      2.11              6.41            2580.
##  8 20       Oaxa…       21.5      0.793             3.28            1762.
##  9 25       Sina…       31.9      0.465             4.07            3194.
## 10 32       Zaca…       29.0      2.33              4.78            2539.
## # … with 97 more variables: `Incidencia delictiva` <dbl>, `Delitos
## #   denunciados` <dbl>, `Percepción de seguridad` <dbl>, `Competencia en
## #   servicios notariales` <dbl>, `Cumplimiento de contratos` <dbl>,
## #   `Volumen tratado de aguas residuales` <dbl>, `Eficiencia económica del
## #   agua en la agricultura` <dbl>, `Mortalidad infantil por enfermedades
## #   respiratorias` <dbl>, `Índice de Competitividad Forestal` <dbl>,
## #   `Pérdida en superficie cubierta por árboles` <dbl>, `Áreas naturales
## #   protegidas` <dbl>, `Volumen de residuos sólidos generados` <dbl>,
## #   `Disposición adecuada de residuos sólidos` <dbl>, `Intensidad
## #   energética de la economía` <dbl>, `Certificados "Industria limpia"
## #   emitidos` <dbl>, `Gastos autorizados al FONDEN` <dbl>, Pobreza <dbl>,
## #   `Acceso a drenaje` <dbl>, `Acceso a instituciones de salud` <dbl>,
## #   `Mujeres económicamente activas` <dbl>, `Equidad salarial` <dbl>,
## #   `Índice de informalidad laboral entre mujeres y hombres` <dbl>,
## #   Analfabetismo <dbl>, Escolaridad <dbl>, `Escuelas de calidad` <dbl>,
## #   `Rendimiento académico` <dbl>, `Esperanza de vida` <dbl>, `Mortalidad
## #   infantil` <dbl>, `Mortalidad por diabetes y enfermedades
## #   hipertensivas` <dbl>, Suicidios <dbl>, `Embarazos adolescentes` <dbl>,
## #   `Camas de hospital` <dbl>, `Médicos y enfermeras` <dbl>, `Médicos con
## #   especialidad` <dbl>, `Migración neta` <dbl>, `Incidencia de
## #   corrupción` <dbl>, `Percepción de corrupción estatal` <dbl>,
## #   `Percepción de corrupción en partidos políticos` <dbl>, `Consulta de
## #   información de finanzas públicas` <dbl>, `Participación
## #   ciudadana` <dbl>, `Competencia electoral` <dbl>, `Barreras a
## #   candidatos independientes` <dbl>, `Equidad en el Congreso` <dbl>,
## #   `Matrimonio igualitario` <dbl>, `Agresiones a periodistas` <dbl>,
## #   `Interacción con el gobierno por medios electrónicos` <dbl>, `Índice
## #   de Información Presupuestal Estatal` <dbl>, `Ingresos propios` <dbl>,
## #   `Registro de una propiedad` <dbl>, `Apertura de una empresa` <dbl>,
## #   `Indicador subnacional de mejora regulatoria` <dbl>, `Hogares que se
## #   surten de agua por pipa` <dbl>, `Informalidad laboral` <dbl>,
## #   `Contribución laboral al crecimiento` <dbl>, `Ingreso promedio de
## #   trabajadores de tiempo completo` <dbl>, `Desigualdad salarial` <dbl>,
## #   `Población ocupada sin ingresos` <dbl>, `Eficiencia terminal en
## #   secundaria` <dbl>, `Eficiencia terminal en preparatoria` <dbl>,
## #   `Absorción en educación superior` <dbl>, `Población foránea con
## #   educación superior` <dbl>, `Capacitación laboral` <dbl>, `PIB per
## #   cápita` <dbl>, `PIB en sectores de alto crecimiento` <dbl>,
## #   `Crecimiento del PIB` <dbl>, `Deuda estatal y de organismos
## #   estatales` <dbl>, `Afectación de participaciones federales` <dbl>,
## #   `Plazo promedio de vencimiento de la deuda` <dbl>, `Costo promedio de
## #   deuda` <dbl>, `Personas con ingresos mayores al promedio
## #   estatal` <dbl>, `Participación laboral` <dbl>, `Dependencia
## #   económica` <dbl>, `Diversificación económica` <dbl>, `Telefonía
## #   móvil` <dbl>, `Hogares con acceso a internet` <dbl>, `Terminales punto
## #   de venta` <dbl>, `Disponibilidad de cajeros automáticos` <dbl>, `Uso
## #   de banca móvil` <dbl>, `Captación de ahorro` <dbl>, `Penetración del
## #   seguro en la economía` <dbl>, `Heridos en accidentes de tránsito
## #   terrestre` <dbl>, `Accidentes por malas condiciones de camino` <dbl>,
## #   `Flujo de pasajeros aéreos` <dbl>, `Carga aérea` <dbl>, `Certificación
## #   internacional para turismo médico` <dbl>, `Flujo de pasajeros aéreos
## #   internacionales` <dbl>, `PIB turístico` <dbl>, `Inversión extranjera
## #   directa` <dbl>, `Exportación de mercancías` <dbl>, `Complejidad
## #   económica en sectores de innovación` <dbl>, `Productividad total de
## #   los factores` <dbl>, Investigadores <dbl>, Patentes <dbl>, `Empresas e
## #   instituciones científicas y tecnológicas` <dbl>, ..101 <lgl>,
## #   ..102 <dbl>, ..103 <dbl>
Excel_2016_IMCO[(Excel_2016_IMCO$Homicidios>20 & Excel_2016_IMCO$edo!="Aguascalientes" ),]
## # A tibble: 10 x 103
##    Code_edo edo   Homicidios Secuestros `Robo de vehícu… `Costos del del…
##    <chr>    <chr>      <dbl>      <dbl>            <dbl>            <dbl>
##  1 02       Baja…       33.4      0.396            14.2             3270.
##  2 03       Baja…       24.4      0                 4.04            3252.
##  3 06       Coli…       71.2      0.544             4.84            2205.
##  4 08       Chih…       32.9      0.240             2.40            2029.
##  5 12       Guer…       61.7      2.01              4.04            2410.
##  6 16       Mich…       27.8      0.540             2.82            2918.
##  7 17       More…       31.7      2.11              6.41            2580.
##  8 20       Oaxa…       21.5      0.793             3.28            1762.
##  9 25       Sina…       31.9      0.465             4.07            3194.
## 10 32       Zaca…       29.0      2.33              4.78            2539.
## # … with 97 more variables: `Incidencia delictiva` <dbl>, `Delitos
## #   denunciados` <dbl>, `Percepción de seguridad` <dbl>, `Competencia en
## #   servicios notariales` <dbl>, `Cumplimiento de contratos` <dbl>,
## #   `Volumen tratado de aguas residuales` <dbl>, `Eficiencia económica del
## #   agua en la agricultura` <dbl>, `Mortalidad infantil por enfermedades
## #   respiratorias` <dbl>, `Índice de Competitividad Forestal` <dbl>,
## #   `Pérdida en superficie cubierta por árboles` <dbl>, `Áreas naturales
## #   protegidas` <dbl>, `Volumen de residuos sólidos generados` <dbl>,
## #   `Disposición adecuada de residuos sólidos` <dbl>, `Intensidad
## #   energética de la economía` <dbl>, `Certificados "Industria limpia"
## #   emitidos` <dbl>, `Gastos autorizados al FONDEN` <dbl>, Pobreza <dbl>,
## #   `Acceso a drenaje` <dbl>, `Acceso a instituciones de salud` <dbl>,
## #   `Mujeres económicamente activas` <dbl>, `Equidad salarial` <dbl>,
## #   `Índice de informalidad laboral entre mujeres y hombres` <dbl>,
## #   Analfabetismo <dbl>, Escolaridad <dbl>, `Escuelas de calidad` <dbl>,
## #   `Rendimiento académico` <dbl>, `Esperanza de vida` <dbl>, `Mortalidad
## #   infantil` <dbl>, `Mortalidad por diabetes y enfermedades
## #   hipertensivas` <dbl>, Suicidios <dbl>, `Embarazos adolescentes` <dbl>,
## #   `Camas de hospital` <dbl>, `Médicos y enfermeras` <dbl>, `Médicos con
## #   especialidad` <dbl>, `Migración neta` <dbl>, `Incidencia de
## #   corrupción` <dbl>, `Percepción de corrupción estatal` <dbl>,
## #   `Percepción de corrupción en partidos políticos` <dbl>, `Consulta de
## #   información de finanzas públicas` <dbl>, `Participación
## #   ciudadana` <dbl>, `Competencia electoral` <dbl>, `Barreras a
## #   candidatos independientes` <dbl>, `Equidad en el Congreso` <dbl>,
## #   `Matrimonio igualitario` <dbl>, `Agresiones a periodistas` <dbl>,
## #   `Interacción con el gobierno por medios electrónicos` <dbl>, `Índice
## #   de Información Presupuestal Estatal` <dbl>, `Ingresos propios` <dbl>,
## #   `Registro de una propiedad` <dbl>, `Apertura de una empresa` <dbl>,
## #   `Indicador subnacional de mejora regulatoria` <dbl>, `Hogares que se
## #   surten de agua por pipa` <dbl>, `Informalidad laboral` <dbl>,
## #   `Contribución laboral al crecimiento` <dbl>, `Ingreso promedio de
## #   trabajadores de tiempo completo` <dbl>, `Desigualdad salarial` <dbl>,
## #   `Población ocupada sin ingresos` <dbl>, `Eficiencia terminal en
## #   secundaria` <dbl>, `Eficiencia terminal en preparatoria` <dbl>,
## #   `Absorción en educación superior` <dbl>, `Población foránea con
## #   educación superior` <dbl>, `Capacitación laboral` <dbl>, `PIB per
## #   cápita` <dbl>, `PIB en sectores de alto crecimiento` <dbl>,
## #   `Crecimiento del PIB` <dbl>, `Deuda estatal y de organismos
## #   estatales` <dbl>, `Afectación de participaciones federales` <dbl>,
## #   `Plazo promedio de vencimiento de la deuda` <dbl>, `Costo promedio de
## #   deuda` <dbl>, `Personas con ingresos mayores al promedio
## #   estatal` <dbl>, `Participación laboral` <dbl>, `Dependencia
## #   económica` <dbl>, `Diversificación económica` <dbl>, `Telefonía
## #   móvil` <dbl>, `Hogares con acceso a internet` <dbl>, `Terminales punto
## #   de venta` <dbl>, `Disponibilidad de cajeros automáticos` <dbl>, `Uso
## #   de banca móvil` <dbl>, `Captación de ahorro` <dbl>, `Penetración del
## #   seguro en la economía` <dbl>, `Heridos en accidentes de tránsito
## #   terrestre` <dbl>, `Accidentes por malas condiciones de camino` <dbl>,
## #   `Flujo de pasajeros aéreos` <dbl>, `Carga aérea` <dbl>, `Certificación
## #   internacional para turismo médico` <dbl>, `Flujo de pasajeros aéreos
## #   internacionales` <dbl>, `PIB turístico` <dbl>, `Inversión extranjera
## #   directa` <dbl>, `Exportación de mercancías` <dbl>, `Complejidad
## #   económica en sectores de innovación` <dbl>, `Productividad total de
## #   los factores` <dbl>, Investigadores <dbl>, Patentes <dbl>, `Empresas e
## #   instituciones científicas y tecnológicas` <dbl>, ..101 <lgl>,
## #   ..102 <dbl>, ..103 <dbl>
subset1<- Excel_2016_IMCO[(Excel_2016_IMCO$Homicidios>20 & Excel_2016_IMCO$edo!="Aguascalientes" ),]

También podemos seleccionar columnas

Excel_2016_IMCO[, c("Pobreza", "Suicidios")]
## # A tibble: 32 x 2
##    Pobreza Suicidios
##      <dbl>     <dbl>
##  1    28.2      9.58
##  2    22.2      4.89
##  3    22.1      7.12
##  4    43.8      9.33
##  5    24.8      5.37
##  6    33.6      8.97
##  7    77.1      4.98
##  8    30.6     11.6 
##  9    27.6      4.29
## 10    36.0      6.51
## # … with 22 more rows
subset2<- Excel_2016_IMCO[, c("Pobreza", "Suicidios")]

Podemos combinar los dos tipos de selección

Excel_2016_IMCO[Excel_2016_IMCO$Homicidios>20, c("Pobreza", "Suicidios")]
## # A tibble: 10 x 2
##    Pobreza Suicidios
##      <dbl>     <dbl>
##  1    22.2      4.89
##  2    22.1      7.12
##  3    33.6      8.97
##  4    30.6     11.6 
##  5    64.4      2.20
##  6    55.3      3.72
##  7    49.5      4.63
##  8    70.4      2.82
##  9    30.8      5.45
## 10    49.0      4.53
subset3<- Excel_2016_IMCO[Excel_2016_IMCO$Homicidios>20, c("Pobreza", "Suicidios")]

Histograma básico

hist(Excel_2016_IMCO$Homicidios)

Podemos modificarlo de a poco a poco. Modificar el título

hist(Excel_2016_IMCO$Homicidios, main="Histograma de Homicidios") #Histograma de homicidios en los estados con el título “Histograma de homicidos”

Le podemos modificar el título del eje de las x y de las y

hist(Excel_2016_IMCO$Homicidios, main="Histograma de Homicidios", xlab="Homicidios", ylab="Frecuencia") 

¡A ponerle colorcitos! Recuerda aquí hay una lista http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf

hist(Excel_2016_IMCO$Homicidios, main="Histograma de Homicidios", xlab="Homicidios", ylab="Frecuencia", col="deeppink1") 

Notamos que hay una agrupación de estados con menos de 40 homicidios por cada 100,000 habitantes.

Hagamos histogramas de otras variables

hist(Excel_2016_IMCO$`Esperanza de vida`, main="Esperanza de Vida", xlab="Años", ylab="Frecuencia", col="deepskyblue", border ="deepskyblue4" ) 

¿Algo diferente? Cuando hay espacios en el nombre de nuestras variables en un dataframe, tenemos que ponerlo dentro de estos símbolos ``

Regla de Sturges

k =1+ log2(n)

k= número de clases n= número de muestras a representar, en nuestro caso el tamaño de la población

¡Es un método empírico propuesto en 1926! La regla de Sturges funciona mejor para datos continuos que se distribuyen normalmente y son simétricos. Nos ayuda a convertir estos datos en clases discretas, simétricas y binomiales.

Siempre que los datos no estén sesgados, el uso de la regla de Sturges debería proporcionar un histograma atractivo y fácil de leer que represente bien los datos.

Pero: el huevo y la gallina .La regla de Sturges no es muy buena para conjuntos de datos muy sesgados, no simétricos o para un número extremadamente grande de observaciones.

Hay muchos detractores, checa aquí https://robjhyndman.com/papers/sturges.pdf

ggplot <3

Hoy vamos a presentar a un gran paquete ¡Es de los famosos! Y tiene más de diez años. https://qz.com/1007328/all-hail-ggplot2-the-code-powering-all-those-excellent-charts-is-10-years-old/

Hay dos funciones en paquete ggplot2

qplot() – para "quick plots", gráficos rápidos. Nos vamos a concentrar en este curso en estos.
ggplot() – Para controlar de manera "granular" todo lo de nuestros gráficos.

Más info de qplot https://ggplot2.tidyverse.org/reference/qplot.html

Vamos a empezar, como siempre, instalando el comando

install.packages("ggplot2", repos = "http://cran.us.r-project.org", dependencies = TRUE)
## 
## The downloaded binary packages are in
##  /var/folders/fr/mw1x21js54367mjdhqsjfwqm0000gn/T//RtmpbBZdNP/downloaded_packages
library(ggplot2)

Univariado

Podemos hacer histogramas y gráficos de densidad El comando tiene la siguiente forma:

  • qplot (VAR, data = NombreDataframe, geom="histogram")
  • qplot(Homicidios, data = Excel_2016_IMCO, geom = "histogram")
    ## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

    qplot(Homicidios, data = Excel_2016_IMCO, geom = "histogram", binwidth = nclass.Sturges(Excel_2016_IMCO$Homicidios))

  • qplot (VAR, data = NombreDataframe, geom="density")
  • qplot(Homicidios, data = Excel_2016_IMCO, geom = "density")

    También podemos guardar nuestros gráficos en un objeto:

    q<- qplot(Homicidios, data = Excel_2016_IMCO, geom = "density")

    Theme Assist Addins

    Existe un add-in - es decir un complemento - para que podamos modificar más fácilmente los gráficos que hacemos con ggplot. Lo tenemos que instalar. Así como hemos instalado nuestros otras paqueterías.

    install.packages("ggThemeAssist", repos = "http://cran.us.r-project.org", dependencies = TRUE)
    ## 
    ## The downloaded binary packages are in
    ##  /var/folders/fr/mw1x21js54367mjdhqsjfwqm0000gn/T//RtmpbBZdNP/downloaded_packages
    library(ggThemeAssist)

    Para utilizarlo, tenemos que nombrar el objeto que queremos editar (por eso aprendimos a guardarlo en un objeto anteriormente). Lo escribimos. Lo seleccionamos y buscamos el complemento en la pestaña "Addins"

    image