Skip to contents

Worst-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.

Usage

bounds_support(data, vars, L, U, id = "id", R = "R")

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 of data, a prompt counts as answered when all vars are 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