Calcolare Chi-Quadro In R

Calcolatore Chi-Quadro in R

Calcola il test chi-quadro per l’indipendenza o la bontà dell’adattamento con dati personalizzati

Risultati del Test Chi-Quadro

Statistica Chi-Quadro:
Gradi di libertà:
p-value:
Risultato:

Guida Completa al Test Chi-Quadro in R

Il test chi-quadro (χ²) è uno dei test statistici più utilizzati per valutare l’indipendenza tra variabili categoriche o la bontà dell’adattamento di una distribuzione osservata rispetto a una distribuzione attesa. In questo articolo, esploreremo in dettaglio come eseguire il test chi-quadro in R, interpretare i risultati e applicare correttamente questa tecnica statistica.

1. Cos’è il Test Chi-Quadro?

Il test chi-quadro è un test non parametrico utilizzato per:

  • Test di indipendenza: Verificare se esiste una relazione significativa tra due variabili categoriche
  • Test di bontà dell’adattamento: Verificare se una distribuzione osservata si adatta a una distribuzione teorica attesa

La statistica test χ² misura la discrepanza tra le frequenze osservate e quelle attese sotto l’ipotesi nulla. Valori elevati di χ² indicano una maggiore discrepanza tra osservato e atteso.

2. Assunzioni del Test Chi-Quadro

Per applicare correttamente il test chi-quadro, è necessario verificare le seguenti assunzioni:

  1. Dati categorici: Le variabili devono essere categoriche (nominali o ordinali)
  2. Frequenze attese: Le frequenze attese in ogni cella devono essere ≥5 (per tabelle 2×2) o ≥1 (per tabelle più grandi, ma con non più del 20% delle celle con frequenze attese <5)
  3. Indipendenza: Le osservazioni devono essere indipendenti

Quando NON usare il test chi-quadro

  • Con campioni molto piccoli (n<20)
  • Quando più del 20% delle celle hanno frequenze attese <5
  • Con variabili continue (usare invece test t o ANOVA)

3. Esecuzione del Test Chi-Quadro in R

R fornisce funzioni integrate per eseguire facilmente il test chi-quadro. Vediamo come implementare entrambi i tipi di test.

3.1 Test di Indipendenza

Per un test di indipendenza tra due variabili categoriche, utilizziamo la funzione chisq.test() su una tabella di contingenza:

# Creazione di una tabella di contingenza data <- matrix(c(5, 10, 15, 20), nrow=2, dimnames=list(c(“Gruppo A”, “Gruppo B”), c(“Successo”, “Fallimento”))) # Esecuzione del test chi-quadro result <- chisq.test(data) # Visualizzazione dei risultati print(result)

Output tipico:

Pearson’s Chi-squared test with Yates’ continuity correction data: data X-squared = 1.1429, df = 1, p-value = 0.2851

3.2 Test di Bontà dell’Adattamento

Per verificare se una distribuzione osservata segue una distribuzione attesa:

# Dati osservati observed <- c(10, 20, 30) # Dati attesi (distribuzione uniforme) expected <- c(20, 20, 20) # Esecuzione del test result <- chisq.test(x=observed, p=expected/sum(expected)) # Visualizzazione print(result)

4. Interpretazione dei Risultati

La tabella seguente mostra come interpretare i risultati in base al p-value:

p-value Interpretazione Decisione
p > 0.05 Non c’è evidenza sufficiente per rifiutare H₀ Non rifiutare l’ipotesi nulla
p ≤ 0.05 C’è evidenza sufficiente per rifiutare H₀ Rifiuta l’ipotesi nulla
p ≤ 0.01 Evidenza molto forte contro H₀ Rifiuta fortemente l’ipotesi nulla

Per il test di indipendenza:

  • H₀: Le variabili sono indipendenti
  • H₁: Le variabili non sono indipendenti

Per il test di bontà dell’adattamento:

  • H₀: I dati osservati seguono la distribuzione attesa
  • H₁: I dati osservati non seguono la distribuzione attesa

5. Correzione per la Continuità di Yates

Per tabelle 2×2, R applica automaticamente la correzione di Yates, che ajusta il valore di χ² per migliorare l’approssimazione alla distribuzione chi-quadro. Questa correzione è conservativa e può essere disabilitata con correct=FALSE:

chisq.test(data, correct=FALSE)

