Joshua Kunst
Escuchar lo que los datos nos hablan
Es un conjunto de técnicas cuya finalidad es entregar un entendimiento básico de los datos y de las relaciones entre las variables.
En general no existen pasos a seguir pues depende mucho de la naturaleza/estructura los datos
Son indicadores (generalmente un número) obtenidos de los datos que resumen información y nos hablan de alguna característica de la distribución de la variable.
Nos señalan el valor en torno al cual se concentran los datos. Los mas usado son:
datos <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
# media (promedio)
mean(datos)
## [1] 5.5
# mediana
median(datos)
## [1] 5.5
datos <- c(0 ,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100)
# media (promedio)
mean(datos)
## [1] 12.91667
# mediana
median(datos)
## [1] 5.5
Lo sucedido anteriormente se conoce como a la sensibilidad que posee la media en presencia de datos extremos.
La mediana se dice que es robusta en presencia de outliers.
Son valores que nos describen la dispersión de los datos. Es decir, que tan concentrados están. Los mas usados son:
datos1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
datos2 <- c(0, 1, 1, 1, 1, 10, 10, 10, 10, 11)
mean(datos1)
## [1] 5.5
mean(datos2)
## [1] 5.5
median(datos1)
## [1] 5.5
median(datos2)
## [1] 5.5
datos1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
datos2 <- c(0, 1, 1, 1, 1, 10, 10, 10, 10, 11)
sd(datos1)
## [1] 3.02765
sd(datos2)
## [1] 4.972145
max(datos1) - min(datos1)
## [1] 9
max(datos2) - min(datos2)
## [1] 11
Para variables continuas se puede obtener la correlación que indica el grado de asociación lineal entre dos variables
v1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
v2 <- c(5, 7, 8, 10, 13, 15, 14, 18, 19, 20)
v3 <- c(10, -10, 5, -4, 15, -13, 0, 1, 3, -4)
cor(v1, v2)
## [1] 0.9874543
cor(v1, v3)
## [1] -0.1521236
Se refiere a la representación gráfica de los datos codificando la información o atributos como: posición, tamaño, formas, colores
x1 | x2 | x3 | x4 | y1 | y2 | y3 | y4 |
---|---|---|---|---|---|---|---|
10 | 10 | 10 | 8 | 8.04 | 9.14 | 7.46 | 6.58 |
8 | 8 | 8 | 8 | 6.95 | 8.14 | 6.77 | 5.76 |
13 | 13 | 13 | 8 | 7.58 | 8.74 | 12.74 | 7.71 |
9 | 9 | 9 | 8 | 8.81 | 8.77 | 7.11 | 8.84 |
11 | 11 | 11 | 8 | 8.33 | 9.26 | 7.81 | 8.47 |
14 | 14 | 14 | 8 | 9.96 | 8.10 | 8.84 | 7.04 |
6 | 6 | 6 | 8 | 7.24 | 6.13 | 6.08 | 5.25 |
4 | 4 | 4 | 19 | 4.26 | 3.10 | 5.39 | 12.50 |
12 | 12 | 12 | 8 | 10.84 | 9.13 | 8.15 | 5.56 |
7 | 7 | 7 | 8 | 4.82 | 7.26 | 6.42 | 7.91 |
5 | 5 | 5 | 8 | 5.68 | 4.74 | 5.73 | 6.89 |
data(anscombe)
summary(anscombe)
## x1 x2 x3 x4
## Min. : 4.0 Min. : 4.0 Min. : 4.0 Min. : 8
## 1st Qu.: 6.5 1st Qu.: 6.5 1st Qu.: 6.5 1st Qu.: 8
## Median : 9.0 Median : 9.0 Median : 9.0 Median : 8
## Mean : 9.0 Mean : 9.0 Mean : 9.0 Mean : 9
## 3rd Qu.:11.5 3rd Qu.:11.5 3rd Qu.:11.5 3rd Qu.: 8
## Max. :14.0 Max. :14.0 Max. :14.0 Max. :19
## y1 y2 y3 y4
## Min. : 4.260 Min. :3.100 Min. : 5.39 Min. : 5.250
## 1st Qu.: 6.315 1st Qu.:6.695 1st Qu.: 6.25 1st Qu.: 6.170
## Median : 7.580 Median :8.140 Median : 7.11 Median : 7.040
## Mean : 7.501 Mean :7.501 Mean : 7.50 Mean : 7.501
## 3rd Qu.: 8.570 3rd Qu.:8.950 3rd Qu.: 7.98 3rd Qu.: 8.190
## Max. :10.840 Max. :9.260 Max. :12.74 Max. :12.500
var(anscombe$x1)
## [1] 11
var(anscombe$x2)
## [1] 11
var(anscombe$y2)
## [1] 4.127629
var(anscombe$y4)
## [1] 4.123249
cor(anscombe$x1, anscombe$y1)
## [1] 0.8164205
cor(anscombe$x2, anscombe$y2)
## [1] 0.8162365
cor(anscombe$x3, anscombe$y3)
## [1] 0.8162867
cor(anscombe$x4, anscombe$y4)
## [1] 0.8165214
Mostraremos visualizaciones que usualmente destancan en el procedimiento exploratorio por ser de fácil lectura y así obtener un aprendizaje rápido de los datos.
Para los siguiente gráficos utilzaremos una tabla que describe el consumo y características de ciertos vehículos provenientes de http://fueleconomy.gov.
library(ggplot2)
mpg
## Source: local data frame [100 x 12]
##
## manufacturer model displ year cyl trans drv cty hwy
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int>
## 1 audi a4 1.8 1999 4 auto(l5) f 18 29
## 2 audi a4 1.8 1999 4 manual(m5) f 21 29
## 3 audi a4 2.0 2008 4 manual(m6) f 20 31
## 4 audi a4 2.0 2008 4 auto(av) f 21 30
## 5 audi a4 2.8 1999 6 auto(l5) f 16 26
## 6 audi a4 2.8 1999 6 manual(m5) f 18 26
## 7 audi a4 3.1 2008 6 auto(av) f 18 27
## 8 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25
## 9 audi a4 quattro 2.0 2008 4 auto(s6) 4 19 27
## 10 audi a4 quattro 2.8 1999 6 auto(l5) 4 15 25
## .. ... ... ... ... ... ... ... ... ...
## Variables not shown: fl <chr>, class <chr>, trans2 <chr>.
Gráfico para variables cualitativas o cuantitativas discretas con pocas categorías, representando en barra la cantidad de casos por categoría. Facilita.
clases <- mpg$class
freq <- table(clases)
freq
## clases
## compact midsize other pickup subcompact suv
## 18 14 13 10 17 28
barplot(freq)
Similar al de barras. Muy popular pero altamente NO recomendado.
marca <- mpg$manufacturer
freq <- table(marca)
freq
## marca
## audi chevrolet dodge ford honda hyundai
## 14 15 18 14 7 5
## jeep land rover nissan pontiac subaru toyota
## 1 3 7 2 4 5
## volkswagen
## 5
pie(freq)
Comparemos, discutamos.
Representación para variables continuas en forma de barras donde cada barra muestra la cantidad de obseraciones que caen en cada intervalo definido por la misma (barra).
millasgalon <- mpg$cty
summary(millasgalon)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 9.00 14.00 16.00 16.91 19.00 35.00
hist(millasgalon)
Gráfico que muestra la posición de los máximos, mínimos, y cuartiles de la variable:
millasgalon <- mpg$cty
boxplot(millasgalon, horizontal = TRUE)
millasgalon <- mpg$cty
clases <- mpg$class
boxplot(millasgalon ~ clases, horizontal = TRUE)
Diagrama de puntos relacionando dos variables continuas en un plano.
millasgalon <- mpg$cty
cilindrada <- mpg$displ
plot(millasgalon, cilindrada)
Diagrama que permite visualizar una característca (media, minimo, suma) de una variable continua en jerarquías (dos o más variables categóricas).
Permite utilizar color para agregar otra información
library(treemap)
treemap(mpg, c("class", "model"), vSize = "cyl", fun.aggregate = "mean")
Permite visualizar data multidimensional. Cada línea representa una observación. cada observacion a través de cada variable
Su principal característica es visualizar data multidimensional.
http://bl.ocks.org/syntagmatic/raw/3150059/
library(MASS)
# seleccionamos columnas con numers
mpgnum <- mpg[, c(3, 5, 8, 9) ]
head(mpgnum, 3)
## Source: local data frame [3 x 4]
##
## displ cyl cty hwy
## <dbl> <int> <int> <int>
## 1 1.8 4 18 29
## 2 1.8 4 21 29
## 3 2.0 4 20 31
parcoord(mpgnum, var.label = TRUE)
# existen mejores implementaciones
El Data wrangling
se refiere a los pasos necesarios para obtener datos ordenados/bien definidos a partir de datos brutos.
Las funciones más utilizadas corresponde a las siguientes accciones:
filter
.arrange
select
mutate
summarise
por grupos group_by
join
filter
permite selccionar subconjuto de filas. Primer argumento son los datos, seguido por expressiones para filtras
library(dplyr)
filter(mpg, manufacturer == "ford")
## Source: local data frame [14 x 12]
##
## manufacturer model displ year cyl trans drv cty
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int>
## 1 ford expedition 2wd 4.6 1999 8 auto(l4) r 11
## 2 ford expedition 2wd 5.4 1999 8 auto(l4) r 11
## 3 ford expedition 2wd 5.4 2008 8 auto(l6) r 12
## 4 ford explorer 4wd 4.0 1999 6 auto(l5) 4 14
## 5 ford explorer 4wd 4.0 1999 6 manual(m5) 4 15
## 6 ford explorer 4wd 4.0 2008 6 auto(l5) 4 13
## 7 ford explorer 4wd 4.6 2008 8 auto(l6) 4 13
## 8 ford explorer 4wd 5.0 1999 8 auto(l4) 4 13
## 9 ford f150 pickup 4wd 4.2 1999 6 auto(l4) 4 14
## 10 ford f150 pickup 4wd 5.4 2008 8 auto(l4) 4 13
## 11 ford mustang 3.8 1999 6 manual(m5) r 18
## 12 ford mustang 4.0 2008 6 manual(m5) r 17
## 13 ford mustang 4.6 1999 8 auto(l4) r 15
## 14 ford mustang 5.4 2008 8 manual(m6) r 14
## Variables not shown: hwy <int>, fl <chr>, class <chr>, trans2 <chr>.
Podemos poner más de un criterio:
filter(mpg, year > 2000, drv == "r")
## Source: local data frame [9 x 12]
##
## manufacturer model displ year cyl trans drv cty
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int>
## 1 chevrolet c1500 suburban 2wd 5.3 2008 8 auto(l4) r 14
## 2 chevrolet c1500 suburban 2wd 5.3 2008 8 auto(l4) r 11
## 3 chevrolet c1500 suburban 2wd 6.0 2008 8 auto(l4) r 12
## 4 chevrolet corvette 6.2 2008 8 manual(m6) r 16
## 5 chevrolet corvette 6.2 2008 8 auto(s6) r 15
## 6 chevrolet corvette 7.0 2008 8 manual(m6) r 15
## 7 ford expedition 2wd 5.4 2008 8 auto(l6) r 12
## 8 ford mustang 4.0 2008 6 manual(m5) r 17
## 9 ford mustang 5.4 2008 8 manual(m6) r 14
## Variables not shown: hwy <int>, fl <chr>, class <chr>, trans2 <chr>.
arrange
permite ordenar las filas de acuerdo a columnas
arrange(mpg, displ)
## Source: local data frame [100 x 12]
##
## manufacturer model displ year cyl trans drv cty hwy
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int>
## 1 honda civic 1.6 1999 4 manual(m5) f 28 33
## 2 honda civic 1.6 1999 4 auto(l4) f 24 32
## 3 honda civic 1.6 1999 4 manual(m5) f 25 32
## 4 honda civic 1.6 1999 4 manual(m5) f 23 29
## 5 audi a4 1.8 1999 4 auto(l5) f 18 29
## 6 audi a4 1.8 1999 4 manual(m5) f 21 29
## 7 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25
## 8 honda civic 1.8 2008 4 manual(m5) f 26 34
## 9 honda civic 1.8 2008 4 auto(l5) f 25 36
## 10 honda civic 1.8 2008 4 auto(l5) f 24 36
## .. ... ... ... ... ... ... ... ... ...
## Variables not shown: fl <chr>, class <chr>, trans2 <chr>.
select
ayuda a seleccionar determinadas columnas de un data frame
library(dplyr)
select(mpg, year, class, fl)
## Source: local data frame [100 x 3]
##
## year class fl
## <int> <chr> <chr>
## 1 1999 compact p
## 2 1999 compact p
## 3 2008 compact p
## 4 2008 compact p
## 5 1999 compact p
## 6 1999 compact p
## 7 2008 compact p
## 8 1999 compact p
## 9 2008 compact p
## 10 1999 compact p
## .. ... ... ...
mutate
permite trasnformar/combiar columas en otras nuevas
mpg2 <- select(mpg, cty, hwy)
mutate(mpg2, comb = cty + hwy)
## Source: local data frame [100 x 3]
##
## cty hwy comb
## <int> <int> <int>
## 1 18 29 47
## 2 21 29 50
## 3 20 31 51
## 4 21 30 51
## 5 16 26 42
## 6 18 26 44
## 7 18 27 45
## 8 16 25 41
## 9 19 27 46
## 10 15 25 40
## .. ... ... ...
Podemos crear más de una columna a la vez
mutate(mpg2,
comb = cty + hwy,
cty2 = 2*cty)
## Source: local data frame [100 x 4]
##
## cty hwy comb cty2
## <int> <int> <int> <dbl>
## 1 18 29 47 36
## 2 21 29 50 42
## 3 20 31 51 40
## 4 21 30 51 42
## 5 16 26 42 32
## 6 18 26 44 36
## 7 18 27 45 36
## 8 16 25 41 32
## 9 19 27 46 38
## 10 15 25 40 30
## .. ... ... ... ...
summarise
se utiliza junto con group_by
mpgg <- group_by(mpg, class)
summarise(mpgg, meancty = mean(cty))
## Source: local data frame [6 x 2]
##
## class meancty
## <chr> <dbl>
## 1 compact 19.61111
## 2 midsize 18.71429
## 3 other 15.61538
## 4 pickup 12.90000
## 5 subcompact 22.11765
## 6 suv 13.14286
summarise
se utiliza junto con group_by
summarise(mpgg, meancty = mean(cty), n = n())
## Source: local data frame [6 x 3]
##
## class meancty n
## <chr> <dbl> <int>
## 1 compact 19.61111 18
## 2 midsize 18.71429 14
## 3 other 15.61538 13
## 4 pickup 12.90000 10
## 5 subcompact 22.11765 17
## 6 suv 13.14286 28
left_join
y sus similares ayudan a juntar dos data frames a través de una llave
library(nycflights13)
data("flights")
data("airlines")
head(flights)
## Source: local data frame [6 x 19]
##
## year month day dep_time sched_dep_time dep_delay arr_time
## <int> <int> <int> <int> <int> <dbl> <int>
## 1 2013 1 1 517 515 2 830
## 2 2013 1 1 533 529 4 850
## 3 2013 1 1 542 540 2 923
## 4 2013 1 1 544 545 -1 1004
## 5 2013 1 1 554 600 -6 812
## 6 2013 1 1 554 558 -4 740
## Variables not shown: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
## flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
## distance <dbl>, hour <dbl>, minute <dbl>, time_hour <time>.
head(airlines)
## Source: local data frame [6 x 2]
##
## carrier name
## <chr> <chr>
## 1 9E Endeavor Air Inc.
## 2 AA American Airlines Inc.
## 3 AS Alaska Airlines Inc.
## 4 B6 JetBlue Airways
## 5 DL Delta Air Lines Inc.
## 6 EV ExpressJet Airlines Inc.
f1 <- select(flights, year, month, day, carrier)
head(f1)
## Source: local data frame [6 x 4]
##
## year month day carrier
## <int> <int> <int> <chr>
## 1 2013 1 1 UA
## 2 2013 1 1 UA
## 3 2013 1 1 AA
## 4 2013 1 1 B6
## 5 2013 1 1 DL
## 6 2013 1 1 UA
left_join(f1, airlines, by = "carrier")
## Source: local data frame [336,776 x 5]
##
## year month day carrier name
## <int> <int> <int> <chr> <chr>
## 1 2013 1 1 UA United Air Lines Inc.
## 2 2013 1 1 UA United Air Lines Inc.
## 3 2013 1 1 AA American Airlines Inc.
## 4 2013 1 1 B6 JetBlue Airways
## 5 2013 1 1 DL Delta Air Lines Inc.
## 6 2013 1 1 UA United Air Lines Inc.
## 7 2013 1 1 B6 JetBlue Airways
## 8 2013 1 1 EV ExpressJet Airlines Inc.
## 9 2013 1 1 B6 JetBlue Airways
## 10 2013 1 1 AA American Airlines Inc.
## .. ... ... ... ... ...
flights
flights
install.packages("nycflights13")
library(nycflights13)
data(package = "nycflights13")
airlines Airline names. airports Airport metadata flights Flights data planes Plane metadata. weather Hourly weather data