Skip to contents

This function performs Markov chain Monte Carlo simulation for fitting different types of probit models (binary, multivariate, mixed, latent class, ordered, ranked) to discrete choice data.

Usage

fit_model(
  data,
  scale = "Sigma_1,1 := 1",
  R = 1000,
  B = R/2,
  Q = 1,
  print_progress = getOption("RprobitB_progress"),
  prior = NULL,
  latent_classes = NULL,
  seed = NULL,
  fixed_parameter = list()
)

Arguments

data

An object of class RprobitB_data.

scale

A character which determines the utility scale. It is of the form <parameter> := <value>, where <parameter> is either the name of a fixed effect or Sigma_<j>,<j> for the <j>th diagonal element of Sigma, and <value> is the value of the fixed parameter.

R

The number of iterations of the Gibbs sampler.

B

The length of the burn-in period, i.e. a non-negative number of samples to be discarded.

Q

The thinning factor for the Gibbs samples, i.e. only every Qth sample is kept.

print_progress

A boolean, determining whether to print the Gibbs sampler progress and the estimated remaining computation time.

prior

A named list of parameters for the prior distributions. See the documentation of check_prior for details about which parameters can be specified.

latent_classes

Either NULL (for no latent classes) or a list of parameters specifying the number of latent classes and their updating scheme:

  • C: The fixed number (greater or equal 1) of latent classes, which is set to 1 per default. If either weight_update = TRUE or dp_update = TRUE (i.e. if classes are updated), C equals the initial number of latent classes.

  • weight_update: A boolean, set to TRUE to weight-based update the latent classes. See ... for details.

  • dp_update: A boolean, set to TRUE to update the latent classes based on a Dirichlet process. See ... for details.

  • Cmax: The maximum number of latent classes.

  • buffer: The number of iterations to wait before a next weight-based update of the latent classes.

  • epsmin: The threshold weight (between 0 and 1) for removing a latent class in the weight-based updating scheme.

  • epsmax: The threshold weight (between 0 and 1) for splitting a latent class in the weight-based updating scheme.

  • distmin: The (non-negative) threshold in class mean difference for joining two latent classes in the weight-based updating scheme.

seed

Set a seed for the Gibbs sampling.

fixed_parameter

Optionally specify a named list with fixed parameter values for alpha, C, s, b, Omega, Sigma, Sigma_full, beta, z, or d for the simulation. See the vignette on model definition for definitions of these variables.

Value

An object of class RprobitB_fit.

Details

See the vignette on model fitting for more details.

See also

Examples

data <- simulate_choices(
  form = choice ~ var | 0, N = 100, T = 10, J = 3, seed = 1
)
model <- fit_model(data = data, R = 1000, seed = 1)
#> Computing sufficient statistics - 0 of 4  

#> Computing sufficient statistics - 1 of 4  

#> Computing sufficient statistics - 2 of 4  

#> Computing sufficient statistics - 3 of 4  

#> Computing sufficient statistics - 4 of 4  

#> MCMC iteration - 1 of 1000  

#> MCMC iteration - 10 of 1000  

#> MCMC iteration - 20 of 1000  

#> MCMC iteration - 30 of 1000  

#> MCMC iteration - 40 of 1000  

#> MCMC iteration - 50 of 1000  

#> MCMC iteration - 60 of 1000  

#> MCMC iteration - 70 of 1000  

#> MCMC iteration - 80 of 1000  

#> MCMC iteration - 90 of 1000  

#> MCMC iteration - 100 of 1000  

#> MCMC iteration - 110 of 1000  

#> MCMC iteration - 120 of 1000  

#> MCMC iteration - 130 of 1000  

#> MCMC iteration - 140 of 1000  

#> MCMC iteration - 150 of 1000  

#> MCMC iteration - 160 of 1000  

#> MCMC iteration - 170 of 1000  

#> MCMC iteration - 180 of 1000  

#> MCMC iteration - 190 of 1000  

#> MCMC iteration - 200 of 1000  

#> MCMC iteration - 210 of 1000  

#> MCMC iteration - 220 of 1000  

#> MCMC iteration - 230 of 1000  

#> MCMC iteration - 240 of 1000  

#> MCMC iteration - 250 of 1000  

