Oferty statystyczne Tutoriale Opinie Kontakt

Test Kołmogorowa-Smirnowa z poprawką Lillieforsa – wzór i przykład

Test Kołmogorowa-Smirnowa (K-S) z poprawką Lillieforsa sprawdza, czy wyniki odbiegają od rozkładu normalnego. Typowe pytanie z pracy dyplomowej: czy mogę użyć testu t, skoro program wypisał „Kołmogorow-Smirnow, p = 0,175”?

W prostych słowachUstawiasz wyniki od najmniejszego do największego i rysujesz „schodki”: przy każdym wyniku linia podskakuje o jedną część próby. Obok rysujesz gładką krzywą, jaką dałby idealny rozkład normalny o tej samej średniej i odchyleniu. Test mierzy, gdzie schodki najbardziej odstają od krzywej. Im większa ta największa odległość, tym mniej wyniki przypominają rozkład normalny.

Kiedy stosować test Kołmogorowa-Smirnowa (Lilliefors)?

  • chcesz sprawdzić założenie normalności przed testem parametrycznym, np. testem t albo ANOVA;
  • średnią i odchylenie standardowe liczysz z tych samych danych – wtedy potrzebna jest poprawka Lillieforsa;
  • Twój program (np. SPSS w opcji „Eksploracja”) wypisuje K-S z poprawką Lillieforsa obok testu Shapiro-Wilka i musisz zrozumieć, co oznaczają oba wyniki.

Przy małych i średnich próbach lepszy jest zwykle test Shapiro-Wilka, bo ma większą moc. Zawsze patrz też na wykres i na skośność oraz kurtozę. Czym jest sama krzywa, której używamy jako wzorca, wyjaśnia hasło o rozkładzie normalnym.

Wzór na statystykę D

$$ D = \max_{x}\ \bigl|\,F_n(x) - \Phi\!\left(\tfrac{x - \bar{x}}{s}\right)\bigr| $$
\(F_n(x)\)
dystrybuanta z próby („schodki”): jaka część wyników jest mniejsza lub równa \(x\); przy każdym wyniku rośnie o \(1/n\)
\(\Phi(\cdot)\)
dystrybuanta standardowego rozkładu normalnego: gładka krzywa w kształcie litery S, odczytywana z tablic albo w R funkcją pnorm()
\(\bar{x},\ s\)
średnia i odchylenie standardowe policzone z próby
\(\tfrac{x - \bar{x}}{s}\)
wynik standaryzowany z: o ile odchyleń standardowych wynik leży od średniej
\(\max_x\)
największa wartość spośród wszystkich sprawdzanych miejsc; sprawdzasz odległość tuż przed i tuż po każdym schodku
\(D\)
statystyka testu: od 0 (idealna zgodność) do 1

Jak przeczytać ten wzór na głos: „D to największa pionowa odległość między schodkami dystrybuanty z próby a krzywą dystrybuanty normalnej o tej samej średniej i odchyleniu”. Wzór jest ten sam w klasycznym teście K-S i w wersji Lillieforsa. Różni się tylko tablica wartości krytycznych.

Przykład krok po kroku

Pięciu studentów podało, ile godzin spali przed kolokwium: 6, 2, 7, 4, 6. Średnia to 5 godzin, a odchylenie standardowe 2 godziny (te same dane, co w hasłach o odchyleniu standardowym i o teście Shapiro-Wilka). Po uporządkowaniu: 2, 4, 6, 6, 7. Dwie osoby spały po 6 godzin, więc w tym miejscu schodek jest podwójny.

