lunedì 3 dicembre 2018

Test chi-quadrato 2 righe · 2 colonne

Quando le osservazioni sono organizzate in una tabella di 2 righe · 2 colonne si applica questa regola:
→ si impiega il test chi-quadrato se le osservazioni sono indipendenti e sono numerose;
→ si impiega il test di Fisher se le osservazioni sono indipendenti e sono poche;
→ si impiega il test di McNemar nel caso di osservazioni non indipendenti (cioè nel caso di dati appaiati).

Il test chi-quadrato (χ2) lo vediamo applicato a uno studio canadese sulla relazione tra fumo e mortalità divenuto famoso in quanto tra gli anni '70 e i primi anni '80 le sue conclusioni finirono col favorire tra i fumatori un revival dell'uso della pipa. Nell'arco di sei anni venne registrato il numero di decessi avvenuti in un gruppo di non fumatori e in un gruppo di fumatori di pipa con i seguenti risultati [1]:


Di 1 067 non fumatori 117 (il 10,97%) erano deceduti. Dei 402 fumatori di pipa 54 (il 13.43%) erano deceduti.

La domanda è: esiste una differenza reale tra le mortalità nei due gruppi, o la differenza può ancora essere attribuita al caso?

Questo script prevede di inserire i dati manualmente. Copiatelo e incollatelo nella Console di R e premete ↵ Invio:

# TEST CHI-QUADRATO - 2 righe · 2 colonne
#
cells <- c(117, 54, 950, 348) # 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 dei dati
mydata # mostra i dati
chisq.test(mydata, correct=TRUE) # test chi quadrato con la correzione di Yates per la continuità
#

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 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)).

La matrice viene salvata nell'oggetto mydata, che viene mostrato per un controllo della corretta immissione e strutturazione dei dati.

Infine con la funzione chisq.test() [2] viene effettuato il calcolo del test chi-quadrato che, ponendo l'argomento correct=TRUE, prevede la correzione di Yates per la continuità

Nota bene: il test chi-quadrato con 1 grado di libertà è esatto solo asintoticamente per dimensioni molto grandi dei campioni per cui si consiglia di applicare sempre alle tabelle 2x2 la correzione di Yates per la continuità [3].

Questi sono i risultati:

> mydata # mostra i dati 
              Non_fumatori  Fumatori_di_pipa
Deceduti               117                54
Viventi                950               348
> chisq.test(mydata, correct=TRUE) # test chi quadrato con la correzione di Yates per la continuità

        Pearson's Chi-squared test with Yates' continuity correction

data:  mydata
X-squared = 1.4969, df = 1, p-value = 0.2212

Come si vede la probabilità di osservare per caso il valore chi-quadrato 1.4969 è p = 0.2212 quindi è elevata. La conclusione è che la differenza tra le mortalità nei due gruppi può ancora essere attribuita al caso ovvero, in termini statistici, la mortalità osservata nel gruppo dei fumatori di pipa non differisce significativamente dalla mortalità osservata nel gruppo dei non fumatori.

Con quest'altra riga

chisq.test(mydata, correct=FALSE) # test chi quadrato senza la correzione di Yates

potete calcolare il chi-quadrato senza la correzione di Yates per la continuità (p = 0.1886) che risulta inferiore al precedente. Notate quindi che applicando la correzione di Yates per la continuità il valore di p risulta superiore e questo rende la differenza meno significativa.

In alternativa potete anche copiare le tre righe riportate qui sotto aggiungendo un ↵ Invio al termine dell'ultima riga e salvarle in C:\Rdati\ nel file di testo denominato chi_2x2.csv (attenzione all'estensione al momento del salvataggio del file).

Esito;Non_fumatori;Fumatori_di_pipa
Deceduti;117;54
Viventi;950;348

Questo script prevede di eseguire il test chi-quadrato sui dati letti dal file chi_2x2.csv. Copiatelo e incollatelo nella Console di R e premete ↵ Invio:

# TEST CHI-QUADRATO - 2 righe · 2 colonne
#
mydata <- read.table("C:/Rdati/chi_2x2.csv", header=TRUE, sep=";", row.names="Esito") # importa i dati
mydata # mostra i dati
chisq.test(mydata, correct=TRUE) # test chi quadrato con la correzione di Yates per la continuità
#

Come vedete lo script è più compatto del precedente, le uniche cose da notare sono gli argomenti della funzione read.table():
"C:/Rdati/chi_2x2.csv" che specifica nome e posizione del file dal quale importare i dati;
header=TRUE che indica che nella prima riga del file sono contenuti i nomi delle variabili;
sep=";" che specifica il separatore di campo impiegato nel file;
row.names="Esito" che indica che i nomi delle righe sono contenuti nel campo che ha questo nome.

Anche se ovviamente i risultati sono sempre gli stessi, il senso di queste due alternative è semplice. Se vi va bene intervenire ogni volta sullo script per adattarlo a nuovi dati, potete impiegare la prima. Potete invece impiegare la seconda se volete evitare di mettere mano ogni volta allo script, e preferite intervenire solamente sul file di dati. A voi la scelta, magari dopo averle sperimentate entrambe.

La rappresentazione grafica dei dati può essere effettuata mediante un grafico a barre.


----------

[1] Best EWR et al. A Canadian Study on Smoking and Health (Final Report). Dept. Natl. Health and Welfare, Canada, 1966. Citato in: Snedecor GW, Cochran WG. Statistical Methods. The Iowa State University Press, 1980, ISBN 0-8138-1560-6, p. 124.

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

[3] Armitage P. Statistica medica. Giangiacomo Feltrinelli Editore, Milano, 1979, p. 137.

Nessun commento:

Posta un commento