Anova, la tecnica dell’analisi della Varianza con Python

Data Science Statistics - Anova header

ANOVA, acronimo di “Analysis of Variance” (analisi della varianza), è una tecnica statistica utilizzata per valutare se ci sono differenze significative tra le medie di tre o più gruppi indipendenti. In altre parole, ANOVA confronta le medie di diversi gruppi per determinare se almeno uno di essi è significativamente diverso dagli altri.

[wpda_org_chart tree_id=7 theme_id=50]

La tecnica ANOVA

L’Analysis of Variance (ANOVA) è una tecnica statistica che si basa sulla decomposizione della variabilità nei dati in due componenti principali:

  • la variabilità tra i gruppi
  • la variabilità all’interno dei gruppi

Immagina di avere diverse persone assegnate a gruppi diversi e di misurare una variabile di interesse per ciascuna persona. L’ANOVA si chiede se le differenze che osserviamo tra i valori medi di queste variabili nei vari gruppi sono più grandi di quanto ci si potrebbe aspettare dalla semplice casualità.

Per fare ciò, l’ANOVA utilizza un test chiamato Test T, che confronta la varianza tra i gruppi con la varianza all’interno dei gruppi. Se la variabilità tra i gruppi è significativamente maggiore, ciò suggerisce che almeno uno dei gruppi è diverso dagli altri in termini della variabile misurata.

L’ipotesi nulla dell’ANOVA afferma che non ci sono differenze significative tra le medie dei gruppi, mentre l’ipotesi alternativa suggerisce che almeno un gruppo è significativamente diverso. La decisione di respingere o accettare l’ipotesi nulla dipende da un valore p associato al test F. Se il valore p è sufficientemente basso (generalmente sotto 0,05), si può respingere l’ipotesi nulla.

È importante notare che l’ANOVA richiede che i campioni all’interno di ciascun gruppo siano indipendenti e che le distribuzioni dei dati siano approssimativamente normali. Questi sono i principali concetti su cui si basa l’ANOVA per determinare se le differenze osservate tra i gruppi sono statisticamente significative o semplicemente dovute al caso.

Il T Test

Il test t, o t-test, è una tecnica statistica utilizzata per valutare se ci sono differenze significative tra le medie di due gruppi. Esistono diverse varianti del test t, ma le due più comuni sono il t-test per campioni indipendenti e il t-test per campioni dipendenti (o accoppiati).

Ecco come funziona ciascuna variante:

T-Test per Campioni Indipendenti:

  1. Ipotesi Nulla e Alternativa:
  • Ipotesi Nulla (H0): Non ci sono differenze significative tra le medie dei due gruppi.
  • Ipotesi Alternativa (H1): Ci sono differenze significative tra le medie dei due gruppi.
  1. Calcolo del t-value:

Si calcola il t-value utilizzando la differenza tra le medie dei due gruppi normalizzata per la variabilità dei dati.

 t = \frac{\bar{X}_1 - \bar{X}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}

Dove:

  • \bar{X}_1 e \bar{X}_2 sono le medie dei due gruppi.
  • s_1 e s_2 sono gli errori standard dei due gruppi.
  • n_1 e n_2 sono le dimensioni dei due campioni.
  1. Determinazione della Significatività:

Si confronta il valore t calcolato con una distribuzione t di Student o si utilizza un software statistico per ottenere il valore p associato.

  1. Decisione:

Se il valore p è inferiore al livello di significatività prefissato (solitamente 0,05), si può respingere l’ipotesi nulla a favore dell’ipotesi alternativa, suggerendo che ci sono differenze significative tra le medie dei due gruppi.

Libro consigliato:

Se ti piace quest’argomento, ti consiglio questo libro:

Fondamenti di Statistica per Data Scientists

T-Test per Campioni Dipendenti:

Il t-test per campioni dipendenti è utilizzato quando le misurazioni sono accoppiate, ad esempio, quando si misura la stessa cosa su individui appaiati prima e dopo un trattamento.

Il calcolo del t-value è simile, ma si considera la differenza tra le coppie di osservazioni:

 t = \frac{\bar{d}}{\frac{s_d}{\sqrt{n}}}

Dove:

  • \bar{d} è la media delle differenze.
  • s_d è la deviazione standard delle differenze.
  • n è il numero di coppie di osservazioni accoppiate.

Il processo di determinazione della significatività e la decisione sono simili al t-test per campioni indipendenti.

In entrambi i casi, il test t fornisce una valutazione della probabilità che le differenze osservate tra i gruppi siano dovute al caso, e il valore p viene confrontato con il livello di significatività per prendere una decisione statistica.

Python Data Analytics

Se vuoi approfondire l’argomento e scoprire di più sul mondo della Data Science con Python, ti consiglio di leggere il mio libro:

Python Data Analytics 3rd Ed

Fabio Nelli

Calcolo del valore p

Chiedo scusa per la confusione. Il calcolo del valore p in un test t implica confrontare il t-value calcolato con la distribuzione t di Student e determinare la probabilità di ottenere un t-value almeno così estremo sotto l’ipotesi nulla. Ecco come si fa:

  1. Calcolo del t-value: Calcola il t-value usando la formula appropriata per il tipo di test t che stai eseguendo (t per campioni indipendenti o t per campioni dipendenti).
  2. Gradi di libertà: Calcola i gradi di libertà per il tuo test. Per il test t per campioni indipendenti, i gradi di libertà sono df = n_1 + n_2 - 2, dove n_1 e n_2 sono le dimensioni dei due campioni. Per il test t per campioni dipendenti, i gradi di libertà sono df = n - 1, dove n è il numero di coppie di osservazioni accoppiate.
  3. Consultazione della Distribuzione t di Student: Guarda la distribuzione t di Student con i gradi di libertà calcolati. Questa è una tabella standard o può essere ottenuta utilizzando un software statistico.
  4. Confronto del t-value con la Tabella: Trova il valore critico della distribuzione t corrispondente al tuo livello di significatività (ad esempio, 0,05). Questo sarà il punto di taglio oltre il quale respingiamo l’ipotesi nulla.
  5. Calcolo del Valore p: Guarda se il tuo t-value supera il valore critico. Se il t-value è più estremo (più grande o più piccolo) del valore critico, puoi calcolare il valore p come la probabilità di ottenere un t-value almeno così estremo nella distribuzione t di Student.

Per semplificare il processo, molte analisi statistiche sono effettuate oggi utilizzando software statistici come R, Python con librerie come SciPy o StatsModels, o programmi dedicati come SPSS. Questi strumenti calcolano automaticamente il valore p per te, semplificando l’analisi statistica.

Anova with SciPy

Un semplice esempio di ANOVA con SciPy

Certamente! Ecco un esempio di come eseguire un test t per tre gruppi indipendenti utilizzando la libreria SciPy in Python:

import scipy.stats as stats

# Dati dei tre gruppi
gruppo1 = [22, 25, 28, 32, 35]
gruppo2 = [18, 24, 30, 28, 34]
gruppo3 = [15, 20, 25, 30, 35]

# Eseguire il test t per tre gruppi indipendenti
t_statistic, p_value = stats.f_oneway(gruppo1, gruppo2, gruppo3)

# Visualizza i risultati
print(f"t-statistic: {t_statistic}")
print(f"p-value: {p_value}")

# Confronto con il livello di significatività comune (0.05)
if p_value < 0.05:
    print("Si pu&ograve; respingere l'ipotesi nulla: ci sono differenze significative tra almeno due gruppi.")
else:
    print("Non c'&egrave; sufficiente evidenza per respingere l'ipotesi nulla.")

In questo esempio, gruppo1, gruppo2, e gruppo3 sono tre insiemi di dati. Il test ANOVA (Analysis of Variance) viene eseguito utilizzando stats.f_oneway di SciPy, che è il metodo appropriato per confrontare le medie di tre o più gruppi. Il risultato include il valore F-statistic e il p-value.

Eseguendo si otterrà il risultato seguente:

t-statistic: 0.341732283464567 
p-value: 0.7172326913427948 
Non c'è sufficiente evidenza per respingere l'ipotesi nulla.

Assicurati di aver installato SciPy prima di eseguire questo codice:

pip install scipy

Puoi adattare questo codice in base alle tue specifiche esigenze e dati.

Anova with Statsmodels

Un semplice esempio di ANOVA con StatsModels

Ecco un esempio di come eseguire un test ANOVA per tre gruppi indipendenti utilizzando la libreria StatsModels in Python:

import statsmodels.api as sm
from statsmodels.formula.api import ols
import pandas as pd

# Dati dei tre gruppi
gruppo1 = [22, 25, 28, 32, 35]
gruppo2 = [18, 24, 30, 28, 34]
gruppo3 = [15, 20, 25, 30, 35]

# Creazione di un DataFrame
data = pd.DataFrame({'Valori': gruppo1 + gruppo2 + gruppo3,
                     'Gruppo': ['Gruppo1'] * 5 + ['Gruppo2'] * 5 + ['Gruppo3'] * 5})

# Eseguire il modello ANOVA
model = ols('Valori ~ Gruppo', data=data).fit()
anova_table = sm.stats.anova_lm(model)

# Visualizza la tabella ANOVA
print(anova_table)

# Confronto con il livello di significativit&agrave; comune (0.05)
if anova_table['PR(>F)'][0] < 0.05:
    print("Si pu&ograve; respingere l'ipotesi nulla: ci sono differenze significative tra almeno due gruppi.")
else:
    print("Non c'&egrave; sufficiente evidenza per respingere l'ipotesi nulla.")

In questo esempio, sto utilizzando il modulo ols di StatsModels per definire un modello di regressione lineare ordinaria. La formula ‘Valori ~ Gruppo’ indica che stiamo cercando di spiegare la variabilità nei dati di “Valori” in base alla variabile categorica “Gruppo”. Il metodo anova_lm calcola l’analisi della varianza.

Esesguendo il codice si otterrà il seguente risultato:

            df      sum_sq    mean_sq         F    PR(>F)
Gruppo     2.0   28.933333  14.466667  0.341732  0.717233
Residual  12.0  508.000000  42.333333       NaN       NaN
Non c'è sufficiente evidenza per respingere l'ipotesi nulla.

Assicurati di aver installato StatsModels prima di eseguire questo codice:

pip install statsmodels

Puoi adattare questo codice in base alle tue specifiche esigenze e dati.

Libro Suggerito:

Se sei interessato all’argomento, ti suggerisco di leggere questo libro:

Practical Statistics for Data Scientists

Le diverse tipologie di ANOVA

Esistono diversi tipi di ANOVA, progettati per soddisfare le esigenze specifiche di diversi tipi di dati e design di studio. I principali tipi di ANOVA includono:

  1. ANOVA a un fattore: Utilizzata quando c’è un solo fattore o variabile indipendente. Ad esempio, si potrebbe utilizzare per confrontare le medie di tre o più gruppi di partecipanti.
  2. ANOVA a due fattori: Coinvolge due variabili indipendenti (fattori). Può essere suddivisa ulteriormente in ANOVA a due vie con ripetizioni (repeated measures) e senza ripetizioni.
  3. ANOVA a più fattori: Coinvolge tre o più variabili indipendenti. È più complessa rispetto all’ANOVA a due fattori e può gestire situazioni in cui ci sono più fattori che influenzano la variabile dipendente.
  4. ANOVA a misure ripetute: Utilizzata quando le stesse unità sperimentali sono misurate più volte. È una forma di ANOVA che tiene conto della correlazione tra le misure ripetute sullo stesso soggetto.
  5. ANOVA multivariata (MANOVA): Estensione dell’ANOVA che coinvolge più variabili dipendenti. Viene utilizzata quando si desidera esaminare simultaneamente le differenze tra gruppi su più variabili dipendenti.
  6. ANOVA a blocchi casualizzati: Utilizzata quando gli individui vengono suddivisi in blocchi omogenei e i trattamenti vengono assegnati casualmente all’interno di ciascun blocco.

Questi sono solo alcuni esempi e ci sono molte varianti e adattamenti specifici per diversi contesti di ricerca. La scelta del tipo di ANOVA dipende dalla natura dei dati e dalla struttura sperimentale dello studio.

Lascia un commento