Słownik metodologiczny · Konstrukcja ankiety

Pytanie filtrujące i logika przejść – jak je zaprojektować i zakodować braki

Pytanie filtrujące kieruje respondenta do pytań, które go dotyczą. Pokazujemy, jak ułożyć logikę przejść w ankiecie online i jak kodować braki zaplanowane, żeby nie mieszały się ze zwykłymi brakami danych.

Strona główna / Słownik / Pytanie filtrujące
W skrócie: Pytanie filtrujące ustala, czy kolejne pytania dotyczą danej osoby, a logika przejść pokazuje je tylko osobom uprawnionym. Puste pola u osób pominiętych przez filtr to braki zaplanowane: koduj je osobno („nie dotyczy”), nie imputuj i nie licz ich do odsetka braków.

Co to jest pytanie filtrujące?

Pytanie filtrujące (ang. filter question) ustala, czy kolejne pytania dotyczą danej osoby, np. „Czy obecnie pracujesz zarobkowo?”. Logika przejść (skip logic, branching) to reguła, która na podstawie odpowiedzi kieruje respondenta dalej: pracujący dostają pytania o pracę, pozostali je pomijają. W papierowym kwestionariuszu służy do tego instrukcja „Jeśli nie, przejdź do części C”, a w formularzach online sekcje lub warunki wyświetlania pytań.

Jak to zrobić dobrze

  • Formułuj filtr neutralnie i z jasnym okresem, np. „w ostatnim roku”.
  • Przed rozesłaniem ankiety przejdź wszystkie ścieżki, odpowiadając jak osoby z różnych grup.
  • Uważaj na serię filtrów. Gdy pytania dalsze padają od razu po każdym filtrze, część osób uczy się, że „nie” skraca ankietę, i zaniża odpowiedzi (Eckman i in., 2014). Zadanie najpierw wszystkich filtrów, a potem pytań dalszych dawało trafniejsze odpowiedzi, choć Kreuter i in. (2011) odnotowali w tym formacie więcej braków w pytaniach dalszych.

Braki zaplanowane a zwykłe braki

Pusta komórka u osoby niepracującej to brak zaplanowany (strukturalny): pytanie jej nie dotyczyło. Nie podlega podziałowi na MCAR, MAR i MNAR (mechanizmy braków danych), bo prawdziwej wartości po prostu nie ma, więc się go nie imputuje. Nadaj mu osobny kod, np. −1 („nie dotyczy”), inny niż dla pominięcia pytania przez osobę uprawnioną, np. −9, i opisz oba w książce kodowej. Eksport z formularzy zwykle zostawia oba rodzaje jako puste pola, więc kody trzeba odtworzyć z odpowiedzi na filtr (zob. dane z Google Forms i LimeSurvey).

Przykład

Spośród 250 osób 109 pracowało (dane symulowane). Pytanie o liczbę godzin pracy nie dotyczyło 141 osób, a 6 pracujących je pominęło. Braki stanowią 58.8% całej kolumny, ale wśród osób uprawnionych tylko 5.5%. Pracujący deklarowali przeciętnie M = 21.7 godziny tygodniowo (SD = 9.2). Gdyby „nie dotyczy” zakodować jako 0 godzin, średnia spadłaby do 9.2 i opisywałaby inną populację niż pracujący.

Jak opisać w pracy

Pytanie o liczbę godzin pracy zadano tylko osobom pracującym (n = 109); 6 z nich (5.5%) nie udzieliło odpowiedzi. Statystyki opisowe obliczono dla 103 osób (M = 21.7, SD = 9.2).

Na co uważać

  • Odsetek braków podawaj wśród osób, których pytanie dotyczyło, a nie dla całej próby.
  • Imputacja dotyczy tylko zwykłych braków u osób uprawnionych (zob. braki danych i imputacja wielokrotna w R).
  • Błędu w logice przejść, np. pominięcia grupy, której pytanie dotyczyło, nie da się naprawić po zebraniu danych.
Przykład reprodukowalny

Kody „nie dotyczy” i „brak odpowiedzi” w R

