gnlmm {repeated} | R Documentation |
Generalized Nonlinear Mixed Models
Description
gnlmm
fits user-specified nonlinear regression equations to one or
both parameters of the common one and two parameter distributions. The
intercept of the location regression has a normally-distributed random
effect. This normal mixing distribution is computed by Gauss-Hermite
integration.
Usage
gnlmm(
y = NULL,
distribution = "normal",
mu = NULL,
shape = NULL,
linear = NULL,
nest = NULL,
pmu = NULL,
pshape = NULL,
psd = NULL,
exact = FALSE,
wt = 1,
delta = 1,
shfn = FALSE,
scale = NULL,
points = 10,
common = FALSE,
envir = parent.frame(),
print.level = 0,
typsize = abs(p),
ndigit = 10,
gradtol = 1e-05,
stepmax = sqrt(p %*% p)/10,
steptol = 1e-05,
iterlim = 100,
fscale = 1
)
Arguments
y |
A response vector for uncensored data, a two column matrix for
binomial data or censored data, with the second column being the censoring
indicator (1: uncensored, 0: right censored, -1: left censored), or an
object of class, |
distribution |
Either a character string containing the name of the distribution or a function giving the -log likelihood and calling the location and shape functions. Distributions are binomial, beta binomial, double binomial, mult(iplicative) binomial, Poisson, negative binomial, double Poisson, mult(iplicative) Poisson, gamma count, Consul generalized Poisson, logarithmic series, geometric, normal, inverse Gauss, logistic, exponential, gamma, Weibull, extreme value, Cauchy, Pareto, Laplace, and Levy, beta, simplex, and two-sided power. All but the binomial-based distributions and the beta, simplex, and two-sided power may be right and/or left censored. (For definitions of distributions, see the corresponding [dpqr]distribution help.) |
mu |
A user-specified function of |
shape |
A user-specified function of |
linear |
A formula beginning with ~ in W&R notation, specifying the linear part of the regression function for the location parameter or list of two such expressions for the location and/or shape parameters. |
nest |
The variable classifying observations by the unit upon which
they were observed. Ignored if |
pmu |
Vector of initial estimates for the location parameters. If
|
pshape |
Vector of initial estimates for the shape parameters. If
|
psd |
Initial estimate of the standard deviation of the normal mixing distribution. |
exact |
If TRUE, fits the exact likelihood function for continuous data by integration over intervals of observation, i.e. interval censoring. |
wt |
Weight vector. |
delta |
Scalar or vector giving the unit of measurement (always one
for discrete data) for each response value, set to unity by default.
Ignored if y has class, response. For example, if a response is measured to
two decimals, |
shfn |
If true, the supplied shape function depends on the location (function). The name of this location function must be the last argument of the shape function. |
scale |
The scale on which the random effect is applied:
|
points |
The number of points for Gauss-Hermite integration of the random effect. |
common |
If TRUE, |
envir |
Environment in which model formulae are to be interpreted or a
data object of class, |
print.level |
Arguments for nlm. |
typsize |
Arguments for nlm. |
ndigit |
Arguments for nlm. |
gradtol |
Arguments for nlm. |
stepmax |
Arguments for nlm. |
steptol |
Arguments for nlm. |
iterlim |
Arguments for nlm. |
fscale |
Arguments for nlm. |
Details
The scale
of the random effect is the link function to be applied.
For example, if it is log
, the supplied mean function, mu
, is
transformed as exp(log(mu)+sd), where sd is the random effect parameter.
It is recommended that initial estimates for pmu
and pshape
be obtained from gnlr
.
Nonlinear regression models can be supplied as formulae where parameters
are unknowns in which case factor variables cannot be used and parameters
must be scalars. (See finterp
.)
The printed output includes the -log likelihood (not the deviance), the corresponding AIC, the maximum likelihood estimates, standard errors, and correlations.
Value
A list of class gnlm
is returned that contains all of the
relevant information calculated, including error codes.
Author(s)
J.K. Lindsey
Examples
# data objects
sex <- c(0,1,1)
sx <- tcctomat(sex)
dose <- matrix(rpois(30,10),nrow=3)
dd <- tvctomat(dose)
# vectors for functions
dose <- as.vector(t(dose))
sex <- c(rep(0,10),rep(1,20))
nest <- rbind(rep(1,10),rep(2,10),rep(3,10))
#y <- rgamma(30,2,scale=exp(0.2+0.1*dose+0.1*sex+rep(rnorm(3),rep(10,3)))/2)
y <- c(0.6490851,0.9313931,0.4765569,0.4188045,2.8339637,2.8158090,
2.6059975,2.9958184,2.7351583,3.2884980,1.1180961,0.9443986,1.7915571,
9.0013379,2.3969570,3.4227356,0.5045518,0.7452521,1.8712467,3.6814198,
0.1489849,1.0327552,0.6102406,1.1536620,2.9145237,9.2847798,5.6454605,
1.9759672,1.5798008,5.1024496)
y <- restovec(matrix(y, nrow=3), nest=nest, name="y")
reps <- rmna(y, ccov=sx, tvcov=dd)
#
# log linear regression with gamma distribution
mu <- function(p) exp(p[1]+p[2]*sex+p[3]*dose)
## print(z <- gnlm::gnlr(y, dist="gamma", mu=mu, pmu=c(1,0,0), pshape=1))
## starting values for pmu and pshape from z$coef[1:3] and z$coef[4] respectively
gnlmm(y, dist="gamma", mu=mu, nest=nest,
pmu=10*c(0.59072535, 0.32618702, 0.01024245),pshape=1, psd=0.1, points=3)
# or equivalently
gnlmm(y, dist="gamma", mu=~exp(b0+b1*sex+b2*dose), nest=nest,
pmu=10*c(0.59072535, 0.32618702, 0.01024245),pshape=1, psd=0.1, points=3, envir=reps)
## Not run:
# or with identity link
print(z <- gnlm::gnlr(y, dist="gamma", mu=~sex+dose, pmu=c(0.1,0,0), pshape=1))
gnlmm(y, dist="gamma", mu=~sex+dose, nest=nest, pmu=z$coef[1:3],
pshape=z$coef[4], psd=0.1, points=3)
# or
gnlmm(y, dist="gamma", mu=~b0+b1*sex+b2*dose, nest=nest, pmu=z$coef[1:3],
pshape=z$coef[4], psd=0.1, points=3, envir=reps)
#
# nonlinear regression with gamma distribution
mu <- function(p) p[1]+exp(p[2]+p[3]*sex+p[4]*dose)
print(z <- gnlm::gnlr(y, dist="gamma", mu=mu, pmu=c(1,1,0,0), pshape=1))
gnlmm(y, dist="gamma", mu=mu, nest=nest, pmu=z$coef[1:4],
pshape=z$coef[5], psd=0.1, points=3)
# or
mu2 <- function(p, linear) p[1]+exp(linear)
gnlmm(y, dist="gamma", mu=mu2, linear=~sex+dose, nest=nest,
pmu=z$coef[1:4], pshape=1, psd=0.1, points=3)
# or
gnlmm(y, dist="gamma", mu=~a+exp(linear), linear=~sex+dose, nest=nest,
pmu=z$coef[1:4], pshape=1, psd=0.1, points=3)
# or
gnlmm(y, dist="gamma", mu=~b4+exp(b0+b1*sex+b2*dose), nest=nest,
pmu=z$coef[1:4], pshape=z$coef[5], psd=0.1,
points=3, envir=reps)
#
# include regression for the shape parameter with same mu function
shape <- function(p) p[1]+p[2]*sex
print(z <- gnlm::gnlr(y, dist="gamma", mu=mu, shape=shape, pmu=z$coef[1:4],
pshape=rep(1,2)))
gnlmm(y, dist="gamma", mu=mu, shape=shape, nest=nest,
pmu=z$coef[1:4], pshape=z$coef[5:6], psd=0.1, points=3)
# or
gnlmm(y, dist="gamma", mu=mu, shape=shape, nest=nest, pmu=z$coef[1:4],
pshape=z$coef[5:6], psd=0.1, points=3, envir=reps)
# or
gnlmm(y, dist="gamma", mu=~b4+exp(b0+b1*sex+b2*dose), shape=~a1+a2*sex,
nest=nest, pmu=z$coef[1:4], pshape=z$coef[5:6], psd=0.1,
points=3, envir=reps)
## End(Not run)