lunedì 10 dicembre 2018

Grafici a barre (barplot) [1]

I grafici a barre (bar plot o barplotsono i più adatti a rappresentare i risultati dei conteggi. Riprendiamo i dati di Snedecor relativi ai decessi avvenuti in un gruppo di non fumatori e in un gruppo di fumatori di pipa [1], trasformandoli ora in percentuale:

Esito
Non_fumatori
Fumatori_di_pipa
Deceduti
11.0
13.4
Viventi
89.0
86.6

Questo script permette di generare due differenti grafici a barre per questi dati. Copiatelo e incollatelo nella Console di R e premete ↵ Invio:

# GRAFICI A BARRE AFFIANCATE
#
cells <- c(11.0,13.4,89.0,86.6) # genera l'array cells con i valori numerici contenuti nelle celle
rnames <- c("Deceduti", "Viventi") # genera l'array rnames con i nomi delle righe
cnames <- c("Non_fumatori", "Fumatori_di_pipa") # genera l'array cnames con i nomi delle colonne
mydata <- matrix(cells, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rnames, cnames)) # genera la matrice dati
#
mydata # mostra la matrice dati
t(mydata) # mostra la matrice dati trasposta
#
windows() # apre una nuova finestra
barplot(mydata,beside=TRUE, legend=TRUE, ylim=c(0,150), col=c("darkblue","red"), ylab="Frequenze osservate", xlab="", main="Grafico a barre matrice originale") # grafico a barre con la matrice originale
#
windows() # apre una nuova finestra
barplot(t(mydata),beside=TRUE, legend=TRUE, ylim=c(0,150), col=c("darkblue","red"), ylab="Frequenze osservate", xlab="", main="Grafico a barre matrice trasposta") # grafico a barre con la matrice trasposta
#

Nelle prime tre righe sono generati con la funzione c():
il vettore che contiene i quattro dati (che come si vede devono essere inseriti in sequenza leggendoli dalla tabella da sinistra a destra e dall'alto in basso) che sono salvati nell'oggetto cells;
il vettore che contiene i nomi delle righe, salvato nell'oggetto rnames;
il vettore che contiene i nomi delle colonne, salvato nell'oggetto cnames.

I tre vettori sono combinati a formare la matrice dei dati mediante la funzione matrix() che impiega gli argomenti che indicano:
l'oggetto/vettore contenente i dati (cells);
il numero di righe (nrow) e il numero di colonne (ncol) della matrice;
la modalità di riempimento della matrice, che deve essere riempita per righe (byrow=TRUE) quindi da sinistra a destra e dall'alto in basso;
i nomi da assegnare alle righe e alle colonne (dimnames=list(rnames, cnames)).

A questo punto per fare il punto della situazione sono mostrate sia la matrice dati mydata sia la sua matrice trasposta t(mydata) [2]:

> mydata # matrice dati
         Non_fumatori Fumatori_di_pipa
Deceduti           11             13.4
Viventi            89             86.6
> t(mydata) # matrice trasposta
                 Deceduti Viventi
Non_fumatori         11.0    89.0
Fumatori_di_pipa     13.4    86.6

Viene quindi aperta una nuova finestra con la funzione windows() e viene generato un primo grafico a barre con la funzione barplot() [3] impiegando questi argomenti:
per i dati viene impiegata la matrice dati originale mydata;
l'argomento beside=TRUE specifica che le barre sono affiancate e non sovrapposte in pila;
con l'argomento legend=TRUE viene generata una legenda;
con l'argomento ylim=c(0,150) sono impostati il valore minimo e il valore massimo per l'asse delle y;
→ con l'argomento col è impostato il colore delle barre.


Viene quindi aperta una nuova finestra con la funzione windows() una nuova finestra (attenzione al fatto che ogni nuova finestra grafica si sovrappone alla precedente, spostatela per visualizzarle entrambe) e viene generato con la funzione barplot() un secondo grafico a barre con gli stessi argomenti del precedente ma impiegando i dati della matrice trasposta t(mydata).


Riprendiamo ora i dati sui quali è stato effettuato in precedenza il test di McNemar [4]. Nella sperimentazione 250 pazienti sofferenti di artrite erano sottoposti al trattamento con il farmaco A e al trattamento con il farmaco B. Era stato poi rilevato il grado di soddisfazione di ciascuno di essi rispetto all'uno e all'altro trattamento:

Esito
Soddisfatto_da_A
Non_soddisfatto_da_A
Soddisfatto_da_B
150
20
Non_soddisfatto_da_B
30
50

In totale 150 soggetti si erano mostrati soddisfatti di entrambi i trattamenti, 50 avevano espresso insoddisfazione per entrambi, mente altri 50 si sono mostrati insoddisfatti 20 dell'uno e 30 dell'altro. In questo caso è inutile trasformare i dati in percentuali, in quanto le proporzioni non cambierebbero.

Questo script permette di generare per questi dati due differenti grafici a barre, il primo a barre affiancate e e il secondo a barre sovrapposte. Copiatelo e incollatelo nella Console di R e premete ↵ Invio:

# GRAFICI A BARRE AFFIANCATE E A BARRE SOVRAPPOSTE
#
cells <- c(150,20,30,50) # genera l'array cells con i valori numerici contenuti nelle celle
rnames <- c("Soddisfatto_da_B", "Non_soddisfatto_da_B") # genera l'array rnames con i nomi delle righe
cnames <- c("Soddisfatto_da_A", "Non_soddisfatto_da_A") # genera l'array cnames con i nomi delle colonne
mydata <- matrix(cells, nrow=2, ncol=2, byrow=TRUE, dimnames=list(rnames, cnames)) # genera la matrice dati
#
mydata # mostra la matrice dati
#
windows() # apre una nuova finestra
barplot(mydata,beside=TRUE, legend=TRUE, ylim=c(0,200), col=c("darkblue","red"), ylab="Frequenze osservate nel campione", xlab="", main="Soddisfazione in seguito al trattamento in 250 soggetti") # i risultati sono arricchiti con un grafico a barre
#
windows() # apre una nuova finestra
barplot(mydata,beside=FALSE,legend=TRUE, ylim=c(0,200), col=c("darkblue","red"), ylab="Frequenze osservate nel campione", xlab="", main="Soddisfazione in seguito al trattamento in 250 soggetti") # i risultati sono arricchiti con un grafico a barre
#

Qui a parte i diversi limiti ylim=c(0,200) per la scala dell'asse delle y non compare nulla di rilevante rispetto allo script precedente, se non l'argomento beside che nel primo grafico viene posto beside=TRUE per generare il grafico a barre affiancate


mentre nel secondo grafico viene posto beside=FALSE per generare un grafico a barre sovrapposte


Notare come queste rappresentazioni grafiche sono complementari all'analisi statistica. Nella seconda parte dei grafici a barre [5] sono riportati altri esempi utili con script che possono essere salvati per essere riadattati al bisogno.


----------


[2] Digitate help(t) nella Console di R per la documentazione della funzione t().

[3] Digitate help(barplot) nella Console di R per la documentazione della funzione barplot().

[4] Vedere il post Test di McNemar

[5] Vedere il post Grafici a barre (barplot) [2].



Nessun commento:

Posta un commento