Tabela 1. Porównanie schodków z próby z dystrybuantą normalną (M = 5, s = 2)
xz = (x − 5) / 2Φ(z)Fn tuż przed xFn w xFn w x − Φ(z)Φ(z) − Fn przed x
2(2 − 5) / 2 = −1,50,0670 / 5 = 0,01 / 5 = 0,20,2 − 0,067 = 0,1330,067 − 0 = 0,067
4(4 − 5) / 2 = −0,50,3090,22 / 5 = 0,40,4 − 0,309 = 0,0910,309 − 0,2 = 0,109
6 (×2)(6 − 5) / 2 = 0,50,6910,44 / 5 = 0,80,8 − 0,691 = 0,1090,691 − 0,4 = 0,291
7(7 − 5) / 2 = 1,00,8410,85 / 5 = 1,01,0 − 0,841 = 0,1590,841 − 0,8 = 0,041
Największa odległość (D)0,1590,291
  1. Standaryzacja. Od każdej wartości odejmujesz średnią i dzielisz przez odchylenie, np. (2 − 5) / 2 = −3 / 2 = −1,5.
  2. Krzywa normalna. Z tablic rozkładu normalnego odczytujesz Φ(−1,5) = 0,067, Φ(−0,5) = 0,309, Φ(0,5) = 0,691, Φ(1) = 0,841 (w R: pnorm(-1.5) itd.). Tyle wyników leżałoby poniżej x w idealnym rozkładzie normalnym.
  3. Schodki z próby. Każdy wynik to 1/5 = 0,2. Przy x = 2 schodek idzie z 0 do 0,2, przy x = 4 – z 0,2 do 0,4, przy x = 6 – od razu z 0,4 do 0,8 (dwie osoby), przy x = 7 – z 0,8 do 1,0.
  4. Odległości. W każdym wierszu liczysz dwie różnice: schodek „po” minus krzywa i krzywa minus schodek „przed”. Musisz sprawdzić obie, bo największa odległość może wypaść tuż przed skokiem.
  5. Statystyka D. Największa z ośmiu różnic to 0,691 − 0,4 = 0,291, tuż przed wartością 6. Zatem D = 0,291.
  6. Wartość krytyczna. W tablicach Lillieforsa dla n = 5 i α = 0,05 wartość krytyczna wynosi około 0,34. 0,291 < 0,34, więc brak podstaw do odrzucenia hipotezy o normalności. R podaje p = 0,175.
Schodkowa dystrybuanta z próby dla wyników 2, 4, 6, 6, 7 i niebieska krzywa normalna o średniej 5 i odchyleniu 2; czerwony pionowy odcinek przy 6 godzinach od 0,400 do 0,691 to D równe 0,291
Rys. 1. Czarne schodki to dystrybuanta z próby, niebieska krzywa – rozkład normalny o tej samej średniej (5) i odchyleniu (2). Czerwony odcinek to największa pionowa odległość: tuż przed 6 godzinami schodek jest na 0,400, a krzywa już na 0,691. To jest D = 0,291.
Dwa rozkłady statystyki D z symulacji dla n równego 5: szeroki szary dla znanych parametrów z wartością krytyczną 0,56 i węższy niebieski dla parametrów z próby z wartością krytyczną około 0,34; nasze D równe 0,291 leży na lewo od obu
Rys. 2. Po co poprawka Lillieforsa. Gdy średnią i odchylenie bierzesz z tej samej próby, krzywa „dopasowuje się” do danych i D wychodzi mniejsze (niebieski rozkład). Wartość krytyczna spada z 0,56 do około 0,34. Klasyczna tablica byłaby więc zbyt pobłażliwa.
Histogram z aplikacji SZTOS dla czasu snu pięciu studentów z czerwoną linią średniej 5 i zieloną linią mediany 6
Rys. 3. Histogram tych samych danych z modułu eksploracji aplikacji SZTOS. Czerwona linia to średnia (5 h), zielona – mediana (6 h). Przy pięciu wynikach histogram mówi bardzo mało, dlatego żaden test normalności nie ma tu dużej mocy.

Jak zinterpretować i opisać wynik?

Wynik nieistotny oznacza, że nie wykryto odstępstwa od rozkładu normalnego. Nie dowodzi, że rozkład jest normalny. Przy pięciu osobach test wykryłby tylko bardzo duże odstępstwa. Przy kilkuset osobach jest odwrotnie: nawet drobne, nieważne w praktyce odchylenie da p < 0,05. Dlatego wynik testu zawsze zestaw z wykresem. W metodach t i ANOVA normalność dotyczy rozkładu w każdej grupie albo reszt modelu, a nie całej zmiennej naraz.

Zapis w stylu APA: Rozkład czasu snu przed kolokwium nie odbiegał istotnie od rozkładu normalnego, D(5) = 0,29; p = 0,175 (test Kołmogorowa-Smirnowa z poprawką Lillieforsa).

Jak policzyć test Kołmogorowa-Smirnowa (Lilliefors) w R?

# Sen przed kolokwium (godziny), 5 studentów
x <- c(6, 2, 7, 4, 6)

# 1) „ręcznie”: dystrybuanta z próby vs dystrybuanta normalna
wart  <- sort(unique(x))                       # 2, 4, 6, 7
z     <- (wart - mean(x)) / sd(x)              # średnia 5, odchylenie 2
F_norm <- pnorm(z)                             # gładka krzywa
Fn_po  <- ecdf(x)(wart)                        # schodek po danej wartości
Fn_przed <- c(0, head(Fn_po, -1))              # schodek tuż przed nią
round(data.frame(wart, z, F_norm, Fn_przed, Fn_po,
                 D_plus = Fn_po - F_norm, D_minus = F_norm - Fn_przed), 3)
