This implementation is based largely on the sparse verbal description given in Coale and Li (1991): calculate a two-stage 5-term moving average as a reference pattern, then take ratios with respect to this. Ratios for a given terminal digit can then be averaged to produce an index. This procedure was used in that paper for ages 65-100 for mortality rates. It is probably better suited to rates than counts, but that is not a hard rule.

check_heaping_coale_li(
  Value,
  Age,
  ageMin = 60,
  ageMax = max(Age),
  terms = 5,
  digit = 0
)

Arguments

Value

numeric. A vector of demographic counts by single age.

Age

numeric. A vector of ages corresponding to the lower integer bound of the counts.

ageMin

integer. The lowest age included in calculations. Default 25.

ageMax

integer. The upper age bound used for calculations. Default 65.

terms

integer. Length of the (centered) moving average be. Default 5.

digit

integer. Any digit 0-9. Default 0.

Value

The value of the index.

Details

digit could also be a vector of digits, but the more digits one includes (excepting 0 and 5) the closer the index will get to 1. It is therefore recommended for single digits, or else c(0,5). ageMax is an inclusive upper bound, treated as interval. If you want ages 20 to 89, then give ageMin = 20 and ageMax = 89, not 90. By default all available ages greater than or equal to ageMin are used.

References

Coale AJ, Li S (1991). “The effect of age misreporting in China on the calculation of mortality rates at very high ages.” Demography, 28(2), 293--301.

Examples

Age <- 0:99
check_heaping_coale_li(pop1m_pasex, Age, 65, 95, 5, 0) # 3.7
#> [1] 3.707479
check_heaping_coale_li(pop1m_pasex, Age, 65, 95, 5, 5) # 3.5 almost just as high
#> [1] 3.470823