Test Chi-Quadro: Guida Completa all’Adattamento e all’Indipendenza (con Esempi Pratici e Python)

Cerca:

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Test Chi-Quadro Adattamento e Indipendenza

Il Test del Chi-Quadro – La Chiave per Analizzare i Tuoi Dati Categoriali

Comprendere le relazioni e le distribuzioni dei dati è fondamentale per prendere decisioni informate.

Tra gli strumenti più potenti e versatili a disposizione c’è il Test del Chi-Quadro (spesso scritto anche Chi-Quadrato). Questo test statistico non parametrico è un vero jolly, utilizzato principalmente per due scopi cruciali:

  1. Verificare l’Adattamento (Goodness-of-Fit): Ti permette di capire se un set di dati osservati segue una distribuzione teorica specifica. Ad esempio, è il tuo dado davvero equilibrato? O le preferenze dei tuoi clienti si distribuiscono come previsto?
  2. Analizzare l’Indipendenza: Ti aiuta a scoprire se esiste un’associazione significativa tra due variabili categoriali. C’è un legame tra l’abitudine al fumo e lo sviluppo di una certa malattia? O il genere influenza la preferenza per un determinato prodotto?

Che tu sia uno studente, un ricercatore o un professionista dei dati, padroneggiare il Test del Chi-Quadro è un’abilità indispensabile. In questo tutorial completo, esploreremo a fondo entrambi gli usi, partendo dai concetti base fino ad arrivare a esempi pratici dettagliati e all’implementazione in  Python.

 

1. Concetti Base del Chi-Quadro

1.1 Formula Generale

La statistica del chi-quadro ([math]\chi^2[/math]) si calcola come:

[math]\displaystyle \chi^2 = \sum \frac{(O_i – E_i)^2}{E_i}[/math]

Dove:

  • [math]O_i[/math] = Frequenza osservata
  • [math]E_i[/math] = Frequenza attesa

Se il valore calcolato supera un certo valore critico (dalla tabella chi-quadro), rifiutiamo l’ipotesi nulla.

1.2 Gradi di Libertà (df)

    • Goodness-of-fit: [math]\text{df} = k – 1 – p[/math]

Dove:

      • [math]k[/math] = numero di categorie
      • [math]p[/math] = parametri stimati
    • Test di indipendenza: [math]\text{df} = (r – 1)(c – 1)[/math]

Dove:

    • [math]r[/math] = righe
    • [math]c[/math] = colonne

—

2. Test di Adattamento (Goodness-of-Fit)

Verifica se un campione segue una distribuzione teorica (es. uniforme, binomiale, normale).

Esempio: Lancio di un Dado (Uniforme)

Ipotesi:

  • [math]H_0[/math]: Il dado è equilibrato (probabilità uniforme).
  • [math]H_1[/math]: Il dado è truccato.

Dati osservati (60 lanci):

Faccia 1 2 3 4 5 6
Frequenza 8 12 9 11 10 10

Frequenze attese: [math]60/6=10[/math] per ogni faccia.

Calcolo del [math]\chi^2[/math]:

[math]\displaystyle
\begin{aligned}
\chi^2 &= \sum \frac{(O_i – E_i)^2}{E_i} \\
&= \frac{(8-10)^2}{10} + \frac{(12-10)^2}{10} + \frac{(9-10)^2}{10} + {} \\
&+ \frac{(11-10)^2}{10} + \frac{(10-10)^2}{10} + \frac{(10-10)^2}{10} = 1.0
\end{aligned}
[/math]

Confronto con [math]\chi^2[/math] critico ([math]\alpha=0.05[/math], [math]\text{df}=5[/math]):

Valore critico [math]\approx 11.07[/math]

Poiché [math]1.0 < 11.07[/math], accettiamo [math]H_0[/math]: il dado è equilibrato.

—

3. Test di Indipendenza

Verifica se due variabili categoriali sono indipendenti.

Esempio: Studio su Fumo e Tumore

Tabella di contingenza osservata:

Tumore No Tumore Totale
Fumatori 30 70 100
Non-fumatori 10 90 100
Totale 40 160 200

Ipotesi:

  • [math]H_0[/math]: Fumo e tumore sono indipendenti.
  • [math]H_1[/math]: Esiste un’associazione.

Calcolo delle frequenze attese:

[math]\displaystyle E_{ij} = \frac{(\text{Totale riga}) \times (\text{Totale colonna})}{\text{Totale generale}}[/math]

Forse potrebbe interessarti anche:  Guida alla Distribuzione Multinomiale: 6 Esercizi Svolti dal Base all'Avanzato

