In un esempio Campbell [1] riporta i dati di VEMS (misura
del
Volume
Espiratorio
Massimo
nel primo Secondo)
effettuate in
5 soggetti asmatici prima
(al tempo t0)
e dopo
(al tempo t1)
l'assunzione di un broncodilatatore, dati riportati in questa
tabella:
t0
|
t1
|
Differenza
|
1.5
|
1.7
|
-0.2
|
1.7
|
1.9
|
-0.2
|
2.1
|
2.2
|
-0.1
|
1.6
|
1.9
|
-0.3
|
2.4
|
2.4
|
0
|
In un caso come questo di dati appaiati può essere interessante integrare l'analisi statistica con
una rappresentazione grafica che, se da un lato è semplicemente la versione minimalista dei
grafici a linee, è in grado di
fornire un significativo valore aggiunto all'analisi
numerica.
La
definizione di grafici prima-dopo è giustificata dal fatto
che nel caso dei dati appaiati il disegno sperimentale tipicamente
prevede che sullo stesso caso oggetto di indagine sia
effettuata la stessa misura due volte, prima e dopo uno
specifico trattamento. In questo modo la differenza tra la
prima e la seconda misura è in linea di principio imputabile al solo
trattamento deliberatamente previsto dal disegno sperimentale.
Nel pacchetto CGPfunctions che impiegheremo, che è necessario scaricare dal CRAN, seguendo la concettualizzazione del tema ad opera di Edward Tufte [2] il grafico viene denominato slopegraph, ponendo in questo modo l'enfasi sul fatto che la grafica è particolarmente utile a evidenziare la pendenza (slope) della linea che unisce i punti, che nel nostro caso prima-dopo sono solamente due, ma che in realtà possono essere molti.
Nel pacchetto CGPfunctions che impiegheremo, che è necessario scaricare dal CRAN, seguendo la concettualizzazione del tema ad opera di Edward Tufte [2] il grafico viene denominato slopegraph, ponendo in questo modo l'enfasi sul fatto che la grafica è particolarmente utile a evidenziare la pendenza (slope) della linea che unisce i punti, che nel nostro caso prima-dopo sono solamente due, ma che in realtà possono essere molti.
Per
effettuare la rappresentazione grafica i dati devono essere
strutturati in modo differente da quello della tabella riportata da
Campbell sulla pagina di un libro [1], ma devono
essere invece strutturati nella forma più generale qui illustrata
Caso
|
Tempo
|
Valore
|
paziente_A
|
t0
|
1.5
|
paziente_A
|
t1
|
1.7
|
paziente_B
|
t0
|
1.7
|
paziente_B
|
t1
|
1.9
|
paziente_C
|
t0
|
2.1
|
paziente_C
|
t1
|
2.2
|
paziente_D
|
t0
|
1.6
|
paziente_D
|
t1
|
1.9
|
paziente_E
|
t0
|
2.4
|
paziente_E
|
t1
|
2.4
|
che
corrisponde alla forma nella quale record e campi sono estratti da un database, dove
a ogni dato numerico corrisponde un record, e i record possono essere
aggregati tramite un identificatore univoco [3] qui riportato come variabile Caso e rappresentato da uno specifico paziente. Una
struttura dati di questo genere segue il concetto di "atomizzazione dell'informazione" e consente non solo di ottenere una
generalizzazione della soluzione grafica, ma soprattutto di impiegare direttamente i dati estratti da un database.
Per
proseguire ora è necessario:
→
effettuare
il download del file
FEV1slopegraph.csv
→
salvare
il file nella cartella
C:\Rdati\
Per il download del file vedere link e istruzioni riportati alla pagina Dati. In
alternativa potete copiare le undici righe riportate qui sotto aggiungendo un ↵ Invio al termine dell'ultima riga e
salvarle in C:\Rdati\ in
un file di testo denominato
FEV1slopegraph.csv (di default i file di testo sono salvati con l'estensione .txt ma noi qui salviamo il file con l'estensione .csv).
Caso;Tempo;Valore
paziente_A;t0;1.5
paziente_A;t1;1.7
paziente_B;t0;1.7
paziente_B;t1;1.9
paziente_C;t0;2.1
paziente_C;t1;2.2
paziente_D;t0;1.6
paziente_D;t1;1.9
paziente_E;t0;2.4
paziente_E;t1;2.4
Copiate
e incollate nella Console di R
questo script e premete ↵
Invio:
#
GRAFICO PRIMA-DOPO (SLOPEGRAPH) dati importati da un file
#
library(CGPfunctions) # carica il pacchetto necessario
mydata
<- read.table("c:/Rdati/FEV1slopegraph.csv",
header=TRUE, sep=";") # importa i dati
mydata
# mostra i dati
windows()
# apre una nuova finestra
#
newggslopegraph(dataframe=mydata, Grouping=Caso, Times=Tempo, Measurement=Valore, Title="VEMS prima (t0) e dopo (t1) l'assunzione di un
broncodilatatore", SubTitle ="", Caption=NULL,
XTextSize=15, YTextSize=4, DataTextSize=4, LineThickness=2)
# traccia il graficoprima-dopo (slopegraph)
#
Potete anche utilizzare in alternativa al precedente quest'altro script che costruisce manualmente il dataframe, copiatelo e incollatelo nella Console di R e premete ↵ Invio:
#
GRAFICO PRIMA-DOPO (SLOPEGRAPH) dataframe costruito manualmente
#
library(CGPfunctions) # carica il pacchetto necessario
Caso
<- c("paziente_A", "paziente_A", "paziente_B",
"paziente_B", "paziente_C", "paziente_C",
"paziente_D", "paziente_D", "paziente_E",
"paziente_E") # vettore con i casi
Tempo
<- c("t0", "t1", "t0", "t1",
"t0", "t1", "t0", "t1",
"t0", "t1") # vettore con i tempi
Valore
<- c(1.5, 1.7, 1.7, 1.9, 2.1, 2.2, 1.6, 1.9, 2.4, 2.4)
# vettore con i valori
mydata
<- data.frame(Caso, Tempo, Valore) # genera il dataframe
mydata
# mostra i dati
windows()
# apre una nuova finestra
#
newggslopegraph(dataframe=mydata, Grouping=Caso, Times=Tempo, Measurement=Valore, Title="VEMS prima (t0) e dopo (t1) l'assunzione di un
broncodilatatore", SubTitle="", Caption=NULL,
XTextSize=15, YTextSize=4, DataTextSize=4, LineThickness=2)
# traccia il grafico prima-dopo (slopegraph)
#
Dopo
avere importato i dati dal file con il primo script, o avere
costruito manualmente il dataframe con il secondo script, e avere mostrato i dati importati
> mydata # mostra i dati
Caso Tempo Valore
1 paziente_A t0 1.5
2 paziente_A t1 1.7
3 paziente_B t0 1.7
4 paziente_B t1 1.9
5 paziente_C t0 2.1
6 paziente_C t1 2.2
7 paziente_D t0 1.6
8 paziente_D t1 1.9
9 paziente_E t0 2.4
10 paziente_E t1 2.4
il grafico è realizzato in entrambi i casi in modo identico mediante la funzione newggslopegraph()
nella quale gli argomenti sono:
→ dataframe,
la tabella contenente le tre variabili da elaborare;
→ Grouping,
la variabile che contiene l'identificativo univoco in base al quale
aggregare i dati (il caso);
→ Times,
la variabile che mette in sequenza, sull'asse orizzontale, i dati di
uno stesso caso;
→ Measurement,
la variabile che contiene i singoli dati di un caso, che vengono
riportati in scala sull'asse verticale;
→ Title,
il titolo del grafico, e un possibile sottotitolo (SubTitle),
qui lasciato vuoto;
→ Caption,
una possibile didascalia, qui non impiegata (=
NULL);
→ XTextSize,
la dimensione del testo per la variabile Times;
→ YTextSize,
la dimensione del testo per la variabile Grouping;
→ DataTextSize,
la dimensione del testo per la variabile Measurement;
→ LineThickness,
lo spessore della linea che unisce i due valori di ciascun caso.
I colori delle linee sono generati automaticamente dalla funzione newggslopegraph().
Per ulteriori approfondimenti potete digitare help(newggslopegraph) nella Console di R ovvero, cosa che raccomando sempre, scaricate e consultate il manuale di riferimento del pacchetto [2].
Il grafico è piuttosto interessante in quanto evidenzia una tendenza all'aumento dei valori dopo l'assunzione del farmaco, tendenza che potrà poi essere ulteriormente valutata in termini di significatività statistica impiegando un test per il confronto tra dati appaiati [4].
----------
[1]
Campbell MJ, Machin D. Medical
Statistics. A Commonsense Approach.
John Wiley & Sons, New York, 1993, ISBN 0-471-93764-9, p. 142.
[2]
Vedere il manuale di riferimento del pacchetto: Package
‘CGPfunctions’.
URL consultato il 17/01/2019: https://goo.gl/62pmn9
[3] Vedere anche il post Importazione dei dati da un file .csv.
[4] Vedere il post Test parametrici e non parametrici per dati appaiati.
Nessun commento:
Posta un commento