Dati Measures

Argomenti: diagramma tridimensionale; matrice dei diagrammi di dispersione; facce di Chernoff; stelle

I dati measures sono \(n=20\) osservazioni su \(p=4\) variabili:

  • chest: misura petto
  • waist : misura vita
  • hips : misura fianchi
  • gender : genere (male o female)

Importiamo i dati measures.

rm(list=ls())
# i dati si trovano sezione "dati" della pagina web del corso:
# potete scaricarli cliccando il tasto destro "Save as"
# oppure usare il loro URL (Uniform Resource Locator)
url <- "https://raw.githubusercontent.com/aldosolari/AE/master/docs/dati/measure.csv"
measure <- read.csv(url)
chest waist hips gender
34 30 32 male
37 32 37 male
38 30 36 male
36 33 39 male
38 29 33 male
43 32 38 male
  1. Costruire il diagramma tridimensionale per le variabili chest, waist e hips, utilizzando il comando cloud() che è disponibile nel pacchetto lattice:
library(lattice)
cloud(chest ~ waist + hips, data=measure)

  1. Costruire il diagramma tridimensionale colorando le unità statistiche con colori diversi a seconda del sesso.
cloud(chest ~ waist + hips, group=gender, data=measure)

Funzioni R più avanzate permettono di costruire un diagramma tridimensionale interattivo:

  1. Costruire la matrice dei diagrammi di dispersione colorando le unità statistiche con colori diversi a seconda del sesso, e commentare.
column.gender <- which(names(measure)=="gender")
plot(measure[,-column.gender], col=(measure$gender=="male")+1)

Facce di Chernoff

Herman Chernoff ha introdotto una tecnica di visualizzazione per illustrare le tendenze nei dati multidimensionali. Questo metodo consiste nel visualizzare i dati multidimensionali a forma di volto umano; i diversi valori dei dati sono abbinati alle caratteristiche del volto, per esempio la larghezza della faccia, il livello delle orecchie, la lunghezza o la curvatura della bocca, la lunghezza del naso, ecc. L’idea che sta dietro all’uso delle facce è che le persone riconoscono i volti e notano piccoli cambiamenti senza difficoltà.

  1. Costruire le facce di Chernoff corrispondenti ai 20 individui escludendo la variabile gender utilizzando il comando faces() presente nel pacchetto TeachingDemos:
library("TeachingDemos")
faces(measure[,-column.gender], scale=TRUE) #scale=TRUE standardizza i dati

Stelle

Questa rappresentazione grafica consiste di una sequenza di raggi che hanno origine da un centro e formano angoli uguali tra loro; ogni raggio rappresenta una delle variabili. La distanza dal centro del punto marcato sul raggio è proporzionale al valore della variabile rispetto al valore massimo raggiungibile. I punti sui raggi vengono congiunti con segmenti, così che il grafico ha la forma di una stella o di una ragnatela.

  1. Rappresentare gli individui con le stelle utilizzando il comando stars(), aggiungendo la legenda con l’argomento key.loc = c(12,10).
stars(measure[,-column.gender], scale=TRUE, 
      key.loc = c(12, 10)) # per posizionare la legenda alle coordinate (x,y)

Dati Quakes

Argomento: diagramma di dispersione condizionato

Il data.frame quakes è presente nel pacchetto dataset. Si tratta di 1000 osservazioni misurate su 5 variabili:

  • lat Latitude of event
  • long Longitude
  • depth Depth (km)
  • mag Richter Magnitude
  • stations Number of stations reporting

Il diagramma di dispersione per latitudine e longitudine dei terremoti, utilizzando il simbolo . per indicare le osservazioni, è dato da:

data("quakes")
plot(lat ~ long, quakes, pch=".")

Possiamo visualizzare questi dati con riferimento alla mappa geografica

oppure visualizzare i punti con un diagramma tridimensionale (latitudine, logitudine, profondità) colorando i punti per magnitudine del terremoto:

Proviamo a costruire il diagramma di dispersione di latitudine e longitudine condizionato a 5 intervallo di profondità disgiunti (ottenendoli con il comando co.intervals()).

intervalli <- co.intervals(quakes$depth, number=5, overlap=0)
intervalli
      [,1]  [,2]
[1,]  39.5  80.5
[2,]  79.5 186.5
[3,] 185.5 397.5
[4,] 396.5 562.5
[5,] 562.5 680.5
coplot(lat ~ long | depth, data = quakes, given.v = intervalli, rows = 1)