Prace dyplomowe · Braki danych

Braki danych w ankiecie – co z nimi zrobić?

Krótka odpowiedź dla osób, które po eksporcie ankiety widzą puste komórki: jak je policzyć, które braki uzupełnić regułą proporcjonalną, kiedy sprawdzić osoby, które przerwały ankietę, i jak to opisać w pracy.

Strona główna / Blog / Braki danych w ankiecie
W skrócie: Najpierw policz, ile osób przerwało ankietę i ile pustych komórek mają pozostałe. Pojedyncze pominięte pytania w skali uzupełnij regułą proporcjonalną (średnia z dostępnych odpowiedzi, jeśli jest ich dość). Przy przerwanych ankietach sprawdź, czy osoby, które odpadły, różnią się od pozostałych; jeśli tak, zamiast usuwać przypadki zastosuj imputację wielokrotną.

Najpierw policz, ile brakuje i gdzie

Zanim wybierzesz metodę, sprawdź trzy rzeczy: ile osób przerwało ankietę, ile pustych komórek mają osoby, które ją ukończyły, i ile osób ma komplet odpowiedzi w zmiennych potrzebnych do hipotez. Te liczby i tak podasz w rozdziale metod, a od nich zależy dalsze postępowanie.

Weźmy przykład (dane symulowane). Ankietę rozpoczęło 240 osób: najpierw wypełniały 10-pozycyjną skalę stresu, potem 8-pozycyjną skalę wsparcia społecznego, obie z odpowiedziami od 1 do 5. W połowie przerwało 26 osób, więc ukończyło ją 214. Wśród ukończonych ankiet puste jest tylko 2.1% komórek. Mimo to komplet odpowiedzi ma 148 osób, jedną odpowiedź pominęło 51 osób, dwie – 14, a trzy – 1 osoba. Niewielki odsetek pustych komórek potrafi więc dotknąć co trzeciej osoby.

Nie każda pusta komórka to ten sam brak

W ankiecie spotkasz kilka sytuacji, które w eksporcie wyglądają podobnie, ale wymagają innej decyzji.

Rodzaje braków danych w ankiecie i zalecane postępowanie
SytuacjaCo zrobić
Pytanie pominięte przez filtr („nie dotyczy”)To nie jest brak. Zakoduj osobno i wyłącz z analizy tego pytania (zob. pytanie filtrujące).
Odpowiedź „nie wiem” albo „trudno powiedzieć”Zdecyduj przed analizą, czy to brak, czy osobna kategoria. Nie wliczaj jej jako środka skali (zob. odpowiedź „nie wiem”).
Kody typu 99 lub −9 w eksporcieZamień na braki przed liczeniem średnich.
Jedno lub dwa pominięte pytania w skaliPolicz wynik skali z reguły proporcjonalnej.
Brak całej skali albo przerwana ankietaSprawdź, czy te osoby różnią się od pozostałych. Potem zdecyduj: analiza kompletnych przypadków albo imputacja wielokrotna.

Pojedyncze pominięte pytania: reguła proporcjonalna

Gdy osoba odpowiedziała na większość pozycji skali, jej wynik to średnia z dostępnych odpowiedzi. Minimalną liczbę odpowiedzi ustalasz przed analizą. Jeśli podręcznik narzędzia podaje własną regułę, stosujesz tę z podręcznika. W przykładzie przyjęliśmy co najmniej 80% pozycji. Zamiast 148 osób z kompletem w obu skalach analiza obejmuje wtedy 210 osób. Korelacja stresu ze wsparciem prawie się nie zmienia: r = −.36, 95% CI [−.49, −.21] przy samych kompletach i r = −.34, 95% CI [−.46, −.22] z regułą proporcjonalną. Przedział jest jednak węższy, bo osób jest więcej.

Ta reguła to też prosta imputacja, bo zakłada, że pominięta odpowiedź byłaby równa średniej pozostałych odpowiedzi tej osoby. Downey i King (1998) pokazali, że takie zastępowanie dobrze odtwarza dane, gdy braki dotyczą najwyżej 20% osób i 20% pozycji. Przy większej liczbie braków średnia osoby sztucznie zawyżała korelacje między pozycjami. Mazza i in. (2015) w symulacjach wykazali obciążenie takiego uśredniania nawet przy brakach całkowicie losowych. Przy pojedynczych brakach w krótkiej skali to rozsądny kompromis, przy wielu brakach już nie. Szczegóły liczenia wyniku z brakami, także w Excelu i SPSS, opisujemy we wpisie jak policzyć wynik kwestionariusza.