6. Test Chi-Quadro con Simulazione Monte Carlo

Quando le assunzioni non sono soddisfatte (frequenze attese troppo basse), possiamo usare la simulazione Monte Carlo:

result <- chisq.test(data, simulate.p.value=TRUE, B=10000)

Questo metodo:

  • Genera 10.000 tabelle con le stesse marginali
  • Calcola χ² per ciascuna tabella simulata
  • Determina il p-value come proporzione di χ² simulati ≥ χ² osservato

7. Visualizzazione dei Risultati

Una buona pratica è visualizzare i risultati con un mosaico plot:

# Installazione (se necessario) # install.packages(“vcd”) library(vcd) mosaic(data, shade=TRUE, legend=TRUE)

Questo mostra:

  • Le dimensioni relative delle celle
  • Le discrepanze tra osservato e atteso (ombreggiatura)
  • Una rappresentazione visiva dell’indipendenza

8. Potenza del Test e Dimensione del Campione

La potenza del test chi-quadro dipende fortemente dalla dimensione del campione. La tabella seguente mostra la potenza per diversi effetti e dimensioni campionarie (per α=0.05):

Dimensione Effetto (w) n=50 n=100 n=200 n=500
0.1 (piccolo) 0.07 0.12 0.25 0.60
0.3 (medio) 0.25 0.50 0.85 0.99
0.5 (grande) 0.60 0.90 1.00 1.00

Per calcolare la potenza in R:

# Installazione (se necessario) # install.packages(“pwr”) library(pwr) pwr.chisq.test(w=0.3, N=100, df=1, sig.level=0.05)

9. Errori Comuni da Evitare

❌ Ignorare le frequenze attese

Non verificare che le frequenze attese siano ≥5 può portare a risultati non validi, specialmente con campioni piccoli.

❌ Interpretazione errata del p-value

Un p-value basso non indica la forza dell’associazione, solo che c’è evidenza contro H₀. Usa misure come V di Cramer per la forza.

❌ Applicare a dati continui

Il chi-quadro è per dati categorici. Per dati continui, usa test t, ANOVA o regressione.

10. Alternative al Test Chi-Quadro

Quando le assunzioni non sono soddisfatte, considera:

  • Test esatto di Fisher: Per tabelle 2×2 con campioni piccoli
  • Test G: Alternative basate sulla verosimiglianza
  • Test di McNemar: Per dati appaiati
  • Test di Cochran-Mantel-Haenszel: Per tabelle stratificate

11. Applicazioni Pratiche

Il test chi-quadro viene utilizzato in numerosi contesti:

  1. Ricerca medica: Valutare l’associazione tra trattamento e esito
  2. Marketing: Analizzare le preferenze dei consumatori
  3. Scienze sociali: Studiare relazioni tra variabili demografiche
  4. Controllo qualità: Verificare la distribuzione dei difetti
  5. Genetica: Testare le proporzioni di Mendel

12. Risorse Addizionali

Per approfondire:

13. Esempio Completo con Dati Realistici

Consideriamo uno studio che valuta l’efficacia di una campagna vaccinale:

# Dati: Vaccinato (Sì/No) vs Contagio (Sì/No) vaccine_data <- matrix(c(10, 90, 30, 70), nrow=2, dimnames=list(c(“Vaccinato”, “Non vaccinato”), c(“Contagiato”, “Non contagiato”))) # Test chi-quadro result <- chisq.test(vaccine_data) # Output print(result) # Odds Ratio odds_ratio <- (vaccine_data[1,1]*vaccine_data[2,2])/(vaccine_data[1,2]*vaccine_data[2,1]) cat(“Odds Ratio:”, odds_ratio, “\n”) # Risk Ratio risk_ratio <- (vaccine_data[1,1]/sum(vaccine_data[1,]))/(vaccine_data[2,1]/sum(vaccine_data[2,])) cat(“Risk Ratio:”, risk_ratio, “\n”)

Output:

Pearson’s Chi-squared test with Yates’ continuity correction data: vaccine_data X-squared = 11.4286, df = 1, p-value = 0.0007235 Odds Ratio: 0.3162278 Risk Ratio: 0.3703704

