Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")
library(weightflow)
## ----poststrat----------------------------------------------------------------
wf <- weighting_spec(sample_survey, base_weights = pw) |>
step_nonresponse(respondent = responded, method = "weighting_class",
by = "region") |>
step_calibrate(method = "poststratify",
margins = list(region = c(table(population$region)))) |>
prep()
wf$steps[[2]]$diagnostics
## ----poststrat-multi----------------------------------------------------------
totals_cross <- colSums(model.matrix(~ region * sex, population))
wf2 <- weighting_spec(sample_survey, base_weights = pw) |>
step_nonresponse(respondent = responded, method = "weighting_class",
by = "region") |>
step_calibrate(method = "linear", formula = ~ region * sex,
totals = totals_cross) |>
prep()
wf2$steps[[2]]$diagnostics
## ----raking-------------------------------------------------------------------
wf <- weighting_spec(sample_survey, base_weights = pw) |>
step_nonresponse(respondent = responded, method = "weighting_class",
by = "region") |>
step_calibrate(method = "raking",
margins = list(region = c(table(population$region)),
sex = c(table(population$sex)))) |>
prep()
wf$steps[[2]]$diagnostics
## ----linear-------------------------------------------------------------------
totals <- colSums(model.matrix(~ region + sex + age, population))
wf <- weighting_spec(sample_survey, base_weights = pw) |>
step_nonresponse(respondent = responded, method = "weighting_class",
by = "region") |>
step_calibrate(method = "linear", formula = ~ region + sex + age,
totals = totals) |>
prep()
wf$steps[[2]]$diagnostics
## ----bounded------------------------------------------------------------------
totals_rs <- colSums(model.matrix(~ region + sex, population))
wf <- weighting_spec(sample_survey, base_weights = pw) |>
step_nonresponse(respondent = responded, method = "weighting_class",
by = "region") |>
step_calibrate(method = "linear", formula = ~ region + sex, totals = totals_rs,
bounds = c(0.83, 1.2)) |>
prep()
range(wf$steps[[2]]$diagnostics$achieved / wf$steps[[2]]$diagnostics$target)
## ----equal-cluster------------------------------------------------------------
totals_rs <- colSums(model.matrix(~ region + sex, population))
wf <- weighting_spec(sample_survey, base_weights = pw) |>
step_nonresponse(respondent = responded, method = "weighting_class",
by = "region") |>
step_calibrate(method = "linear", formula = ~ region + sex, totals = totals_rs,
cluster = "household_id", equal_within_cluster = TRUE) |>
prep()
# every member of a household shares one weight
tapply(wf$final_weight, sample_survey$household_id, function(x) diff(range(x))) |>
max()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.