Skip to contents

This function predicts the discrete choice behaviour.

Usage

# S3 method for class 'RprobitB_fit'
predict(object, data = NULL, overview = TRUE, digits = 2, ...)

Arguments

object

An object of class RprobitB_fit.

data

Either

  • NULL, using the data in object,

  • an object of class RprobitB_data, for example the test part generated by train_test,

  • or a data frame of custom choice characteristics. It must have the same structure as choice_data used in prepare_data. Missing columns or NA values are set to 0.

overview

[logical(1)]
Summarize the prediction in a confusion matrix?

digits

[integer(1)]
The number of digits of the returned choice probabilities.

...

Currently not used.

Value

Either a table if overview = TRUE or a data frame otherwise.

Details

Predictions are made based on the maximum predicted probability for each choice alternative.

See the vignette on choice prediction for a demonstration on how to visualize the model's sensitivity and specificity by means of a receiver operating characteristic (ROC) curve.

Examples

set.seed(1)
data <- simulate_choices(form = choice ~ cov, N = 10, T = 10, J = 2)
data <- train_test(data, test_proportion = 0.5)
model <- fit_model(data$train)
#> 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  

#> Gibbs sampler - 1 of 1000 iterations 

#> Gibbs sampler - 10 of 1000 iterations 

#> Gibbs sampler - 20 of 1000 iterations 

#> Gibbs sampler - 30 of 1000 iterations 

#> Gibbs sampler - 40 of 1000 iterations 

#> Gibbs sampler - 50 of 1000 iterations 

#> Gibbs sampler - 60 of 1000 iterations 

#> Gibbs sampler - 70 of 1000 iterations 

#> Gibbs sampler - 80 of 1000 iterations 

#> Gibbs sampler - 90 of 1000 iterations 

#> Gibbs sampler - 100 of 1000 iterations 

#> Gibbs sampler - 110 of 1000 iterations 

#> Gibbs sampler - 120 of 1000 iterations 

#> Gibbs sampler - 130 of 1000 iterations 

#> Gibbs sampler - 140 of 1000 iterations 

#> Gibbs sampler - 150 of 1000 iterations 

#> Gibbs sampler - 160 of 1000 iterations 

#> Gibbs sampler - 170 of 1000 iterations 

#> Gibbs sampler - 180 of 1000 iterations 

#> Gibbs sampler - 190 of 1000 iterations 

#> Gibbs sampler - 200 of 1000 iterations 

#> Gibbs sampler - 210 of 1000 iterations 

#> Gibbs sampler - 220 of 1000 iterations 

#> Gibbs sampler - 230 of 1000 iterations 

#> Gibbs sampler - 240 of 1000 iterations 

#> Gibbs sampler - 250 of 1000 iterations 

#> Gibbs sampler - 260 of 1000 iterations 

#> Gibbs sampler - 270 of 1000 iterations 

#> Gibbs sampler - 280 of 1000 iterations 

#> Gibbs sampler - 290 of 1000 iterations 

#> Gibbs sampler - 300 of 1000 iterations 

#> Gibbs sampler - 310 of 1000 iterations 

#> Gibbs sampler - 320 of 1000 iterations 

#> Gibbs sampler - 330 of 1000 iterations 

#> Gibbs sampler - 340 of 1000 iterations 

#> Gibbs sampler - 350 of 1000 iterations 

#> Gibbs sampler - 360 of 1000 iterations 

#> Gibbs sampler - 370 of 1000 iterations 

#> Gibbs sampler - 380 of 1000 iterations 

#> Gibbs sampler - 390 of 1000 iterations 

#> Gibbs sampler - 400 of 1000 iterations 

#> Gibbs sampler - 410 of 1000 iterations 

#> Gibbs sampler - 420 of 1000 iterations 

#> Gibbs sampler - 430 of 1000 iterations 

#> Gibbs sampler - 440 of 1000 iterations 

#> Gibbs sampler - 450 of 1000 iterations 

#> Gibbs sampler - 460 of 1000 iterations 

#> Gibbs sampler - 470 of 1000 iterations 

#> Gibbs sampler - 480 of 1000 iterations 

#> Gibbs sampler - 490 of 1000 iterations 

#> Gibbs sampler - 500 of 1000 iterations 

#> Gibbs sampler - 510 of 1000 iterations 

#> Gibbs sampler - 520 of 1000 iterations 

#> Gibbs sampler - 530 of 1000 iterations 

#> Gibbs sampler - 540 of 1000 iterations 

#> Gibbs sampler - 550 of 1000 iterations 

#> Gibbs sampler - 560 of 1000 iterations 

#> Gibbs sampler - 570 of 1000 iterations 

#> Gibbs sampler - 580 of 1000 iterations 

#> Gibbs sampler - 590 of 1000 iterations 

#> Gibbs sampler - 600 of 1000 iterations 

#> Gibbs sampler - 610 of 1000 iterations 

#> Gibbs sampler - 620 of 1000 iterations 

#> Gibbs sampler - 630 of 1000 iterations 

#> Gibbs sampler - 640 of 1000 iterations 

#> Gibbs sampler - 650 of 1000 iterations 

#> Gibbs sampler - 660 of 1000 iterations 

#> Gibbs sampler - 670 of 1000 iterations 

#> Gibbs sampler - 680 of 1000 iterations 

#> Gibbs sampler - 690 of 1000 iterations 

#> Gibbs sampler - 700 of 1000 iterations 

#> Gibbs sampler - 710 of 1000 iterations 

#> Gibbs sampler - 720 of 1000 iterations 

#> Gibbs sampler - 730 of 1000 iterations 

