Esplorare una matrice a trama sparsa per molte variabili


10

Sto analizzando un set di dati con molti parametri (diciamo 50-200) e sono interessato a guardare le relazioni tra le variabili (ad es. In termini di grafici a dispersione a 2 variabili o istogrammi 2d). Tuttavia, per questo numero di parametri sembra impossibile disegnare un array di grafici 200x200 (a meno che non lo stampi e appenda a una parete).

D'altra parte, fare solo una matrice di correlazione non fornisce tutte le informazioni sulle relazioni a 2 variabili.

Esiste un modo (libreria o flusso di lavoro) per esplorare le relazioni a 2 variabili per molte variabili?

Sono particolarmente interessato a mostrare i risultati ad altri (forse dopo alcuni processi di preelaborazione dei dati). Ad esempio qualcosa di interattivo in JavaScript, dove posso vedere una matrice a dispersione per campi selezionati da una matrice di correlazione.

Per matrice scatter-plot intendo qualcosa del genere:

inserisci qui la descrizione dell'immagine

(tratto dal blog di pandasplotting ; disponibile in Python / Pandas , R , D3.js , ecc.).


4
Non hai chiarito cosa stai cercando. Vuoi vedere il cloud, ogni punto dati? Vuoi vedere tutte le sfaccettature bivariate contemporaneamente ?
ttnphns,

@ttnphns Voglio vedere tutti i punti dati OPPURE in una forma aggregata (es. istogrammi 2D). Non ho bisogno di vedere tutte le cose una volta (dato che ha senso per <15 variabili, ma non 200). E sì, sono consapevole che la domanda è un po 'aperta. Una versione chiusa è "Esiste una libreria JS per mostrare grafici a dispersione e istogrammi quando il mouse passa sul rispettivo pixel in una matrice di correlazione? O dovrei scriverne uno? :)" Ne ho scritto uno più generale, come forse ci sono alcuni flussi di lavoro migliori per affrontare il problema.
Piotr Migdal,

È possibile organizzare la matrice di grafici a dispersione sotto forma di cubo di olap, in modo da visualizzare solo uno o più grafici alla volta e passare da uno all'altro. Sfortunatamente, non conosco un programma o un codice specifico per creare cubi grafici di olap.
ttnphns,

Risposte:


7

Esplorare le relazioni tra le variabili è abbastanza vago, ma due degli obiettivi più generali dell'esame di grafici a dispersione come questo immagino che lo siano;

  • Identificare i gruppi latenti sottostanti (di variabili o casi).
  • Identificare i valori anomali (nello spazio univariato, bivariato o multivariato).

Entrambi riducono i dati in riepiloghi più gestibili, ma hanno obiettivi diversi. Identificare i gruppi latenti in genere si riduce le dimensioni nei dati (ad esempio tramite PCA) e quindi si esplora se variabili o casi si raggruppano in questo spazio ridotto. Vedi ad esempio Friendly (2002) o Cook et al. (1995).

Identificare i valori anomali può significare adattare un modello e tracciare le deviazioni dal modello (ad es. Tracciare i residui da un modello di regressione) o ridurre i dati nei suoi componenti principali e evidenziare solo i punti che si discostano dal modello o dal corpo principale dei dati. Ad esempio i grafici a scatole in una o due dimensioni in genere mostrano solo singoli punti esterni alle cerniere (Wickham e Stryjewski, 2013). Tracciare i residui ha la bella proprietà di appiattire i grafici (Tukey, 1977), quindi ogni evidenza di relazioni nella nuvola di punti rimanente è "interessante". Questa domanda sul CV ha alcuni eccellenti suggerimenti sull'identificazione di valori anomali multivariati.

Un modo comune per esplorare SPLOM così grandi è quello di non tracciare tutti i singoli punti, ma un qualche tipo di sommario semplificato e quindi forse punti che si discostano in gran parte da questo sommario, ad esempio ellissi di confidenza, riassunti scagnostici (Wilkinson & Wills, 2008), bivariato grafici a scatole, grafici di contorno. Di seguito è riportato un esempio di trama di ellissi che definiscono la covarianza e sovrapposizione di un loess più fluido per descrivere l'associazione lineare.

Ellissi di corrgram
(fonte: statmethods.net )

In entrambi i casi, un grafico interattivo di successo con così tante variabili avrebbe probabilmente bisogno di un ordinamento intelligente (Wilkinson, 2005) e un modo semplice per filtrare le variabili (oltre alle funzionalità di spazzolatura / collegamento). Inoltre, qualsiasi set di dati realistico dovrebbe avere le capacità di trasformare l'asse (ad es. Tracciare i dati su scala logaritmica, trasformare i dati prendendo le radici, ecc.). Buona fortuna e non restare con una sola trama!


citazioni


1
Grazie! Il mio obiettivo è quello di esplorare i dati prima di eseguire PCA, poiché le variabili possono essere correlate in modo non lineare e richiedere il riscaling (o altre elaborazioni).
Piotr Migdal,

L'esempio corrgram ellisse + loess smoother dovrebbe comunque essere pertinente (o cambiare la covar. Ellisse con qualche altro poligono di misura come il diagramma a scatole bivariate) e potrebbe aiutare a identificare le associazioni non lineari. Una buona domanda di follow-up potrebbe essere se è possibile identificare associazioni non lineari dopo la riduzione dei dati tramite PCA (o qualcosa del genere).
Andy W,

1

Si potrebbe prendere in considerazione l'utilizzo dell'interfaccia luccicante dal pacchetto PairD3 R, che fornisce un modo per interagire con le matrici del diagramma a dispersione.

Un esempio con il set di dati dell'iride:

install.packages("pairsD3")
require("pairsD3")
shinypairs(iris)

Fonte: https://github.com/garthtarr/pairsD3

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.