Skip to contents

Given two fitted models, compute a parametric bootstrap test to determine whether the less restrictive models fits significantly better than the more restricted model. Note that this hypothesis test also works when prior parameter distributions are included for either model. Function can be run in parallel after using a suitable mirtCluster definition.

Usage

boot.LR(mod, mod2, R = 1000, verbose = TRUE)

Arguments

mod

an estimated model object, more constrained than mod2

mod2

an estimated model object

R

number of parametric bootstraps to use.

verbose

logical; include additional information in the console?

Value

a p-value evaluating whether the more restrictive model fits significantly worse than the less restrictive model

References

Chalmers, R., P. (2012). mirt: A Multidimensional Item Response Theory Package for the R Environment. Journal of Statistical Software, 48(6), 1-29. doi:10.18637/jss.v048.i06

Author

Phil Chalmers rphilip.chalmers@gmail.com

Examples


# \donttest{

# standard
dat <- expand.table(LSAT7)
mod1 <- mirt(dat, 1)
#> 
Iteration: 1, Log-Lik: -2668.786, Max-Change: 0.18243
Iteration: 2, Log-Lik: -2663.691, Max-Change: 0.13637
Iteration: 3, Log-Lik: -2661.454, Max-Change: 0.10231
Iteration: 4, Log-Lik: -2659.430, Max-Change: 0.04181
Iteration: 5, Log-Lik: -2659.241, Max-Change: 0.03417
Iteration: 6, Log-Lik: -2659.113, Max-Change: 0.02911
Iteration: 7, Log-Lik: -2658.812, Max-Change: 0.00456
Iteration: 8, Log-Lik: -2658.809, Max-Change: 0.00363
Iteration: 9, Log-Lik: -2658.808, Max-Change: 0.00273
Iteration: 10, Log-Lik: -2658.806, Max-Change: 0.00144
Iteration: 11, Log-Lik: -2658.806, Max-Change: 0.00118
Iteration: 12, Log-Lik: -2658.806, Max-Change: 0.00101
Iteration: 13, Log-Lik: -2658.805, Max-Change: 0.00042
Iteration: 14, Log-Lik: -2658.805, Max-Change: 0.00025
Iteration: 15, Log-Lik: -2658.805, Max-Change: 0.00026
Iteration: 16, Log-Lik: -2658.805, Max-Change: 0.00023
Iteration: 17, Log-Lik: -2658.805, Max-Change: 0.00023
Iteration: 18, Log-Lik: -2658.805, Max-Change: 0.00021
Iteration: 19, Log-Lik: -2658.805, Max-Change: 0.00019
Iteration: 20, Log-Lik: -2658.805, Max-Change: 0.00017
Iteration: 21, Log-Lik: -2658.805, Max-Change: 0.00017
Iteration: 22, Log-Lik: -2658.805, Max-Change: 0.00015
Iteration: 23, Log-Lik: -2658.805, Max-Change: 0.00015
Iteration: 24, Log-Lik: -2658.805, Max-Change: 0.00013
Iteration: 25, Log-Lik: -2658.805, Max-Change: 0.00013
Iteration: 26, Log-Lik: -2658.805, Max-Change: 0.00011
Iteration: 27, Log-Lik: -2658.805, Max-Change: 0.00011
Iteration: 28, Log-Lik: -2658.805, Max-Change: 0.00010
mod2 <- mirt(dat, 1, '3PL')
#> 
Iteration: 1, Log-Lik: -2694.356, Max-Change: 0.83299
Iteration: 2, Log-Lik: -2668.434, Max-Change: 0.55340
Iteration: 3, Log-Lik: -2662.674, Max-Change: 0.52318
Iteration: 4, Log-Lik: -2660.618, Max-Change: 0.67496
Iteration: 5, Log-Lik: -2659.680, Max-Change: 2.29423
Iteration: 6, Log-Lik: -2659.130, Max-Change: 0.10040
Iteration: 7, Log-Lik: -2659.116, Max-Change: 0.10883
Iteration: 8, Log-Lik: -2658.832, Max-Change: 5.86165
Iteration: 9, Log-Lik: -2658.622, Max-Change: 0.06863
Iteration: 10, Log-Lik: -2658.620, Max-Change: 0.06858
Iteration: 11, Log-Lik: -2658.488, Max-Change: 0.05751
Iteration: 12, Log-Lik: -2658.392, Max-Change: 0.05053
Iteration: 13, Log-Lik: -2658.173, Max-Change: 0.02011
Iteration: 14, Log-Lik: -2658.109, Max-Change: 0.01627
Iteration: 15, Log-Lik: -2658.101, Max-Change: 0.01620
Iteration: 16, Log-Lik: -2658.079, Max-Change: 0.01227
Iteration: 17, Log-Lik: -2658.075, Max-Change: 0.01116
Iteration: 18, Log-Lik: -2658.073, Max-Change: 0.00659
Iteration: 19, Log-Lik: -2658.072, Max-Change: 0.00946
Iteration: 20, Log-Lik: -2658.070, Max-Change: 0.01115
Iteration: 21, Log-Lik: -2658.068, Max-Change: 0.01187
Iteration: 22, Log-Lik: -2658.060, Max-Change: 0.00433
Iteration: 23, Log-Lik: -2658.059, Max-Change: 0.00281
Iteration: 24, Log-Lik: -2658.059, Max-Change: 0.00484
Iteration: 25, Log-Lik: -2658.058, Max-Change: 0.00254
Iteration: 26, Log-Lik: -2658.057, Max-Change: 0.00273
Iteration: 27, Log-Lik: -2658.057, Max-Change: 0.00043
Iteration: 28, Log-Lik: -2658.057, Max-Change: 0.00043
Iteration: 29, Log-Lik: -2658.057, Max-Change: 0.00287
Iteration: 30, Log-Lik: -2658.057, Max-Change: 0.00181
Iteration: 31, Log-Lik: -2658.057, Max-Change: 0.00199
Iteration: 32, Log-Lik: -2658.057, Max-Change: 0.00200
Iteration: 33, Log-Lik: -2658.057, Max-Change: 0.00044
Iteration: 34, Log-Lik: -2658.057, Max-Change: 0.00037
Iteration: 35, Log-Lik: -2658.057, Max-Change: 0.00145
Iteration: 36, Log-Lik: -2658.057, Max-Change: 0.00074
Iteration: 37, Log-Lik: -2658.056, Max-Change: 0.00028
Iteration: 38, Log-Lik: -2658.056, Max-Change: 0.00137
Iteration: 39, Log-Lik: -2658.056, Max-Change: 0.00270
Iteration: 40, Log-Lik: -2658.056, Max-Change: 0.00029
Iteration: 41, Log-Lik: -2658.056, Max-Change: 0.00029
Iteration: 42, Log-Lik: -2658.056, Max-Change: 0.00141
Iteration: 43, Log-Lik: -2658.056, Max-Change: 0.00084
Iteration: 44, Log-Lik: -2658.056, Max-Change: 0.00060
Iteration: 45, Log-Lik: -2658.056, Max-Change: 0.00041
Iteration: 46, Log-Lik: -2658.056, Max-Change: 0.00247
Iteration: 47, Log-Lik: -2658.056, Max-Change: 0.00118
Iteration: 48, Log-Lik: -2658.056, Max-Change: 0.00069
Iteration: 49, Log-Lik: -2658.056, Max-Change: 0.00022
Iteration: 50, Log-Lik: -2658.056, Max-Change: 0.00111
Iteration: 51, Log-Lik: -2658.056, Max-Change: 0.00078
Iteration: 52, Log-Lik: -2658.056, Max-Change: 0.00021
Iteration: 53, Log-Lik: -2658.056, Max-Change: 0.00107
Iteration: 54, Log-Lik: -2658.056, Max-Change: 0.00071
Iteration: 55, Log-Lik: -2658.056, Max-Change: 0.00021
Iteration: 56, Log-Lik: -2658.056, Max-Change: 0.00103
Iteration: 57, Log-Lik: -2658.056, Max-Change: 0.00071
Iteration: 58, Log-Lik: -2658.056, Max-Change: 0.00020
Iteration: 59, Log-Lik: -2658.056, Max-Change: 0.00099
Iteration: 60, Log-Lik: -2658.056, Max-Change: 0.00068
Iteration: 61, Log-Lik: -2658.056, Max-Change: 0.00019
Iteration: 62, Log-Lik: -2658.056, Max-Change: 0.00096
Iteration: 63, Log-Lik: -2658.056, Max-Change: 0.00066
Iteration: 64, Log-Lik: -2658.056, Max-Change: 0.00019
Iteration: 65, Log-Lik: -2658.056, Max-Change: 0.00094
Iteration: 66, Log-Lik: -2658.056, Max-Change: 0.00064
Iteration: 67, Log-Lik: -2658.055, Max-Change: 0.00018
Iteration: 68, Log-Lik: -2658.055, Max-Change: 0.00091
Iteration: 69, Log-Lik: -2658.055, Max-Change: 0.00063
Iteration: 70, Log-Lik: -2658.055, Max-Change: 0.00018
Iteration: 71, Log-Lik: -2658.055, Max-Change: 0.00088
Iteration: 72, Log-Lik: -2658.055, Max-Change: 0.00061
Iteration: 73, Log-Lik: -2658.055, Max-Change: 0.00017
Iteration: 74, Log-Lik: -2658.055, Max-Change: 0.00086
Iteration: 75, Log-Lik: -2658.055, Max-Change: 0.00059
Iteration: 76, Log-Lik: -2658.055, Max-Change: 0.00017
Iteration: 77, Log-Lik: -2658.055, Max-Change: 0.00083
Iteration: 78, Log-Lik: -2658.055, Max-Change: 0.00057
Iteration: 79, Log-Lik: -2658.055, Max-Change: 0.00016
Iteration: 80, Log-Lik: -2658.055, Max-Change: 0.00081
Iteration: 81, Log-Lik: -2658.055, Max-Change: 0.00056
Iteration: 82, Log-Lik: -2658.055, Max-Change: 0.00016
Iteration: 83, Log-Lik: -2658.055, Max-Change: 0.00079
Iteration: 84, Log-Lik: -2658.055, Max-Change: 0.00054
Iteration: 85, Log-Lik: -2658.055, Max-Change: 0.00015
Iteration: 86, Log-Lik: -2658.055, Max-Change: 0.00077
Iteration: 87, Log-Lik: -2658.055, Max-Change: 0.00053
Iteration: 88, Log-Lik: -2658.055, Max-Change: 0.00015
Iteration: 89, Log-Lik: -2658.055, Max-Change: 0.00075
Iteration: 90, Log-Lik: -2658.055, Max-Change: 0.00051
Iteration: 91, Log-Lik: -2658.055, Max-Change: 0.00015
Iteration: 92, Log-Lik: -2658.055, Max-Change: 0.00073
Iteration: 93, Log-Lik: -2658.055, Max-Change: 0.00050
Iteration: 94, Log-Lik: -2658.055, Max-Change: 0.00014
Iteration: 95, Log-Lik: -2658.055, Max-Change: 0.00071
Iteration: 96, Log-Lik: -2658.055, Max-Change: 0.00048
Iteration: 97, Log-Lik: -2658.055, Max-Change: 0.00014
Iteration: 98, Log-Lik: -2658.055, Max-Change: 0.00069
Iteration: 99, Log-Lik: -2658.055, Max-Change: 0.00047
Iteration: 100, Log-Lik: -2658.055, Max-Change: 0.00013
Iteration: 101, Log-Lik: -2658.055, Max-Change: 0.00067
Iteration: 102, Log-Lik: -2658.055, Max-Change: 0.00046
Iteration: 103, Log-Lik: -2658.055, Max-Change: 0.00013
Iteration: 104, Log-Lik: -2658.055, Max-Change: 0.00065
Iteration: 105, Log-Lik: -2658.055, Max-Change: 0.00044
Iteration: 106, Log-Lik: -2658.055, Max-Change: 0.00013
Iteration: 107, Log-Lik: -2658.055, Max-Change: 0.00063
Iteration: 108, Log-Lik: -2658.055, Max-Change: 0.00043
Iteration: 109, Log-Lik: -2658.055, Max-Change: 0.00012
Iteration: 110, Log-Lik: -2658.055, Max-Change: 0.00061
Iteration: 111, Log-Lik: -2658.055, Max-Change: 0.00042
Iteration: 112, Log-Lik: -2658.055, Max-Change: 0.00012
Iteration: 113, Log-Lik: -2658.055, Max-Change: 0.00060
Iteration: 114, Log-Lik: -2658.055, Max-Change: 0.00041
Iteration: 115, Log-Lik: -2658.055, Max-Change: 0.00012
Iteration: 116, Log-Lik: -2658.055, Max-Change: 0.00058
Iteration: 117, Log-Lik: -2658.055, Max-Change: 0.00040
Iteration: 118, Log-Lik: -2658.055, Max-Change: 0.00011
Iteration: 119, Log-Lik: -2658.055, Max-Change: 0.00056
Iteration: 120, Log-Lik: -2658.055, Max-Change: 0.00038
Iteration: 121, Log-Lik: -2658.055, Max-Change: 0.00011
Iteration: 122, Log-Lik: -2658.055, Max-Change: 0.00055
Iteration: 123, Log-Lik: -2658.055, Max-Change: 0.00037
Iteration: 124, Log-Lik: -2658.055, Max-Change: 0.00011
Iteration: 125, Log-Lik: -2658.055, Max-Change: 0.00053
Iteration: 126, Log-Lik: -2658.055, Max-Change: 0.00036
Iteration: 127, Log-Lik: -2658.055, Max-Change: 0.00010
Iteration: 128, Log-Lik: -2658.055, Max-Change: 0.00052
Iteration: 129, Log-Lik: -2658.055, Max-Change: 0.00035
Iteration: 130, Log-Lik: -2658.055, Max-Change: 0.00010
Iteration: 131, Log-Lik: -2658.055, Max-Change: 0.00050
Iteration: 132, Log-Lik: -2658.055, Max-Change: 0.00034
Iteration: 133, Log-Lik: -2658.055, Max-Change: 0.00010

# standard LR test
anova(mod1, mod2)
#>          AIC    SABIC       HQ      BIC    logLik  X2 df     p
#> mod1 5337.61 5354.927 5356.263 5386.688 -2658.805             
#> mod2 5346.11 5372.085 5374.089 5419.726 -2658.055 1.5  5 0.913

# bootstrap LR test (run in parallel to save time)
if(interactive()) mirtCluster()
boot.LR(mod1, mod2, R=200)
#> [1] 0.3532338

# }