Oferty statystyczne Tutoriale Opinie Kontakt

Test Little’a (MCAR) – braki danych, wzór i przykład

Test Little’a sprawdza, czy braki danych są całkowicie przypadkowe (MCAR), czyli czy osoby, które nie odpowiedziały na jakieś pytanie, nie różnią się od pozostałych w tym, co o nich wiadomo. Typowe pytanie z pracy dyplomowej: część osób pominęła pytanie w ankiecie – czy mogę je po prostu usunąć z analizy?

W prostych słowachDzielisz osoby na grupy według tego, na które pytania odpowiedziały. Jeśli braki są czysto przypadkowe, średnie w tych grupach powinny być podobne do średnich w całej próbie. Test Little’a mierzy, jak bardzo się różnią, i zamienia to na jedną liczbę chi-kwadrat. Duża wartość oznacza, że braki „coś mówią” o osobach – i usuwanie ich może zafałszować wyniki.

MCAR, MAR i MNAR – trzy rodzaje braków

  • MCAR (braki całkowicie losowe): brak nie zależy od niczego – ktoś przypadkiem przeskoczył stronę, ankieta urwała się przez awarię internetu. Usunięcie takich osób zmniejsza próbę, ale nie wypacza wyników.
  • MAR (braki losowe warunkowo): brak zależy od innych zmiennych, które widzisz – np. słabsi studenci częściej pomijają ocenę zajęć. Usunięcie osób wypacza wyniki, ale metody takie jak imputacja wielokrotna potrafią to naprawić.
  • MNAR (braki nielosowe): brak zależy od samej brakującej wartości – np. najbardziej niezadowoleni nie chcą wystawić oceny. Żaden test na danych tego nie wykryje; pomaga tylko wiedza o badaniu i analiza wrażliwości.
  • Test Little’a odróżnia wyłącznie MCAR od „nie-MCAR”. Nie powie Ci, czy masz MAR, czy MNAR.

O tym, co zrobić z brakami, gdy MCAR nie jest spełnione, piszemy we wpisie braki danych i imputacja wielokrotna. Jeśli dane pochodzą z ankiety internetowej, zajrzyj też do wpisu dane z Formularzy Google do analizy.

Wzór na test Little’a

$$ d^2 = \sum_{j=1}^{J} n_j \left(\bar{\mathbf{y}}_j - \hat{\boldsymbol{\mu}}_j\right)^{\top} \hat{\boldsymbol{\Sigma}}_j^{-1} \left(\bar{\mathbf{y}}_j - \hat{\boldsymbol{\mu}}_j\right) \qquad df = \sum_{j=1}^{J} p_j - p $$
\(j\)
wzorzec braków – grupa osób, które odpowiedziały na ten sam zestaw pytań (np. „wszystko”, „wszystko poza oceną”)
\(J\)
liczba różnych wzorców braków
\(n_j\)
liczba osób z wzorcem j
\(\bar{\mathbf{y}}_j\)
średnie zmiennych, które osoby z wzorca j podały
\(\hat{\boldsymbol{\mu}}_j\)
średnie tych samych zmiennych oszacowane na całej próbie metodą największej wiarygodności (algorytmem EM), z uwzględnieniem braków
\(\hat{\boldsymbol{\Sigma}}_j\)
macierz kowariancji tych zmiennych z tego samego oszacowania; jej odwrotność „przelicza” różnice na jednostki odchylenia standardowego
\(p_j,\ p\)
liczba zmiennych obserwowanych we wzorcu j i liczba wszystkich zmiennych
\(d^2\)
statystyka testu; przy MCAR ma w przybliżeniu rozkład chi-kwadrat z df stopniami swobody

Na głos: „dla każdego wzorca braków liczymy, jak daleko jego średnie leżą od średnich całej próby, w jednostkach rozrzutu, mnożymy przez liczbę osób i sumujemy”.

Przykład krok po kroku

Sześcioro studentów podało punkty z kolokwium: 1, 1, 6, 7, 7, 8. Ocenę zajęć (1–5) podały tylko cztery osoby – te z 6, 7, 7 i 8 punktami wystawiły 4, 4, 3 i 5. Dwie osoby z 1 punktem nie oceniły zajęć. Mamy więc dwa wzorce: A – komplet danych (4 osoby), B – tylko punkty (2 osoby).

