Extract LMS values from a gamlss object for solutions that transform the age axis according to the M-curve.
extractLMS(
fit,
data,
sex = "M",
grid = "classic",
decimals = c(4, 4, 4),
flatAge = NULL
)
A gamlss object containing the final fit on transformed age,
t.age
.
A data frame containing the original data, with both age
and t.age
A character vector indicating whether the fit applied to males
sex="M"
or females sex="F"
. The default is sex="M"
.
A character vector indicating the desired age grid. See
ageGrid()
for possible options. The default is a
grid="classic"
, a grid of 59 age points.
A numerical vector of length 3 indicating the number of significant digits for rounding of the L, M and S curves, respectively.
A scalar indicating the age beyond which the L, M and S values should be constant. The default (NULL) is not to flatten the curves.
A data frame with rows corresponding to time points, and with the
following columns: sex
,x
,L
,M
,S
.
It is crucial that t.age
in data
correspond to exactly the same
age transformation as used to fit the gamlss
object. Age grid values
beyond the range of data$age
produce NA
in the L, M and S
values. Parameter flatAge
should be one of the values of the age grid.
if (FALSE) {
#
library(gamlss)
boys <- boys7482
# calculate initial M curve
data <- na.omit(boys[,1:2])
f0154 <- gamlss(hgt~cs(age,df=15,c.spar=c(-1.5,2.5)),
sigma.formula=~cs(age,df=4,c.spar=c(-1.5,2.5)),
data=data,family=NO,
control=gamlss.control(n.cyc=3))
# calculate transformed age
t.age <- fitted(lm(data$age~fitted(f0154)))
t.age <- t.age - min(t.age)
data.t <- data.frame(data,t.age=t.age)
# calculate final solution
f0106r <- gamlss(hgt~cs(t.age,df=10,c.spar=c(-1.5,2.5)),
sigma.formula=~cs(t.age,df=6,c.spar=c(-1.5,2.5)),
data=data.t,family=NO,
control=gamlss.control(n.cyc=3))
# extract the LMS reference table in the 'classic' age grid
nl4.hgt.boys <- extractLMS(fit = f0106r, data=data.t, grid="compact",
dec = c(0,2,5))
nl4.hgt.boys
# flatten the reference beyond age 20Y (not very useful in this data)
nl4.hgt.boys.flat <- extractLMS(fit = f0106r, data=data.t, flatAge=20)
nl4.hgt.boys.flat
# use log age transformation
data.t <- data.frame(data, t.age = log(data$age))
f0106rlog <- gamlss(hgt~cs(t.age,df=10,c.spar=c(-1.5,2.5)),
sigma.formula=~cs(t.age,df=6,c.spar=c(-1.5,2.5)),
data=data.t,family=NO,
control=gamlss.control(n.cyc=1))
nl4.hgt.boys.log <- extractLMS(fit = f0106rlog, data=data.t)
nl4.hgt.boys.log
}