Interpretazione:

  • p-value = 0.0007 → Evidenza molto forte che la vaccinazione e il contagio non sono indipendenti
  • Odds Ratio = 0.32 → Il gruppo vaccinato ha ~68% in meno di probabilità di contrarre l’infezione
  • Risk Ratio = 0.37 → Il rischio assoluto è ridotto del 63% nei vaccinati

14. Calcolo Manuale del Chi-Quadro

Per comprendere appieno il test, è utile vedere il calcolo manuale:

Formula:

χ² = Σ [(Oᵢ – Eᵢ)² / Eᵢ]

Dove:

  • Oᵢ = frequenza osservata
  • Eᵢ = frequenza attesa

Esempio con i dati della vaccinazione:

Cella Osservato (O) Atteso (E) (O-E)²/E
Vaccinato & Contagiato 10 20 5.00
Vaccinato & Non contagiato 90 80 1.25
Non vaccinato & Contagiato 30 20 5.00
Non vaccinato & Non contagiato 70 80 1.25
Totale χ² 12.50

Nota: La leggera differenza (12.50 vs 11.43) è dovuta alla correzione di Yates applicata automaticamente da R.

15. Limiti del Test Chi-Quadro

Nonostante la sua utilità, il test chi-quadro ha alcuni limiti:

  • Sensibilità alla dimensione del campione: Con campioni molto grandi, anche differenze minime risultano significative
  • Non misura la forza dell’associazione: Un p-value significativo non indica quanto sia forte la relazione
  • Solo per dati categorici: Non può essere applicato a variabili continue
  • Assunzione delle frequenze attese: Può essere problematico con campioni piccoli

16. Misure di Associazione per Tabelle di Contingenza

Quando il test chi-quadro mostra una relazione significativa, possiamo quantificarne la forza con:

Misura Intervallo Interpretazione Funzione R
Phi (φ) 0 a 1 Forza per tabelle 2×2 sqrt(chisq.test(...)$statistic/n)
V di Cramer 0 a 1 Estensione di Phi per tabelle >2×2 sqrt(chisq.test(...)$statistic/(n*min(df)))
Odds Ratio 0 a ∞ Rapporto tra odds in 2×2 (a*d)/(b*c)
Risk Ratio 0 a ∞ Rapporto tra rischi in 2×2 (a/(a+b))/(c/(c+d))

17. Test Chi-Quadro per Trend (Cochran-Armitage)

Quando le variabili ordinali mostrano un trend, possiamo usare una variante del chi-quadro:

# Dati con livelli ordinali (es. dose di farmaco: bassa, media, alta) trend_data <- matrix(c(10, 15, 20, 20, 25, 30), nrow=2) # Test per trend result <- prop.trend.test(trend_data) print(result)

18. Test Chi-Quadro in R con Dati Reali

Esempio con il dataset integrato HairEyeColor:

# Analisi relazione tra colore occhi e colore capelli result <- chisq.test(HairEyeColor) # Visualizzazione mosaic(HairEyeColor, shade=TRUE) # Test post-hoc (se significativo) pairwise.prop.test(HairEyeColor)

19. Reporting dei Risultati

Quando si riportano i risultati di un test chi-quadro, includere sempre:

  1. La statistica test (χ²) con gradi di libertà
  2. Il p-value esatto
  3. La dimensione del campione
  4. Eventuali correzioni applicate
  5. Una misura dell’effetto (es. V di Cramer)

Esempio di reporting:

“Un test chi-quadro di indipendenza ha mostrato una relazione significativa tra [variabile 1] e [variabile 2], χ²(1, N=200) = 11.43, p = .0007. La forza dell’associazione era moderata (V di Cramer = .24).”

20. Conclusione

Il test chi-quadro è uno strumento statistico fondamentale per analizzare dati categorici in R. Quando usato correttamente, fornisce informazioni preziose sulle relazioni tra variabili o sulla bontà dell’adattamento di distribuzioni. Ricorda sempre di:

  • Verificare le assunzioni del test
  • Considerare alternative quando le assunzioni non sono soddisfatte
  • Interpretare correttamente il p-value
  • Quantificare la forza dell’associazione con misure appropriate
  • Visualizzare i risultati per una migliore comprensione

Con la pratica e l’attenta interpretazione, il test chi-quadro può diventare uno strumento potente nel tuo arsenale di analisi statistica.

Leave a Reply

Your email address will not be published. Required fields are marked *