Skip to contents

Declare the occasions a unit spends in and out of sample over its whole life. The rotation is the design input that design_overlap() turns into a lag profile and design_schedule() turns into a field manifest, and it is the only place a pattern is parsed.

Usage

design_rotation(x)

Arguments

x

The rotation, in one of three forms.

A compact string in either of the two notations the literature uses, told apart by whether it contains a 0. Without one it names the spells in order, starting in sample: "4-8-4" is the CPS pattern, four occasions in, eight out, four in, and "5" is a five-occasion panel with no break. The count of spells must be odd, so the life starts and ends in sample. With a 0 it is one flag per occasion: "1-1-0-0-1-1" is in for two, out for two, in for two, the same life as "2-2-2". A string of all 1s is the one form both notations claim and is refused, naming the two readings and the unambiguous spelling of each.

A numeric or logical vector gives one entry per occasion of a unit's life, 0/FALSE for out of sample. Positive values may differ, in which case they are the number of units still measured at that occasion of the life, which is how a design that subsamples later waves is described. No entry may exceed the first, a wave being able only to re-interview part of the cohort it recruited. The first and last entries must be positive, since an out-of-sample spell before the first or after the last interview is not part of a unit's life. A life shorter than two occasions is refused, having no lag at which any sample is shared.

An existing svyplan_rotation, which is returned unchanged.

Value

A svyplan_rotation object: a numeric vector of takes, one entry per occasion of a unit's life. It carries:

$spec

The input as given, so the printed form can name the pattern the way it was declared.

$life

Occasions from a unit's first interview to its last.

$n_occasion

Units in sample at any one occasion, at a steady state, which is the sum of the takes.

$unbroken

TRUE when no occasion of the life is out of sample.

$equal_take

TRUE when every in-sample occasion takes the same number of units as the first.

Details

A rotation is a finite life, not a cycle. Reading "4-8-4" as "four in, eight out, repeat forever" gives the wrong answer, and gives it quietly. Under the cycle only the cohort finishing its four-occasion stint leaves each occasion, so seven of eight are retained and the consecutive overlap comes out at 87.5 percent. Under the finite life two cohorts leave, one reaching the end of its first spell and one reaching the end of its second, so six of eight are retained and the answer is the published 75 percent. A compact string with an even number of spells would have to be read as a cycle and is rejected for that reason.

Two notations, and the one string that means both

Rotation designs are named two ways in print. "4-8-4" counts occasions per spell, and "1-1-0-0-1-1" carries one flag per occasion. Both are accepted, told apart by the 0, which no spell can be. The exception is a string of all 1s, which is a valid sentence in both notations and a different design in each: "1-1-1" is three occasions in sample as a pattern and one in, one out, one in as spells, whose consecutive overlaps are 2/3 and 0. Neither reading is given precedence, because the wrong one is invisible in the answer. Write "3" or "1-0-1", which each say one thing only.

References

U.S. Census Bureau. Current Population Survey: Design and Methodology, Technical Paper 77. The 4-8-4 rotation.

Lynn, P. (2012). Longitudinal Survey Methods for the Household Finance and Consumption Survey. Report to the European Central Bank. The one-flag-per-occasion notation.

See also

design_overlap() for the overlap the rotation produces, design_schedule() for the field manifest it produces, and plot.svyplan_overlap() for the rotation chart.

Other repeated survey functions: design_overlap(), design_schedule(), n_change(), n_panel(), n_pooled(), prec_change(), prec_panel(), prec_pooled()

Examples

# The CPS rotation, declared once
cps <- design_rotation("4-8-4")
cps
#> Rotation pattern (planning)
#> 
#>   16-occasion life, 8 in sample each occasion
#>   rotation: 4 in, 8 out, 4 in

# The overlap and the manifest both read the same object
design_overlap(cps)[1]
#> [1] 0.75
design_overlap(cps, max_lag = 12)[12]
#> [1] 0.5

# One flag per occasion, the other notation in use
design_rotation("1-1-0-0-1-1")
#> Rotation pattern (planning)
#> 
#>   6-occasion life, 4 in sample each occasion
#>   rotation: 2 in, 2 out, 2 in

# A take that halves at later waves
as.data.frame(design_rotation(c(1, 1, 0.5, 0.5)))
#>   occasion in_sample take
#> 1        1      TRUE  1.0
#> 2        2      TRUE  1.0
#> 3        3      TRUE  0.5
#> 4        4      TRUE  0.5