Big Data Analytics - Datenvisualisierung

Um Daten zu verstehen, ist es oft nützlich, sie zu visualisieren. Normalerweise besteht das Interesse an Big-Data-Anwendungen darin, Erkenntnisse zu gewinnen und nicht nur schöne Diagramme zu erstellen. Im Folgenden finden Sie Beispiele für verschiedene Ansätze zum Verständnis von Daten mithilfe von Diagrammen.

Um mit der Analyse der Flugdaten zu beginnen, können wir zunächst prüfen, ob Korrelationen zwischen numerischen Variablen bestehen. Dieser Code ist auch in verfügbarbda/part1/data_visualization/data_visualization.R Datei.

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

Dieser Code generiert die folgende Korrelationsmatrix-Visualisierung:

Wir können in der Darstellung sehen, dass es eine starke Korrelation zwischen einigen Variablen im Datensatz gibt. Zum Beispiel scheinen Ankunfts- und Abflugverzögerung stark korreliert zu sein. Wir können dies sehen, weil die Ellipse eine fast lineare Beziehung zwischen beiden Variablen zeigt, es jedoch nicht einfach ist, die Ursache aus diesem Ergebnis zu finden.

Wir können nicht sagen, dass zwei Variablen miteinander korrelieren und dass sich eine auf die andere auswirkt. Außerdem finden wir in der Darstellung eine starke Korrelation zwischen Sendezeit und Entfernung, was ziemlich vernünftig zu erwarten ist, da mit zunehmender Entfernung die Flugzeit zunehmen sollte.

Wir können auch eine univariate Analyse der Daten durchführen. Eine einfache und effektive Möglichkeit, Verteilungen zu visualisieren, sindbox-plots. Der folgende Code zeigt, wie Box-Plots und Trellis-Diagramme mithilfe der ggplot2-Bibliothek erstellt werden. Dieser Code ist auch in verfügbarbda/part1/data_visualization/boxplots.R Datei.

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