max(Fn_po - F_norm, F_norm - Fn_przed)         # D = 0,291

# 2) gotowa funkcja: test Lillieforsa
nortest::lillie.test(x)

# 3) dla porównania: klasyczny K-S (zły p, bo średnią i sd wzięliśmy z próby)
suppressWarnings(ks.test(x, "pnorm", mean(x), sd(x)))$p.value
shapiro.test(x)$p.value

Wynik w konsoli R:

  wart    z F_norm Fn_przed Fn_po D_plus D_minus
1    2 -1.5  0.067      0.0   0.2  0.133   0.067
2    4 -0.5  0.309      0.2   0.4  0.091   0.109
3    6  0.5  0.691      0.4   0.8  0.109   0.291
4    7  1.0  0.841      0.8   1.0  0.159   0.041
[1] 0.2914625

	Lilliefors (Kolmogorov-Smirnov) normality test

data:  x
D = 0.29146, p-value = 0.1749

[1] 0.7893289
[1] 0.4399399

Ręcznie i funkcją nortest::lillie.test dostajesz to samo D = 0,291. Zwykła funkcja ks.test z parametrami wziętymi z próby podaje p = 0,789. To przykład błędu, przed którym chroni poprawka Lillieforsa: p jest wtedy zawyżone. Test Shapiro-Wilka daje p = 0,440.

Kołmogorow-Smirnow czy Shapiro-Wilk?

W badaniach symulacyjnych test Shapiro-Wilka częściej wykrywa prawdziwe odstępstwa od normalności niż K-S z poprawką Lillieforsa, zwłaszcza w małych próbach (Razali i Wah, 2011). Jeśli program podaje oba wyniki i się różnią, opieraj się raczej na Shapiro-Wilku i na wykresie. Klasyczny test K-S bez poprawki ma sens tylko wtedy, gdy średnią i odchylenie znasz z zewnątrz, np. z norm testu psychologicznego. Pamiętaj też, że przy dużych próbach testy parametryczne są odporne na umiarkowane odstępstwa od normalności.

Najczęstsze błędy

  • Użycie klasycznego ks.test ze średnią i odchyleniem z próby – p wychodzi za duże.
  • Pisanie „rozkład jest normalny”, gdy p > 0,05 – poprawnie: nie wykryto istotnego odstępstwa od normalności.
  • Sprawdzanie normalności całej zmiennej zamiast rozkładów w grupach albo reszt modelu.
  • Odrzucanie testu t tylko dlatego, że przy bardzo dużej próbie test normalności dał p < 0,05.
  • Liczenie odległości tylko w punktach „po” schodku i przeoczenie największej różnicy tuż przed skokiem.

Bibliografia

  1. Kolmogorov, A. N. (1933). Sulla determinazione empirica di una legge di distribuzione. Giornale dell’Istituto Italiano degli Attuari, 4, 83–91.
  2. Smirnov, N. (1948). Table for estimating the goodness of fit of empirical distributions. The Annals of Mathematical Statistics, 19(2), 279–281.
  3. Lilliefors, H. W. (1967). On the Kolmogorov-Smirnov test for normality with mean and variance unknown. Journal of the American Statistical Association, 62(318), 399–402. https://doi.org/10.1080/01621459.1967.10482916
  4. Razali, N. M., & Wah, Y. B. (2011). Power comparisons of Shapiro-Wilk, Kolmogorov-Smirnov, Lilliefors and Anderson-Darling tests. Journal of Statistical Modeling and Analytics, 2(1), 21–33.
  5. Field, A., Miles, J., & Field, Z. (2012). Discovering statistics using R. SAGE.
  6. Hryniewicz, K., & Milewska, A. (2023). SZTOS: System Zautomatyzowanego Tworzenia Opisu Statystycznego [Oprogramowanie]. SZTOS IT. https://sztos-it.com/

Zobacz też

Potrzebujesz pomocy z analizą do pracy dyplomowej?

Policzymy Twoje wyniki, przygotujemy tabele, wykresy i opis w standardzie APA, który wykorzystasz w swojej pracy. Pomagamy jak statystyk i redaktor – autorem pracy zostajesz Ty. Konsultacja i wycena są bezpłatne.

Na skróty