Come eseguire un test di anderson-darling in python
Un test di Anderson-Darling è un test di bontà di adattamento che misura quanto bene i tuoi dati si adattano a una distribuzione specificata.
Questo test viene spesso utilizzato per determinare se i dati seguono o meno una distribuzione normale .
Questo tipo di test è utile per testare la normalità, che è un presupposto comunemente utilizzato in molti test statistici, tra cui regressione , ANOVA , test t e molti altri.
Esempio: test Anderson-Darling in Python
Per eseguire un test Anderson-Darling in Python, possiamo utilizzare la funzione anderson() della libreria scipy.stats, che utilizza la seguente sintassi:
Anderson(x, dist=’norma’)
Oro:
- x : tabella dei dati del campione
- dist : il tipo di distribuzione su cui testare. Il valore predefinito è “standard”, ma puoi anche specificare “expon” o “logistics”.
Ad esempio, ecco come eseguire un test di Anderson-Darling su un campione di 50 variabili casuali distribuite normalmente:
import numpy as np #create data np.random.seed(0) data = np.random.normal(size=50) #perform Anderson-Darling Test from scipy.stats import anderson anderson(data) AndersonResult( statistic =0.15006999533388665, critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]), significance_level =array([15. , 10. , 5. , 2.5, 1. ]))
La statistica del test è 0,150 . Possiamo confrontare questo valore con ciascun valore critico che corrisponde a ciascun livello di significatività per vedere se i risultati del test sono significativi. Per esempio:
- Il valore critico per α = 0,01 è 1,021 . Poiché la statistica del test (0,150) non è superiore a questo valore critico, i risultati non sono significativi al livello di significatività di 0,01.
- Il valore critico per α = 0,025 è 0,858 . Poiché la statistica del test (0,150) non è maggiore di questo valore critico, i risultati non sono significativi al livello di significatività di 0,025.
E così via.
Possiamo vedere che i risultati del test non sono significativi a nessun livello di significatività, il che significa che non rifiuteremo l’ipotesi nulla del test. Pertanto, non abbiamo prove sufficienti per affermare che i dati campionati non siano distribuiti normalmente.
Questo risultato non dovrebbe sorprendere dato che abbiamo utilizzato la funzione np.rand.normal() per generare un campione di 50 valori distribuiti normalmente.
Consideriamo invece se eseguissimo il test di Anderson-Darling su un campione di 50 numeri interi casuali compresi tra 0 e 10:
import numpy as np #create data np.random.seed(0) data = np.random.randint(0, 10, size=50) #perform Anderson-Darling Test from scipy.stats import anderson anderson(data) AndersonResult( statistic =1.1926463985076836, critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]), significance_level =array([15. , 10. , 5. , 2.5, 1. ]))
La statistica del test è 1.1926 . Possiamo confrontare questo valore con ciascun valore critico che corrisponde a ciascun livello di significatività per vedere se i risultati del test sono significativi. Per esempio:
- Il valore critico per α = 0,01 è 1,021 . Poiché la statistica del test (1,1926) è maggiore di questo valore critico, i risultati sono significativi al livello di significatività 0,01.
- Il valore critico per α = 0,025 è 0,858 . Poiché la statistica del test (1,1926) è maggiore di questo valore critico, i risultati sono significativi al livello di significatività 0,025.
E così via.
Possiamo vedere che i risultati del test sono significativi a ciascun livello di significatività, il che significa che rifiuteremo l’ipotesi nulla del test indipendentemente dal livello di significatività che scegliamo di utilizzare. Pertanto, abbiamo prove sufficienti per affermare che i dati campionati non sono distribuiti normalmente.
Anche questo risultato non dovrebbe sorprendere dato che abbiamo utilizzato la funzione np.rand.randint() per generare un campione di 50 numeri interi casuali compresi tra 0 e 10, che difficilmente seguirà una distribuzione normale.
Puoi trovare altri tutorial su Python qui .