Le tabelle di contingenza sono usate per valutare l’interazione tra due variabili categoriche (qualitative). Possono essere chiamate anche tabelle a doppia entrata.
La ricerca di relazioni tra due variabili categoriali è un obiettivo molto comune per i ricercatori. Pensiamo, ad esempio, alla classica domanda che si pongono gli addetti al marketing su chi sia più propenso ad acquistare certe categorie di prodotti, se giovani o anziani oppure uomini o donne…
Una tabella a doppia entrata è una tabella che contiene righe e colonne ed aiuta organizzare i dati da variabili categoriali:
Un distribuzione marginale mostra quante risposte complessive ci sono per ogni categoria della variabile. La distribuzione marginale di una variabile può essere determinata guardando alla colonna (o alla riga) “Totale”.
Vediamo un esempio.
N.B. Mi scuso, ma non mi è venuto in mente granchè, dunque ho creato una tabella (con dati fittizi, ovviamente) di rara stupidità, immaginando che le due variabili categoriche riguardino il livello di istruzione e le serie di fantascienza preferite…
Costruisco la tabella in R:
scififan <- matrix(c(44,38,26,53,35,30,58,22,29),ncol=3,byrow=TRUE) rownames(scififan) <- c("laurea","diploma","istruzione inferiore") colnames(scififan) <- c("star trek","star wars","doctor who") scififan <- as.table(scififan) scififan
e ottengo una cosa di questo tipo:
star trek star wars doctor who laurea 44 38 26 diploma 53 35 30 istr.inferiore 58 22 29
Ricordate? Una distribuzione marginale mostra quante risposte complessive ci sono per ogni categoria della variabile (ai margini, appunto, dove c’è la colonna o la riga Totale…).
posso calcolare i totali di riga in R con:
margin.table(scififan,1)
e di colonna con:
margin.table(scififan,2)
posso anche trovare il “totale dei totali” con:
margin.table(scififan)
Riporto la tabella con i Totali:
star trek star wars doctor who TOTALE laurea 44 38 26 108 diploma 53 35 30 118 ist.inf 58 22 29 109 TOTALE 155 95 85 335
Quindi i totali marginali per titolo di studio sono 108 per la laurea, 118 per il diploma, 109 per l’istruzione inferiore.
Allo stesso modo, i totali marginali per tipo di serie fantascientifica sono 155 per star trek, 95 per guerre stellari, 85 per doctor who.
Il totale dei totali deve essere lo stesso per entrambe le direzioni, in questo caso 335.
Avrei potuto anche ottenere una tabella completa a video con riportati i totali con poche righe di codice R:
scififan <- matrix(c(44,38,26,53,35,30,58,22,29),ncol=3,byrow=TRUE) nomirighe <- c("laurea","diploma","istruzione inferiore") nomicol<- c("star trek","star wars","doctor who") dimnames(scififan) <- list(nomirighe,nomicol) # ora calcolo il totale di colonna usando apply totcol <- apply(scififan,2,sum) # aggiungo una riga con i totali di colonna con rbind scififan2 <- rbind(scififan,totcol) # calcolo il totale di riga totrighe <- apply(scififan2,1,sum) #aggiungo una colonna con i totali di riga conttable <- cbind(scififan2, totrighe) #stampo a video la mia tabella conttable
Posso allora chiedermi (e rispondermi): quale percentuale di laureati ha un debole per doctor who?
Elementare Watson (ah no, quella era un’altra serie…):
26/108 = 0,24 = 24% dei laureati predilige doctor who
E quanti fan di guerre stellari sono diplomati?
35/95 = 0,37 = 37% dei fan di guerre stellari sono tra i diplomati
In R, posso ottenere direttamente le probabilità per riga semplicemente con la funzione:
prop.table(scififan,1)
e il risultato sarà:
star trek star wars doctor who laurea 0.4074074 0.3518519 0.2407407 diploma 0.4491525 0.2966102 0.2542373 ist.inf. 0.5321101 0.2018349 0.2660550
(come si vede i totali di riga danno 1, o 100%)
oppure quelli per colonna con:
prop.table(scififan,2)
e il risultato sarà:
star trek star wars doctor who laurea 0.2838710 0.4000000 0.3058824 diploma 0.3419355 0.3684211 0.3529412 istr.inf. 0.3741935 0.2315789 0.3411765
(come si vede i totali di colonna danno 1 o 100%)
Come sempre c’è sempre più di un modo per ottenere il risultato, e posso anche operare installando il pacchetto “gmodels” e usando la funzione CrossTable (lascio all’help in linea di R il compito di mostrare tutte le opzioni del comando…):
install.packages("gmodels") library(gmodels) scififan <- matrix(c(44,38,26,53,35,30,58,22,29),ncol=3,byrow=TRUE) rownames(scififan) <- c("laurea","diploma","istruzione inferiore") colnames(scififan) <- c("star trek","star wars","doctor who") CrossTable(scififan, prop.r="false", prop.c="false", prop.t="false",prop.chisq="false")
Bene: a cosa mi serve tutto questo? La risposta è: ad esempio per il calcolo della probabilità condizionata.
Prima di vedere di cosa si tratta e perchè è un concetto utilissimo nella realtà di tutti i giorni, serve qualche definizione preliminare riguardo la probabilità.
Un evento è qualcosa che accade con uno o più possibili esiti.
Un esperimento è il processo di misurare o fare un’osservazione.
Definizione importante: la probabilità di un evento è il rapporto tra il numero dei casi favorevoli e il numero dei casi possibili
\( P(A) = \frac {numero \ dei \ casi \ favorevoli}{numero \ dei \ casi \ possibili}\\ \)Ricordiamo poi che:
La probabilità condizionata di un evento A rispetto a un evento B è la probabilità che si verifichi A, posto che si è verificato B.
La formula è:
\(P(A|B) = \frac {P(A \ and \ B)}{P(B)}\\ \)Se una probabilità si basa su una variabile è una probabilità marginale, se su due o più variabili si chiama probabilità congiunta.
In altri termini:
Una probabilità congiunta è la probabilità che qualcuno selezionato da tutto il gruppo abbia due caratteristiche particolari allo stesso tempo. Cioè entrambe le caratteristiche avvengono congiuntamente. Si trova una probabilità congiunta prendendo il valore della cella intersezione di A e B e dividendo per il totale generale.
Per trovare una probabilità condizionale, considero il valore della cella che si trova all’incrocio di A e B e lo divido per il totale marginale di B, cioè della variabile che esprime l’evento che si è verificato.
E’ giunto il momento di un secondo esempio. Prendo i dati da:
Ellis GJ and Stone LH. 1979. Marijuana Use in College: An Evaluation of a Modeling Explanation. Youth and Society 10:323-334.
Lo studio si chiede se è più probabile che uno studente fumi marijuana se i genitori avevano fatto uso di droghe in passato. Ecco la tabella:
genitori genitori Totale uso non uso studente fa uso 125 94 219 studente non uso 85 141 226 Totale 210 235 445
Applichiamo le nostre conoscenze per rispondere a queste domande:
Si tratta di un caso di probabilità condizionale.
Ricordiamo \(P(A|B) = \frac {P(A \ and \ B)}{P(B)}\\ \), quindi
P(studente usi posto che genitori hanno usato) = 125 / 210 = 0,59 = 59%
2. Uno studente viene estratto a sorte e non usa marijuana. Qual è la probabilità che i suoi genitori ne abbiano fatto uso?
Anche in questo caso mi trovo di fronte a un quesito che chiede una probabilità condizionale. Quindi:
P (genitori ne hanno fatto uso posto che il figlio non usa) = 85 / 226 = 0,376 = 37,6%
3. Qual è la probabilità di estrarre uno studente che non fa uso di marijuana e i cui genitori ne hanno fatto uso in passato?
Si tratta in questo caso di trovare una probabilità congiunta, quindi:
\( \frac {P(A \ and \ B)}{Totale}\\ \), quindi
\( \frac {85}{445} = 0.19\\ \).
La probabilità è del 19% circa.
Se i risultati di A e B si influenzano a vicenda, diciamo che le due variabili sono in un rapporto di dipendenza.
Viceversa, possiamo dire che le due variabili sono indipendenti.
Mi esprimo in maniera più rigorosa: possiamo affermare che l’evento B è indipendente dall’evento A se:
P(B|A) = P(B)
oppure
P(A|B) = P(A)
qualora non sia così, gli eventi sono tra loro dipendenti.
Dunque:
Spieghiamoci meglio avvalendoci di un esempio.
Chiamiamo A il fatto che le persone amano o meno il ciclismo.
B invece esprime il fatto che si ami oppure no l’abbacchio al forno. (logico, no?)
Costruisco la mia tabella di contingenza:
Ok ciclismo No ciclismo Totale Sì abbacchio 95 36 131 No abbacchio 15 19 34 -------------------------------------------------- Totale 110 55 165
Ricordiamoci cosa significa dire che due eventi sono indipendenti. Significa questo:
P(A | B) = P(A)
Ma nel nostro caso vediamo che
P(A) = 66,7%
perchè 110/165 = 0,67
P(A | B) = 72,5%
perchè 95/131 = 0,725
Ricordiamo infatti che
\(P(A|B) = \frac {P(A \ and \ B)}{P(B)}\\ \), quindi
\( \frac {95}{131} = 0.725\\ \).
Dal risultato è chiaro che
\( P(A) \neq P(A|B)\)
i due eventi risultano NON indipendenti, (quindi sono dipendenti).
D’altronde, è noto a tutti che tra amare il ciclismo e l’abbacchio arrosto c’è una chiara dipendenza 🙂
I test statistici sono strumenti fondamentali per l’analisi dei dati e la presa di decisioni informate. Scegliere…
Gli Alberi Decisionali sono un tipo di algoritmo di apprendimento automatico che utilizza una struttura…
Immaginiamo di voler trovare il percorso più veloce per raggiungere una destinazione in auto. Si…
Nel 1847, il matematico francese Augustin-Louis Cauchy stava lavorando su calcoli astronomici, quando ideò un…
La simulazione Monte Carlo è un metodo utilizzato per quantificare il rischio associato a un…
Abbiamo visto che la distribuzione binomiale si basa sull’ipotesi di una popolazione infinita N, condizione che si…