Qual è la migliore visualizzazione per le tabelle di contingenza?


22

Qual è la trama migliore, dal punto di vista statistico, per mostrare una tabella di contingenza , che viene generalmente analizzata dal test chi-quadrato? È un grafico a barre schivato, grafico a barre in pila, mappa di calore, grafico di contorno, grafico a dispersione jitterred, grafico a più linee o qualcos'altro? Uno dovrebbe mostrare valori assoluti o percentuali?

Modifica: O come suggerisce @forecaster nei commenti, la tabella dei numeri è essa stessa una trama semplice e dovrebbe essere sufficiente.


4
A volte la tabella dei dati è il miglior metodo di visualizzazione rispetto ai grafici. Le tabelle di emergenza sono un classico esempio di ciò.
previsioni

1
Punto importante, anche se non concordo sul fatto che sia sempre l'opzione migliore.
anche il

1
Ecco perché ho detto "a volte". Consiglierei, Stephen Few's Show me i numeri che ha un'intera sezione dedicata ai tavoli.
previsioni

1
beh, il metodo migliore dipende da cosa vuoi mostrare, quanto è grande la tabella, senza alcuni dettagli questo è ampio!
kjetil b halvorsen,

3
La maggior parte di stats.stackexchange.com/questions/56322/… sembra pertinente qui.
Nick Cox,

Risposte:


9

Non ci sarà una soluzione unica per tutti qui. Se hai una tabella molto semplice (ad es. ), probabilmente presentare la tabella è la cosa migliore. Se vuoi una figura reale, i grafici a mosaico (come suggerisce @xan) sono probabilmente un buon punto di partenza. Esistono altre opzioni analoghe ai grafici a mosaico, inclusi i grafici a setaccio, i grafici di associazione e i grafici a pressione dinamica (vedere la mia domanda qui: Alternativa ai grafici a setaccio / mosaico per le tabelle di contingenza ); Il libro di Michael Friendly, Visualizzazione dei dati categorici , sarebbe una buona risorsa (basata su SAS) per questo argomento e il pacchetto vcd è una buona risorsa per implementare quelle idee in R. 2×2

Poiché le tabelle hanno un numero maggiore di righe e colonne, tuttavia, queste diventano più difficili da usare, secondo me. Un diverso tipo di opzione di visualizzazione è eseguire / tracciare un'analisi della corrispondenza . Un'analisi della corrispondenza è analoga all'esecuzione di un'analisi dei componenti principali su entrambe le righe e le colonne della tabella di contingenza. Quindi entrambi vengono tracciati insieme con un biplot. Ecco un esempio basato su R usando i dati della risposta di @ xan:

library(ca)
tab = as.table(rbind(c(28, 4,  0, 56),
                     c(38, 5,  9, 10),
                     c( 6, 6, 14, 13) ))
names(dimnames(tab)) = c("activity", "period")
rownames(tab)        = c("feed", "social", "travel")
colnames(tab)        = c("morning", "noon", "afternoon", "evening")
tab
#         period
# activity morning noon afternoon evening
#   feed        28    4         0      56
#   social      38    5         9      10
#   travel       6    6        14      13
plot(ca(tab))

inserisci qui la descrizione dell'immagine

Per interpretare questo diagramma, più vicini sono i due punti dello stesso tipo, più simili sono quei due profili di riga / colonna. E più vicini sono due punti di tipi diversi, maggiore è la loro massa di probabilità nella cella che rappresenta la loro intersezione.

In R c'è il pacchetto ca ; questa vignetta ( pdf ) può anche essere utile.


Molto utile. Apparentemente fallisce con piccoli valori, ad esempio: tt = with (mtcars, table (factor (gear), factor (vs))); plot (ca (tt)); Errore in x [, fioco]: sottoscrizione fuori limite
rnso

Questo perché uno dei fattori (cioè, factor(vs)) ha solo due livelli; hai bisogno di almeno tre. Prova ttt = with(mtcars, table(factor(gear), factor(cyl))); plot(ca(ttt)).
gung - Ripristina Monica

Ottima visualizzazione delle relazioni tra diversi fattori.
rnso

Oppure puoi mostrare la tabella dopo aver riordinato le righe e le colonne nell'ordine dei punteggi dell'analisi della corrispondenza.
kjetil b halvorsen,

