Jak wykonać test andersona-darlinga w pythonie
Test Andersona-Darlinga to test dobroci dopasowania, który mierzy, jak dobrze dane pasują do określonego rozkładu.
Ten test jest najczęściej używany do określenia, czy dane mają rozkład normalny .
Ten typ testu jest przydatny do testowania normalności, co jest powszechnie stosowanym założeniem w wielu testach statystycznych, w tym w regresji , ANOVA , testach t i wielu innych.
Przykład: test Andersona-Darlinga w Pythonie
Aby wykonać test Andersona-Darlinga w Pythonie, możemy użyć funkcji anderson() z biblioteki scipy.stats, która wykorzystuje następującą składnię:
Anderson(x, dist=’norma’)
Złoto:
- x : tabela przykładowych danych
- dist : typ dystrybucji, na której chcesz przeprowadzić test. Wartość domyślna to „standard”, ale możesz także określić „ekspon” lub „logistyka”.
Na przykład, oto jak przeprowadzić test Andersona-Darlinga na próbie 50 zmiennych losowych o rozkładzie normalnym:
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. ]))
Statystyka testowa wynosi 0,150 . Możemy porównać tę wartość z każdą wartością krytyczną odpowiadającą każdemu poziomowi istotności, aby sprawdzić, czy wyniki testu są znaczące. Na przykład:
- Wartość krytyczna dla α = 0,01 wynosi 1,021 . Ponieważ statystyka testowa (0,150) nie jest większa od tej wartości krytycznej, wyniki nie są istotne na poziomie istotności 0,01.
- Wartość krytyczna dla α = 0,025 wynosi 0,858 . Ponieważ statystyka testowa (0,150) nie jest większa od tej wartości krytycznej, wyniki nie są istotne na poziomie istotności 0,025.
I tak dalej.
Widzimy, że wyniki testu nie są istotne na żadnym poziomie istotności, co oznacza, że nie odrzucimy hipotezy zerowej testu. Nie mamy zatem wystarczających dowodów, aby twierdzić, że wybrane dane nie mają rozkładu normalnego.
Wynik ten nie powinien być zaskakujący, biorąc pod uwagę, że użyliśmy funkcji np.rand.normal() do wygenerowania próbki 50 wartości o rozkładzie normalnym.
Zamiast tego rozważ, czy przeprowadziliśmy test Andersona-Darlinga na próbie 50 losowych liczb całkowitych od 0 do 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. ]))
Statystyka testowa wynosi 1,1926 . Możemy porównać tę wartość z każdą wartością krytyczną odpowiadającą każdemu poziomowi istotności, aby sprawdzić, czy wyniki testu są znaczące. Na przykład:
- Wartość krytyczna dla α = 0,01 wynosi 1,021 . Ponieważ statystyka testowa (1,1926) jest większa od tej wartości krytycznej, wyniki są istotne na poziomie istotności 0,01.
- Wartość krytyczna dla α = 0,025 wynosi 0,858 . Ponieważ statystyka testowa (1,1926) jest większa od tej wartości krytycznej, wyniki są istotne na poziomie istotności 0,025.
I tak dalej.
Widzimy, że wyniki testu są istotne na każdym poziomie istotności, co oznacza, że odrzucimy hipotezę zerową testu bez względu na to, jaki poziom istotności wybierzemy. Mamy zatem wystarczające dowody, aby stwierdzić, że próbkowane dane nie mają rozkładu normalnego.
Wynik ten również nie powinien być zaskakujący, biorąc pod uwagę, że użyliśmy funkcji np.rand.randint() do wygenerowania próbki 50 losowych liczb całkowitych od 0 do 10, co prawdopodobnie nie ma rozkładu normalnego.
Więcej samouczków dotyczących Pythona znajdziesz tutaj .