Tabela 1. Wkład każdego wzorca braków do statystyki d² (oszacowania ML: średnie 5 i 3)
WzorzecnŚrednie obserwowaneŚrednie z całej próbyRóżniceForma kwadratowan · forma
A: punkty i ocena428 / 4 = 7; 16 / 4 = 45; 37 − 5 = 2; 4 − 3 = 11,5 / 3,125 = 0,484 · 0,48 = 1,92
B: tylko punkty22 / 2 = 151 − 5 = −4(−4)² / 8,333 = 16 / 8,333 = 1,922 · 1,92 = 3,84
Σ6d² = 5,76
  1. Średnia i wariancja punktów. Punkty zna każdy, więc ich średnia to 30 / 6 = 5. Odchylenia od 5: −4, −4, 1, 2, 2, 3; kwadraty 16, 16, 1, 4, 4, 9; suma 50. Wariancja największej wiarygodności dzieli przez n, a nie n − 1: 50 / 6 = 8,333.
  2. Związek oceny z punktami u osób z kompletem. Średnie: punkty 28 / 4 = 7, ocena 16 / 4 = 4. Iloczyny odchyleń: (−1) · 0 + 0 · 0 + 0 · (−1) + 1 · 1 = 1. Kwadraty odchyleń punktów: 1 + 0 + 0 + 1 = 2. Nachylenie b = 1 / 2 = 0,5 – każdy punkt więcej to średnio pół oceny wyżej.
  3. Oszacowana średnia oceny. Algorytm EM „dopowiada”, że osoby z niższymi punktami oceniałyby niżej: 4 + 0,5 · (5 − 7) = 4 − 1 = 3. Średnia z samych odpowiedzi (4) jest więc zawyżona.
  4. Kowariancje. Kowariancja punktów i oceny: 0,5 · 8,333 = 4,167. Reszty oceny wokół linii u czterech osób: 0,5; 0; −1; 0,5; suma kwadratów 1,5; podzielona przez 4: 0,375. Wariancja oceny: 0,375 + 0,5² · 8,333 = 0,375 + 2,083 = 2,458.
  5. Wzorzec B. Osoby bez oceny mają średnio 1 punkt. Różnica 1 − 5 = −4; do kwadratu 16; dzielona przez wariancję 8,333 daje 1,92; razy 2 osoby: 3,84.
  6. Wzorzec A. Różnice (2; 1). Dla dwóch zmiennych forma kwadratowa to (wariancja oceny · 2² − 2 · kowariancja · 2 · 1 + wariancja punktów · 1²) / (wariancja punktów · wariancja oceny − kowariancja²) = (2,458 · 4 − 2 · 4,167 · 2 + 8,333) / (8,333 · 2,458 − 4,167²) = (9,833 − 16,667 + 8,333) / (20,486 − 17,361) = 1,5 / 3,125 = 0,48. Razy 4 osoby: 1,92.
  7. Statystyka i stopnie swobody. d² = 3,84 + 1,92 = 5,76. We wzorcu A obserwujemy 2 zmienne, w B – 1, wszystkich zmiennych jest 2: df = (2 + 1) − 2 = 1.
  8. Wartość p. W tablicy rozkładu chi-kwadrat dla df = 1 wartość krytyczna (α = 0,05) wynosi 3,841 (w R: qchisq(0.95, 1)). Nasze 5,76 ją przekracza. Dokładnie: p = 0,016 (pchisq(5.76, 1, lower.tail = FALSE)).
Mapa braków danych z aplikacji SZTOS dla sześciu osób i dwóch zmiennych: pierwsza zmienna kompletna, w drugiej czerwone pole braków w pierwszych dwóch wierszach; braki stanowią 16,67% wszystkich komórek
Rys. 1. Mapa braków z modułu eksploracji aplikacji SZTOS dla danych z przykładu. Wiersze to osoby, kolumny to zmienne (Zm1 – punkty, Zm2 – ocena zajęć); czerwone pola to braki. Wszystkie braki skupiają się u dwóch pierwszych osób – tych z najniższymi punktami. Mapa pokazuje, gdzie są braki; test Little’a mówi, czy ich układ może być przypadkowy.
Wykres punktów i oceny zajęć: cztery osoby z oceną przy 6–8 punktach, przerywana niebieska linia trendu, czerwone kółko przy 1 punkcie dla dwóch osób bez oceny, szara linia średniej 4 i czerwona linia średniej 3
Rys. 2. Dlaczego test odrzuca MCAR. Osoby bez oceny (czerwone kółko) mają średnio 1 punkt, a osoby z oceną – 7 punktów. Ponieważ ocena rośnie z punktami (niebieska linia), brakujące oceny były raczej niskie. Średnia z samych odpowiedzi to 4, a oszacowanie uwzględniające braki – 3.
Trzy wykresy tych samych 12 osób: w MCAR puste kółka rozrzucone przypadkowo, w MAR puste kółka przy najniższych punktach, w MNAR puste kółka przy najniższych ocenach
Rys. 3. Trzy mechanizmy braków. Przy MCAR puste kółka (brak oceny) są rozrzucone bez wzoru. Przy MAR skupiają się przy niskich punktach – to widać w danych i to wykrywa test Little’a. Przy MNAR skupiają się przy niskich ocenach, których przecież nie znamy – na danych wygląda to podobnie do MAR albo nawet do MCAR.

Jak zinterpretować i opisać wynik?

Gdyby braki były całkowicie przypadkowe, tak duże lub większe d² zdarzałoby się tylko w około 1,6% podobnych badań. Odrzucamy więc hipotezę MCAR: osoby bez oceny różnią się od pozostałych punktami. Usunięcie ich z analizy zawyżyłoby średnią ocenę zajęć. Wynik nieistotny nie dowodziłby z kolei, że braki są MCAR – przy małej próbie test ma małą moc, a MNAR jest dla niego niewidoczny.

