Il confronto tra dati appaiati
si applica quando la stessa variabile viene misurata nello stesso
caso [1] in due occasioni diverse. In campo medico la situazione
tipica è quella di una misura che viene effettuata sullo stesso
soggetto prima e dopo uno specifico trattamento.
Il
Volume Espiratorio Massimo nel primo Secondo (VEMS), impiegato
nella diagnostica della capacità respiratoria, è il volume di aria
espirata nel corso del primo secondo di una espirazione massima
forzata e indica il grado di pervietà delle grandi vie aeree. Viene
anche denominato FEV1 dall'acronimo inglese di Forced
Expiratory Volume in the 1st second.
I
seguenti dati, ricavati da Campbell [2], riportano i valori di VEMS
(FEV1) misurati in 5 soggetti asmatici prima (al tempo t0) e dopo (al
tempo t1) l'assunzione di un broncodilatatore, e la loro differenza
(t0 - t1).
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
|
Per
proseguire ora è necessario:
→
effettuare
il download del file
FEV1.csv
→
salvare
il file nella cartella
C:\Rdati\
Per il file di dati vedere istruzioni e link riportati alla pagina Dati, ma potete anche semplicemente copiare i dati riportati qui sotto aggiungendo un ↵ Invio al termine dell'ultima riga e salvarli in C:\Rdati\ in un file di testo denominato FEV1.csv (assicuratevi che il file sia effettivamente salvato con l'estensione .csv).
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
Copiate
e incollate nella Console di R
questo script e premete ↵
Invio:
#
CONFRONTO TRA DUE CAMPIONI PER DATI APPAIATI
#
mydata
<- read.table("c:/Rdati/FEV1.csv", header=TRUE, sep=";")
# importa i dati
attach(mydata)
# consente di impiegare direttamente i nomi delle variabili
mydata
# mostra i dati
#
library(nortest)
# carica il pacchetto
lillie.test(Differenza)
# test di normalità di Lilliefors (Kolmogorov-Smironv) sulla
Differenza (t0 - t1)
#
t.test(t0,
t1, paired=TRUE) # test t di Student per dati appaiati
(test parametrico)
#
wilcox.test(t0,
t1, paired=TRUE, exact=FALSE) # test di Wilcoxon per dati
appaiati (test non parametrico)
#
detach(mydata) # termina l'impiego diretto dei nomi delle variabili
#
Dopo
avere importato i dati del file nell'oggetto mydata
e dopo avere eseguito la funzione attach()
che consente nel codice successivo di impiegare direttamente i nomi
delle variabili, con mydata sono
mostrati i dati importati:
> mydata # mostra i dati
t0 t1 Differenza
1 1.5 1.7 -0.2
2 1.7 1.9 -0.2
3 2.1 2.2 -0.1
4 1.6 1.9 -0.3
5 2.4 2.4 0.0
La
scelta tra il test parametrico, il test t di Student, e il
test non parametrico, il test di Wilcoxon (o Wilcoxon Signed
Rank Test) viene effettuata come al solito sulla base dei risultati
dei test di normalità (gaussianità).
Qui viene impiegato come test di normalità (gaussianità) il test di
Lilliefors (Kolmogorov-Smirnov) che viene applicato alla variabile
Differenza (t0 -
t1) presa con il segno:
> lillie.test(mydata$Differenza) # test di normalità di Lilliefors (Kolmogorov-Smironv) sulla Differenza (t0 - t1)
Lilliefors (Kolmogorov-Smirnov) normality test
data: Differenza
D = 0.23714, p-value = 0.4686
Il
test conferma una distribuzione
gaussiana dei dati (p
= 0.4686). Si procede quindi a impiegare le conclusioni
tratte dal test t di Student
> t.test(t0, t1, paired=TRUE) # test t di Student per dati appaiati
Paired t-test
data: t0 and t1
t = -3.1379, df = 4, p-value = 0.03492
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.30157148 -0.01842852
sample estimates:
mean of the differences
-0.16
che
con un valore di
p = 0.03492 indica significatività (anche se abbastanza risicata, di poco inferiore a 0.05) della differenza
tra VEMS misurato prima e VEMS misurato dopo la somministrazione del
farmaco.
Soggiacente
al test t di Student è l'ipotesi che la media delle differenze t0 –
t1 sia zero (ipotesi H0 o ipotesi nulla). Ma il test
eseguito con R verifica anche l'ipotesi alternativa, cioè che
la media delle differenze non sia uguale a 0 (zero).
L'intervallo di
confidenza al 95% calcolato per questa ipotesi va da
-0.30157148 a
-0.01842852 e indica che la media delle differenze,
uguale a -0.16, è significativamente diversa da 0 (non sarebbe
significativamente diversa da 0 se l'intervallo di confidenza della
media delle differenze includesse lo 0). Le due soluzioni si
confermano l'una con l'altra.
Lo
script prevede comunque di eseguire anche il test di Wilcoxon, questo
è il risultato:
> wilcox.test(t0, t1, paired=TRUE, exact=FALSE) # test di Wilcoxon per dati appaiati (test non parametrico)
Wilcoxon signed rank test with continuity correction
data: t0 and t1
V = 0, p-value = 0.09751
alternative hypothesis: true location shift is not equal to 0
Dato
il ridotto numero di casi l'ipotesi alternativa non viene sviluppata.
Da notare che assumendo come soglia di significatività il classico
p = 0.05 il test di Wilcoxon con un valore di
p = 0.09751 indica
una differenza non significativa. Una cosa che non deve meravigliare,
in quanto è noto che le statistiche non parametriche aumentano
il valore di
p ovvero
rendono la differenza meno significativa rispetto a quella ottenuta
con le statistiche parametriche (che hanno evidenziato una significatività risicata).
Il fatto che approcci statistici
differenti possono portare a conclusioni opposte, e il fatto che una significatività statistica (risicata) non implica
necessariamente una rilevanza pratica, meritano sempre attenzione nella fase di valutazione critica dei risultati di un'analisi statistica.
Una interessante rappresentazione grafica dei dati appaiati qui riportati può essere effettuata mediante un grafico prima-dopo (slopegraph) al quale si rimanda.
----------
[1]
Un caso è per definizione un soggetto/oggetto univocamente
identificato, come illustrato anche nel post Importazione dei dati da un file .csv.
[2]
Campbell MJ, Machin D. Medical
Statistics. A Commonsense Approach.
John Wiley & Sons, New York, 1993, ISBN 0-471-93764-9, p. 142.
Nessun commento:
Posta un commento