mercoledì 6 novembre 2024

Valutare l'omogeneità tra varianze

L'analisi della varianza (ANOVA) è basata "... su due importanti ipotesi: (a) la normalità delle distribuzioni delle osservazioni … e (b) la costanza delle varianze nei diversi gruppi" [1]. 

Per valutare la normalità (gaussianità) delle distribuzioni vi è solo l'imbarazzo della scelta tra i molti test disponibili, molti dei quali li trovate illustrati anche in questo sito [2]. 

Poiché invece qualche difficoltà può sorgere in merito al metodo per valutare la omogeneità delle varianze, qui illustro come per questo si può impiegare il test di Levene.

I dati sono quelli già impiegati nella ANOVA a un fattore [3], copiate le sedici righe riportate qui sotto aggiungendo un ↵ Invio al termine dell'ultima riga e salvatele in C:\Rdati\ in un file di testo denominato anova1.csv (attenzione all'estensione .csv al momento del salvataggio del file).

macchina;produzione
i1;48.4
i1;49.7
i1;48.7
i1;48.5
i1;47.7
i2;56.1
i2;56.3
i2;56.9
i2;57.6
i2;55.1
i3;52.1
i3;51.1
i3;51.6
i3;52.1
i3;51.1

In alternativa andate alla pagina Dati nella quale trovate diverse opzioni per scaricare questo e altri file di dati, quindi copiate il file anova1.csv nella cartella C:\Rdati\


Copiate lo script, incollatelo nella Console di R e premete ↵ Invio:

# Test di Levene per l'omogeneità tra varianze
#
library(car) # carica il pacchetto necessario per eseguire il test
#
mydata <- read.table("c:/Rdati/anova1.csv", header=TRUE, sep=";", dec=".") # importa i dati
#
leveneTest(produzione~macchina, data=mydata) # verifica se le varianze risultano omogenee
#

Dopo avere caricato il pacchetto car che include la funzione leveneTest() sono importati i dati nell'oggetto mydata

Il senso dello script risiede tutto nella terza riga di codice: prima di eseguire la ANOVA vogliamo verificare in via preliminare se le varianze dei cinque dati di produzione rilevati per ciascuna delle tre macchine i1, i2 e i3 sono tra loro omogenee applicando il test di Levene sui dati (mydata) con i valori di produzione aggregati per macchina (produzione~macchina). Questo è quanto ci compare:

> leveneTest(produzione~macchina, data=mydata) # verifica se le varianze risultano omogenee
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  2  0.4238  0.664
      12               
Messaggio di avvertimento:
In leveneTest.default(y = y, group = group, ...) : group coerced to factor.

Perché le tre varianze calcolate per le produzioni delle tre macchine possano essere considerate diverse dovremmo avere p<0.05, ma qui abbiamo un p=0.664 e pertanto concludiamo che le varianze delle produzioni ottenute con le tre diverse macchine non differiscono tra loro in modo significativo. Quindi l'omogeneità delle varianze – uno dei due prerequisiti della ANOVA – risulta rispettato.

Da notare che il Messaggio di avvertimento appare in quanto la variabile di raggruppamento utilizzata per calcolare il test di Levene deve essere una variabile "fattore". Se la variabile utilizzata non lo è, ma è comunque la variabile qualitativa con la quale vogliamo raggruppare i dati, come "macchina" nel nostro esempio, la funzione leveneTest() ci viene in aiuto in quanto trasforma automaticamente la nostra variabile in una variabile "fattore", pertanto il messaggio può essere ignorato.

Conclusione: i risultati dell'ANOVA devono essere validati accertando che siano rispettati due requisiti:
(a) i dati devono essere distribuiti in modo gaussiano, cosa che può essere verificata con uno o più dei numerosi test di normalità (gaussianità) disponibili;
(b) i dati devono avere varianze simili (omogeneità delle varianze), cosa che può essere verificata impiegando il test di Levene qui illustrato.


----------

[1] Armitage P. Statistica medica. Giangiacomo Feltrinelli Editore, Milano, 1979, pp. 195-196.

[2] I metodi per l'analisi della normalità (gaussianità) di una distribuzione sono riportati in:


Nessun commento:

Posta un commento