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 dati
appaiati).
Un esempio tipico di applicazione del test di McNemar lo abbiamo in uno studio
clinico nel quale lo stesso soggetto viene esposto in
tempi diversi a due trattamenti differenti, secondo una sequenza
casuale, garantendo che né il paziente né l'operatore sanitario sappiano quale è
il trattamento effettuato in quella fase. In questo modo tutti i
soggetti, ignorando ogni volta di quale trattamento si tratti,
ricevono tutti e due i trattamenti.
Campbell
[1] riporta i risultati di uno studio nel quale 250 pazienti
sofferenti di artrite erano stati sottoposti ciascuno sia al trattamento con
il farmaco A sia al trattamento con il farmaco B. Era stato poi
rilevato il grado di soddisfazione dei pazienti rispetto all'uno e
all'altro trattamento, con i risultati qui riportati:
In
totale 150 soggetti si erano mostrati soddisfatti di entrambi i
trattamenti, 50 avevano espresso insoddisfazione per entrambi, mente
altri 50 si erano mostrati insoddisfatti chi dell'uno e chi
dell'altro.
Questo
script prevede di inserire i dati manualmente. Copiatelo e
incollatelo nella Console di R e
premete ↵ Invio:
#
TEST DI MCNEMAR - 2 righe ·
2 colonne
#
cells
<- c(150, 20, 30, 50) # genera l'array cells con i valori
numerici contenuti nelle celle
rnames
<- c("Soddisfatto_da_B", "Non_soddisfatto_da_B")
# genera l'array rnames con i nomi delle righe
cnames
<- c("Soddisfatto_da_A", "Non_soddisfatto_da_A")
# 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
mcnemar.test(mydata,
correct=TRUE) # esegue il test di McNemar
#
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 dei dati viene salvata nell'oggetto mydata,
che viene mostrato per un ovvio controllo della corretta immissione e
strutturazione dei dati.
Infine
con la funzione mcnemar.test() [2]
viene effettuato il calcolo del test. Da notare che anche nel test di McNemar, che è di fatto una statistica chi-quadrato, viene applicata
la correzione di Yates per la continuità [3] ponendo l'argomento correct=TRUE.
Questi
sono i risultati
> mydata # mostra i dati
Soddisfatto_da_A Non_soddisfatto_da_A
Soddisfatto_da_B 150 20
Non_soddisfatto_da_B 30 50
> matrix <- data.matrix(mydata) # viene generato l'oggetto matrice richiesto dalla fase successiva
> mcnemar.test(matrix, correct=TRUE) # esegue il test di McNemar
McNemar's Chi-squared test with continuity correction
data: matrix
McNemar's chi-squared = 1.62, df = 1, p-value = 0.2031
che
dimostrano che la differenza tra i gradi di soddisfazione espressi
dai pazienti in merito ai due trattamenti non
è significativa (p = 0.2031).
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_McNemar.csv (attenzione
all'estensione al momento del salvataggio del file).
Esito;Soddisfatto_da_A;Non_soddisfatto_da_A
Soddisfatto_da_B;150;20
Non_Soddisfatto_da_B;30;50
Questo
script prevede di eseguire il test di McNemar sui dati letti dal file
chi_McNemar.csv.
Copiatelo e incollatelo nella Console
di R e premete
↵ Invio:
#
TEST DI MCNEMAR - 2 righe ·
2 colonne
#
mydata
<- read.table("C:/Rdati/chi_McNemar.csv", header=TRUE,
sep=";", row.names="Esito") # importa i dati
mydata
# mostra i dati
matrix
<- data.matrix(mydata) # viene generato l'oggetto
matrice richiesto dalla fasi successive
mcnemar.test(matrix,
correct=TRUE) # esegue il test di McNemar
#
Come
vedete lo script è più compatto del precedente, le uniche cose da
notare sono gli argomenti della funzione read.table():
→
"C:/Rdati/chi_McNemar.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 “Esito”.
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]
Campbell MJ, Machin D. Medical
Statistics. A Commonsense Approach.
John Wiley & Sons, New York, 1993, ISBN 0-471-93764-9, pp.
148-150.
[2]
Digitate help(mcnemar.test) nella
Console di R per la documentazione della funzione
mcnemar.test().
[3]
Vedere il post: Test chi-quadrato 2 righe · 2 colonne.
Nessun commento:
Posta un commento