Nei post precedenti abbiamo visto diversi tipi di test che possiamo utilizzare per analizzare i dati in nostro possesso e verificare delle ipotesi.
Il test chi quadrato fu proposto da Karl Pearson nel 1900, e trova ampia applicazione per stimare quanto efficacemente la distribuzione di una variabile categorica rappresenti una distribuzione attesa (e allora parliamo di “Test della bontà di adattamento” o “Goodness of fit test”) oppure per stimare quando due variabili categoriche sono indipendenti l’una dall’altra (e allora parliamo di “Test di indipendenza”).
Tale è l’importanza e la diffusione di questo test, da essere indicato dalla rivista Scientific American tra le 20 scoperte scientifiche più importanti del XX secolo.
Di cosa parleremo
- Il Test della bontà di adattamento (Goodness of Fit)
- Capire attraverso un semplice esempio
- Mi semplifico la vita usando una calcolatrice scientifica Casio
- Uso R per il test della bontà di adattamento
- Il Test di Indipendenza
- Il Test di indipendenza con la Casio
- Il test di indipendenza con R
- Un esempio SEO: il CTR dipende dal dispositivo?
- Prova tu
Il Test della bontà di adattamento (Goodness of Fit)
E’ un utilissimo test, che concerne la distribuzione di una variabile categorica. Ci consente infatti di verificare se le frequenze osservate differiscono in misura significativa da quelle attese, quando gli esiti possibili sono più di due.
I prerequisiti per poter effettuare il test sono molto semplici:
- Il campione deve essere casuale;
- Le osservazioni devono essere indipendenti per il campione (una osservazione per soggetto);
- Nessun valore osservato in ciascuna classe inferiore a 5.
Questo ultimo punto suona piuttosto criptico e merita qualche parola in più. Quando la vc è continua o i caratteri non sono nominali e si dispone di osservazioni campionarie singole, un problema importante concerne la determinazione del numero di classi (chiamate anche “celle”) in cui articolare la distribuzione. Nella prassi è richiesto che le frequenze teoriche siano almeno uguali a 5; vale a dire che occorre verificare che il numero di elementi osservati in ciascuna classe non sia inferiore a una soglia minima.
Capire attraverso un semplice esempio
Come al solito, per capire meglio di cosa stiamo parlando ci spiegheremo con un esempio super-semplificato (e, mi scuso, abbastanza ridicolo…).
Suppongo che sia stato condotto uno studio sugli hobbisti appassionati di elettronica che usano schede Arduino. Si è visto che i possessori di una sola scheda Arduino sono il 50%, quelli che hanno da 2 a 4 schede sono il 30%, chi ne possiede 5 o più è il 20%.
Immaginiamo che io abbia condotto un mio studio indipendente e abbia riscontrato questi dati: su 150 hobbisti ho trovato che 90 possedevano un solo Arduino, 30 da 2 a 4 schede, e 30 5 o più schede.
L’ipotesi nulla è che le proporzioni da me riscontrate siano in linea con quelle dello studio ufficiale.
L’ipotesi alternativa è ovviamente che i dati raccolti non confermino le proporzioni dello studio ufficiale.
Preparo la mia tabella inserendo i dati:
| Un solo Arduino | Da 2 a 4 schede | 5 o più schede | Totale | |
| Dati osservati | 90 | 30 | 30 | 150 |
| Dati attesi | 0.50 x 150 = 75 | 0.30 x 150 = 45 | 0.20 x 150 = 30 | 150 |
Per accettare l’ipotesi nulla, occorre che la differenza tra le frequenze attese e quelle osservate sia attribuibile alla variabilità di campionamento al livello designato di significatività.
La statistica χ2 calcolata dai dati campionari è data da:
\( \chi^2=\Sigma\frac{(f_0-f_e)^2}{f_e}\\ \\ \) f0=frequenze osservate
fe=frequenze attese
I gradi di libertà per i test di adattamento sono:
\( df=(r-1)(c-1)\\ \\ \\ \) r = numero di righe della tabella di contingenza
c = numero di colonne della tabella di contingenza
Usiamo come linee guida il nostro esempio. Partiamo dalle ipotesi:
\( H_0=le\ frequenze\ sono\ 0.5\ 0.3\ 0.2\\ H_a=le\ frequenze\ non\ sono\ 0.5\ 0.3\ 0.2\\ \)Abbiamo:
\( n=150\\ df=(2-1)(3-1)=2\\ \\ \)Troviamo nelle tabelle il valore del χ2 critico (df=2, α=0.05)
Il valore risulta essere: 5.99
Ora calcolo il valore del χ2 per i miei dati:
\( \chi^2=\frac{(90-75)^2}{75}+\frac{(30-45)^2}{45}+\frac{(30-30)^2}{30}=\\ =\frac{225}{75}+\frac{225}{45}+\frac{0}{30}=\\ =3+5\\ =8\\ \)Concludiamo allora (poichè il valore calcolato risulta superiore al valore critico) che possiamo rifiutare l’ipotesi nulla al livello di significatività del 5%. Cioè: possiamo rifiutare l’asserzione che le frequenze siano distribuite secondo la proporzione 50%,30%,20%.
Mi semplifico la vita usando una calcolatrice scientifica Casio
Con la mia calcolatrice fx mi basta scegliere da menù la voce “STAT” e inserire nel mio editor di tabella i valori osservati nella lista L1 e i valori attesi in L2.
Poi sceglierò:
[TEST]
[CHI]
[GoF]
Observed:List1
Expected:List2
df:2
[CALC]
e otterrò sia il valore del chi quadrato, sia quello di p (in questo caso 0,01832 che è inferiore al valore di alpha 0.05 da me scelto, confermando la conclusione che posso rigettare l’ipotesi nulla e accogliere quella alternativa).
Uso R per il test della bontà di adattamento
In R l’esempio indicato risulta ancora più semplice da impostare:
osservati<-c(90,30,30) proporzione_attesa<-c(0.5,0.3,0.2) chisq.test(osservati,p=proporzione_attesa,correct=FALSE) e il risultato sarà: Chi-squared test for given probabilities data: osservati X-squared = 8, df = 2, p-value = 0.01832
Il Test di Indipendenza
E’ comunemente usato per determinare se due fattori sono tra loro in relazione.
In genere, quello che vogliamo sapere è: “La variabile X è indipendente dalla variabile Y ?
Attenzione: la risposta che otteniamo dal nostro test è solo questa, non come sono relate le variabili.
Nel caso del test della bontà di adattamento vi è una sola variabile in gioco: le frequenze osservate possono quindi essere elencate in un’unica riga, o colonna, di valori in una tabella.
I test di indipendenza, invece, implicano due variabili e l’oggetto del test è proprio l’assunzione che le due variabili siano statisticamente indipendenti.
Poichè due variabili sono implicate nel test, le frequenze osservate sono inserite in una tavola di contingenza del tipo riga x colonna.
Ad esempio, rappresento i dati relativi a età e sesso degli appassionati di un dato marchio commerciale:
| Età | Maschio | Femmina | Totale |
| <35 | 66 | 54 | 120 |
| >=35 | 78 | 12 | 90 |
| Totale | 144 | 66 | 210 |
Vogliamo testare l’ipotesi nulla che le due variabili qualitative sesso ed età siano indipendenti. Dunque, l’ipotesi alternativa prevede invece che esista una relazione tra le due variabili.
Se l’ipotesi di indipendenza è vera, fra la frequenza osservata di ciascuna casella e il totale delle frequenze osservate della riga e colonna in cui quella casella è inclusa, devono esserci le stesse proporzioni esistenti fra il totale di colonna e di riga e la dimensione totale del campione.
\( f_e=\frac{\Sigma_{riga}\ \Sigma_{colonna}}{n}\\ \\ \\ df=(r-1)(c-1)\\ \\ \\ \)A questo punto procedo con il mio esempio:
\( f_e=\frac{\Sigma_{riga}\ \Sigma_{colonna}}{n}=\frac{120\times 144}{210}=82,3\\ \)Le 3 frequenze rimanenti possono essere facilmente ottenute per sottrazione dai totali di riga e di colonna. Infatti, una tabella 2×2 ha df=1, cioè la frequenza di una sola casella è libera di variare.
Otterrò:
| Età | Maschi | Femmine | Totale |
| <35 | 82 | 38 | 120 |
| >=35 | 62 | 28 | 90 |
| Totale | 144 | 66 | 210 |
\( H_0=sesso\ e\ anni\ sono\ indipendenti\\ H_a=esiste\ una\ relazione\ tra\ sesso\ e\ anni\\ \\ \\ df=(2-1)(2-1)=1 \)
Scelgo un livello α=0.01 di significatività
\( \chi^2_{critico}=6.63\\ \)calcolo il valore del chi-quadro e trovo:
\( \chi^2=23.9\\ \)Si rifiuta allora l’ipotesi nulla di indipendenza al livello di significatività dell’1%. Le variabili età e sesso sono dipendenti.
Il Test di indipendenza con la Casio
Per risolvere il mio esempio in maniera molto semplice con la mia Casio avrei potuto fare così:
Carico i miei dati di tabella in una matrice, che chiamo A:
[[66,54][78,12]]→[OPTN][MAT][MAT][ALPHA][A]
A questo punto mi sposto nelle funzioni statistiche:
[MENU][STAT] [TEST][CHI][2WAY] Observed:Mat A Expected:Mat B [CALC]Il risultato sarà:
χ2=23.9299242
p=9.9907e-07
df=1
Come si vede dal bassissimo valore di p, accolgo l’ipotesi alternativa e scarto l’ipotesi nulla.
Il test di indipendenza con R
Costruisco la mia tabella di contingenza
appassionati <- matrix(c(66,54,78,12),ncol=2,byrow=TRUE)
rownames(appassionati) <- c("meno di 35","35 o piu")
colnames(appassionati) <- c("maschio","femmina")
appassionati <- as.table(appassionati)
appassionati
posso calcolare i totali di riga:
margin.table(appassionati,1)
e quelli di colonna:
margin.table(appassionati,2)
il gran totale è:
margin.table(appassionati)
guardo i valori attesi:
chisq.test(appassionati)$expected
e testo l'ipotesi con:
chisq.test(appassionati)il bassissimo valore di p risultante mi indica che posso rigettare l’ipotesi nulla dell’indipendenza delle due variabili.
Un esempio SEO: il CTR dipende dal dispositivo?
Gli hobbisti di Arduino e gli appassionati di marchi vanno benissimo per capire il meccanismo, ma il test di indipendenza dà il meglio di sé nella pratica quotidiana di chi lavora con i dati di Search Console. Riprendiamo i numeri che abbiamo già incontrato parlando del Paradosso di Simpson: in un mese il nostro sito ha raccolto 10.000 impression su Desktop con 550 click, e 20.000 impression su Mobile con 500 click. Il CTR è dunque 5,5% contro 2,5%: una differenza che sembra enorme, ma è reale o potrebbe essere frutto del caso?
Formulata nel linguaggio di questo articolo, la domanda diventa: il click è indipendente dal dispositivo? Costruiamo la tabella di contingenza, con una avvertenza importante: nelle celle vanno i conteggi, mai le percentuali. Per ogni dispositivo servono quindi i click e i “non click” (le impression che non hanno generato click).
| Dispositivo | Click | Nessun click | Totale |
|---|---|---|---|
| Desktop | 550 | 9.450 | 10.000 |
| Mobile | 500 | 19.500 | 20.000 |
| Totale | 1.050 | 28.950 | 30.000 |
Le ipotesi sono le solite:
\( H_0=click\ e\ dispositivo\ sono\ indipendenti\\ H_a=esiste\ una\ relazione\ tra\ click\ e\ dispositivo\\ \)Verifico in R, costruendo la matrice dei conteggi (uso correct=FALSE per poter confrontare il risultato con l’eventuale calcolo manuale):
ctr <- matrix(c(550, 9450, 500, 19500), ncol=2, byrow=TRUE)
rownames(ctr) <- c("Desktop", "Mobile")
colnames(ctr) <- c("click", "no click")
chisq.test(ctr, correct=FALSE)
il risultato sarà:
Pearson's Chi-squared test
data: ctr
X-squared = 177.65, df = 1, p-value < 2.2e-16Il p-value è infinitesimale: rifiutiamo l’ipotesi nulla senza esitazioni. Il click dipende dal dispositivo, e la differenza tra i due CTR non è attribuibile al caso.
n.b.: con i volumi tipici della Search Console (decine di migliaia di impression) il chi quadrato rifiuta l’ipotesi nulla anche per differenze minuscole e praticamente irrilevanti. La significatività statistica ci dice che la differenza non è frutto del caso, non che sia importante: con campioni molto grandi le due cose vanno tenute ben distinte.
Prova tu
Per fissare il meccanismo, un esercizio con dati finti ma realistici. Dalla Search Console di un e-commerce estraiamo un mese di dati, separando le query brand dalle non-brand:
| Tipo di query | Click | Nessun click | Totale |
|---|---|---|---|
| Brand | 240 | 1.760 | 2.000 |
| Non-brand | 540 | 17.460 | 18.000 |
| Totale | 780 | 19.220 | 20.000 |
La domanda è la stessa di prima: il click dipende dal tipo di query? L’esercizio consiste nel formulare le ipotesi, scegliere α=0,05, costruire la matrice in R ed eseguire il test (sempre con correct=FALSE). Se tutto fila, il chi quadrato dovrebbe risultare vicino a 389, con un p-value microscopico. E già che ci siamo: quale dei due CTR (12% contro 3%) “tira” di più il risultato? Un’occhiata alle frequenze attese con chisq.test(...)$expected aiuta a rispondere.
Una domanda però resta aperta, ed è più sottile di quanto sembri: il test ci ha detto che la dipendenza esiste, non quanto è forte. Come abbiamo appena visto, con campioni grandi quasi tutto risulta significativo: per misurare l’intensità di un’associazione servono altri strumenti (come la V di Cramér), e sarà l’argomento di un prossimo articolo dedicato all’effect size e alla potenza dei test.
Potrebbe interessarti anche
- A/B Testing: come condurre esperimenti statisticamente validi (e gli errori da evitare)
- Il Paradosso di Simpson nella SEO: quando i dati aggregati possono mentire
- Campionamento e Dimensione Campionaria: Quanti Dati Servono?
Per approfondire
Il test del chi quadrato, con tutte le sue varianti e condizioni di applicabilità, è trattato in dettaglio in Statistica di Newbold, Carlson e Thorne, insieme agli altri test che abbiamo incontrato in questo percorso.
E se gli esempi di queste pagine vi hanno fatto venire voglia di imparare R sul serio, R for Data Science di Hadley Wickham (seconda edizione, leggibile anche gratuitamente online) è il punto di partenza che consiglio.
Quale calcolatrice é stata usata? (Casio é un pò generico) sarebbe interessante saperlo. Grazie
Casio fx9750