Big Data Analytics - Grafici e grafici
Il primo approccio all'analisi dei dati è analizzarli visivamente. Gli obiettivi per fare ciò sono normalmente trovare relazioni tra variabili e descrizioni univariate delle variabili. Possiamo dividere queste strategie come:
- Analisi invariate
- Analisi multivariata
Metodi grafici univariati
Univariateè un termine statistico. In pratica, significa che vogliamo analizzare una variabile indipendentemente dal resto dei dati. Le trame che consentono di farlo in modo efficiente sono:
Box-Plots
I box-plot vengono normalmente utilizzati per confrontare le distribuzioni. È un ottimo modo per controllare visivamente se ci sono differenze tra le distribuzioni. Possiamo vedere se ci sono differenze tra il prezzo dei diamanti per diversi tagli.
# We will be using the ggplot2 library for plotting
library(ggplot2)
data("diamonds")
# We will be using the diamonds dataset to analyze distributions of numeric variables
head(diamonds)
# carat cut color clarity depth table price x y z
# 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
# 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
# 3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
# 4 0.29 Premium I VS2 62.4 58 334 4.20 4.23 2.63
# 5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75
# 6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48
### Box-Plots
p = ggplot(diamonds, aes(x = cut, y = price, fill = cut)) +
geom_box-plot() +
theme_bw()
print(p)
Possiamo vedere nella trama ci sono differenze nella distribuzione del prezzo dei diamanti in diversi tipi di taglio.
Istogrammi
source('01_box_plots.R')
# We can plot histograms for each level of the cut factor variable using
facet_grid
p = ggplot(diamonds, aes(x = price, fill = cut)) +
geom_histogram() +
facet_grid(cut ~ .) +
theme_bw()
p
# the previous plot doesn’t allow to visuallize correctly the data because of
the differences in scale
# we can turn this off using the scales argument of facet_grid
p = ggplot(diamonds, aes(x = price, fill = cut)) +
geom_histogram() +
facet_grid(cut ~ ., scales = 'free') +
theme_bw()
p
png('02_histogram_diamonds_cut.png')
print(p)
dev.off()
L'output del codice precedente sarà il seguente:
Metodi grafici multivariati
I metodi grafici multivariati nell'analisi esplorativa dei dati hanno l'obiettivo di trovare relazioni tra variabili diverse. Esistono due modi per ottenere ciò che vengono comunemente utilizzati: tracciare una matrice di correlazione di variabili numeriche o semplicemente tracciare i dati grezzi come matrice di grafici a dispersione.
Per dimostrarlo, useremo il set di dati dei diamanti. Per seguire il codice, apri lo scriptbda/part2/charts/03_multivariate_analysis.R.
library(ggplot2)
data(diamonds)
# Correlation matrix plots
keep_vars = c('carat', 'depth', 'price', 'table')
df = diamonds[, keep_vars]
# compute the correlation matrix
M_cor = cor(df)
# carat depth price table
# carat 1.00000000 0.02822431 0.9215913 0.1816175
# depth 0.02822431 1.00000000 -0.0106474 -0.2957785
# price 0.92159130 -0.01064740 1.0000000 0.1271339
# table 0.18161755 -0.29577852 0.1271339 1.0000000
# plots
heat-map(M_cor)
Il codice produrrà il seguente output:
Questo è un riassunto, ci dice che c'è una forte correlazione tra prezzo e cursore, e non molto tra le altre variabili.
Una matrice di correlazione può essere utile quando abbiamo un gran numero di variabili, nel qual caso tracciare i dati grezzi non sarebbe pratico. Come accennato, è possibile visualizzare i dati grezzi anche -
library(GGally)
ggpairs(df)
Possiamo vedere nel grafico che i risultati visualizzati nella mappa termica sono confermati, c'è una correlazione 0.922 tra le variabili prezzo e carato.
È possibile visualizzare questa relazione nello scatterplot prezzo-carato situato nell'indice (3, 1) della matrice del grafico a dispersione.