Kod tworzy pytanie filtrujące i pytanie dalsze, nadaje osobne kody brakom zaplanowanym (−1) i zwykłym brakom (−9), a potem pokazuje, jak błędne kodowanie „nie dotyczy” jako zera zaniża średnią.

Pytanie filtrujące i pytanie dalsze

Dane wejściowe: 250 osób, z czego około 42% pracuje; 6 pracujących pomija pytanie o godziny pracy (set.seed(105)).

Co odczytać: liczbę odpowiedzi, braków zaplanowanych i zwykłych braków, średnią wśród pracujących oraz średnią po błędnym kodowaniu.

R
set.seed(105)
n <- 250
pracuje <- rbinom(n, 1, 0.42)                                  # pytanie filtrujące: 1 = tak
godziny <- ifelse(pracuje == 1, round(pmin(pmax(rnorm(n, 22, 9), 4), 45)), -1)  # −1 = nie dotyczy (przejście)
godziny[pracuje == 1][sample(sum(pracuje), 6)] <- -9           # −9 = pominięte przez osobę, która powinna odpowiedzieć
table(status = ifelse(godziny == -1, "nie dotyczy", ifelse(godziny == -9, "brak odpowiedzi", "odpowiedź")))
h <- ifelse(godziny < 0, NA, godziny)                         # do analizy oba kody zamieniamy na NA
round(c(M = mean(h, na.rm = TRUE), SD = sd(h, na.rm = TRUE)), 1)
round(mean(ifelse(godziny == -1, 0, h), na.rm = TRUE), 1)       # błąd: „nie dotyczy” zakodowane jako 0 godzin
Wynik w R
status
brak odpowiedzi     nie dotyczy       odpowiedź 
              6             141             103 
   M   SD 
21.7  9.2 
[1] 9.2

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats). W pracy podaj wersję R, której faktycznie użyto (sessionInfo()).

  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 puste odpowiedzi po pytaniu filtrującym to braki danych?

Nie w zwykłym sensie. To braki zaplanowane: pytanie tej osoby nie dotyczyło. Koduj je osobno jako „nie dotyczy”, nie imputuj ich i nie wliczaj do odsetka braków.

Jak zrobić logikę przejść w Google Forms?

Podziel formularz na sekcje i przy pytaniu filtrującym ustaw przejście do sekcji zależnie od odpowiedzi. Przed rozesłaniem przejdź każdą ścieżkę, odpowiadając jak osoby z różnych grup.

Dlaczego respondenci odpowiadają „nie” na pytania filtrujące?

Część osób szybko uczy się, że odpowiedź „nie” skraca ankietę. Ryzyko rośnie przy serii filtrów, po których od razu padają pytania dalsze.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Eckman, S., Kreuter, F., Kirchner, A., Jäckle, A., Tourangeau, R., & Presser, S. (2014). Assessing the mechanisms of misreporting to filter questions in surveys. Public Opinion Quarterly, 78(3), 721–733. https://doi.org/10.1093/poq/nfu030
  2. Kreuter, F., McCulloch, S., Presser, S., & Tourangeau, R. (2011). The effects of asking filter questions in interleafed versus grouped format. Sociological Methods & Research, 40(1), 88–104. https://doi.org/10.1177/0049124110392342

Cytowania BibTeX

@article{eckman2014assessing, author={Eckman, Stephanie and Kreuter, Frauke and Kirchner, Antje and Jäckle, Annette and Tourangeau, Roger and Presser, Stanley}, title={{Assessing the mechanisms of misreporting to filter questions in surveys}}, journal={Public Opinion Quarterly}, year={2014}, volume={78}, number={3}, pages={721--733}, doi={10.1093/poq/nfu030}}
@article{kreuter2011effects, author={Kreuter, Frauke and McCulloch, Susan and Presser, Stanley and Tourangeau, Roger}, title={{The effects of asking filter questions in interleafed versus grouped format}}, journal={Sociological Methods \& Research}, year={2011}, volume={40}, number={1}, pages={88--104}, doi={10.1177/0049124110392342}}
R