Esempio:

  • [math]E_{\text{Fumatori, Tumore}} = \frac{100 \times 40}{200} = 20[/math]
  • [math]E_{\text{Non-fumatori, No Tumore}} = \frac{100 \times 160}{200} = 80[/math]

Tabella attesa:

Tumore No Tumore
Fumatori 20 80
Non-fumatori 20 80

Calcolo del [math]\chi^2[/math]:

[math]\displaystyle \chi^2 = \frac{(30-20)^2}{20} + \frac{(70-80)^2}{80} + \frac{(10-20)^2}{20} + \frac{(90-80)^2}{80} = 12.5[/math]

Gradi di libertà:

[math]\text{df} = (2-1)(2-1) = 1[/math]

Valore critico ([math]\alpha=0.05[/math], [math]\text{df}=1[/math]):

[math]3.84[/math]

Poiché [math]12.5 > 3.84[/math], rifiutiamo [math]H_0[/math]: fumo e tumore sono associati.

—

4. Condizioni di Applicabilità

  • Dati categoriali (nominali o ordinali).
  • Campione sufficientemente grande:
    • Tutte le frequenze attese [math]E_i \ge 5[/math].
    • Se violato, usare correzione di Yates o test esatto di Fisher.

—

5. Interpretazione e Reporting

  • Se [math]\chi^2 \text{ calcolato} > \chi^2 \text{ critico}[/math] → Rifiuto [math]H_0[/math].
  • Se [math]p\text{-value} < \alpha[/math] → Rifiuto [math]H_0[/math].

Esempio di report:

“Il test del chi-quadro ha rivelato un’associazione significativa tra fumo e tumore, [math]\chi^2(1) = 12.5[/math], [math]p < 0.05[/math].”

—

6. Implementazione in Python (con scipy)


from scipy.stats import chi2_contingency

# Test di indipendenza
observed = [[30, 70], [10, 90]]
chi2, p, dof, expected = chi2_contingency(observed)

print(f"Chi-quadro: {chi2}, p-value: {p}, Gradi di libertà: {dof}")

—

Conclusione

Il test del chi-quadro è uno strumento essenziale per:

  • ✅ Verificare l’adattamento a una distribuzione teorica.
  • ✅ Analizzare l’indipendenza tra variabili categoriali.

Ricordare sempre di controllare le condizioni di applicabilità e interpretare correttamente i risultati.

Esercizio 1 (Uniforme – Test di Adattamento)

Testo:

Un dado viene lanciato 60 volte. Si osservano le seguenti frequenze:

Faccia 1 2 3 4 5 6
Frequenza 8 12 9 11 10 10

Verificare se il dado è equilibrato ([math]\alpha=0.05[/math]).

Soluzione Manuale:

Ipotesi:

  • [math]H_0[/math]: Il dado è equilibrato ([math]p_i = \frac{1}{6}[/math]).
  • [math]H_1[/math]: Il dado non è equilibrato.

Frequenze attese:

[math]E_i = 60 \times \frac{1}{6} = 10[/math] per ogni faccia.

Calcolo del [math]\chi^2[/math]:

[math]\displaystyle \chi^2 = \sum \frac{(O_i – E_i)^2}{E_i} = \frac{(8-10)^2}{10} + \frac{(12-10)^2}{10} + \frac{(9-10)^2}{10} + \frac{(11-10)^2}{10} + \frac{(10-10)^2}{10} + \frac{(10-10)^2}{10} = 1.0[/math]

Gradi di libertà:

[math]\text{df} = 6 – 1 = 5[/math].

Decisione:

Valore critico ([math]\alpha=0.05[/math], [math]\text{df}=5[/math]) = [math]11.07[/math].

Poiché [math]1.0 < 11.07[/math], non rifiutiamo [math]H_0[/math].

Verifica Python:


from scipy.stats import chisquare

observed = [8, 12, 9, 11, 10, 10]
expected = [10] * 6
chi2, p = chisquare(observed, expected)

print(f"Chi-quadro: {chi2:.2f}, p-value: {p:.4f}")  # Output: Chi-quadro: 1.00, p-value: 0.9626

Rilevanza Applicativa:

Questo esercizio, sebbene semplice, modella scenari comuni in settori come il controllo qualità o la sicurezza informatica. Immagina di voler verificare se i numeri generati da un algoritmo per la crittografia sono distribuiti in modo veramente casuale (uniforme), o se un processo produttivo sta producendo difetti in modo imprevedibile su diverse linee (idealmente uniforme). Se i risultati non fossero uniformi, indicherebbe un bias o un malfunzionamento, richiedendo un’indagine approfondita. È la base per assicurare equità e imparzialità in processi che dovrebbero essere casuali.

