Due variabili categoriali
È possibile verificare se due variabili categoriali sono indipendenti con il test di indipendenza Chi-Squared.
Questo è un tipico test Chi-Square : se assumiamo che due variabili siano indipendenti, i valori della tabella di contingenza per queste variabili dovrebbero essere distribuiti uniformemente. E poi controlliamo quanto sono lontani dall'uniforme i valori reali.
Esiste anche una V di Crammer che è una misura di correlazione che segue da questo test
Esempio
Supponiamo di avere due variabili
- genere: maschio e femmina
- città: Blois and Tours
Abbiamo osservato i seguenti dati:
Il genere e la città sono indipendenti? Eseguiamo un test Chi-Squred. Ipotesi nulla: sono indipendenti, l'ipotesi alternativa è che siano in qualche modo correlati.
Sotto l'ipotesi Null, assumiamo una distribuzione uniforme. Quindi i nostri valori attesi sono i seguenti
Quindi eseguiamo il test chi-quadrato e il valore p risultante qui può essere visto come una misura di correlazione tra queste due variabili.
Per calcolare la V di Crammer troviamo innanzitutto il fattore di normalizzazione chi-quadrato-max che è in genere la dimensione del campione, dividere il chi-quadrato per esso e prendere una radice quadrata
R
tbl = matrix(data=c(55, 45, 20, 30), nrow=2, ncol=2, byrow=T)
dimnames(tbl) = list(City=c('B', 'T'), Gender=c('M', 'F'))
chi2 = chisq.test(tbl, correct=F)
c(chi2$statistic, chi2$p.value)
Qui il valore di p è 0,08 - abbastanza piccolo, ma ancora non abbastanza per respingere l'ipotesi di indipendenza. Quindi possiamo dire che la "correlazione" qui è 0,08
Calcoliamo anche V:
sqrt(chi2$statistic / sum(tbl))
E ottieni 0,14 (più piccola v, più bassa è la correlazione)
Prendi in considerazione un altro set di dati
Gender
City M F
B 51 49
T 24 26
Per questo, darebbe quanto segue
tbl = matrix(data=c(51, 49, 24, 26), nrow=2, ncol=2, byrow=T)
dimnames(tbl) = list(City=c('B', 'T'), Gender=c('M', 'F'))
chi2 = chisq.test(tbl, correct=F)
c(chi2$statistic, chi2$p.value)
sqrt(chi2$statistic / sum(tbl))
Il valore p è 0,72 che è molto più vicino a 1 e v è 0,03 - molto vicino a 0
Variabili categoriche vs numeriche
Per questo tipo di solito eseguiamo test ANOVA a una via : calcoliamo la varianza all'interno del gruppo e la varianza all'interno del gruppo e quindi li confrontiamo.
Esempio
Vogliamo studiare la relazione tra il grasso assorbito dalle ciambelle rispetto al tipo di grasso usato per produrre le ciambelle (l'esempio è preso da qui )
C'è qualche dipendenza tra le variabili? Per questo conduciamo il test ANOVA e vediamo che il valore p è solo 0,007 - non c'è correlazione tra queste variabili.
R
t1 = c(164, 172, 168, 177, 156, 195)
t2 = c(178, 191, 197, 182, 185, 177)
t3 = c(175, 193, 178, 171, 163, 176)
t4 = c(155, 166, 149, 164, 170, 168)
val = c(t1, t2, t3, t4)
fac = gl(n=4, k=6, labels=c('type1', 'type2', 'type3', 'type4'))
aov1 = aov(val ~ fac)
summary(aov1)
L'output è
Df Sum Sq Mean Sq F value Pr(>F)
fac 3 1636 545.5 5.406 0.00688 **
Residuals 20 2018 100.9
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Quindi possiamo prendere anche qui il valore p come misura della correlazione.
Riferimenti