lms.bcg {VGAM} | R Documentation

## LMS Quantile Regression with a Box-Cox transformation to a Gamma Distribution

### Description

LMS quantile regression with the Box-Cox transformation to the gamma distribution.

### Usage

    lms.bcg(percentiles = c(25, 50, 75), zero = c(1,3),
            llambda="identity", lmu="identity", lsigma = "loge",
            elambda=list(), emu=list(), esigma=list(),
            dfmu.init=4, dfsigma.init=2,
            ilambda = 1, isigma = NULL)

### Arguments

In the following, n is the number of (independent) observations.

`percentiles` | A numerical vector containing values between 0 and 100, which are the quantiles. They will be returned as `fitted values'.
`zero` | An integer-valued vector specifying which linear/additive predictors are modelled as intercepts only. The values must be from the set {1,2,3}. The default value, `NULL`, means they all are functions of the covariates.
`llambda` | Parameter link function applied to the first linear/additive predictor.
`lmu` | Parameter link function applied to the second linear/additive predictor.
`lsigma` | Parameter link function applied to the third linear/additive predictor. See `Links` for more choices.
`elambda, emu, esigma` | List. Extra argument for each of the links. See `earg` in `Links` for general information.
`dfmu.init` | Degrees of freedom for the cubic smoothing spline fit applied to get an initial estimate of mu. See `vsmooth.spline`.
`dfsigma.init` | Degrees of freedom for the cubic smoothing spline fit applied to get an initial estimate of sigma. See `vsmooth.spline`. This argument may be assigned `NULL` to get an initial value using some other algorithm.
`ilambda` | Initial value for lambda. If necessary, it is recycled to be a vector of length n.
`isigma` | Optional initial value for sigma. If necessary, it is recycled to be a vector of length n. The default value, `NULL`, means an initial value is computed in the `@initialize` slot of the family function.

### Details

Given a value of the covariate, this function applies a Box-Cox transformation to the response to best obtain a gamma distribution. The parameters chosen to do this are estimated by maximum likelihood or penalized maximum likelihood.

### Value

An object of class `"vglmff"` (see `vglmff-class`). The object is used by modelling functions such as `vglm`, `rrvglm` and `vgam`.

### Warning

The computations are not simple, therefore convergence may fail. In that case, try different starting values. Also, the estimate may diverge quickly near the solution, in which case try prematurely stopping the iterations by assigning `maxits` to be the iteration number corresponding to the highest likelihood value. See the example below.

The expected value of the second derivative with respect to lambda may be incorrect (my calculations do not agree with the Lopatatzidis and Green manuscript.)

### Note

The response must be positive because the Box-Cox transformation cannot handle negative values. The LMS-Yeo-Johnson-normal method can handle both positive and negative values.

In general, the lambda and sigma functions should be more smoother than the mean function. Having `zero=1`, `zero=3` or `zero=c(1,3)` is often a good idea. See the example below.

While it is usual to regress the response against a single covariate, it is possible to add other explanatory variables, e.g., sex. See http://www.stat.auckland.ac.nz/~yee for further information and examples about this feature.

### Author(s)

Thomas W. Yee

### References

Lopatatzidis A. and Green, P. J. (unpublished manuscript) Semiparametric quantile regression using the gamma distribution.

Yee, T. W. (2004) Quantile regression via vector generalized additive models. Statistics in Medicine, 23, 2295–2315.

Documentation accompanying the VGAM package at http://www.stat.auckland.ac.nz/~yee contains further information and examples.

### See Also

`lms.bcn`, `lms.yjn`, `qtplot.lmscreg`, `deplot.lmscreg`, `cdf.lmscreg`, `bminz`, `amlnormal`.

### Examples

    # This converges, but deplot(fit) and qtplot(fit) does not work
    fit = vglm(BMI ~ bs(age, df=4), fam=lms.bcg(zero=c(1,3)), data=bminz, tr=TRUE)
    coef(fit, matrix=TRUE)
    ## Not run:
    par(mfrow=c(1,1))
    plotvgam(fit, se=TRUE) # Plot mu function (only)
    ## End(Not run)

    # Difficult to get a model that converges
    # Here, we prematurely stop iterations because it fails near the solution
    fit = vgam(BMI ~ s(age, df=c(4,2)), maxit=4,
               fam=lms.bcg(zero=1, ilam=3), data=bminz, tr=TRUE)
    summary(fit)
    head(predict(fit))
    head(fitted(fit))
    head(bminz)
    # Person 1 is near the lower quartile of BMI amongst people his age
    head(cdf(fit))

    ## 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,90), 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)
    a = deplot(fit, x0=20, y=ygrid, xlab="BMI", col="black",
        main="Density functions at Age = 20 (black), 42 (red) and 55 (blue)")
    a
    a = deplot(fit, x0=42, y=ygrid, add=TRUE, llty=2, col="red")
    a = deplot(fit, x0=55, y=ygrid, add=TRUE, llty=4, col="blue", Attach=TRUE)
    a@post$deplot  # Contains density function values
    ## End(Not run)

[Package VGAM version 0.7-9 Index]