Esercizio 2 (Binomiale – Test di Adattamento)

Testo:

Un test a 10 domande V/F viene somministrato a 200 studenti. Frequenze osservate:

Forse potrebbe interessarti anche:  Guida Pratica al T-test di Welch: Esercizi e Soluzioni Passo Passo
Corrette 0-2 3-5 6-8 9-10
Frequenza 15 50 100 35

Verificare se i dati seguono una Binomiale(10, 0.5) ([math]\alpha=0.05[/math]).

Soluzione Manuale:

Ipotesi:

  • [math]H_0[/math]: I dati seguono Binomiale(10, 0.5).
  • [math]H_1[/math]: Non seguono la distribuzione.

Probabilità attese:

  • [math]P(0 \le X \le 2) = 0.0547[/math]
  • [math]P(3 \le X \le 5) = 0.5684[/math]
  • [math]P(6 \le X \le 8) = 0.3662[/math]
  • [math]P(X \ge 9) = 0.0108[/math]

Frequenze attese:

[math]\displaystyle E_i = 200 \times [0.0547, 0.5684, 0.3662, 0.0108] = [10.94, 113.68, 73.24, 2.16][/math].

Raggruppamento:

[math]E_4 < 5[/math] → Unisci ultime due categorie.

Calcolo [math]\chi^2[/math]:

[math]\displaystyle \chi^2 = \frac{(15 – 10.94)^2}{10.94} + \frac{(50 – 113.68)^2}{113.68} + \frac{(135 – 75.4)^2}{75.4} = 131.18[/math]

[math]\text{df}=2[/math], Valore critico = [math]5.99[/math] → Rifiuto [math]H_0[/math].

Verifica Python:


from scipy.stats import binom

observed = [15, 50, 100, 35]

p0_2 = binom.cdf(2, n=10, p=0.5)
p3_5 = binom.cdf(5, 10, 0.5) - p0_2
p6_8 = binom.cdf(8, 10, 0.5) - binom.cdf(5, 10, 0.5)
p9_10 = 1 - binom.cdf(8, 10, 0.5)

expected = [200*p for p in [p0_2, p3_5, p6_8, p9_10]]

# Raggruppa ultime due categorie
chi2, p = chisquare([15, 50, 135], [expected[0], expected[1], expected[2] + expected[3]])

print(f"Chi-quadro: {chi2:.2f}, p-value: {p:.4e}")  # Output: Chi-quadro: 131.18, p-value: 6.6059e-29

Rilevanza Applicativa:

Questo tipo di analisi è fondamentale in educazione, ricerca medica e marketing.

  • Educazione: Permette di valutare se le risposte a un test a scelta multipla (con risposte V/F, è un caso particolare di binomiale) si distribuiscono come ci si aspetterebbe da un’ipotesi specifica (es. risposte date a caso con probabilità del 50%).
  • Ricerca Medica: Potrebbe essere usato per verificare se la frequenza di successo di un trattamento su pazienti segue una certa probabilità attesa (es. 50% di guarigioni per un farmaco sperimentale).
  • Controllo Qualità: Si potrebbe testare se la proporzione di articoli difettosi in un lotto segue la distribuzione binomiale attesa basata su standard passati. Rilevare una deviazione significa che il processo non si comporta come previsto.

Esercizio 3 (Poisson – Test di Adattamento)

Testo:

Numero di chiamate in 100 intervalli:

Chiamate (X) 0 1 2 3 [math]\ge4[/math]
Frequenza 10 30 35 15 10

Verificare se [math]X \sim \text{Poisson}(1.5)[/math] ([math]\alpha=0.05[/math]).

Soluzione Manuale:

Ipotesi:

  • [math]H_0[/math]: [math]X \sim \text{Poisson}(1.5)[/math].
  • [math]H_1[/math]: Non è Poisson.

Probabilità attese:

  • [math]P(X=0) = e^{-1.5} \approx 0.2231[/math]
  • [math]P(X=1) = 1.5 \times e^{-1.5} \approx 0.3347[/math]
  • [math]P(X=2) = \frac{1.5^2}{2} \times e^{-1.5} \approx 0.2510[/math]
  • [math]P(X \ge 3) = 1 – \sum_{k=0}^{2} P(X=k) \approx 0.1912[/math]

Frequenze attese:

[math]\displaystyle E_i = 100 \times [0.2231, 0.3347, 0.2510, 0.1912] = [22.3, 33.5, 25.1, 19.2][/math].

Calcolo [math]\chi^2[/math]:

