# GAMLSS vs VGAM for percentile curves (Growth chart)

It seems that there are two methods and packages in R to calculate the Percentile curves based on LMS (Lambda for the skew, Mu for the median, and Sigma for the generalized coefficient of variation; Cole, 1990).

-- GAMLSS (Generalized Additive Model for Location, Scale and Shape)

-- VGAM (Vector generalized additive model)

1. Which one of these two techniques and their corresponding R packages can estimate more accurate estimation for percentile curves?

2. Among lms.bcn (LMS Quantile Regression with a Box-Cox Transformation to Normality) and lms.yjn (LMS quantile regression with the Yeo-Johnson transformation to normality) in VGAM method/package, which function is more appropriate to calculate the percentile curves?

Thank you so much for your time and advice.

The accuracy of estimated centile curves will depend on how well the model fits the data. The chosen distribution used is important.

gamlss allows a wide choice of distributions, including BCCG(mu,sigma,nu) which is the LMS distribution and models location, scale and skewness.

This was generalised to the BCT(mu, sigma, nu, tau) and BCPE(mu, sigma, nu, tau) distributions which also model kurtosis.

One approach is to fit the BCT distribution, and then use chooseDist() to compare all distributions on (0, ∞) in gamlss using a generalised Akaike information criterion:

m1 <- gamlss(y~pb(x), sigma.fo=~pb(x), nu.fo=~pb(x), tau.fo=~pb(x), family=BCT)

m2 <- chooseDist(m1, type = "realplus", k=c(2,4,8), parallel="snow", ncpus=4)

getOrder(m2,1)[1:20]

getOrder(m2,2)[1:20]

getOrder(m2,3)[1:20]

centiles(m2, xvar=x)

You could also try fitting models to log(Y):

ly <- log(y)

m3 <- gamlss(ly~pb(x), sigma.fo=~pb(x), nu.fo=~pb(x), tau.fo=~pb(x), family=SHASH)

m4 <- chooseDist(m3, type = "realline", k=c(2,4,8), parallel="snow", ncpus=4)

centiles(m4, xvar=x)

• Robert, Thank you so much for the help. Regarding calcualting the percentile curves and LMS method, what is the difference between Vgam and Gamlss? Aug 11, 2022 at 9:21
• Hi, unfortunately I do not use Vgam. Aug 11, 2022 at 12:33
• However gamlss has a wider range of suitable distributions and was used by the World Health Organization for centile estimation. The gamlss lms() function also can search for a power transformation of the explanatory variable x which can dramatically improve the centile estimation if there is strong growth for low x. Aug 11, 2022 at 12:49