Skip to contents

Take a recruitment size a panel already has, or has been budgeted, and report the responding sample and the precision it leaves at each wave of a unit's life. This is the inverse of n_panel(): the same rates and the same embedded estimand, read from a size instead of solved for one.

Usage

prec_panel(n_recruit, ...)

# Default S3 method
prec_panel(
  n_recruit,
  target,
  retention,
  ...,
  resp_rate = 1,
  design = c("fixed", "rotating"),
  target_wave = NULL,
  assurance = NULL,
  start = NULL
)

# S3 method for class 'svyplan_panel'
prec_panel(n_recruit, ...)

Arguments

n_recruit

For the default method: units recruited, meaning the whole issue to one cohort for a fixed panel and the entrants per occasion for a rotating one. For svyplan_panel objects: a result from n_panel() or from this function.

...

Additional arguments passed to methods. Unused arguments are rejected. In the svyplan_panel method, named arguments override the stored ones, so a stored plan can be re-read under worse retention.

target

A svyplan_n or svyplan_prec result for a mean or a proportion. Required in the default method, and the same object n_panel() takes: it supplies the estimand each wave's precision is computed for, and the responding sample the design is compared against.

retention

Conditional retention, one value per wave transition, each in (0, 1]. See n_panel().

resp_rate

Response rate at recruitment, wave 1, in (0, 1]. Default 1.

design

"fixed" or "rotating". See n_panel().

target_wave

The wave the headline precision is reported at, defaulting to the last. It must be absent for a rotating design, whose precision belongs to the pooled occasion.

assurance

Probability in (0, 1), or NULL (default). Reports the recruitment the target would need at that level, which is what the supplied n_recruit can then be read against.

start

"gradual", "immediate" or NULL. See n_panel(). On a stored plan this may be overridden, unlike design: it selects which launch is described and moves no stored quantity, the recruitment being fixed before any of it is computed.

Value

A svyplan_panel object, the class n_panel() returns, with $solved absent because nothing was solved for. $n_resp and the headline se, moe and cv describe the supplied recruitment, and $n_target the requirement it is being compared against, so a recruitment below the requirement reports a moe above the target's.

Details

The precision at a wave is the embedded estimand evaluated at that wave's expected respondents with resp_rate = 1, the panel's own losses having already been applied. The design effect, population size, interval method and degrees of freedom all come from the target, which is what makes the round trip exact: prec_panel(n_panel(target, retention, target_wave = w)) reproduces the target's own precision at wave w.

A rotating panel has one precision rather than one per wave, its estimate pooling every cohort alive at the occasion. The per-wave rows of $waves still report what an estimate from a single cohort would carry, which is the wave-1-only estimate a rotating design sometimes publishes, and they are not the occasion's precision.

See also

n_panel() for the inverse (solve the recruitment from a target), prec_mean() and prec_prop() for the single-occasion precision the waves are evaluated with.

Other precision functions: prec_alloc(), prec_change(), prec_cluster(), prec_mean(), prec_multi(), prec_multi_cluster(), prec_pooled(), prec_prop(), prec_twophase()

Examples

target <- n_prop(p = 0.5, moe = 0.031)
ret <- c(0.878, 0.963, 0.936, 0.956)

# A budget of 1500 addresses rather than the 1816 the target asks for
short <- prec_panel(1500, target, retention = ret, resp_rate = 0.728)
short
#> Panel recruitment (fixed, 5-wave life)
#> issued: 1500 -> 826 responding at wave 5, short of the 1000 the target needs
#> proportion (wald): se = 0.0174, moe = 0.03409, cv = 0.0348
#> 
#>  wave retention n_resp se      moe    
#>  1              1092   0.01513 0.02966
#>  2    0.878      959   0.01615 0.03165
#>  3    0.963      923   0.01646 0.03225
#>  4    0.936      864   0.01701 0.03334
#>  5    0.956      826   0.0174  0.03409
#> 
#> # summary() for the launch, the loss and per-wave cv

# The round trip: precision at the wave the panel was sized for
plan <- n_panel(target, retention = ret, resp_rate = 0.728)
prec_panel(plan)$moe
#> [1] 0.031
target$moe
#> [1] 0.031

# Re-read a stored plan under retention that turned out worse
prec_panel(plan, retention = c(0.80, 0.90, 0.90, 0.92))$waves
#>   wave retention         q loss_share    n_resp         se        moe
#> 1    1        NA 0.7280000 0.48056917 1320.8645 0.01375754 0.02696429
#> 2    2      0.80 0.5824000 0.25724585 1056.6916 0.01538140 0.03014699
#> 3    3      0.90 0.5241600 0.10289834  951.0224 0.01621342 0.03177772
#> 4    4      0.90 0.4717440 0.09260851  855.9202 0.01709045 0.03349666
#> 5    5      0.92 0.4340045 0.06667812  787.4466 0.01781802 0.03492268
#>           cv expected_cases
#> 1 0.02751509       660.4322
#> 2 0.03076280       528.3458
#> 3 0.03242684       475.5112
#> 4 0.03418089       427.9601
#> 5 0.03563604       393.7233