Idea interessante, @kjetilbhalvorsen. Non sono sicuro di come ottenerlo cadall'oggetto, quindi l'ho codificato da zero. A meno che non abbia fatto un errore, riordini le righe c(1,3,2)e le colonne c(4,1,3,2). Dopo averlo fatto, non sono sicuro di cosa dovrei vedere qui. Cos'hai in mente?
gung - Ripristina Monica

11

Diversi elementi visivi saranno migliori nell'evidenziare caratteristiche diverse, ma i grafici a mosaico funzionano bene per una visione generale (controllando per vedere se qualcosa si distingue). Forse è quello che intendevi per trama della barra schivata. Come la maggior parte delle opzioni, non sono simmetrici in quanto rappresentano le frequenze relative meglio in una dimensione rispetto all'altra. Una bella caratteristica è che sono rappresentate anche le frequenze marginali.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


Questo è buono. Sono rappresentati sia numeri che proporzioni. I numeri possono anche essere messi sulla trama. Se l'ordine dell'asse dell'asse x è organizzato, avrà un aspetto ancora migliore. Per schivata intendevo barplot comune con categorie affiancate, piuttosto che sovrapposte l'una sull'altra (vedere position = 'dodge' in questa pagina: r-bloggers.com/using-r-barplot-with-ggplot2 ).
anche il

1
+1 Questo design spesso funziona davvero molto bene per dati relativamente semplici ; al contrario, ho scoperto che diventa anche difficile pensare rapidamente a dati più complicati, nonostante molta enfasi nella letteratura sulla sua estensibilità a tabelle di contingenza di dimensione arbitraria. Tuttavia, nessun progetto funziona bene neanche in tali circostanze. Un piccolo punto di questo esempio è che sembra che tu abbia accettato l'ordine alfabetico predefinito "pomeriggio" ... "mezzogiorno" offerto dal tuo programma, mentre preservare l'ordine temporale sembra una scelta più naturale.
Nick Cox,

8

Sono d'accordo che la trama "migliore" non esiste indipendentemente dal set di dati, dai lettori e dallo scopo. Per due variabili misurate, i grafici a dispersione sono probabilmente il progetto che lascia tutti gli altri sulla sua scia, tranne per scopi specifici, ma nessun dato di mercato è evidente per i dati categorici.

Il mio obiettivo qui è solo quello di menzionare un metodo semplice, spesso riscoperto o reinventato, ma tuttavia spesso trascurato anche in monografie o libri di testo che trattano grafici statistici.

Esempio prima, che copre gli stessi dati pubblicati da xan:

inserisci qui la descrizione dell'immagine

Se si desidera un nome, come spesso accade , si tratta di un grafico a barre doppio (in questo caso). Non catalogherò altri termini qui, tranne per il fatto che più grafici a barre sono un'alternativa comune con un sapore simile. (La mia piccola obiezione al "grafico a barre multiple" è che "multiplo" non esclude i grafici a barre sovrapposti o affiancati molto comuni, mentre "twoway" per me implica più chiaramente un layout di riga e colonna, anche se a sua volta potrebbe fare degli esempi per chiarirlo.)

