## Not run: require("VGAMdata")
# mysubset <- subset(xs.nz, sex == "M" & ethnicity == "Maori" & study1)
# mysubset <- transform(mysubset, BMI = weight / height^2)
# BMIdata <- na.omit(mysubset)
# BMIdata <- subset(BMIdata, BMI < 80 & age < 65,
# select = c(age, BMI)) # Delete an outlier
# summary(BMIdata)
#
# fit <- vgam(BMI ~ s(age, df = c(4, 2)), lms.bcn(zero = 1), data = BMIdata)
#
# par(mfrow = c(1, 2))
# plot(fit, scol = "blue", se = TRUE) # The two centered smooths
#
# head(predict(fit))
# head(fitted(fit))
# head(BMIdata)
# head(cdf(fit)) # Person 46 is probably overweight, given his age
# 100 * colMeans(depvar(fit, drop = TRUE) < fitted(fit)) # Empirical proportions
#
# # Convergence problems? Try this trick: fit0 is a simpler model used for fit1
# fit0 <- vgam(BMI ~ s(age, df = 4), lms.bcn(zero = c(1, 3)), data = BMIdata)
# fit1 <- vgam(BMI ~ s(age, df = c(4, 2)), lms.bcn(zero = 1), data = BMIdata,
# etastart = predict(fit0))
# ## End(Not run)
## Not run:
# # Quantile plot
# par(bty = "l", mar = c(5, 4, 4, 3) + 0.1, xpd = TRUE)
# qtplot(fit, percentiles = c(5, 50, 90, 99), main = "Quantiles",
# xlim = c(15, 66), las = 1, ylab = "BMI", lwd = 2, lcol = 4)
#
# # Density plot
# ygrid <- seq(15, 43, len = 100) # BMI ranges
# par(mfrow = c(1, 1), lwd = 2)
# (aa <- deplot(fit, x0 = 20, y = ygrid, xlab = "BMI", col = "black",
# main = "Density functions at Age = 20 (black), 42 (red) and 55 (blue)"))
# aa <- deplot(fit, x0 = 42, y = ygrid, add = TRUE, llty = 2, col = "red")
# aa <- deplot(fit, x0 = 55, y = ygrid, add = TRUE, llty = 4, col = "blue",
# Attach = TRUE)
# aa@post$deplot # Contains density function values
# ## End(Not run)
Run the code above in your browser using DataLab