aldvmm {aldvmm}  R Documentation 
The function aldvmm
fits adjusted limited dependent variable mixture models
of health state utilities. Adjusted limited dependent variable mixture
models are finite mixtures of normal distributions with an accumulation of
density mass at the limits, and a gap between 100% quality of life and
the next smaller utility value. The package aldvmm
uses the
likelihood and expected value functions proposed by Hernandez Alava and
Wailoo (2015) using normal component distributions and a multinomial logit
model of probabilities of component membership.
aldvmm( formula, data, psi, ncmp = 2, dist = "normal", optim.method = NULL, optim.control = list(trace = FALSE), optim.grad = TRUE, init.method = "zero", init.est = NULL, init.lo = NULL, init.hi = NULL, se.fit = FALSE, level = 0.95 )
formula 
an object of class 
data 
a data frame, list or environment (or object coercible to a data
frame by 
psi 
a numeric vector of minimum and maximum possible utility values
smaller than or equal to 1 (e.g. 
ncmp 
a numeric value of the number of components that are mixed. The
default value is 2. A value of 1 represents a tobit model with a gap
between 1 and the maximum value in 
dist 
an optional character value of the distribution used in the
finite mixture. In this release, only the normal distribution is
available, and the default value is set to 
optim.method 
an optional character value of one of the following

optim.control 
an optional list of

optim.grad 
an optional logical value indicating if a numerical
gradient should be used in

init.method 
an optional character value indicating the method for
obtaining initial values. The following values are available:

init.est 
an optional numeric vector of userdefined initial values.
Userdefined initial values override the 
init.lo 
an optional numeric vector of userdefined lower limits for
constrained optimization. When 
init.hi 
an optional numeric vector of userdefined upper limits for
constrained optimization. When 
se.fit 
an optional logical value indicating whether standard errors
of fitted values are calculated. The default value is 
level 
a numeric value of the significance level for confidence bands of fitted values. The default value is 0.95. 
aldvmm
fits
an adjusted limited dependent variable mixture model using the likelihood
and expected value functions from Hernandez Alava and Wailoo (2015). The
model accounts for latent classes, multimodality, minimum and maximum
utility values and potential gaps between 1 and the next smaller utility
value. Adjusted limited dependent variable mixture models combine
multiple component distributions with a multinomial logit model of the
probabilities of component membership. The standard deviations of normal
distributions are estimated and reported as logtransformed values which
enter the likelihood function as exponentiated values to ensure
nonnegative values.
The minimum utility and the largest utility smaller than or equal to 1 are
supplied in the argument 'psi'
. The number of
distributions/components that are mixed is set by the argument
'ncmp'
. When 'ncmp'
is set to 1 the procedure estimates a
tobit model with a gap between 1 and the maximum utility value in
'psi'
. The current version only allows finite mixtures of normal
distributions.
The 'formula'
object can include a 
delimiter to separate
formulae for expected values in components (left) and the multinomial
logit model of probabilities of group membership (right). If no 
delimiter is used, the same formula will be used for expected values in
components and the multinomial logit of the probabilities of component
membership.
aldvmm
uses
optimr
for
maximum likelihood estimation of model parameters. The argument
'optim.method'
accepts the following methods: "NelderMead"
,
"BFGS"
, "CG"
, "LBFGSB"
, "nlminb"
,
"Rcgmin"
, "Rvmmin"
and "hjn"
. The default method is
"NelderMead"
. The method "nlm"
cannot be used in
aldvmm
because it
requires a different implementation of the likelihood function. The
argument 'optim.control'
accepts a list of
optimr
control parameters. If 'optim.grad'
is set to TRUE
the
function
optimr
uses
numerical gradients during the optimization procedure for all methods that
allow for this approach. If 'optim.grad'
is set to FALSE
or
a method cannot use gradients, a finite difference approximation is used.
The numerical gradients of the likelihood function are approximated
numerically using the function
grad
. The
hessian matrix at maximum likelihood parameters is approximated
numerically using hessian
.
'init.method'
accepts four values of methods for generating initial
values: "zero"
, "random"
, "constant"
, "sann"
.
The method "zero"
sets initial values of all parameters to 0. The
method "random"
draws random starting values from a standard normal
distribution. The method "constant"
estimates a constantonly
model and uses estimates as initial values of intercepts and standard
errors and 0 for all other prameters. The method "sann"
estimates
the full model using the simulated annealing optimization method in
optim
and uses
parameter estimates as initial values. When userspecified initial values
are supplied in 'init.est'
, the argument 'init.method'
is
ignored.
By default, aldvmm
performs unconstrained optimization with upper and lower limits at
Inf
and Inf
. When userdefined lower and upper limits are
supplied to 'init.lo'
and/or 'inithi'
, these default limits
are replaced with the userspecified values, and the method
"LBFGSB"
is used for boxconstrained optimization instead of the
user defined 'optim.method'
. It is possible to only set either
maximum or minimum limits.
If 'se.fit'
is set to TRUE
, standard errors of fitted values
are calculated using the delta method. The standard errors of fitted
values in the estimation data set are calculated as se_fit = (t(grad)*Σ*grad)^0.5, where G
is the gradient of a fitted value with respect to changes of parameter
estimates, and Σ is the estimated covariance matrix of
parameters (Dowd et al., 2014). The standard errors of predicted values
in new data sets are calculated as se_pred = (mse + t(grad)*Σ*grad)^0.5, where
mse is the mean squared error of fitted versus observed
outcomes in the original estimation data (Whitmore, 1986).
aldvmm
returns an object of class inheriting from "aldvmm". An object of class
"aldvmm" is a list containing the following objects.

a numeric vector of parameter estimates. 

a numeric vector of standard errors of parameter estimates. 

a numeric vector of standardized parameter estimates. 

a numeric vector of pvalues of parameter estimates. 

a numeric vector of 95% lower confidence limits of parameter estimates. 

a numeric vector of 95% upper confidence limits of parameter estimates. 

a numeric matrix object with second partial derivatives of the likelihood function. 

a numeric matrix object with covariances of parameters. 

a scalar representing the number of complete observations with no missing values that were used in the estimation. 

a scalar representing the number of components that were mixed. 

a list including the following elements.


a list including the following elements.


a list including the following elements.


an object of class


a numeric vector with the minimum and maximum utility
below 1 in 

a character value indicating the used distribution. 

a list including the following elements.


a character value of the used

The generic function
summary
can be
used to obtain or print a summary of the results. The generic function
predict
can
be used to obtain predicted values and standard errors of predictions in
new data.
Alava, M. H. and Wailoo, A. (2015) Fitting adjusted limited dependent variable mixture models to EQ5D. The Stata Journal, 15(3), 737–750. doi: 10.1177/1536867X1501500307
Dowd, B. E., Greene, W. H., and Norton, E. C. (2014) Computation of standard errors. Health services research, 49(2), 731–750. doi: 10.1111/14756773.12122
Whitmore, G. A. (1986) Prediction limits for a univariate normal observation. The American Statistician, 40(2), 141–143. doi: 10.1080/00031305.1986.10475378
data(utility) fit < aldvmm(eq5d ~ age + female  1, data = utility, psi = c(0.883, 0.594), ncmp = 2) summary(fit) yhat < predict(fit, newdata = utility)