Przerwane ankiety: sprawdź, kto odpadł

Przerwanie ankiety po jej rozpoczęciu jest szczególnie częste w badaniach internetowych. Peytchev (2009) wiąże je przede wszystkim z budową kwestionariusza i obciążeniem respondenta. Dla Ciebie ważniejsze jest, czy osoby, które odpadły, różnią się od tych, które dotrwały do końca. Często da się to sprawdzić, bo część pytań wypełniły wszystkie osoby.

W przykładzie skalę stresu wypełnili wszyscy. Osoby, które przerwały ankietę, miały wyraźnie wyższy stres (M = 3.58, SD = 0.73, n = 26) niż osoby, które ją ukończyły (M = 2.99, SD = 0.68, n = 214), test Welcha: t(30.56) = 3.91, p < .001, d = 0.86. Analiza samych ukończonych ankiet pomija więc osoby najbardziej zestresowane. Braki nie są całkowicie losowe, a mogą być losowe pod warunkiem stresu (MAR, zob. braki danych MCAR, MAR i MNAR).

W takiej sytuacji lepszym wyborem niż usuwanie przypadków jest imputacja wielokrotna albo metoda największej wiarygodności. Te dwa podejścia rekomendują Schafer i Graham (2002). Do modelu imputacji włącz zmienne związane z brakami, tu wynik stresu. Nie kieruj się samym odsetkiem braków. Madley-Dowd i in. (2019) pokazali, że imputacja ze zmiennymi pomocniczymi zmniejsza obciążenie nawet przy dużym odsetku braków. Procedurę krok po kroku znajdziesz w poradniku braki danych i imputacja wielokrotna w R.

Jeśli osoby przerywające ankietę nie różnią się od pozostałych, a odpadło ich niewiele, analiza kompletnych przypadków jest do obrony. Napisz jednak w pracy, że ją sprawdziłeś.

Czego nie robić

  • Nie wpisuj w puste komórki zera ani środka skali. Zero często nie jest nawet możliwą odpowiedzią.
  • Nie wstawiaj średniej całej próby. Zaniża zmienność i osłabia korelacje.
  • Nie sumuj samych dostępnych odpowiedzi bez korekty, bo osoba z brakiem dostaje niższy wynik.
  • Nie stosuj prostych imputacji typu LOCF, opisanych w haśle LOCF i proste imputacje.
  • Nie usuwaj po cichu osób z brakami w różnych analizach różnie. Wtedy każda tabela ma inne N i nikt nie wie dlaczego.

Miejsce braków w całym procesie analizy ankiety pokazujemy w poradniku analiza ankiety do pracy dyplomowej, a we wcześniejszym etapie pomaga czyszczenie danych z ankiety online. Cały proces, od zbierania odpowiedzi po wynik skali, prowadzi przewodnik po analizie kwestionariusza.

Jak to opisać w pracy

Ankietę rozpoczęło 240 osób, a ukończyło 214. Osoby, które przerwały ankietę (n = 26), miały wyższy poziom stresu niż osoby, które ją ukończyły (M = 3.58, SD = 0.73 vs M = 2.99, SD = 0.68; t(30.56) = 3.91, p < .001, d = 0.86). Wśród ukończonych ankiet brakowało 2.1% odpowiedzi na pozycje skal. Wynik skali liczono jako średnią dostępnych odpowiedzi, jeśli osoba odpowiedziała na co najmniej 80% pozycji; w ten sposób wyniki obu skal uzyskano dla 210 osób.

Jeśli zastosowałeś imputację wielokrotną, dopisz liczbę imputacji, zmienne w modelu imputacji i program. Wzór takiego opisu jest w poradniku o imputacji wielokrotnej.

Przykład reprodukowalny

Diagnoza braków w ankiecie w R

Kod symuluje ankietę z przerwaniami i pominiętymi pytaniami, liczy braki, wynik skal z regułą 80% i porównuje osoby, które przerwały ankietę, z pozostałymi.

Braki, reguła proporcjonalna i porównanie osób, które przerwały ankietę

Dane wejściowe: 240 rozpoczętych ankiet (dane symulowane), pozycje s1–s10 i w1–w8 na skali 1–5.

Co odczytać: liczbę przerwanych ankiet, odsetek pustych komórek, liczbę osób z wynikiem obu skal, korelacje z 95% CI oraz średnie stresu w obu grupach z testem Welcha i d.

