Stasinopoulos 2007 - Centile Curves, LMS and Residual Diagnostics

Summary

Growth charts are conditional quantile curves of a response given age. The LMS method (BCCG) models skewness through a Box-Cox power ; the Box-Cox adds a kurtosis parameter . On the Fourth Dutch Growth Study head circumference (7,040 boys) a BCT GAMLSS with smooth fits with no worm-plot violations, and worm plots plus Q-statistics localise misfit by age range.

Overview

GAMLSS was adopted by the WHO for the world standard child growth curves (WHO Multicentre Growth Reference Study Group 2006). Centile curves are obtained by fitting a four-parameter distribution whose parameters vary smoothly in age and then inverting the cdf.

Main Content

Box-Cox Cole-Green (LMS) and BCT

(Standard definitions; the paper lists the families in Table 1 and cites Cole and Green 1992, Rigby and Stasinopoulos 2004, 2006 for the formulas.) If with median , scale (approximately a coefficient of variation) and Box-Cox power , the LMS/BCCG model states that

is (truncated) standard normal. BCT replaces the normal by a distribution with degrees of freedom, so controls kurtosis. In the LMS acronym, (Lambda), (Mu), (Sigma).

Centile curve (Eq. 11)

For a BCT response, the -th centile at covariate is approximately

where is the centile of a standard distribution with degrees of freedom. The paper notes “Strictly the exact formula for is given in Rigby and Stasinopoulos (2006, Appendix A).” The curve is traced by evaluating fitted over a grid of .

Model for head circumference (Eq. 10)

Data: Fourth Dutch Growth Study (Fredriks et al. 2000a,b), cross-sectional ages 0-22 years, 7,482 males and 7,018 females; head circumference for males has 7,040 observations (442 missing). Explanatory variable . Model: with for smooth ; identity links for , log links for . Hyperparameters: links, power , and total smoother df , chosen by minimising GAIC() via find.hyper() (van Buuren and Fredriks (2001) had found strong kurtosis they could not model).

Selection (extra df)Notes
GAIC(2)(18.44, 2.68, 1.00, about 6.8, about 0.08-0.09); crit 26780.56~1 hour of computing
GAIC(3) (R&S 2006)(12.3, 5.7, 2, 2, 0.33)
VGD (60/40 split)(15.77, 8.05, 2, 2, 0.28) linear in ; refit on all data: global deviance 26732.04 after 9 iterations

Diagnostics

Normalised randomised quantile residuals

(randomised for discrete ). If the model is correct, (Dunn and Smyth 1996).

Worm plot (van Buuren and Fredriks 2001)

Split the range of into 20 contiguous, equal-count intervals. In each, draw a de-trended normal Q-Q plot of the residuals. Fit a cubic to each worm; flag differences between empirical and model residual mean, variance, skewness and kurtosis within the interval. The first two flagging thresholds for are 0.10, 0.10 (remaining thresholds are in van Buuren and Fredriks 2001, Table II).

Q statistics (Royston and Wright 2000)

In each of age groups compute testing residual mean 0, variance 1, skewness 0 and kurtosis 3. Then , . Significant point to inadequacy in the models for respectively. Rule of thumb: indicates a problematic group. Significance levels are “a guide to model inadequacy.”

Q.stats(mBCT, xvar = db$age, n.inter = 20) output for the selected model:

Total
Q statistic6.97014.31427.35328.63655.990
df4.22815.474181836
p-value0.1550.5370.07260.05300.0180

The paper highlights misfit in the models in the age range 1.255-1.755 years (highly skewed, kurtotic residuals), “or perhaps the presence of outliers.”

Worm-plot comparison with the LMS model. van Buuren and Fredriks (2001) used LMS with a rescaled age transformation (Cole, Freeman and Preece 1998) and chose 9 df for , 5 for and constant , but had 16 worm-coefficient violations. The GAMLSS BCT had none. Normal Q-Q plot shows seven extreme upper-tail outliers (0.1% of data); removing the 14 most extreme observations (7 per tail) “substantially improved” Q statistics and centile estimates, i.e. outliers distorted the fit.

Centile output. Nine curves for (Fig. 16), plotted separately for ages 0-2.5 and 2.5-22 years. centiles.split() compares sample proportions below each curve with nominal, agreeing “reasonably well.”

Examples

Reading a centile chart

A boy whose head circumference at age 2 sits at the model 98th centile has under the fitted conditional BCT. Equivalently his normalised residual is . A “z-score” is exactly the normalised quantile residual; centile charts, z-scores and the residual diagnostics are one object.

Python: BCT centile from fitted parameters

import numpy as np
from scipy import stats
def bct_centile(mu, sigma, nu, tau, alpha):
    t = stats.t.ppf(alpha, df=tau)
    return mu * (1 + nu * sigma * t) ** (1 / nu)   # Eq. 11 (approximate)
# illustrative values (not from the paper): median 50 cm, CV 3%, nu=1.5, tau=8
print(bct_centile(50, 0.03, 1.5, 8, np.array([0.004, 0.5, 0.996])))

Relevance to marketing measurement

Treat revenue-per-customer or latency as the response and “age” as tenure: centile curves give a reference distribution to flag unusual customers/markets (normalised residual beyond ), and worm-style residual checks by tenure bins diagnose mean, spread, skew and tail mismatch of any outcome model.

Connections

  • Growth charts vs Quantile Regression: LMS yields coherent, non-crossing quantile curves from one parametric family; quantile regression estimates each curve separately and can cross.
  • Residual-based checking parallels Posterior Predictive Checking.

See Also

Stasinopoulos 2007 - GAMLSS in R - Overview, Stasinopoulos 2007 - Bayesian P-Splines and Distributional Regression in PyMC