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.
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 a0it 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/FALSEfor 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:
$specThe input as given, so the printed form can name the pattern the way it was declared.
$lifeOccasions from a unit's first interview to its last.
$n_occasionUnits in sample at any one occasion, at a steady state, which is the sum of the takes.
$unbrokenTRUEwhen no occasion of the life is out of sample.$equal_takeTRUEwhen 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