R
# Braki danych w ankiecie: diagnoza, reguła proporcjonalna i porównanie osób, które przerwały ankietę
# Dane symulowane: 240 rozpoczętych ankiet, skala stresu (10 pozycji 1–5), skala wsparcia (8 pozycji 1–5)
set.seed(2141)
n <- 240
stres_lat <- rnorm(n); wsparcie_lat <- -0.35 * stres_lat + rnorm(n, sd = sqrt(1 - 0.35^2))
poz <- function(lat, k) sapply(1:k, function(j) pmin(5, pmax(1, round(3 + 0.9 * (0.75 * lat + rnorm(length(lat), sd = 0.66))))))
S <- poz(stres_lat, 10); W <- poz(wsparcie_lat, 8)
colnames(S) <- paste0("s", 1:10); colnames(W) <- paste0("w", 1:8)
d <- data.frame(id = 1:n, S, W)
# Przerwanie ankiety po skali stresu: częstsze przy wyższym stresie
przerwal <- runif(n) < plogis(-2.3 + 0.6 * stres_lat)
d[przerwal, paste0("w", 1:8)] <- NA
# Pojedyncze pominięte pytania (ok. 2% odpowiedzi)
for (v in c(paste0("s", 1:10), paste0("w", 1:8))) d[runif(n) < .02 & !is.na(d[[v]]), v] <- NA

s_poz <- paste0("s", 1:10); w_poz <- paste0("w", 1:8)
# 1. Ile brakuje i gdzie
c(rozpoczete = n, przerwane = sum(przerwal), ukonczone = sum(!przerwal))
ukon <- d[!przerwal, ]
round(100 * mean(is.na(ukon[, c(s_poz, w_poz)])), 1)            # % pustych komórek wśród ukończonych
table(braki_na_osobe = rowSums(is.na(ukon[, c(s_poz, w_poz)])))

# 2. Wynik skali: komplet odpowiedzi a reguła proporcjonalna (co najmniej 80% pozycji)
wynik <- function(x, min_odsetek = .8) ifelse(rowMeans(!is.na(x)) >= min_odsetek, rowMeans(x, na.rm = TRUE), NA)
ukon$stres_kompl <- ifelse(complete.cases(ukon[, s_poz]), rowMeans(ukon[, s_poz]), NA)
ukon$wsp_kompl   <- ifelse(complete.cases(ukon[, w_poz]), rowMeans(ukon[, w_poz]), NA)
ukon$stres <- wynik(ukon[, s_poz]); ukon$wsparcie <- wynik(ukon[, w_poz])
c(obie_skale_komplet = sum(complete.cases(ukon[, c("stres_kompl", "wsp_kompl")])),
  obie_skale_regula80 = sum(complete.cases(ukon[, c("stres", "wsparcie")])))
k1 <- cor.test(ukon$stres_kompl, ukon$wsp_kompl); k2 <- cor.test(ukon$stres, ukon$wsparcie)
round(rbind(komplet = c(n = k1$parameter + 2, r = k1$estimate, k1$conf.int), regula80 = c(n = k2$parameter + 2, r = k2$estimate, k2$conf.int)), 2)

# 3. Czy osoby, które przerwały ankietę, różnią się od pozostałych? (stres znamy u wszystkich)
d$stres <- wynik(d[, s_poz]); d$grupa <- ifelse(przerwal, "przerwali", "ukonczyli")
aggregate(stres ~ grupa, d, function(x) round(c(n = length(x), M = mean(x), SD = sd(x)), 2))
tt <- t.test(stres ~ grupa, d); round(c(t = unname(tt$statistic), df = unname(tt$parameter)), 2); signif(tt$p.value, 2)
m <- tapply(d$stres, d$grupa, mean); s <- tapply(d$stres, d$grupa, sd); nn <- table(d$grupa[!is.na(d$stres)])
round(unname((m[1] - m[2]) / sqrt(((nn[1] - 1) * s[1]^2 + (nn[2] - 1) * s[2]^2) / (sum(nn) - 2))), 2)  # d Cohena
Wynik w R
rozpoczete  przerwane  ukonczone 
       240         26        214 
[1] 2.1
braki_na_osobe
  0   1   2   3 
148  51  14   1 
 obie_skale_komplet obie_skale_regula80 
                148                 210 
         n.df r.cor            
komplet   148 -0.36 -0.49 -0.21
regula80  210 -0.34 -0.46 -0.22
      grupa stres.n stres.M stres.SD
1 przerwali   26.00    3.58     0.73
2 ukonczyli  214.00    2.99     0.68
    t    df 
 3.91 30.56 
[1] 0.00048
[1] 0.86

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/

Najczęstsze pytania

Czy można usunąć z analizy niedokończone ankiety?

