Worst-case (support) bounds for person means under arbitrary nonresponse
Source:R/bounds_report.R
bounds_support.RdWorst-case bounds in the spirit of Manski (2003): every skipped prompt
could have taken any value on the response scale [L, U]. The width,
\((1 - \pi_i)(U - L)\), depends only on the response rate and does not
shrink with autocorrelation, in contrast to the tilt-bounded identified
sets of break_even.
Arguments
- data
Long data frame with one row per scheduled prompt.
- vars
Names of the state columns.
- L, U
Lower and upper limits of the response scale (scalars or one value per variable).
- id
Name of the person column.
- R
Name of the response-indicator column (0/1, no
NA). If the default name is not among the columns ofdata, a prompt counts as answered when allvarsare non-missing; any other name must exist.
Value
A data frame with one row per person and variable and the columns
id, variable, response_rate, mean_observed
(NA for a person without any answered prompt, whose bounds are then
the whole scale), lower and upper.
References
Manski, C. F. (2003). Partial identification of probability distributions. Springer. doi:10.1007/b97478
Examples
sim <- simulate_ema(N = 5, n_prompts = 20, motifs = "M2", seed = 1)
b <- bounds_support(sim$data, sim$vars, L = -3, U = 8)
b[b$variable == "NegA", ]
#> id variable response_rate mean_observed lower upper
#> 1 1 NegA 0.95 1.615739 1.38495180 1.934952
#> 5 2 NegA 0.80 2.259336 1.20746865 3.407469
#> 9 3 NegA 0.50 2.843551 -0.07822471 5.421775
#> 13 4 NegA 0.65 2.306685 0.44934540 4.299345
#> 17 5 NegA 0.85 2.169092 1.39372799 3.043728
# the width is (1 - response rate) x (U - L)
with(b, all.equal(upper - lower, (1 - response_rate) * 11))
#> [1] TRUE