ob_convertr: Convert between IOTF, WHO and CDC prevalence rates for child...

View source: R/ob_convertr.R

ob_convertrR Documentation

Convert between IOTF, WHO and CDC prevalence rates for child thinness, overweight and obesity


Child thinness, overweight and obesity are defined as the child's body mass index (BMI) lying beyond a pre-specified reference cutoff. Three references are compared: IOTF (International Obesity Task Force), WHO (World Health Organization) and CDC (US Centers for Disease Control and Prevention), each of which have their own cutoffs. ob_convertr takes age-sex-specific prevalence rates of thinness, overweight or obesity based on one of the cutoffs, and converts them to the corresponding rates based on a different cutoff. ob_convertr2 uses paired prevalence rates of overweight and obesity on one cutoff to estimate those based on another cutoff.


  pfrom = NA,
  pto = NA,
  data = parent.frame(),
  report = c("vector", "wider", "longer"),
  plot = c("no", "density", "compare")

  pfrom = NA,
  pto = NA,
  data = parent.frame(),
  report = c("vector", "wider", "longer"),
  plot = c("no", "density", "compare")



vector of ages between 2 and 18 years corresponding to prevalence rates pfrom.


vector of sexes corresponding to pfrom, coded as either 'boys/girls' or 'male/female' or '1/2' (upper or lower case, based on the first character).


name(s) of the BMI cutoff(s) on which the prevalence pfrom is based (see Details).


name(s) of the BMI cutoff(s) on which to base the predicted prevalence (see Details).


vector of age-sex-specific percentage prevalence rates based on from (ob_convertr) or the names of two or more such prevalence rates (ob_convertr2).


vector (needed for plot = "compare") of known percentage prevalence rates based on to (ob_convertr) or the names of two or more such prevalence rates (ob_convertr2).


optional data frame containing age, sex, pfrom and pto.


character controlling the format of the returned data: 'vector' for the estimated prevalence rates, 'wider' for the working tibble in wide format, i.e. the from and to data side by side, or 'longer' for the tibble in long format, i.e. two rows per rate, one for from and one for to. For ob_convertr2 the three settings return progressively more information.


character controlling what if anything is plotted: 'no' for no plot, 'density' to display the BMI density distributions and cutoffs corresponding to from and to, or 'compare' to display the predicted prevalence rates plotted against the observed rates (pto).


The IOTF cutoffs correspond to the value of BMI (kg/m2) at age 18: IOTF 35 (morbid obesity), IOTF 30 (obesity), IOTF 25 (overweight), IOTF 18.5 (grade 1 thinness), IOTF 17 (grade 2 thinness) and IOTF 16 (grade 3 thinness).

The WHO cutoffs correspond to BMI z_scores. Age 5-19 years, WHO +2 (obesity), WHO +1 (overweight) and WHO -2 (thinness). Age 0-5 years, WHO +3 (obesity), WHO +2 (overweight) and WHO -2 (thinness).

The CDC cutoffs correspond to BMI centiles: CDC 95 (obesity), CDC 85 (overweight) and CDC 5 (thinness).

Note: the overweight category needs to be analysed as overweight prevalence plus obesity prevalence, i.e. the prevalence above the overweight cutoff. To predict overweight prevalence excluding obesity prevalence, first calculate predicted overweight prevalence including obesity then subtract predicted obesity prevalence.

The algorithms for ob_convertr and ob_convertr2 are distinguished by the number of prevalence rates used for the prediction. For ob_convertr (Cole & Lobstein, 2022) just one rate is used – in this case the algorithm is commutative, meaning that converting a prevalence rate from cutoff A to cutoff B and then from B to A returns the original value. from and to are the names of the cutoffs, and pfrom and optionally pto are vectors of percentage prevalence rates.

ob_convertr2 uses two known prevalence rates (Cole & Lobstein, 2023), typically overweight and obesity based on one reference, returning the corresponding rates based on another reference. It is more accurate than ob_convertr though not exactly commutative. from and to are the names of the cutoffs as length-2 character strings, while pfrom and optionally pto are length-2 character strings giving the names of the corresponding vector prevalence rates. For convenience the from or to names 'CDC', 'IOTF' or 'WHO' expand to the corresponding pairs of cutoffs for overweight and obesity, e.g. 'CDC' expands to c('CDC 85', 'CDC 95').

