chopit {anchors}R Documentation

Compound Hierarchical Ordered Probit (CHOPIT)

Description

Estimate Compound Hierarchical Ordered Probit (CHOPIT) model

Usage

  chopit(formula, data, subset,
         options=anchors.options(),
         na.action = na.omit)

Arguments

formula A list of named formulas giving a symbolic description of the model to be fit. See 'Details' below.
data An anchors.data class object. See 'Details' below.
subset Logical expression indicating elements or rows to keep: missing values are taken as false; equivalent to function subset.
options An anchors.options class object. See 'Details' below.
na.action Specify the "NA action" which should be applied to 'data'. Default is R standard option 'na.omit'; can also be set to 'na.fail'.

Details

The formula syntax is designed to allow the same list of formulas to be used for both anchors and chopit. If a user would like to use exactly the same cases with chopit as with anchors (i.e., drop cases with any missing responses or missing cpolr values), and vise versa (i.e., also drop any case with missing values in the tau=, tau1= formulae), then the user should use the same list of formula for all methods and use the option anchors.options(delete="maximal"). See example below.

Only options relevant to chopit are discussed here.

The named list() of formulas may include

self: self-response variable and linear predictors.

vign: vignette responses, bound together by cbind (as in glm binomial syntax), with ONLY '~ 1' as RHS of equation (formulas must have RHS). Must be present for all methods.

tau : linear predictors of cutpoints, NO LHS variable.

tau1 : Optional. linear predictors of only the mean shift of all cutpoints NO LHS variable. Default: if omitted, set equal to formula specified in 'tau='.

Example:

    fo <- list(self = xsayself ~ age,
              vign = cbind(xsay3,xsay1)    ~ 1,
              tau  = ~ age + china,
              tau1 = ~ age + china + male  )

One can also use a single formula as a short hand: specifying

fo <- self ~ vign1 + vign2

is equivalent to

    fo <- list(self = self ~ 1
               vign = cbind(vign1,vign2) ~ 1,
               tau  = ~ 1,
               tau1 = ~ 1,
               cpolr= ~ 1)

All of the response variables must be in the form of consequetive non-negative numeric integers, i.e., 1, 2, ... K.

** anchors currently does not support factor responses.**

The chopit model does *not* by default require that every respondent answer all vignette or the self questions to be included in the model; only answers that are non-missing are used in the likelihood function.

Value

data list of class anchors.data
parm list which contains MLEs
count list containing summary of data dimensions
options list of options, possibly modified from original call to anchors() or internal consistency with use of chopit
optim complete object returned by optim() or genoud() call
hess Hessian
LL.vign likelihood values for the vignette component of model
LL.self likelihood values fo rthe self component of model
gr gradients of fitted model
time timing information for estimation

options and anchors.options()

Invoking the chopit model without options,

chopit(formula, data)

is equivalent to,

chopit(formula, data,
                  options = anchors.options( normalize ="self",
                                             vign.var  = "hetero",
                                             linear    = TRUE,
                                             analytical= TRUE,
                                             optimizer= "optim"))

To change an option setting, pass one or more of the following tagged values to the options argument via the anchors.options() function. Alternative vluaes for options are passed using the tag=new.value syntax (same with the par() function.

To see all default values, type anchors.options() without arguments.

normalize
Normalization constraints imposed.

"self" = location is set by removing any intercept from x0 vector and constraining variance of first self question to be 1.

"hilo" = sets location and scale by setting first theta to 0 and last theta to 1.

vign.var
"homo" constrains all vignettes to have a single, common variance.

"hetero" allows variances to differ for each vignette

linear
TRUE: (default) use additive linear formulation of taus if true.

FALSE: uses additive exponentiated values to force each cutpoint to be positive.

NOTE: Analytical gradients only availabe with linear formulation.

analytical

TRUE; (default) use analytical gradients–much faster than numerical.

FALSE: use numerical gradients

Currently analytical gradients are only available for model with normalize='self' and linear=TRUE options.

optimizer

"optim": (default) estimate using optim

"genoud": estimate chopit using genoud optimizer

With optimizer = "optim", there are additional options for specifying how optim is invoked.

optim.method
This sets the 'method' of optim and can be one of

optim.method = c("BFGS", "Nelder-Mead", "CG", "L-BFGS-B", "SANN")

"BFGS" is the default.

The Details section of optim gives the precise definition of each method.

maxit
This option controls the maximum number of interations that optim will perform before stopping, even if a solution has not been found. Default: 500.

With optimizer = "genoud", there are additional options for specifying how genoud is invoked.

wait.generations
If there is no improvement in the objective function in this number of generations, 'genoud' will think that it has found the optimum. Default: 1
pop.size
Population Size. This is the number of individuals 'genoud' uses to solve the optimization problem. Default: 500
MemoryMatrix
This variable controls if 'genoud' sets up a memory matrix. Such a matrix ensures that 'genoud' will request the fitness evaluation of a given set of parameters only once. The variable may be 'TRUE' or 'FALSE'. If it is 'FALSE', 'genoud' will be aggressive in conserving memory. Default: TRUE.
max.generations
Maximum Generations. This is the maximum number of generations that 'genoud' will run when attempting to optimize a function. Default: 100.
domain
'Genoud' will create a Domains matrix by setting the lower bound for all of the parameters equal to -1 * 'default.domains' and the upper bound equal to 'default.domains'. Default: 5,

Note

Related materials and worked examples are available at http://wand.stanford.edu/anchors/

Author(s)

Jonathan Wand http://wand.stanford.edu

References

Wand, Jonathan; Gary King; and Olivia Lau. (2007) ``Anchors: Software for Anchoring Vignettes''. Journal of Statistical Software. Forthcoming. copy at http://wand.stanford.edu/research/anchors-jss.pdf

Wand, Jonathan and Gary King. (2007) Anchoring Vignetttes in R: A (different kind of) Vignette copy at http://wand.stanford.edu/anchors/doc/anchors.pdf

King, Gary; Christopher J.L. Murray; Joshua A. Salomon; and Ajay Tandon. "Enhancing the Validity and Cross-cultural Comparability of Survey Research," American Political Science Review, Vol. 98, No. 1 (February, 2004): 191-207, copy at http://gking.harvard.edu/files/abs/vign-abs.shtml

See Also

anchors, anchors.data, anchors.options, optim, genoud

Examples


##
data(mexchn)
fo <- list(self = xsayself ~ 1,
           vign = xsay3    ~ 1,
           tau  =           ~1 )
out1  <- chopit( fo, mexchn)
summary(out1)


[Package anchors version 3.0-4 Index]