A single ratio is defined as the 100 times twice the size of an age group to its neighboring two age groups. Under uniformity these would all be 100. The average absolute deviation from 100 defines this index. This comes from the PAS spreadsheet called AGESEX

  ageMin = 0,
  ageMax = max(Age),
  method = "UN",



numeric. A vector of demographic counts in 5-year age groups.


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


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


integer. The upper age bound used for calculations. Default max(Age).


character. Either "UN" (default), "Zelnick", or "Ramachandran"


logical. Whether or not the top age group is open. Default TRUE.


The value of the index.


Age groups must be of equal intervals. Five year age groups are assumed. It is also assumed that the final age group is open, unless ageMax < max(Age). Setting OAG = FALSE will override this and potentially include max(Age) in calculations. The method argument determines the weighting of numerators and denominators, where the UN method puts twice the numerator over the sum of the adjacent ages classes, Zelnik does thrice the numerator over the sum of the whole range from the next lowest to the next highest age, and Ramachandran does four times the numerator over the same sum, but with the central age double-counted in the numerator.


United Nations (1952). “Accuracy tests for census age distributions tabulated in five-year and ten-year groups.” Population Bulletin, 59--79. Ramachandran KV (1967). “An Index to Measure Digit Preference Error in Age Data.” In United Nations, Proceedings of the World Population Conference, 1965 (Belgrade), volume III, 202--203. United States Census Bureau (2017). “Population Analysis System (PAS) Software.” https://www.census.gov/data/software/pas.html, https://www.census.gov/data/software/pas.html.


# data from PAS spreadsheet AGESEX.xlsx Males <- c(4677000,4135000,3825000,3647000,3247000,2802000,2409000,2212000, 1786000,1505000,1390000,984000,745000,537000,346000,335000) Females <- c(4544000,4042000,3735000,3647000,3309000,2793000,2353000,2112000, 1691000,1409000,1241000,887000,697000,525000,348000,366000) Age <- seq(0, 75, by = 5) ageRatioScore(Males, Age, ageMax = 75) # 3.9, matches PAS
#> [1] 3.90667
ageRatioScore(Females, Age, ageMax = 75) # 3.66 matches PAS
#> [1] 3.655353
ageRatioScore(Females, Age, ageMax = 75, method = "Ramachandran") # 1.8
#> [1] 1.834906
ageRatioScore(Females, Age, ageMax = 75, method = "Zelnick") # 2.4
#> [1] 2.442891