Słownik metodologiczny · Dobór próby

Raking (ważenie iteracyjne) – jak dopasować wagi do rozkładów w populacji?

Raking dopasowuje wagi tak, by ważone rozkłady płci, wieku czy wykształcenia w próbie zgadzały się z populacją. Pokazujemy algorytm, przycinanie wag, efekt ważenia Kisha i pętlę w bazowym R.

W skrócie: Raking to iteracyjne dopasowanie wag respondentów do znanych rozkładów brzegowych kilku zmiennych w populacji. Wymaga tylko rozkładów brzegowych, ale skrajne wagi zwiększają wariancję, dlatego przycina się je i podaje efekt ważenia.

Co to jest raking?

Raking, czyli ważenie iteracyjne (ang. raking, iterative proportional fitting), to metoda budowy wag, po której ważone rozkłady kilku zmiennych w próbie zgadzają się ze znanymi rozkładami w populacji. Zwykle chodzi o płeć, wiek i wykształcenie. W odróżnieniu od poststratyfikacji w komórkach pełnego krzyżowania raking potrzebuje tylko rozkładów brzegowych. Nie rozbija też próby na wiele małych komórek (Battaglia i in., 2009). Deville i Särndal (1992) pokazali, że uogólniony raking jest szczególnym przypadkiem ważenia kalibracyjnego.

Jak to działa?

Zaczynasz od wag równych 1 albo od wag schematu losowania. Potem po kolei dla każdej zmiennej mnożysz wagi w kategorii przez iloraz: udział w populacji / ważony udział w próbie. Dopasowanie do wieku psuje trochę dopasowanie do płci, więc cykl się powtarza, aż wagi przestaną się zmieniać. Zwykle wystarcza kilka cykli. Skrajne wagi zwiększają wariancję oszacowań, dlatego przycina się je do ustalonego progu. Programy do rakingu oferują kilka sposobów przycinania i diagnostykę wag (Kolenikov, 2014). Koszt ważenia mierzy efekt ważenia Kisha: deff = 1 + CV² wag. Efektywna liczebność to n / deff.

Przykład

W fikcyjnej ankiecie online 600 osób było za dużo kobiet, młodych i osób z wyższym wykształceniem. Raking według trzech rozkładów brzegowych zbiegł się w 6 cyklach. Wagi wahały się od 0.18 do 9.53, deff = 2.42, a efektywna liczebność spadła do 248 osób. Odsetek osób ufających instytucji zmienił się z 45.3% bez wag na 39.2% po rakingu. Po przycięciu wag do 5 deff spadł do 2.11, a wynik wyniósł 39.6%.

Jak opisać w pracy

Dane ważono metodą rakingu do rozkładów płci, wieku i wykształcenia w populacji. Procedura zbiegła się po 6 cyklach. Wagi przycięto do wartości 5 (4 osoby). Efekt ważenia Kisha wyniósł 2.11. Ważony odsetek osób ufających instytucji wyniósł 39.6% (bez wag 45.3%).

Na co uważać

  • Raking poprawia tylko to, co wiąże się ze zmiennymi ważącymi. Nie usuwa błędu braku odpowiedzi zależnego od cech spoza modelu wag.
  • Przycinanie łamie dopasowanie. Po przycięciu udział osób 55+ wyniósł 37.1% zamiast 39%. Po przycięciu można powtórzyć raking.
  • Ważenie poszerza przedziały ufności. Podawaj margines błędu liczony z efektywnej liczebności, podobnie jak przy efekcie schematu.

Pełny proces, od wag schematu po błędy standardowe, opisuje wpis Ważenie danych sondażowych krok po kroku. Gotowe wagi w ESS czy PGSS omawia poradnik o analizie danych z dużych badań sondażowych.

Przykład reprodukowalny

Raking w bazowym R

Kod tworzy fikcyjną próbę, dopasowuje wagi pętlą do trzech rozkładów brzegowych, przycina je i liczy efekt ważenia Kisha. Nie wymaga żadnego pakietu.

Iteracyjne dopasowanie wag do płci, wieku i wykształcenia

Dane wejściowe: płeć, wiek, wykształcenie i zaufanie do instytucji (0/1) u 600 osób z ankiety online (dane fikcyjne, set.seed(3341)) oraz rozkłady brzegowe w populacji.

Co odczytać: liczbę cykli, zakres wag, deff i efektywną liczebność, odsetek ufających bez wag, po rakingu i po przycięciu oraz rozkład wieku po przycięciu.

R
set.seed(3341)
n <- 600                                    # fikcyjna ankieta online
d <- data.frame(plec = sample(c("K", "M"), n, TRUE, prob = c(.68, .32)),
                wiek = sample(c("18-34", "35-54", "55+"), n, TRUE, prob = c(.50, .32, .18)),
                wyks = sample(c("podst", "srednie", "wyzsze"), n, TRUE, prob = c(.12, .38, .50)))