[math]\displaystyle \chi^2 = \frac{(10 – 22.3)^2}{22.3} + \frac{(30 – 33.5)^2}{33.5} + \frac{(35 – 25.1)^2}{25.1} + \frac{(25 – 19.2)^2}{19.2} = 12.8[/math]

[math]\text{df}=3[/math], Valore critico = [math]7.81[/math] → Rifiuto [math]H_0[/math].

Verifica Python:


from scipy.stats import poisson

lambd = 1.5
probs = [poisson.pmf(k, lambd) for k in [0,1,2]]
probs.append(1 - sum(probs))  # P(X≥3)

expected = [100*p for p in probs]
observed = [10, 30, 35, 25]  # Raggruppato X≥3

chi2, p = chisquare(observed, expected)

print(f"Chi-quadro: {chi2:.2f}, p-value: {p:.4f}")  # Output: Chi-quadro: 12.80, p-value: 0.0051

Rilevanza Applicativa:

Forse potrebbe interessarti anche:  Il Tempo di Permanenza Qualificato come Indicatore di Engagement: Un'Analisi Statistica Basata sulla Distribuzione Binomiale Negativa

Il test di adattamento alla distribuzione di Poisson è cruciale per la modellazione di eventi rari o la gestione di flussi.

  • Gestione Clienti/Traffico: Un’azienda di telecomunicazioni potrebbe voler verificare se il numero di chiamate ricevute in un intervallo di tempo segue una distribuzione di Poisson. Questo è vitale per ottimizzare la pianificazione del personale del call center.
  • Epidemiologia: Analizzare la frequenza di una malattia rara in una popolazione.
  • Assicurazioni: Modellare il numero di sinistri in un dato periodo per stimare i rischi.
  • Analisi del Rischio: Ingegneri o analisti potrebbero testare se il numero di guasti a un macchinario o il numero di incidenti stradali in una certa area si conformano a una distribuzione di Poisson per previsioni e prevenzione.

Esercizio 4 (Indipendenza – 2×2)

Testo:

Un sondaggio su 200 persone:

Preferisce Non Preferisce Totale
Uomini 50 40 90
Donne 60 50 110

Verificare se genere e preferenza sono indipendenti ([math]\alpha=0.05[/math]).

Soluzione Manuale:

Ipotesi:

  • [math]H_0[/math]: Le variabili sono indipendenti.
  • [math]H_1[/math]: Sono dipendenti.

Frequenze attese:

  • [math]E_{\text{Uomini, Preferisce}} = \frac{90 \times 110}{200} = 49.5[/math]
  • [math]E_{\text{Uomini, Non Preferisce}} = \frac{90 \times 90}{200} = 40.5[/math]
  • [math]E_{\text{Donne, Preferisce}} = \frac{110 \times 110}{200} = 60.5[/math]
  • [math]E_{\text{Donne, Non Preferisce}} = \frac{110 \times 90}{200} = 49.5[/math]

Calcolo [math]\chi^2[/math]:

[math]\displaystyle \chi^2 = \sum \frac{(O_{ij} – E_{ij})^2}{E_{ij}} = \frac{(50-49.5)^2}{49.5} + \frac{(40-40.5)^2}{40.5} + \frac{(60-60.5)^2}{60.5} + \frac{(50-49.5)^2}{49.5} = 0.0204[/math]

[math]\text{df}=1[/math], Valore critico = [math]3.84[/math] → Non rifiuto [math]H_0[/math].

Verifica Python:


from scipy.stats import chi2_contingency
import numpy as np

table = np.array([[50, 40], [60, 50]])
chi2, p, dof, expected = chi2_contingency(table)

print(f"Chi-quadro: {chi2:.4f}, p-value: {p:.4f}")  # Output: Chi-quadro: 0.0204, p-value: 0.8866

Rilevanza Applicativa:

Questo è uno degli usi più diffusi del test Chi-quadro, con implicazioni dirette in quasi tutti i campi della ricerca sociale, marketing, medicina e scienze politiche.

  • Marketing: Verificare se c’è un’associazione tra il genere e la preferenza per un prodotto, o tra l’età e l’utilizzo di un certo social media.
  • Ricerca Sociale: Indagare se il livello di istruzione è indipendente dall’opinione su una questione politica, o se l’area geografica è indipendente dalla partecipazione civica.
  • Medicina/Salute Pubblica: Determinare se l’esposizione a un fattore di rischio (es. abitudine alimentare) è associata alla presenza di una malattia (es. diabete).
  • Analisi Organizzativa: Valutare se c’è un legame tra il reparto di appartenenza dei dipendenti e la loro soddisfazione lavorativa.

Note Finali:

Dove necessario, le categorie sono state raggruppate per soddisfare [math]E_i \ge 5[/math].

Pubblicità