Vantaggi e svantaggi per questo tipo di trama sono anche semplici, ma ne spiegherò alcuni. Dato che adoro questo design (che risale almeno agli anni '30), altri potrebbero voler aggiungere critiche più acute.

+1. L'idea è facilmente comprensibile , anche da gruppi non tecnici. Le altezze delle barre o le lunghezze delle barre codificano le frequenze in questo esempio. In altri esempi, potrebbero codificare le percentuali calcolate in qualsiasi modo, residui, ecc.

+2. La struttura di riga e colonna corrisponde a quella di una tabella . Puoi anche aggiungere valori numerici. Quantità molto piccole e persino zeri impliciti sono chiaramente evidenti, il che non è sempre il caso di altri progetti (ad esempio grafici a barre sovrapposte, grafici a mosaico). L'etichettatura di righe e colonne è in genere più efficiente dell'aggiunta di una chiave o legenda, con il "avanti e indietro" mentale che richiede. Quindi questo design ibrida le idee di grafici e tabelle, il che sembra preoccupare alcuni lettori; al contrario, direi che le forti distinzioni tra figure e tabelle sono solo momenti storici, obsoleti ora che i ricercatori possono preparare i propri documenti e non devono fare affidamento su designer, compositori e tipografi.

+3. In linea di principio, le estensioni a progetti a tre o più livelli sono facili . Inserisci due o più variabili come variabili composte su uno o entrambi gli assi o dai un array di tali grafici. Naturalmente, più complicato è il design, più complicata è l'interpretazione.

+4. Il design consente chiaramente variabili ordinali su entrambi gli assi. L'ordine può essere espresso (ad es.) Mediante un'ombreggiatura appropriata, nonché l'ordine delle categorie su quell'asse. L'ordine delle categorie sugli assi può essere determinato dal loro significato, o meglio determinato dalle frequenze; L'ordine alfabetico in base alle etichette di testo può essere un valore predefinito, ma non dovrebbe mai essere l'unica scelta considerata.

-1. Essendo generale nella progettazione, la trama può essere meno efficiente nel mostrare determinati tipi di relazioni . In particolare, una trama a mosaico può rendere molto chiare le partenze dall'indipendenza. Al contrario, quando le relazioni tra variabili categoriche sono complicate o poco chiare, in genere nessun grafico è in grado di mostrare più di quel fatto debole.

-2. In un certo senso, il design è inefficiente nell'uso dello spazio lasciando spazio a ogni combinazione incrociata, indipendentemente dal fatto o dalla frequenza con cui si verifica. Questo è il vizio dello stesso principio considerato come una virtù. Il particolare design sopra le categorie di spazi equamente indipendentemente dalla loro frequenza; sacrificare che spesso sacrifica etichette marginali leggibili, che apprezzo molto. In questo esempio, le etichette di testo sembrano essere molto brevi, ma è tutt'altro che tipico.

Nota: i dati di xan sembrano solo essere inventati, quindi non proverò un'interpretazione più di quanto non venga tentato in altre risposte. Ma un po 'di saggezza casalinga merita qui l'ultima parola: il miglior design per te è quello che meglio trasmette a te e ai tuoi lettori la struttura di alcuni dati reali che ti interessano.

Altri esempi includono

Come puoi visualizzare la relazione tra 3 variabili categoriche?

Grafico per la relazione tra due variabili ordinali


1
+1 per un'altra opzione praticabile e alcune grandi discussioni. Permettetemi di porre una domanda sui diagrammi a barre a 2 vie / indicare un altro possibile aspetto negativo: esiste una "casella" non contrassegnata, ma chiaramente percepibile, all'interno della quale è possibile tracciare le barre. Quando la barra si avvicina alla parte superiore della scatola, raggiunge il 100%. Come viene determinato quel valore? (NB, le tabelle di contingenza sono sempre multinomiali in un certo senso, con un totale noto.) Rendere le somme della riga superiore della casella o le somme delle colonne promuoverà inferenze percettive diverse. (Non sembra che venga utilizzata la somma della tabella, poiché molte barre sarebbero troppo piccole per differenziarsi.)
gung - Ripristina Monica

1
@gung Grazie. Posso commentare il mio programma Stata, usato qui e nei miei esempi altrove nel CV. Il programma tabplotproviene da SSC. L'altezza delle barre è necessariamente una frazione dell'altezza della barra più alta o più lunga; lo spazio disponibile per questo è determinato da quante righe vengono mostrate. L'utente può ignorare la dimensione del gap predefinita, ma rischia quindi che le barre si tocchino o si nascondano a vicenda. Se le barre possono essere sia positive che negative, le cose non sono più facili. Immagino che lo stesso vincolo si morda con qualsiasi altro programma. In breve, le barre che non si toccano implicano spazi bianchi!
Nick Cox,

8

Per integrare le risposte di @ gung e @ xan, ecco un esempio di grafici a mosaico e di associazione che usano vcdin R.

> tab
        period
activity morning noon afternoon evening
  feed        28    4         0      56
  social      38    5         9      10
  travel       6    6        14      13

Per ottenere i grafici:

require(vcd)
mosaic(tab, shade=T, legend=T)
assoc(tab, shade=T, legend=T)

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Entrambe le partenze intuitivamente presenti dalle frequenze attese ... L'impostazione predefinita è il modello di mutua indipendenza , ma può essere modificata (ad es. In indipendenza comune se esiste una chiara variabile di risposta) tramite l' expectedargomento.

Guarda anche:

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.