#> Gibbs sampler - 740 of 1000 iterations 

#> Gibbs sampler - 750 of 1000 iterations 

#> Gibbs sampler - 760 of 1000 iterations 

#> Gibbs sampler - 770 of 1000 iterations 

#> Gibbs sampler - 780 of 1000 iterations 

#> Gibbs sampler - 790 of 1000 iterations 

#> Gibbs sampler - 800 of 1000 iterations 

#> Gibbs sampler - 810 of 1000 iterations 

#> Gibbs sampler - 820 of 1000 iterations 

#> Gibbs sampler - 830 of 1000 iterations 

#> Gibbs sampler - 840 of 1000 iterations 

#> Gibbs sampler - 850 of 1000 iterations 

#> Gibbs sampler - 860 of 1000 iterations 

#> Gibbs sampler - 870 of 1000 iterations 

#> Gibbs sampler - 880 of 1000 iterations 

#> Gibbs sampler - 890 of 1000 iterations 

#> Gibbs sampler - 900 of 1000 iterations 

#> Gibbs sampler - 910 of 1000 iterations 

#> Gibbs sampler - 920 of 1000 iterations 

#> Gibbs sampler - 930 of 1000 iterations 

#> Gibbs sampler - 940 of 1000 iterations 

#> Gibbs sampler - 950 of 1000 iterations 

#> Gibbs sampler - 960 of 1000 iterations 

#> Gibbs sampler - 970 of 1000 iterations 

#> Gibbs sampler - 980 of 1000 iterations 

#> Gibbs sampler - 990 of 1000 iterations 

#> Gibbs sampler - 1000 of 1000 iterations 


predict(model)
#>     predicted
#> true  A  B
#>    A 16  8
#>    B  6 20
predict(model, overview = FALSE)
#>    id idc    A    B true predicted correct
#> 1   1   1 0.57 0.43    B         A   FALSE
#> 2   1   2 0.53 0.47    A         A    TRUE
#> 3   1   3 0.54 0.46    A         A    TRUE
#> 4   1   4 0.21 0.79    B         B    TRUE
#> 5   1   5 0.31 0.69    A         B   FALSE
#> 6   1   6 0.97 0.03    A         A    TRUE
#> 7   1   7 0.63 0.37    A         A    TRUE
#> 8   1   8 0.61 0.39    A         A    TRUE
#> 9   1   9 0.51 0.49    A         A    TRUE
#> 10  1  10 0.94 0.06    A         A    TRUE
#> 11  2   1 0.10 0.90    B         B    TRUE
#> 12  2   2 0.34 0.66    B         B    TRUE
#> 13  2   3 0.94 0.06    A         A    TRUE
#> 14  2   4 0.89 0.11    B         A   FALSE
#> 15  2   5 0.23 0.77    B         B    TRUE
#> 16  2   6 0.47 0.53    A         B   FALSE
#> 17  2   7 0.48 0.52    B         B    TRUE
#> 18  2   8 0.25 0.75    A         B   FALSE
#> 19  2   9 0.48 0.52    A         B   FALSE
#> 20  2  10 0.36 0.64    B         B    TRUE
#> 21  3   1 0.21 0.79    A         B   FALSE
#> 22  3   2 0.71 0.29    A         A    TRUE
#> 23  3   3 0.49 0.51    B         B    TRUE
#> 24  3   4 0.92 0.08    A         A    TRUE
#> 25  3   5 0.37 0.63    A         B   FALSE
#> 26  3   6 0.75 0.25    A         A    TRUE
#> 27  3   7 0.59 0.41    B         A   FALSE
#> 28  3   8 0.87 0.13    A         A    TRUE
#> 29  3   9 0.51 0.49    B         A   FALSE
#> 30  3  10 0.37 0.63    B         B    TRUE
#> 31  4   1 0.24 0.76    B         B    TRUE
#> 32  4   2 0.43 0.57    B         B    TRUE
#> 33  4   3 0.60 0.40    B         A   FALSE
#> 34  4   4 0.20 0.80    B         B    TRUE
#> 35  4   5 0.91 0.09    A         A    TRUE
#> 36  4   6 0.27 0.73    B         B    TRUE
#> 37  4   7 0.59 0.41    A         A    TRUE
#> 38  4   8 0.44 0.56    A         B   FALSE
#> 39  4   9 0.15 0.85    B         B    TRUE
#> 40  4  10 0.35 0.65    B         B    TRUE
#> 41  5   1 0.15 0.85    A         B   FALSE
#> 42  5   2 0.87 0.13    A         A    TRUE
#> 43  5   3 0.07 0.93    B         B    TRUE
#> 44  5   4 0.30 0.70    B         B    TRUE
#> 45  5   5 0.45 0.55    B         B    TRUE
#> 46  5   6 0.55 0.45    B         A   FALSE
#> 47  5   7 0.91 0.09    A         A    TRUE
#> 48  5   8 0.36 0.64    B         B    TRUE
#> 49  5   9 0.26 0.74    B         B    TRUE
#> 50  5  10 0.06 0.94    B         B    TRUE
predict(model, data = data$test)
#>     predicted
#> true  A  B
#>    A 23  7
#>    B  7 13
predict(
  model,
  data = data.frame("cov_A" = c(1, 1, NA, NA), "cov_B" = c(1, NA, 1, NA)),
  overview = FALSE
)
#> Checking for missing covariates
#>   id idc    A    B prediction
#> 1  1   1 0.56 0.44          A
#> 2  2   1 0.30 0.70          B
#> 3  3   1 0.80 0.20          A
#> 4  4   1 0.56 0.44          A