Zapis w stylu APA: Test Little’a wykazał, że braki danych nie są całkowicie losowe, χ²(1) = 5,76; p = 0,016. Osoby, które nie oceniły zajęć, uzyskały mniej punktów z kolokwium (M = 1,00) niż osoby, które je oceniły (M = 7,00), dlatego zamiast usuwania obserwacji z brakami zastosowano imputację wielokrotną.

Jak policzyć test Little’a w R?

dane <- data.frame(punkty = c(1, 1, 6, 7, 7, 8),
                   ocena  = c(NA, NA, 4, 4, 3, 5))      # ocena zajęć 1–5, dwie osoby nie odpowiedziały

# 1) „ręcznie”: oszacowania ML (jak w algorytmie EM) i statystyka d² Little’a
x <- dane$punkty; kc <- complete.cases(dane); n <- nrow(dane)
b <- unname(coef(lm(ocena ~ punkty, dane[kc, ]))[2])            # nachylenie u osób z kompletem
mu <- c(mean(x), mean(dane$ocena[kc]) + b * (mean(x) - mean(x[kc])))
sxx <- sum((x - mean(x))^2) / n                            # wariancja ML (dzielona przez n)
res <- sum(resid(lm(ocena ~ punkty, dane[kc, ]))^2) / sum(kc)
S <- matrix(c(sxx, b * sxx, b * sxx, res + b^2 * sxx), 2)  # macierz kowariancji ML
dA <- colMeans(dane[kc, ]) - mu                            # wzorzec A: komplet danych
dB <- mean(x[!kc]) - mu[1]                                 # wzorzec B: tylko punkty
d2 <- sum(kc) * t(dA) %*% solve(S) %*% dA + sum(!kc) * dB^2 / S[1, 1]
round(c(mu_punkty = mu[1], mu_ocena = mu[2], d2 = d2, df = (2 + 1) - 2, p = pchisq(d2, 1, lower.tail = FALSE)), 3)

# 2) gotowa funkcja (pakiet naniar)
naniar::mcar_test(dane)

Wynik w konsoli R:

mu_punkty  mu_ocena        d2        df         p 
    5.000     3.000     5.760     1.000     0.016 
# A tibble: 1 × 4
  statistic    df p.value missing.patterns
      <dbl> <dbl>   <dbl>            <int>
1      5.76     1  0.0164                2

Rachunek „ręczny” i funkcja mcar_test() z pakietu naniar dają to samo: d² = 5,76; df = 1; p = 0,016. Funkcja sama szacuje średnie i kowariancje algorytmem EM, więc działa przy dowolnej liczbie zmiennych i wzorców.

Braki danych w ankiecie – kiedy w ogóle liczyć test Little’a?

Gdy braków jest bardzo mało (np. pojedyncze komórki na kilkaset osób), sposób ich potraktowania zwykle nie zmienia wniosków. Test warto policzyć, gdy w którejś zmiennej brakuje kilku procent odpowiedzi lub więcej i zastanawiasz się, czy usunąć te osoby. W pracy podaj najpierw procent braków w każdej zmiennej, potem wynik testu Little’a, a na końcu to, co z brakami zrobiłeś. Pamiętaj, że test zakłada w przybliżeniu normalny rozkład zmiennych ilościowych, a przy wielu wzorcach z pojedynczymi osobami jego przybliżenie chi-kwadrat jest słabe. Więcej o porządkowaniu danych z ankiet znajdziesz we wpisie opracowanie wyników ankiety.

Najczęstsze błędy

  • Pisanie „braki są MCAR”, bo p > 0,05. Poprawnie: „brak podstaw do odrzucenia hipotezy, że braki są całkowicie losowe”.
  • Traktowanie testu jako sposobu na wykrycie MNAR. Test porównuje tylko to, co zaobserwowano.
  • Automatyczne usuwanie osób z brakami po istotnym wyniku testu – to właśnie wtedy usuwanie jest najgroźniejsze.
  • Liczenie testu na zmiennych tekstowych lub kodach odpowiedzi „nie wiem” traktowanych jak liczby.
  • Podawanie samego p bez informacji, ile było braków i w których zmiennych.

Bibliografia

  1. Little, R. J. A. (1988). A test of missing completely at random for multivariate data with missing values. Journal of the American Statistical Association, 83(404), 1198–1202. https://doi.org/10.1080/01621459.1988.10478722
  2. Rubin, D. B. (1976). Inference and missing data. Biometrika, 63(3), 581–592. https://doi.org/10.1093/biomet/63.3.581
  3. Enders, C. K. (2010). Applied missing data analysis. Guilford Press.
  4. van Buuren, S. (2018). Flexible imputation of missing data (2nd ed.). CRC Press.
  5. Hryniewicz, K., & Milewska, A. (2023). SZTOS: System Zautomatyzowanego Tworzenia Opisu Statystycznego [Oprogramowanie]. SZTOS IT. https://sztos-it.com/

Zobacz też

Przygotowujesz artykuł, doktorat lub grant?

Zaplanujemy i wykonamy analizy, przygotujemy raport z tabelami, wykresami i kodem R oraz pomożemy odpowiedzieć na uwagi recenzentów dotyczące statystyki.

Na skróty