Vai al contenuto principale

Analisi di contingenza con R

In questo tutorial, imparerai con l’aiuto di un esempio come funziona l’"analisi di contingenza" o il "test chi-quadrato di indipendenza" e anche come eseguirla in modo efficiente usando R.
Aggiornato 29 set 2026  · 6 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

L’analisi di contingenza è un test d’ipotesi usato per verificare se due variabili categoriche sono indipendenti o meno. In parole semplici, ci stiamo chiedendo: "Possiamo prevedere il valore di una variabile se conosciamo il valore dell’altra?". Se la risposta è sì, possiamo dire che le variabili in esame non sono indipendenti. Se la risposta è no, allora possiamo dire che le variabili in esame sono indipendenti. Il test fa uso di tabelle di contingenza, motivo per cui è noto come "analisi di contingenza". È anche noto come "test chi-quadrato di indipendenza" perché la statistica test segue una distribuzione chi-quadrato ed è usato per verificare se due variabili categoriche sono indipendenti o meno.

L’ipotesi nulla del test è che le due variabili siano indipendenti, mentre l’ipotesi alternativa è che le due variabili non siano indipendenti.

Cerchiamo di capire l’"analisi di contingenza" o il "test chi-quadrato di indipendenza" con l’aiuto di un esempio.

Supponiamo di voler sapere se la scelta dello sport è indipendente dal genere oppure no. Abbiamo quindi chiesto a cento uomini e cento donne quale sport preferiscono praticare tra tiro con l’arco, boxe e ciclismo, e abbiamo riassunto i dati ottenuti nella seguente tabella a doppia entrata.

Analisi di contingenza con R

La tabella sopra è detta tabella osservata perché contiene le frequenze osservate.

Il test chi-quadrato di indipendenza funziona confrontando le frequenze osservate con le frequenze attese. Il nostro prossimo compito è quindi ricavare, a partire dalla tabella osservata, la tabella attesa contenente le frequenze attese. La tabella attesa rappresenta come ci aspetteremmo che fosse la tabella a doppia entrata se le due variabili categoriche fossero indipendenti. Dalla teoria della probabilità sappiamo che due eventi sono indipendenti se la loro probabilità congiunta è uguale al prodotto delle loro probabilità marginali. Useremo questo concetto per calcolare le frequenze attese per ciascuna delle sei celle. Calcoliamo la frequenza attesa per la prima cella. Per prima cosa, calcoliamo la probabilità congiunta moltiplicando la probabilità di essere donna (100/200) per la probabilità di preferire il tiro con l’arco (45/200). Una volta ottenuta la probabilità congiunta (100/200 * 45/200), moltiplicandola per la dimensione del campione (200) otteniamo la frequenza attesa per la prima cella, che è 22,5. Allo stesso modo, calcoleremo le frequenze attese per le altre cinque celle. La seguente tabella è quella che ci aspettiamo di vedere se genere e preferenza sportiva sono indipendenti.

Analisi di contingenza con R

Ora che abbiamo sia le frequenze attese sia quelle osservate, il nostro prossimo compito è verificare quanto le frequenze osservate differiscano da quelle attese. A tale scopo dobbiamo calcolare una statistica test nota come statistica chi-quadrato, poiché segue la distribuzione chi-quadrato. Di seguito è riportata la formula per calcolare il valore della statistica chi-quadrato.

Analisi di contingenza con R

Dalla formula sopra possiamo vedere che il valore della statistica chi-quadrato può essere 0 (quando non c’è assolutamente alcuna differenza tra frequenze osservate e attese) ma non può mai essere negativo. Questo rende il test chi-quadrato di indipendenza un test a una coda.

Usando la formula sopra, calcoliamo il valore della statistica chi-quadrato per il nostro esempio. È noto come valore osservato della statistica test.

Analisi di contingenza con R

È ora di decidere se rifiutare l’ipotesi nulla oppure no. Possiamo decidere confrontando il valore osservato della statistica test con il suo valore critico o guardando il p-value. Se il valore osservato della statistica test supera il valore critico o se il p-value è minore o uguale al livello di significatività, possiamo rifiutare l’ipotesi nulla e concludere che esiste una relazione statisticamente significativa tra le due variabili categoriche, cioè che non sono indipendenti. Se conosciamo il livello di significatività (di solito 0,05) e i gradi di libertà, possiamo ricavare il valore critico dalla tabella del chi-quadrato. Il livello di significatività è la probabilità di rifiutare un’ipotesi nulla vera. Per una tabella con r righe e c colonne, i gradi di libertà si calcolano con la seguente formula.

Analisi di contingenza con R

Quindi, per il nostro esempio, abbiamo 2 gradi di libertà.

Analisi di contingenza con R

Dalla tabella seguente possiamo vedere che il valore critico della statistica test è 5,99 per un livello di significatività di 0,05 e 2 gradi di libertà.

Analisi di contingenza con R

Dato che il valore osservato della statistica test è maggiore del suo valore critico (19,798 > 5,99), possiamo rifiutare l’ipotesi nulla e concludere che la scelta dello sport non è indipendente dal genere.

Vediamo ora come eseguire il test chi-quadrato di indipendenza usando il linguaggio R

È molto semplice eseguire il test chi-quadrato di indipendenza usando la funzione integrata chisq.test().

Di seguito è riportata la tabella osservata.

observed_table <- matrix(c(35, 15, 50, 10, 30, 60), nrow = 2, ncol = 3, byrow = T)
rownames(observed_table) <- c('Female', 'Male')
colnames(observed_table) <- c('Archery', 'Boxing', 'Cycling')
observed_table
##        Archery Boxing Cycling
## Female      35     15      50
## Male        10     30      60

Per eseguire il test, dobbiamo applicare la funzione chisq.test() alla tabella osservata.

X <- chisq.test(observed_table)
X
##
##  Pearson's Chi-squared test
##
## data:  observed_table
## X-squared = 19.798, df = 2, p-value = 5.023e-05

Dal risultato sopra, possiamo vedere che il p-value è inferiore al livello di significatività (0,05). Pertanto, possiamo rifiutare l’ipotesi nulla e concludere che le due variabili (genere e preferenza sportiva) non sono indipendenti.

Se vogliamo vedere la tabella attesa, possiamo farlo.

X$expected
##        Archery Boxing Cycling
## Female    22.5   22.5      55
## Male      22.5   22.5      55

Spero che questo articolo ti sia piaciuto. Se vuoi imparare di più in R, segui il corso Statistical Modeling in R (Part 1) di DataCamp.

Argomenti
R
Data Science
Analisi dei dati

Corsi R

{count, plural, one {Corso} other {Corsi}}

Introduzione a R

{hours} ore
3.1M
Impara le basi dell'analisi dei dati in R, compresi vettori, liste e data frame, e fai pratica con R con set di dati reali.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

{count, plural, one {blog} other {blogs}}

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

{count, plural, one {blog} other {blogs}}

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

{count, plural, one {blog} other {blogs}}

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro