..
siamo d'accordo che per fare un test t di Student
innanzitutto devo sapere se i miei dati sono "normali", nel senso che
provengono da una popolazione gaussiana. Ma come faccio a sapere, appunto, se i
miei dati sono normali?
Innanzitutto, abbiamo un metodo grafico molto efficace da utilizzare con R.
Supponiamo ad esempio di avere questi dati, relativi a un certo
parametro misurato su un campione di 9 pazienti (per semplicità,
abbiamo messo i valori in ordine crescente):
7.05, 7.41, 7.61, 7.90, 8.10, 8.21, 8.37, 8.67, 9.06
L'idea formidabile è questa: paragonare questi dati con i
"quantili della normale standard". Se i dati fossero normali, allora
vorrebbe dire che con un'operazione lineare (in senso matematico, ossia
moltiplicandoli per qualcosa ed aggiungendoci qualcosa altro) potremmo
passare dall'uno all'altro - ovvero, disegnandoli uno scatterplot, essi
sarebbero allineati su una retta.
Proviamo dunque a creare un "vettore" di nome dati e facciamo fare ad R il grafico "quantile - quantile", con il comando qqnorm.
dati <- c(7.05, 7.41, 7.61, 7.90, 8.10, 8.21, 8.37, 8.67, 9.06)
qqnorm(dati)
qqline(dati)
Copiate tutto il blocco
di istruzioni rosse scritte qui sopra, e incollatelo nella finestra bianca che trovate in questo
webclient offerto dall'Università di Palermo, e
premete il pulsante Send,
lì in basso. Vedrete che approssimativamente i punti del grafico seguono la retta diagonale.
Ripetete di nuovo l'operazione con questi altri dati:
datiaformadiS <- c(1, 1, 1, 2, 2, 3, 4, 4, 5, 5, 5)
qqnorm(datiaformadiS)
qqline(datiaformadiS)
e poi con questi:
datibanana <- c(1,1,1,1,1,1,1,2,2,2,2,3,3,4,7,8,12)
qqnorm(datibanana)
qqline(datibanana)
vedrete che i punti si allineano lungo una "S", oppure sono a forma di "banana": non va bene!
Se
invece volete affidarvi al rigore di un test, la procedura di
Kolmogorov e Smirnov vi permette di rifiutare o meno l'ipotesi nulla
che i dati provengano da una particolare distribuzione. Calcoliamo
innanzitutto la media e la deviazione standard dei dati:
dati <- c(7.05, 7.41, 7.61, 7.90, 8.10, 8.21, 8.37, 8.67, 9.06)
mean(dati)
sd(dati)
utilizzando il server dell'università di Palermo, e scopriamo che essi sono approssimativamente 8 e 0.6.
A questo punto, testiamo se possiamo rifiutare l'ipotesi che questi
dati provengano da una normale di media 8 e deviazione standard 0.6:
dati <- c(7.05, 7.41, 7.61, 7.90, 8.10, 8.21, 8.37, 8.67, 9.06)
ks.test(dati, "pnorm", 8, 0.6)
Vedrete che il
p-value è praticamente uguale ad 1: non possiamo rifiutare con
nessuna significatività ragionevole l'ipotesi nulla (ossia,
sospettiamo con una quasi certezza che si tratti di dati normali).