suppressPackageStartupMessages(library(survey))
library("robsurvey", quietly = TRUE)
source("check_functions.R")
# population and sample size (by strata)
N <- c(8, 20, 100, 200)
n <- c(6, 10, 12, 190)
# variables
strat <- unlist(Map(rep, seq_along(n), n))
fpc <- unlist(Map(rep, N, n))
set.seed(1024)
x <- unlist(Map(rnorm, n, seq_along(n) * 10))
# domain indicators
select <- function(n, prop)
{
sel <- rep(FALSE, n)
sel[seq_len(floor(prop * n))] <- TRUE
sel
}
d60 <- unlist(Map(select, n, 0.6))
d80 <- unlist(Map(select, n, 0.8))
d90 <- unlist(Map(select, n, 0.9))
# design weights
w <- unlist(Map(rep, N / n, n))
# data set and design
dat <- data.frame(strat, x, d60, d80, d90, w, fpc)
dn <- svydesign(~1, strat = ~strat, fpc = ~fpc, data = dat)
dn_cal <- svydesign(~1, strat = ~strat, fpc = ~fpc, data = dat,
calibrate.formula = ~strat)
# set missing values in variable x (of a given design)
set_missing <- function(design, variable)
{
design$variables$x[design$variables[, variable] == FALSE] <- NA
design
}
#-------------------------------------------------------------------------------
# domain
dn_d60 <- subset(dn, d60 == TRUE) # original design
check(svymean(~x, dn_d60),
svymean_trimmed(~x, dn_d60, LB = 0, UB = 1),
"domain d60", "mean")
check(svyby(~x, ~strat, dn_d60, svymean),
svyby(~x, ~strat, dn_d60, svymean_trimmed, LB = 0, UB = 1),
"domain d60", "mean")
dn_cal_d60 <- subset(dn_cal, d60 == TRUE) # calibrated
check(svymean(~x, dn_cal_d60),
svymean_trimmed(~x, dn_cal_d60, LB = 0, UB = 1),
"domain d60", "mean, calibrated")
check(svyby(~x, ~strat, dn_cal_d60, svymean),
svyby(~x, ~strat, dn_cal_d60, svymean_trimmed, LB = 0, UB = 1),
"domain d60", "mean, calibrated")
#-------------------------------------------------------------------------------
# missing values
dn_miss_d60 <- set_missing(dn, "d60") # original design
check(svymean(~x, dn_miss_d60, na.rm = TRUE),
svymean_trimmed(~x, dn_miss_d60, LB = 0, UB = 1, na.rm = TRUE),
"missing values: d60", "mean")
check(svyby(~x, ~strat, dn_miss_d60, svymean, na.rm = TRUE),
svyby(~x, ~strat, dn_miss_d60, svymean_trimmed, LB = 0, UB = 1,
na.rm = TRUE),
"missing values: d60", "mean")
dn_cal_miss_d60 <- set_missing(dn_cal, "d60") # calibrated
check(svymean(~x, dn_cal_miss_d60, na.rm = TRUE),
svymean_trimmed(~x, dn_cal_miss_d60, LB = 0, UB = 1, na.rm = TRUE),
"missing values: d60", "mean, calibrated")
check(svyby(~x, ~strat, dn_cal_miss_d60, svymean, na.rm = TRUE),
svyby(~x, ~strat, dn_cal_miss_d60, svymean_trimmed, LB = 0, UB = 1,
na.rm = TRUE),
"missing values: d60", "mean, calibrated")
#-------------------------------------------------------------------------------
# missing values and domain estimation
# original design
dn_d90_miss_d60 <- subset(dn_miss_d60, d90 == TRUE)
check(svymean(~x, dn_d90_miss_d60, na.rm = TRUE),
svymean_trimmed(~x, dn_d90_miss_d60, LB = 0, UB = 1, na.rm = TRUE),
"domain d90, missing values: d60", "mean")
check(svyby(~x, ~strat, dn_d90_miss_d60, svymean, na.rm = TRUE),
svyby(~x, ~strat, dn_d90_miss_d60, svymean_trimmed, LB = 0, UB = 1,
na.rm = TRUE),
"domain d90, missing values: d60", "mean")
# calibrated
dn_cal_d90_miss_d60 <- subset(dn_cal_miss_d60, d90 == TRUE)
check(svymean(~x, dn_cal_d90_miss_d60, na.rm = TRUE),
svymean_trimmed(~x, dn_cal_d90_miss_d60, LB = 0, UB = 1, na.rm = TRUE),
"domain d90, missing values: d60", "mean, calibrated")
check(svyby(~x, ~strat, dn_cal_d90_miss_d60, svymean, na.rm = TRUE),
svyby(~x, ~strat, dn_cal_d90_miss_d60, svymean_trimmed, LB = 0, UB = 1,
na.rm = TRUE),
"domain d90, missing values: d60", "mean, calibrated")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.