chopit {anchors}R Documentation

Compound Hierarchical Ordered Probit (CHOPIT)


Estimate Compound Hierarchical Ordered Probit (CHOPIT) model


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



A list of named formulas giving a symbolic description of the model to be fit. See 'Details' below.


An class object. See 'Details' below.


Logical expression indicating elements or rows to keep: missing values are taken as false; equivalent to function subset.


An anchors.options class object. See 'Details' below.


Specify the "NA action" which should be applied to 'data'. Default is R standard option 'na.omit'; can also be set to ''.


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='.


    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.



list of class


list which contains MLEs


list containing summary of data dimensions


list of options, possibly modified from original call to anchors() or internal consistency with use of chopit


complete object returned by optim() or genoud() call




likelihood values for the vignette component of model


likelihood values fo rthe self component of model


gradients of fitted model


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.


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.


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

"hetero" allows variances to differ for each vignette


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.


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.


"optim": (default) estimate using optim

"genoud": estimate chopit using genoud optimizer

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


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.


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.


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


Population Size. This is the number of individuals 'genoud' uses to solve the optimization problem. Default: 500


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.


Maximum Generations. This is the maximum number of generations that 'genoud' will run when attempting to optimize a function. Default: 100.


'Genoud' will create a Domains matrix by setting the lower bound for all of the parameters equal to -1 * '' and the upper bound equal to ''. Default: 5,


Related materials and worked examples are available at


Jonathan Wand


Wand, Jonathan; Gary King; and Olivia Lau. (2007) “Anchors: Software for Anchoring Vignettes”. Journal of Statistical Software. Forthcoming. copy at

Wand, Jonathan and Gary King. (2007) Anchoring Vignetttes in R: A (different kind of) Vignette copy at

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

See Also

anchors,, anchors.options, optim, genoud


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

[Package anchors version 3.0-8 Index]