Można, jeśli osoby, które przerwały ankietę, nie różnią się od pozostałych w zmiennych, które wypełniły, i jest ich niewiele. Sprawdź to na pytaniach, na które odpowiedzieli wszyscy, i opisz w pracy. Jeśli się różnią, rozważ imputację wielokrotną.

Jak policzyć wynik skali, gdy ktoś pominął jedno pytanie?

Policz średnią z dostępnych odpowiedzi, jeśli osoba odpowiedziała na wystarczająco wiele pozycji, np. co najmniej 80%. Gdy potrzebujesz sumy, pomnóż tę średnią przez liczbę pozycji. Regułę ustal przed analizą, a jeśli podaje ją podręcznik narzędzia, zastosuj tamtą.

Czy odpowiedź „nie wiem” w ankiecie to brak danych?

To zależy od pytania, ale nie traktuj jej automatycznie jako środka skali. Zdecyduj przed analizą, czy analizujesz ją jako osobną kategorię, czy jako brak, i opisz tę decyzję w pracy.

Jaki odsetek braków danych w ankiecie jest dopuszczalny?

Nie ma progu, który sam rozstrzyga sprawę. Ważniejsze niż odsetek jest to, czy braki zależą od innych zmiennych. Madley-Dowd i in. (2019) pokazali, że imputacja wielokrotna ze zmiennymi pomocniczymi zmniejsza obciążenie nawet przy dużym odsetku braków.

Powiązane hasła

Przeczytaj też

Masz w ankiecie dużo pustych odpowiedzi?

Sprawdzimy, skąd biorą się braki, dobierzemy sposób ich obsługi i wyjaśnimy, jak go opisać w pracy, żebyś umiał(a) obronić tę decyzję.

Oferta dla studentówWyceń analizę

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Downey, R. G., & King, C. V. (1998). Missing data in Likert ratings: A comparison of replacement methods. The Journal of General Psychology, 125(2), 175–191. https://doi.org/10.1080/00221309809595542
  2. Madley-Dowd, P., Hughes, R., Tilling, K., & Heron, J. (2019). The proportion of missing data should not be used to guide decisions on multiple imputation. Journal of Clinical Epidemiology, 110, 63–73. https://doi.org/10.1016/j.jclinepi.2019.02.016 ● Otwarty dostęp
  3. Mazza, G. L., Enders, C. K., & Ruehlman, L. S. (2015). Addressing item-level missing data: A comparison of proration and full information maximum likelihood estimation. Multivariate Behavioral Research, 50(5), 504–519. https://doi.org/10.1080/00273171.2015.1068157 ● Otwarty dostęp: pełny tekst
  4. Peytchev, A. (2009). Survey breakoff. Public Opinion Quarterly, 73(1), 74–97. https://doi.org/10.1093/poq/nfp014
  5. Schafer, J. L., & Graham, J. W. (2002). Missing data: Our view of the state of the art. Psychological Methods, 7(2), 147–177. https://doi.org/10.1037/1082-989X.7.2.147

Cytowania BibTeX

@article{downey1998missing, author={Downey, Ronald G. and King, Craig V.}, title={{Missing data in Likert ratings: A comparison of replacement methods}}, journal={The Journal of General Psychology}, year={1998}, volume={125}, number={2}, pages={175--191}, doi={10.1080/00221309809595542}}
@article{madleydowd2019proportion, author={Madley-Dowd, Paul and Hughes, Rachael and Tilling, Kate and Heron, Jon}, title={{The proportion of missing data should not be used to guide decisions on multiple imputation}}, journal={Journal of Clinical Epidemiology}, year={2019}, volume={110}, pages={63--73}, doi={10.1016/j.jclinepi.2019.02.016}}
@article{mazza2015addressing, author={Mazza, Gina L. and Enders, Craig K. and Ruehlman, Linda S.}, title={{Addressing item-level missing data: A comparison of proration and full information maximum likelihood estimation}}, journal={Multivariate Behavioral Research}, year={2015}, volume={50}, number={5}, pages={504--519}, doi={10.1080/00273171.2015.1068157}}
@article{peytchev2009survey, author={Peytchev, Andy}, title={{Survey breakoff}}, journal={Public Opinion Quarterly}, year={2009}, volume={73}, number={1}, pages={74--97}, doi={10.1093/poq/nfp014}}
@article{schafer2002missing, author={Schafer, Joseph L. and Graham, John W.}, title={{Missing data: Our view of the state of the art}}, journal={Psychological Methods}, year={2002}, volume={7}, number={2}, pages={147--177}, doi={10.1037/1082-989x.7.2.147}}
R