Alternatively ob_convertr2 can be used to interpolate or extrapolate to one or more specified z-score cutoffs assuming the same reference for all cutoffs. Here the values of from and to are numerical z-score cutoffs, with at least two for from. See the final example.

The algorithms require the prevalences of obesity and overweight net of obesity to be non-zero, and if they are zero they are set to missing.


The predicted prevalence rates, optionally with a plot visualizing the findings, depending on the report and plot settings. Each predicted rate is given the name of the relevant cutoff followed by " pred".

With report set to "wider" or "longer", extra information is returned reflecting the internal workings of the algorithms. In particular ob_convertr2 returns b the regression coefficient of z-score prevalence on z-score cutoff as described in Cole & Lobstein (2023).

If a plot is selected, the underlying data and plot are returned invisibly with names data and plot.


Tim Cole tim.cole@ucl.ac.uk


Cole TJ, Lobstein T. Exploring an algorithm to harmonize International Obesity Task Force and World Health Organization child overweight and obesity prevalence rates. Pediatr Obes 2022;17:e12905. Available at \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1111/ijpo.12905")}

Cole TJ, Lobstein T. An improved algorithm to harmonize child overweight and obesity prevalence rates. Pediatr Obes 2023;18:e12970. Available at \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1111/ijpo.12970")}

The CDC reference for children aged 2-20 years is: Must A, Dallal GE, Dietz WH. Reference data for obesity: 85th and 95th percentiles of body mass index (wt/ht2) and triceps skinfold thickness. American Journal of Clinical Nutrition 1991; 53: 839-46.

The IOTF reference for children aged 2-18 years is: Cole TJ, Bellizzi MC, Flegal KM, Dietz WH. Establishing a standard definition for child overweight and obesity worldwide: international survey. BMJ 2000; 320: 1240-5. Available at \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1136/bmj.320.7244.1240")}

The WHO reference for children aged 0-5 years is: WHO Child Growth Standards: Length/height-for-age, weight-for-age, weight-for-length, weight-for-height and body mass index-for-age: Methods and development. Geneva: World Health Organization, 2006. Available at: https://www.who.int/toolkits/child-growth-standards/standards

The WHO reference for children aged 5-19 years is: de Onis M, Onyango AW, Borghi E, Siyam A, Nishida C, Siekmann J. Development of a WHO growth reference for school-aged children and adolescents. Bulletin of the World Health Organization 2007; 85: 660-7.


## convert 10% IOTF overweight prevalence (cutoff IOTF 25, including obesity)
## in 8-year-old boys to overweight prevalence for cutoff WHO +1
ob_convertr(age = 8, sex = 'boys', from = 'IOTF 25', to = 'WHO +1', pfrom = 10)

## compare the BMI density functions and cutoffs for IOTF and WHO
## in 8-year-old boys
ob_convertr2(age = 8, sex = 'boys', from = 'IOTF', to = 'WHO', plot = 'density')

## convert IOTF overweight prevalence to WHO overweight prevalence
## and compare with true value - boys and girls aged 7-17 (22 groups)
## note the need to first add obesity prevalence to overweight prevalence
deren <- within(deren, {
  CDC85 = CDC85 + CDC95
  IOTF25 = IOTF25 + IOTF30
  `WHO+1` = `WHO+1` + `WHO+2`})
ob_convertr(age = Age, sex = Sex, from = 'IOTF 25', to = 'WHO +1',
  pfrom = IOTF25, pto = `WHO+1`, data = deren, plot = 'compare')

## convert IOTF overweight and obesity prevalence to WHO using
## ob_convertr2 - which is more accurate than ob_convertr
ob_convertr2(age = Age, sex = Sex, from = 'IOTF', to = 'WHO',
  pfrom = c('IOTF25', 'IOTF30'), pto = c('WHO+1', 'WHO+2'),
  data = deren, plot = 'compare')

## extrapolate WHO overweight and obesity prevalence (cutoffs +1 and +2)
## to severe obesity prevalence based on cutoffs +2.5 or +3
ob_convertr2(Age, Sex, from = 1:2, to = c(2.5, 3),
  pfrom = c('WHO+1', 'WHO+2'), data = deren, report = 'wider')

sitar documentation built on July 9, 2023, 6:51 p.m.