Big Data Analytics - Visualisation des données

Afin de comprendre les données, il est souvent utile de les visualiser. Normalement, dans les applications Big Data, l'intérêt réside dans la recherche d'informations plutôt que dans la création de belles parcelles. Voici des exemples de différentes approches pour comprendre les données à l'aide de graphiques.

Pour commencer à analyser les données de vols, nous pouvons commencer par vérifier s'il existe des corrélations entre les variables numériques. Ce code est également disponible dansbda/part1/data_visualization/data_visualization.R fichier.

# 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()

Ce code génère la visualisation de matrice de corrélation suivante -

Nous pouvons voir dans le graphique qu'il existe une forte corrélation entre certaines des variables de l'ensemble de données. Par exemple, le retard à l'arrivée et le retard au départ semblent être fortement corrélés. Nous pouvons le voir car l'ellipse montre une relation presque linéaire entre les deux variables, cependant, il n'est pas simple de trouver une causalité à partir de ce résultat.

On ne peut pas dire que comme deux variables sont corrélées, l'une a un effet sur l'autre. Nous trouvons également dans le graphique une forte corrélation entre le temps aérien et la distance, ce qui est assez raisonnable à prévoir car avec plus de distance, le temps de vol devrait augmenter.

Nous pouvons également faire une analyse univariée des données. Un moyen simple et efficace de visualiser les distributions estbox-plots. Le code suivant montre comment produire des boîtes à moustaches et des graphiques en treillis à l'aide de la bibliothèque ggplot2. Ce code est également disponible dansbda/part1/data_visualization/boxplots.R fichier.

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()