Análise de Big Data - Visualização de Dados
Para entender os dados, geralmente é útil visualizá-los. Normalmente, em aplicativos de Big Data, o interesse reside em encontrar insights, em vez de apenas fazer gráficos bonitos. A seguir estão exemplos de diferentes abordagens para compreender os dados usando gráficos.
Para começar a analisar os dados dos voos, podemos começar verificando se existem correlações entre as variáveis numéricas. Este código também está disponível embda/part1/data_visualization/data_visualization.R Arquivo.
# 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 gera a seguinte visualização da matriz de correlação -
Podemos ver no gráfico que há uma forte correlação entre algumas das variáveis no conjunto de dados. Por exemplo, o atraso na chegada e o atraso na partida parecem estar altamente correlacionados. Podemos ver isso porque a elipse mostra uma relação quase linear entre as duas variáveis, no entanto, não é simples encontrar a causalidade a partir desse resultado.
Não podemos dizer que, como duas variáveis estão correlacionadas, uma tem efeito sobre a outra. Também encontramos no gráfico uma forte correlação entre o tempo de ar e a distância, o que é bastante razoável de se esperar, pois com mais distância, o tempo de vôo deve aumentar.
Também podemos fazer análises univariadas dos dados. Uma maneira simples e eficaz de visualizar as distribuições sãobox-plots. O código a seguir demonstra como produzir gráficos de caixa e gráficos de treliça usando a biblioteca ggplot2. Este código também está disponível embda/part1/data_visualization/boxplots.R Arquivo.
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()