#> MCMC iteration - 260 of 1000  

#> MCMC iteration - 270 of 1000  

#> MCMC iteration - 280 of 1000  

#> MCMC iteration - 290 of 1000  

#> MCMC iteration - 300 of 1000  

#> MCMC iteration - 310 of 1000  

#> MCMC iteration - 320 of 1000  

#> MCMC iteration - 330 of 1000  

#> MCMC iteration - 340 of 1000  

#> MCMC iteration - 350 of 1000  

#> MCMC iteration - 360 of 1000  

#> MCMC iteration - 370 of 1000  

#> MCMC iteration - 380 of 1000  

#> MCMC iteration - 390 of 1000  

#> MCMC iteration - 400 of 1000  

#> MCMC iteration - 410 of 1000  

#> MCMC iteration - 420 of 1000  

#> MCMC iteration - 430 of 1000  

#> MCMC iteration - 440 of 1000  

#> MCMC iteration - 450 of 1000  

#> MCMC iteration - 460 of 1000  

#> MCMC iteration - 470 of 1000  

#> MCMC iteration - 480 of 1000  

#> MCMC iteration - 490 of 1000  

#> MCMC iteration - 500 of 1000  

#> MCMC iteration - 510 of 1000  

#> MCMC iteration - 520 of 1000  

#> MCMC iteration - 530 of 1000  

#> MCMC iteration - 540 of 1000  

#> MCMC iteration - 550 of 1000  

#> MCMC iteration - 560 of 1000  

#> MCMC iteration - 570 of 1000  

#> MCMC iteration - 580 of 1000  

#> MCMC iteration - 590 of 1000  

#> MCMC iteration - 600 of 1000  

#> MCMC iteration - 610 of 1000  

#> MCMC iteration - 620 of 1000  

#> MCMC iteration - 630 of 1000  

#> MCMC iteration - 640 of 1000  

#> MCMC iteration - 650 of 1000  

#> MCMC iteration - 660 of 1000  

#> MCMC iteration - 670 of 1000  

#> MCMC iteration - 680 of 1000  

#> MCMC iteration - 690 of 1000  

#> MCMC iteration - 700 of 1000  

#> MCMC iteration - 710 of 1000  

#> MCMC iteration - 720 of 1000  

#> MCMC iteration - 730 of 1000  

#> MCMC iteration - 740 of 1000  

#> MCMC iteration - 750 of 1000  

#> MCMC iteration - 760 of 1000  

#> MCMC iteration - 770 of 1000  

#> MCMC iteration - 780 of 1000  

#> MCMC iteration - 790 of 1000  

#> MCMC iteration - 800 of 1000  

#> MCMC iteration - 810 of 1000  

#> MCMC iteration - 820 of 1000  

#> MCMC iteration - 830 of 1000  

#> MCMC iteration - 840 of 1000  

#> MCMC iteration - 850 of 1000  

#> MCMC iteration - 860 of 1000  

#> MCMC iteration - 870 of 1000  

#> MCMC iteration - 880 of 1000  

#> MCMC iteration - 890 of 1000  

#> MCMC iteration - 900 of 1000  

#> MCMC iteration - 910 of 1000  

#> MCMC iteration - 920 of 1000  

#> MCMC iteration - 930 of 1000  

#> MCMC iteration - 940 of 1000  

#> MCMC iteration - 950 of 1000  

#> MCMC iteration - 960 of 1000  

#> MCMC iteration - 970 of 1000  

#> MCMC iteration - 980 of 1000  

#> MCMC iteration - 990 of 1000  

#> MCMC iteration - 1000 of 1000  

#> Computing log-likelihood
summary(model)
#> Probit model
#> Formula: choice ~ var | 0 
#> R: 1000, B: 500, Q: 1
#> Level: Utility differences with respect to alternative 'C'.
#> Scale: Coefficient of the 1. error term variance fixed to 1.
#> 
#> Gibbs sample statistics
#>           true    mean      sd      R^
#>  alpha
#>                                       
#>      1   -0.94   -0.85    0.06    1.16
#> 
#>  Sigma
#>                                       
#>    1,1    1.00    1.00    0.00    1.00
#>    1,2   -0.42   -0.30    0.06    2.15
#>    2,2    0.27    0.19    0.04    1.62