Big Data Analytics: visualización de datos

Para comprender los datos, a menudo es útil visualizarlos. Normalmente, en las aplicaciones de Big Data, el interés radica en encontrar información en lugar de simplemente en crear hermosos gráficos. Los siguientes son ejemplos de diferentes enfoques para comprender los datos mediante gráficos.

Para empezar a analizar los datos de los vuelos, podemos empezar por comprobar si existen correlaciones entre las variables numéricas. Este código también está disponible enbda/part1/data_visualization/data_visualization.R archivo.

# Install the package corrplot by running
install.packages('corrplot')  

# then load the library 
library(corrplot)  

# Load the following libraries  
library(nycflights13) 
library(ggplot2) 
library(data.table) 
library(reshape2)  

# We will continue working with the flights data 
DT <- as.data.table(flights)  
head(DT) # take a look  

# We select the numeric variables after inspecting the first rows. 
numeric_variables = c('dep_time', 'dep_delay',  
   'arr_time', 'arr_delay', 'air_time', 'distance')

# Select numeric variables from the DT data.table 
dt_num = DT[, numeric_variables, with = FALSE]  

# Compute the correlation matrix of dt_num 
cor_mat = cor(dt_num, use = "complete.obs")  

print(cor_mat) 
### Here is the correlation matrix 
#              dep_time   dep_delay   arr_time   arr_delay    air_time    distance 
# dep_time   1.00000000  0.25961272 0.66250900  0.23230573 -0.01461948 -0.01413373 
# dep_delay  0.25961272  1.00000000 0.02942101  0.91480276 -0.02240508 -0.02168090 
# arr_time   0.66250900  0.02942101 1.00000000  0.02448214  0.05429603  0.04718917 
# arr_delay  0.23230573  0.91480276 0.02448214  1.00000000 -0.03529709 -0.06186776 
# air_time  -0.01461948 -0.02240508 0.05429603 -0.03529709  1.00000000  0.99064965 
# distance  -0.01413373 -0.02168090 0.04718917 -0.06186776  0.99064965  1.00000000  

# We can display it visually to get a better understanding of the data 
corrplot.mixed(cor_mat, lower = "circle", upper = "ellipse")  

# save it to disk 
png('corrplot.png') 
print(corrplot.mixed(cor_mat, lower = "circle", upper = "ellipse")) 
dev.off()

Este código genera la siguiente visualización de matriz de correlación:

Podemos ver en el gráfico que existe una fuerte correlación entre algunas de las variables del conjunto de datos. Por ejemplo, el retraso en la llegada y el retraso en la salida parecen estar muy correlacionados. Podemos ver esto porque la elipse muestra una relación casi lineal entre ambas variables, sin embargo, no es sencillo encontrar causalidad a partir de este resultado.

No podemos decir que como dos variables están correlacionadas, una tiene un efecto sobre la otra. También encontramos en el gráfico una fuerte correlación entre el tiempo de aire y la distancia, lo cual es bastante razonable de esperar ya que a mayor distancia, el tiempo de vuelo debería crecer.

También podemos hacer un análisis univariado de los datos. Una forma simple y efectiva de visualizar distribuciones esbox-plots. El siguiente código demuestra cómo producir diagramas de caja y gráficos de trellis usando la biblioteca ggplot2. Este código también está disponible enbda/part1/data_visualization/boxplots.R archivo.

source('data_visualization.R') 
### Analyzing Distributions using box-plots  
# The following shows the distance as a function of the carrier 

p = ggplot(DT, aes(x = carrier, y = distance, fill = carrier)) + # Define the carrier 
   in the x axis and distance in the y axis 
   geom_box-plot() + # Use the box-plot geom 
   theme_bw() + # Leave a white background - More in line with tufte's 
      principles than the default 
   guides(fill = FALSE) + # Remove legend 
   labs(list(title = 'Distance as a function of carrier', # Add labels 
      x = 'Carrier', y = 'Distance')) 
p   
# Save to disk 
png(‘boxplot_carrier.png’) 
print(p) 
dev.off()   

# Let's add now another variable, the month of each flight 
# We will be using facet_wrap for this 
p = ggplot(DT, aes(carrier, distance, fill = carrier)) + 
   geom_box-plot() + 
   theme_bw() + 
   guides(fill = FALSE) +  
   facet_wrap(~month) + # This creates the trellis plot with the by month variable
   labs(list(title = 'Distance as a function of carrier by month', 
      x = 'Carrier', y = 'Distance')) 
p   
# The plot shows there aren't clear differences between distance in different months  

# Save to disk 
png('boxplot_carrier_by_month.png') 
print(p) 
dev.off()