d$ufa <- rbinom(n, 1, plogis(-0.4 + 0.5 * (d$wyks == "wyzsze") - 0.4 * (d$wiek == "55+")))
cele <- list(plec = c(K = .52, M = .48),               # rozkłady brzegowe w populacji
             wiek = c("18-34" = .27, "35-54" = .34, "55+" = .39),
             wyks = c(podst = .30, srednie = .45, wyzsze = .25))
w <- rep(1, n)
for (it in 1:100) {
  w_stare <- w
  for (z in names(cele)) {                  # dopasuj po kolei każdy rozkład brzegowy
    udz <- tapply(w, d[[z]], sum) / sum(w)
    w <- w * (cele[[z]] / udz)[d[[z]]]
  }
  if (max(abs(w - w_stare)) < 1e-6) break
}
w <- w / mean(w)
w_p <- pmin(w, 5)                            # przycięcie wag do 5
deff <- function(w) length(w) * sum(w^2) / sum(w)^2   # efekt ważenia Kisha = 1 + CV²
round(c(iteracje = it, w_min = min(w), w_max = max(w), deff = deff(w), n_eff = n / deff(w),
        deff_przyc = deff(w_p), ufa_bez_wag = mean(d$ufa),
        ufa_raking = weighted.mean(d$ufa, w), ufa_przyc = weighted.mean(d$ufa, w_p)), 3)
round(tapply(w_p, d$wiek, sum) / sum(w_p), 3)  # po przycięciu brzegi lekko się rozjeżdżają
Wynik w R
   iteracje       w_min       w_max        deff       n_eff  deff_przyc
      6.000       0.180       9.534       2.420     247.917       2.106
ufa_bez_wag  ufa_raking   ufa_przyc
      0.453       0.392       0.396
18-34 35-54   55+
0.278 0.351 0.371 

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats). Pakiet survey, standardowe narzędzie do ważenia i błędów standardowych w sondażach, nie był użyty. 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

Czym raking różni się od wag poststratyfikacyjnych?

Poststratyfikacja wymaga udziałów populacji w każdej komórce krzyżowania zmiennych, np. płeć × wiek × wykształcenie. Raking potrzebuje tylko rozkładów każdej zmiennej osobno i nie tworzy pustych ani bardzo małych komórek.

Do jakiej wartości przycinać wagi po rakingu?

Nie ma jednego progu. Ustal go przed analizą (w przykładzie 5 przy średniej wadze 1), podaj go razem z liczbą przyciętych wag i sprawdź, jak bardzo rozjechały się rozkłady brzegowe.

Co zrobić, gdy raking się nie zbiega?

Zwykle któraś kategoria ma w próbie bardzo mało osób albo docelowe rozkłady są ze sobą sprzeczne. Połącz rzadkie kategorie, sprawdź źródło danych populacyjnych i ogranicz liczbę zmiennych ważących.

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. Battaglia, M. P., Hoaglin, D. C., & Frankel, M. R. (2009). Practical considerations in raking survey data. Survey Practice, 2(5), 1–10. https://doi.org/10.29115/sp-2009-0019 ● Otwarty dostęp
  2. Deville, J.-C., & Särndal, C.-E. (1992). Calibration estimators in survey sampling. Journal of the American Statistical Association, 87(418), 376–382. https://doi.org/10.1080/01621459.1992.10475217
  3. Kolenikov, S. (2014). Calibrating survey data using iterative proportional fitting (raking). The Stata Journal, 14(1), 22–59. https://doi.org/10.1177/1536867x1401400104 ● Otwarty dostęp

Cytowania BibTeX

@article{battaglia2009practical, author={Battaglia, Michael P. and Hoaglin, David C. and Frankel, Martin R.}, title={{Practical considerations in raking survey data}}, journal={Survey Practice}, year={2009}, volume={2}, number={5}, pages={1--10}, doi={10.29115/sp-2009-0019}}
@article{deville1992calibration, author={Deville, Jean-Claude and Särndal, Carl-Erik}, title={{Calibration estimators in survey sampling}}, journal={Journal of the American Statistical Association}, year={1992}, volume={87}, number={418}, pages={376--382}, doi={10.1080/01621459.1992.10475217}}
@article{kolenikov2014calibrating, author={Kolenikov, Stanislav}, title={{Calibrating survey data using iterative proportional fitting (raking)}}, journal={The Stata Journal}, year={2014}, volume={14}, number={1}, pages={22--59}, doi={10.1177/1536867x1401400104}}
R