Computes item-fit statistics for a variety of unidimensional and multidimensional models.
Poorly fitting items should be inspected with the empirical plots/tables
for unidimensional models, otherwise itemGAM
can be used to diagnose
where the functional form of the IRT model was misspecified, or models can be refit using
more flexible semi-parametric response models (e.g., itemtype = 'spline'
).
If the latent trait density was approximated (e.g., Davidian curves, Empirical histograms, etc)
then passing use_dentype_estimate = TRUE
will use the internally saved quadrature and
density components (where applicable). Currently, only S-X2 statistic supported for
mixture IRT models. Finally, where applicable the root mean-square error of approximation (RMSEA)
is reported to help gauge the magnitude of item misfit.
Usage
itemfit(
x,
fit_stats = "S_X2",
which.items = 1:extract.mirt(x, "nitems"),
na.rm = FALSE,
p.adjust = "none",
group.bins = 10,
group.size = NA,
group.fun = mean,
mincell = 1,
mincell.X2 = 2,
return.tables = FALSE,
pv_draws = 30,
boot = 1000,
boot_dfapprox = 200,
S_X2.plot = NULL,
S_X2.plot_raw.score = TRUE,
ETrange = c(-2, 2),
ETpoints = 11,
empirical.plot = NULL,
empirical.CI = 0.95,
empirical.poly.collapse = FALSE,
method = "EAP",
Theta = NULL,
par.strip.text = list(cex = 0.7),
par.settings = list(strip.background = list(col = "#9ECAE1"), strip.border = list(col =
"black")),
auto.key = list(space = "right", points = FALSE, lines = TRUE),
...
)
Arguments
- x
a computed model object of class
SingleGroupClass
,MultipleGroupClass
, orDiscreteClass
- fit_stats
a character vector indicating which fit statistics should be computed. Supported inputs are:
'S_X2'
: Orlando and Thissen (2000, 2003) and Kang and Chen's (2007) signed chi-squared test (default)'Zh'
: Drasgow, Levine, & Williams (1985) Zh'X2'
: Bock's (1972) chi-squared method. The default inputs compute Yen's (1981) Q1 variant of the X2 statistic (i.e., uses a fixedgroup.bins = 10
). However, Bock's group-size variable median-based method can be computed by passinggroup.fun = median
and modifying thegroup.size
input to the desired number of bins'G2'
: McKinley & Mills (1985) G2 statistic (similar method to Q1, but with the likelihood-ratio test).'PV_Q1'
: Chalmers and Ng's (2017) plausible-value variant of the Q1 statistic.'PV_Q1*'
: Chalmers and Ng's (2017) plausible-value variant of the Q1 statistic that uses parametric bootstrapping to obtain a suitable empirical distribution.'X2*'
: Stone's (2000) fit statistics that require parametric bootstrapping'X2*_df'
: Stone's (2000) fit statistics that require parametric bootstrapping to obtain scaled versions of the X2* and degrees of freedom'infit'
: Compute the infit and outfit statistics
Note that 'S_X2' and 'Zh' cannot be computed when there are missing response data (i.e., will require multiple-imputation/row-removal techniques).
- which.items
an integer vector indicating which items to test for fit. Default tests all possible items
- na.rm
logical; remove rows with any missing values? This is required for methods such as S-X2 because they require the "EAPsum" method from
fscores
- p.adjust
method to use for adjusting all p-values for each respective item fit statistic (see
p.adjust
for available options). Default is'none'
- group.bins
the number of bins to use for X2 and G2. For example, setting
group.bins = 10
will will compute Yen's (1981) Q1 statistic when'X2'
is requested- group.size
approximate size of each group to be used in calculating the \(\chi^2\) statistic. The default
NA
disables this command and instead uses thegroup.bins
input to try and construct equally sized bins- group.fun
function used when
'X2'
or'G2'
are computed. Determines the central tendency measure within each partitioned group. E.g., settinggroup.fun = median
will obtain the median of each respective ability estimate in each subgroup (this is what was used by Bock, 1972)- mincell
the minimum expected cell size to be used in the S-X2 computations. Tables will be collapsed across items first if polytomous, and then across scores if necessary
- mincell.X2
the minimum expected cell size to be used in the X2 computations. Tables will be collapsed if polytomous, however if this condition can not be met then the group block will be omitted in the computations
- return.tables
logical; return tables when investigating
'X2'
,'S_X2'
, and'X2*'
?- pv_draws
number of plausible-value draws to obtain for PV_Q1 and PV_Q1*
- boot
number of parametric bootstrap samples to create for PV_Q1* and X2*
- boot_dfapprox
number of parametric bootstrap samples to create for the X2*_df statistic to approximate the scaling factor for X2* as well as the scaled degrees of freedom estimates
- S_X2.plot
argument input is the same as
empirical.plot
, however the resulting image is constructed according to the S-X2 statistic's conditional sum-score information- S_X2.plot_raw.score
logical; use the raw-score information in the plot in stead of the latent trait scale score? Default is
FALSE
- ETrange
range of integration nodes for Stone's X2* statistic
- ETpoints
number of integration nodes to use for Stone's X2* statistic
- empirical.plot
a single numeric value or character of the item name indicating which item to plot (via
itemplot
) and overlay with the empirical \(\theta\) groupings (seeempirical.CI
). Useful for plotting the expected bins based on the'X2'
or'G2'
method- empirical.CI
a numeric value indicating the width of the empirical confidence interval ranging between 0 and 1 (default of 0 plots not interval). For example, a 95 interval would be plotted when
empirical.CI = .95
. Only applicable to dichotomous items- empirical.poly.collapse
logical; collapse polytomous item categories to for expected scoring functions for empirical plots? Default is
FALSE
- method
type of factor score estimation method. See
fscores
for more detail- Theta
a matrix of factor scores for each person used for statistics that require empirical estimates. If supplied, arguments typically passed to
fscores()
will be ignored and these values will be used instead. Also required when estimating statistics with missing data via imputation- par.strip.text
plotting argument passed to
lattice
- par.settings
plotting argument passed to
lattice
- auto.key
plotting argument passed to
lattice
- ...
References
Bock, R. D. (1972). Estimating item parameters and latent ability when responses are scored in two or more nominal categories. Psychometrika, 37, 29-51.
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
Chalmers, R. P. & Ng, V. (2017). Plausible-Value Imputation Statistics for Detecting Item Misfit. Applied Psychological Measurement, 41, 372-387. doi:10.1177/0146621617692079
Drasgow, F., Levine, M. V., & Williams, E. A. (1985). Appropriateness measurement with polychotomous item response models and standardized indices. British Journal of Mathematical and Statistical Psychology, 38, 67-86.
Kang, T. & Chen, Troy, T. (2007). An investigation of the performance of the generalized S-X2 item-fit index for polytomous IRT models. ACT
McKinley, R., & Mills, C. (1985). A comparison of several goodness-of-fit statistics. Applied Psychological Measurement, 9, 49-57.
Orlando, M. & Thissen, D. (2000). Likelihood-based item fit indices for dichotomous item response theory models. Applied Psychological Measurement, 24, 50-64.
Reise, S. P. (1990). A comparison of item- and person-fit methods of assessing model-data fit in IRT. Applied Psychological Measurement, 14, 127-137.
Stone, C. A. (2000). Monte Carlo Based Null Distribution for an Alternative Goodness-of-Fit Test Statistics in IRT Models. Journal of Educational Measurement, 37, 58-75.
Wright B. D. & Masters, G. N. (1982). Rating scale analysis. MESA Press.
Yen, W. M. (1981). Using simulation results to choose a latent trait model. Applied Psychological Measurement, 5, 245-262.
Author
Phil Chalmers rphilip.chalmers@gmail.com
Examples
# \donttest{
P <- function(Theta){exp(Theta^2 * 1.2 - 1) / (1 + exp(Theta^2 * 1.2 - 1))}
#make some data
set.seed(1234)
a <- matrix(rlnorm(20, meanlog=0, sdlog = .1),ncol=1)
d <- matrix(rnorm(20),ncol=1)
Theta <- matrix(rnorm(2000))
items <- rep('2PL', 20)
ps <- P(Theta)
baditem <- numeric(2000)
for(i in 1:2000)
baditem[i] <- sample(c(0,1), 1, prob = c(1-ps[i], ps[i]))
data <- cbind(simdata(a,d, 2000, items, Theta=Theta), baditem=baditem)
x <- mirt(data, 1)
#>
Iteration: 1, Log-Lik: -24870.308, Max-Change: 0.66114
Iteration: 2, Log-Lik: -24710.080, Max-Change: 0.15084
Iteration: 3, Log-Lik: -24698.673, Max-Change: 0.03218
Iteration: 4, Log-Lik: -24697.464, Max-Change: 0.01365
Iteration: 5, Log-Lik: -24697.140, Max-Change: 0.00704
Iteration: 6, Log-Lik: -24697.026, Max-Change: 0.00402
Iteration: 7, Log-Lik: -24696.953, Max-Change: 0.00135
Iteration: 8, Log-Lik: -24696.942, Max-Change: 0.00093
Iteration: 9, Log-Lik: -24696.935, Max-Change: 0.00067
Iteration: 10, Log-Lik: -24696.930, Max-Change: 0.00036
Iteration: 11, Log-Lik: -24696.929, Max-Change: 0.00045
Iteration: 12, Log-Lik: -24696.928, Max-Change: 0.00019
Iteration: 13, Log-Lik: -24696.928, Max-Change: 0.00016
Iteration: 14, Log-Lik: -24696.927, Max-Change: 0.00015
Iteration: 15, Log-Lik: -24696.927, Max-Change: 0.00013
Iteration: 16, Log-Lik: -24696.927, Max-Change: 0.00006
raschfit <- mirt(data, 1, itemtype='Rasch')
#>
Iteration: 1, Log-Lik: -24883.311, Max-Change: 0.12205
Iteration: 2, Log-Lik: -24869.680, Max-Change: 0.05401
Iteration: 3, Log-Lik: -24866.428, Max-Change: 0.02591
Iteration: 4, Log-Lik: -24865.523, Max-Change: 0.01316
Iteration: 5, Log-Lik: -24865.246, Max-Change: 0.00680
Iteration: 6, Log-Lik: -24865.148, Max-Change: 0.00361
Iteration: 7, Log-Lik: -24865.088, Max-Change: 0.00215
Iteration: 8, Log-Lik: -24865.077, Max-Change: 0.00105
Iteration: 9, Log-Lik: -24865.072, Max-Change: 0.00069
Iteration: 10, Log-Lik: -24865.067, Max-Change: 0.00038
Iteration: 11, Log-Lik: -24865.067, Max-Change: 0.00018
Iteration: 12, Log-Lik: -24865.067, Max-Change: 0.00013
Iteration: 13, Log-Lik: -24865.067, Max-Change: 0.00006
fit <- itemfit(x)
fit
#> item S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
#> 1 Item_1 16.519 15 0.007 0.348
#> 2 Item_2 11.718 15 0.000 0.700
#> 3 Item_3 22.835 15 0.016 0.088
#> 4 Item_4 11.703 16 0.000 0.764
#> 5 Item_5 15.241 15 0.003 0.434
#> 6 Item_6 11.983 16 0.000 0.745
#> 7 Item_7 23.912 16 0.016 0.091
#> 8 Item_8 12.744 15 0.000 0.622
#> 9 Item_9 16.931 15 0.008 0.323
#> 10 Item_10 9.199 16 0.000 0.905
#> 11 Item_11 17.630 15 0.009 0.283
#> 12 Item_12 12.198 15 0.000 0.664
#> 13 Item_13 17.487 15 0.009 0.291
#> 14 Item_14 19.117 15 0.012 0.208
#> 15 Item_15 11.542 16 0.000 0.775
#> 16 Item_16 12.534 16 0.000 0.706
#> 17 Item_17 29.453 15 0.022 0.014
#> 18 Item_18 15.064 16 0.000 0.520
#> 19 Item_19 17.125 15 0.008 0.311
#> 20 Item_20 10.064 15 0.000 0.816
#> 21 baditem 233.224 18 0.077 0.000
# p-value adjustment
itemfit(x, p.adjust='fdr')
#> item S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
#> 1 Item_1 16.519 15 0.007 0.732
#> 2 Item_2 11.718 15 0.000 0.856
#> 3 Item_3 22.835 15 0.016 0.480
#> 4 Item_4 11.703 16 0.000 0.856
#> 5 Item_5 15.241 15 0.003 0.829
#> 6 Item_6 11.983 16 0.000 0.856
#> 7 Item_7 23.912 16 0.016 0.480
#> 8 Item_8 12.744 15 0.000 0.856
#> 9 Item_9 16.931 15 0.008 0.732
#> 10 Item_10 9.199 16 0.000 0.905
#> 11 Item_11 17.630 15 0.009 0.732
#> 12 Item_12 12.198 15 0.000 0.856
#> 13 Item_13 17.487 15 0.009 0.732
#> 14 Item_14 19.117 15 0.012 0.732
#> 15 Item_15 11.542 16 0.000 0.856
#> 16 Item_16 12.534 16 0.000 0.856
#> 17 Item_17 29.453 15 0.022 0.148
#> 18 Item_18 15.064 16 0.000 0.856
#> 19 Item_19 17.125 15 0.008 0.732
#> 20 Item_20 10.064 15 0.000 0.856
#> 21 baditem 233.224 18 0.077 0.000
# two different fit stats (with/without p-value adjustment)
itemfit(x, c('S_X2' ,'X2'), p.adjust='fdr')
#> item X2 df.X2 RMSEA.X2 p.X2 S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
#> 1 Item_1 30.842 8 0.038 0.000 16.519 15 0.007 0.732
#> 2 Item_2 27.970 8 0.035 0.001 11.718 15 0.000 0.856
#> 3 Item_3 43.995 8 0.047 0.000 22.835 15 0.016 0.480
#> 4 Item_4 33.272 8 0.040 0.000 11.703 16 0.000 0.856
#> 5 Item_5 29.469 8 0.037 0.001 15.241 15 0.003 0.829
#> 6 Item_6 21.325 8 0.029 0.007 11.983 16 0.000 0.856
#> 7 Item_7 23.127 8 0.031 0.004 23.912 16 0.016 0.480
#> 8 Item_8 25.332 8 0.033 0.002 12.744 15 0.000 0.856
#> 9 Item_9 33.778 8 0.040 0.000 16.931 15 0.008 0.732
#> 10 Item_10 22.972 8 0.031 0.004 9.199 16 0.000 0.905
#> 11 Item_11 27.300 8 0.035 0.001 17.630 15 0.009 0.732
#> 12 Item_12 23.256 8 0.031 0.004 12.198 15 0.000 0.856
#> 13 Item_13 31.523 8 0.038 0.000 17.487 15 0.009 0.732
#> 14 Item_14 27.924 8 0.035 0.001 19.117 15 0.012 0.732
#> 15 Item_15 18.462 8 0.026 0.020 11.542 16 0.000 0.856
#> 16 Item_16 25.057 8 0.033 0.002 12.534 16 0.000 0.856
#> 17 Item_17 14.828 8 0.021 0.063 29.453 15 0.022 0.148
#> 18 Item_18 17.676 8 0.025 0.025 15.064 16 0.000 0.856
#> 19 Item_19 32.585 8 0.039 0.000 17.125 15 0.008 0.732
#> 20 Item_20 37.207 8 0.043 0.000 10.064 15 0.000 0.856
#> 21 baditem 228.367 8 0.117 0.000 233.224 18 0.077 0.000
itemfit(x, c('S_X2' ,'X2'))
#> item X2 df.X2 RMSEA.X2 p.X2 S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
#> 1 Item_1 30.842 8 0.038 0.000 16.519 15 0.007 0.348
#> 2 Item_2 27.970 8 0.035 0.000 11.718 15 0.000 0.700
#> 3 Item_3 43.995 8 0.047 0.000 22.835 15 0.016 0.088
#> 4 Item_4 33.272 8 0.040 0.000 11.703 16 0.000 0.764
#> 5 Item_5 29.469 8 0.037 0.000 15.241 15 0.003 0.434
#> 6 Item_6 21.325 8 0.029 0.006 11.983 16 0.000 0.745
#> 7 Item_7 23.127 8 0.031 0.003 23.912 16 0.016 0.091
#> 8 Item_8 25.332 8 0.033 0.001 12.744 15 0.000 0.622
#> 9 Item_9 33.778 8 0.040 0.000 16.931 15 0.008 0.323
#> 10 Item_10 22.972 8 0.031 0.003 9.199 16 0.000 0.905
#> 11 Item_11 27.300 8 0.035 0.001 17.630 15 0.009 0.283
#> 12 Item_12 23.256 8 0.031 0.003 12.198 15 0.000 0.664
#> 13 Item_13 31.523 8 0.038 0.000 17.487 15 0.009 0.291
#> 14 Item_14 27.924 8 0.035 0.000 19.117 15 0.012 0.208
#> 15 Item_15 18.462 8 0.026 0.018 11.542 16 0.000 0.775
#> 16 Item_16 25.057 8 0.033 0.002 12.534 16 0.000 0.706
#> 17 Item_17 14.828 8 0.021 0.063 29.453 15 0.022 0.014
#> 18 Item_18 17.676 8 0.025 0.024 15.064 16 0.000 0.520
#> 19 Item_19 32.585 8 0.039 0.000 17.125 15 0.008 0.311
#> 20 Item_20 37.207 8 0.043 0.000 10.064 15 0.000 0.816
#> 21 baditem 228.367 8 0.117 0.000 233.224 18 0.077 0.000
# Conditional sum-score plot from S-X2 information
itemfit(x, S_X2.plot = 1) # good fit
itemfit(x, S_X2.plot = 2) # good fit
itemfit(x, S_X2.plot = 21) # bad fit
itemfit(x, 'X2') # just X2
#> item X2 df.X2 RMSEA.X2 p.X2
#> 1 Item_1 30.842 8 0.038 0.000
#> 2 Item_2 27.970 8 0.035 0.000
#> 3 Item_3 43.995 8 0.047 0.000
#> 4 Item_4 33.272 8 0.040 0.000
#> 5 Item_5 29.469 8 0.037 0.000
#> 6 Item_6 21.325 8 0.029 0.006
#> 7 Item_7 23.127 8 0.031 0.003
#> 8 Item_8 25.332 8 0.033 0.001
#> 9 Item_9 33.778 8 0.040 0.000
#> 10 Item_10 22.972 8 0.031 0.003
#> 11 Item_11 27.300 8 0.035 0.001
#> 12 Item_12 23.256 8 0.031 0.003
#> 13 Item_13 31.523 8 0.038 0.000
#> 14 Item_14 27.924 8 0.035 0.000
#> 15 Item_15 18.462 8 0.026 0.018
#> 16 Item_16 25.057 8 0.033 0.002
#> 17 Item_17 14.828 8 0.021 0.063
#> 18 Item_18 17.676 8 0.025 0.024
#> 19 Item_19 32.585 8 0.039 0.000
#> 20 Item_20 37.207 8 0.043 0.000
#> 21 baditem 228.367 8 0.117 0.000
itemfit(x, 'X2', method = 'ML') # X2 with maximum-likelihood estimates for traits
#> Warning: The following factor score estimates failed to converge successfully:
#> 311,315,352,518,677,748,909,927,1081,1243,1277,1305,1415,1480,1620,1893
#> item X2 df.X2 RMSEA.X2 p.X2
#> 1 Item_1 35.941 8 0.042 0.000
#> 2 Item_2 53.226 8 0.053 0.000
#> 3 Item_3 47.010 8 0.049 0.000
#> 4 Item_4 85.852 8 0.070 0.000
#> 5 Item_5 85.280 8 0.070 0.000
#> 6 Item_6 8.632 8 0.006 0.374
#> 7 Item_7 57.623 8 0.056 0.000
#> 8 Item_8 42.952 8 0.047 0.000
#> 9 Item_9 55.180 8 0.054 0.000
#> 10 Item_10 32.456 8 0.039 0.000
#> 11 Item_11 131.613 8 0.088 0.000
#> 12 Item_12 50.094 8 0.051 0.000
#> 13 Item_13 55.846 8 0.055 0.000
#> 14 Item_14 18.717 8 0.026 0.016
#> 15 Item_15 12.402 8 0.017 0.134
#> 16 Item_16 38.229 8 0.043 0.000
#> 17 Item_17 4.413 8 0.000 0.818
#> 18 Item_18 16.165 8 0.023 0.040
#> 19 Item_19 14.190 8 0.020 0.077
#> 20 Item_20 21.215 8 0.029 0.007
#> 21 baditem 227.191 8 0.117 0.000
itemfit(x, group.bins=15, empirical.plot = 1, method = 'ML') #empirical item plot with 15 points
#> Warning: The following factor score estimates failed to converge successfully:
#> 311,315,352,518,677,748,909,927,1081,1243,1277,1305,1415,1480,1620,1893
itemfit(x, group.bins=15, empirical.plot = 21, method = 'ML')
#> Warning: The following factor score estimates failed to converge successfully:
#> 311,315,352,518,677,748,909,927,1081,1243,1277,1305,1415,1480,1620,1893
# PV and X2* statistics (parametric bootstrap stats not run to save time)
itemfit(x, 'PV_Q1')
#> item PV_Q1 df.PV_Q1 RMSEA.PV_Q1 p.PV_Q1
#> 1 Item_1 8.984 8 0.008 0.344
#> 2 Item_2 9.441 8 0.009 0.306
#> 3 Item_3 7.162 8 0.000 0.519
#> 4 Item_4 8.463 8 0.005 0.390
#> 5 Item_5 8.755 8 0.007 0.363
#> 6 Item_6 9.411 8 0.009 0.309
#> 7 Item_7 8.678 8 0.007 0.370
#> 8 Item_8 8.269 8 0.004 0.408
#> 9 Item_9 9.005 8 0.008 0.342
#> 10 Item_10 6.873 8 0.000 0.550
#> 11 Item_11 9.871 8 0.011 0.274
#> 12 Item_12 9.214 8 0.009 0.325
#> 13 Item_13 8.889 8 0.007 0.352
#> 14 Item_14 9.088 8 0.008 0.335
#> 15 Item_15 8.583 8 0.006 0.379
#> 16 Item_16 8.848 8 0.007 0.355
#> 17 Item_17 8.408 8 0.005 0.395
#> 18 Item_18 8.000 8 0.000 0.433
#> 19 Item_19 8.742 8 0.007 0.365
#> 20 Item_20 7.823 8 0.000 0.451
#> 21 baditem 118.597 8 0.083 0.000
if(interactive()) mirtCluster() # improve speed of bootstrap samples by running in parallel
# itemfit(x, 'PV_Q1*')
# itemfit(x, 'X2*') # Stone's 1993 statistic
# itemfit(x, 'X2*_df') # Stone's 2000 scaled statistic with df estimate
# empirical tables for X2 statistic
tabs <- itemfit(x, 'X2', return.tables=TRUE, which.items = 1)
tabs
#> $`theta = -1.4531`
#> Observed Expected z.Residual
#> cat_0 183 158.63869 1.934176
#> cat_1 17 41.36131 -3.787943
#>
#> $`theta = -0.9416`
#> Observed Expected z.Residual
#> cat_0 149 138.43172 0.8982277
#> cat_1 51 61.56828 -1.3468702
#>
#> $`theta = -0.6475`
#> Observed Expected z.Residual
#> cat_0 132 124.64146 0.6591135
#> cat_1 68 75.35854 -0.8476670
#>
#> $`theta = -0.3921`
#> Observed Expected z.Residual
#> cat_0 112 111.77447 0.02133235
#> cat_1 88 88.22553 -0.02401114
#>
#> $`theta = -0.1393`
#> Observed Expected z.Residual
#> cat_0 88 98.63125 -1.070476
#> cat_1 112 101.36875 1.055923
#>
#> $`theta = 0.0936`
#> Observed Expected z.Residual
#> cat_0 86 86.5533 -0.05947283
#> cat_1 114 113.4467 0.05194748
#>
#> $`theta = 0.346`
#> Observed Expected z.Residual
#> cat_0 61 73.91477 -1.502177
#> cat_1 139 126.08523 1.150150
#>
#> $`theta = 0.6087`
#> Observed Expected z.Residual
#> cat_0 54 61.64828 -0.9740998
#> cat_1 146 138.35172 0.6502370
#>
#> $`theta = 0.9646`
#> Observed Expected z.Residual
#> cat_0 41 47.0127 -0.8769235
#> cat_1 159 152.9873 0.4861179
#>
#> $`theta = 1.5621`
#> Observed Expected z.Residual
#> cat_0 24 28.27768 -0.8044264
#> cat_1 176 171.72232 0.3264336
#>
#infit/outfit statistics. method='ML' agrees better with eRm package
itemfit(raschfit, 'infit', method = 'ML') #infit and outfit stats
#> item outfit z.outfit infit z.infit
#> 1 Item_1 0.919 -2.945 0.951 -2.699
#> 2 Item_2 0.962 -1.281 0.960 -2.010
#> 3 Item_3 0.876 -4.455 0.918 -4.332
#> 4 Item_4 0.998 -0.049 1.009 0.495
#> 5 Item_5 0.982 -0.523 0.974 -1.227
#> 6 Item_6 0.890 -2.233 0.950 -1.692
#> 7 Item_7 1.008 0.259 1.003 0.171
#> 8 Item_8 0.933 -1.743 0.961 -1.631
#> 9 Item_9 0.958 -1.519 0.964 -1.999
#> 10 Item_10 1.011 0.303 1.013 0.534
#> 11 Item_11 0.898 -2.300 0.939 -2.531
#> 12 Item_12 0.988 -0.383 1.012 0.607
#> 13 Item_13 0.991 -0.263 1.002 0.093
#> 14 Item_14 0.973 -0.841 0.974 -1.256
#> 15 Item_15 0.947 -0.943 0.993 -0.210
#> 16 Item_16 0.988 -0.271 0.985 -0.546
#> 17 Item_17 0.878 -1.532 0.960 -0.872
#> 18 Item_18 0.961 -0.759 0.978 -0.742
#> 19 Item_19 0.943 -2.060 0.974 -1.352
#> 20 Item_20 0.868 -4.736 0.911 -4.687
#> 21 baditem 1.513 16.123 1.338 16.509
#same as above, but inputting ML estimates instead (saves time for re-use)
Theta <- fscores(raschfit, method = 'ML')
itemfit(raschfit, 'infit', Theta=Theta)
#> item outfit z.outfit infit z.infit
#> 1 Item_1 0.919 -2.945 0.951 -2.699
#> 2 Item_2 0.962 -1.281 0.960 -2.010
#> 3 Item_3 0.876 -4.455 0.918 -4.332
#> 4 Item_4 0.998 -0.049 1.009 0.495
#> 5 Item_5 0.982 -0.523 0.974 -1.227
#> 6 Item_6 0.890 -2.233 0.950 -1.692
#> 7 Item_7 1.008 0.259 1.003 0.171
#> 8 Item_8 0.933 -1.743 0.961 -1.631
#> 9 Item_9 0.958 -1.519 0.964 -1.999
#> 10 Item_10 1.011 0.303 1.013 0.534
#> 11 Item_11 0.898 -2.300 0.939 -2.531
#> 12 Item_12 0.988 -0.383 1.012 0.607
#> 13 Item_13 0.991 -0.263 1.002 0.093
#> 14 Item_14 0.973 -0.841 0.974 -1.256
#> 15 Item_15 0.947 -0.943 0.993 -0.210
#> 16 Item_16 0.988 -0.271 0.985 -0.546
#> 17 Item_17 0.878 -1.532 0.960 -0.872
#> 18 Item_18 0.961 -0.759 0.978 -0.742
#> 19 Item_19 0.943 -2.060 0.974 -1.352
#> 20 Item_20 0.868 -4.736 0.911 -4.687
#> 21 baditem 1.513 16.123 1.338 16.509
itemfit(raschfit, empirical.plot=1, Theta=Theta)
itemfit(raschfit, 'X2', return.tables=TRUE, Theta=Theta, which.items=1)
#> $`theta = -1.7718`
#> Observed Expected z.Residual
#> cat_0 178 166.44926 0.8953008
#> cat_1 22 33.55074 -1.9941546
#>
#> $`theta = -1.0782`
#> Observed Expected z.Residual
#> cat_0 147 142.51602 0.3756054
#> cat_1 53 57.48398 -0.5914121
#>
#> $`theta = -0.7497`
#> Observed Expected z.Residual
#> cat_0 138 128.19072 0.8663808
#> cat_1 62 71.80928 -1.1575688
#>
#> $`theta = -0.4577`
#> Observed Expected z.Residual
#> cat_0 109 114.2782 -0.4937469
#> cat_1 91 85.7218 0.5700861
#>
#> $`theta = -0.193`
#> Observed Expected z.Residual
#> cat_0 91 101.13957 -1.008228
#> cat_1 109 98.86043 1.019784
#>
#> $`theta = 0.0765`
#> Observed Expected z.Residual
#> cat_0 77 87.7275 -1.145330
#> cat_1 123 112.2725 1.012423
#>
#> $`theta = 0.3374`
#> Observed Expected z.Residual
#> cat_0 74 75.15333 -0.1330391
#> cat_1 126 124.84667 0.1032203
#>
#> $`theta = 0.6728`
#> Observed Expected z.Residual
#> cat_0 47 60.18187 -1.699199
#> cat_1 153 139.81813 1.114796
#>
#> $`theta = 1.0787`
#> Observed Expected z.Residual
#> cat_0 47 44.57924 0.3625653
#> cat_1 153 155.42076 -0.1941771
#>
#> $`theta = 1.9249`
#> Observed Expected z.Residual
#> cat_0 22 21.91506 0.018144094
#> cat_1 178 178.08494 -0.006364921
#>
# fit a new more flexible model for the mis-fitting item
itemtype <- c(rep('2PL', 20), 'spline')
x2 <- mirt(data, 1, itemtype=itemtype)
#>
Iteration: 1, Log-Lik: -25123.533, Max-Change: 10.56028
Iteration: 2, Log-Lik: -24697.333, Max-Change: 9.32628
Iteration: 3, Log-Lik: -24621.907, Max-Change: 4.05808
Iteration: 4, Log-Lik: -24597.377, Max-Change: 6.07215
Iteration: 5, Log-Lik: -24585.842, Max-Change: 1.92193
Iteration: 6, Log-Lik: -24577.788, Max-Change: 3.30434
Iteration: 7, Log-Lik: -24573.466, Max-Change: 1.81113
Iteration: 8, Log-Lik: -24570.695, Max-Change: 2.04660
Iteration: 9, Log-Lik: -24568.916, Max-Change: 1.77913
Iteration: 10, Log-Lik: -24603.969, Max-Change: 0.26506
Iteration: 11, Log-Lik: -24564.250, Max-Change: 0.22687
Iteration: 12, Log-Lik: -24563.783, Max-Change: 0.08490
Iteration: 13, Log-Lik: -24563.761, Max-Change: 1.24022
Iteration: 14, Log-Lik: -24563.531, Max-Change: 0.00234
Iteration: 15, Log-Lik: -24563.528, Max-Change: 0.00210
Iteration: 16, Log-Lik: -24563.527, Max-Change: 0.00028
Iteration: 17, Log-Lik: -24563.526, Max-Change: 0.00139
Iteration: 18, Log-Lik: -24563.526, Max-Change: 0.00139
Iteration: 19, Log-Lik: -24563.526, Max-Change: 0.00033
Iteration: 20, Log-Lik: -24563.526, Max-Change: 0.00133
Iteration: 21, Log-Lik: -24563.525, Max-Change: 0.00027
Iteration: 22, Log-Lik: -24563.525, Max-Change: 0.00133
Iteration: 23, Log-Lik: -24563.525, Max-Change: 0.00046
Iteration: 24, Log-Lik: -24563.525, Max-Change: 0.00129
Iteration: 25, Log-Lik: -24563.525, Max-Change: 0.06480
Iteration: 26, Log-Lik: -24563.520, Max-Change: 0.00225
Iteration: 27, Log-Lik: -24563.514, Max-Change: 0.00030
Iteration: 28, Log-Lik: -24563.514, Max-Change: 0.00028
Iteration: 29, Log-Lik: -24563.513, Max-Change: 0.00017
Iteration: 30, Log-Lik: -24563.513, Max-Change: 0.00016
Iteration: 31, Log-Lik: -24563.513, Max-Change: 0.00079
Iteration: 32, Log-Lik: -24563.513, Max-Change: 0.00083
Iteration: 33, Log-Lik: -24563.513, Max-Change: 0.00085
Iteration: 34, Log-Lik: -24563.513, Max-Change: 0.00021
Iteration: 35, Log-Lik: -24563.512, Max-Change: 0.00085
Iteration: 36, Log-Lik: -24563.512, Max-Change: 0.00017
Iteration: 37, Log-Lik: -24563.512, Max-Change: 0.00017
Iteration: 38, Log-Lik: -24563.512, Max-Change: 0.00085
Iteration: 39, Log-Lik: -24563.512, Max-Change: 0.00085
Iteration: 40, Log-Lik: -24563.512, Max-Change: 0.00021
Iteration: 41, Log-Lik: -24563.512, Max-Change: 0.00084
Iteration: 42, Log-Lik: -24563.512, Max-Change: 0.00017
Iteration: 43, Log-Lik: -24563.512, Max-Change: 0.00017
Iteration: 44, Log-Lik: -24563.512, Max-Change: 0.00084
Iteration: 45, Log-Lik: -24563.512, Max-Change: 0.00084
Iteration: 46, Log-Lik: -24563.512, Max-Change: 0.00020
Iteration: 47, Log-Lik: -24563.512, Max-Change: 0.00084
Iteration: 48, Log-Lik: -24563.512, Max-Change: 0.00017
Iteration: 49, Log-Lik: -24563.512, Max-Change: 0.00017
Iteration: 50, Log-Lik: -24563.512, Max-Change: 0.00083
Iteration: 51, Log-Lik: -24563.511, Max-Change: 0.00083
Iteration: 52, Log-Lik: -24563.511, Max-Change: 0.00020
Iteration: 53, Log-Lik: -24563.511, Max-Change: 0.00083
Iteration: 54, Log-Lik: -24563.511, Max-Change: 0.00017
Iteration: 55, Log-Lik: -24563.511, Max-Change: 0.00017
Iteration: 56, Log-Lik: -24563.511, Max-Change: 0.00083
Iteration: 57, Log-Lik: -24563.511, Max-Change: 0.00082
Iteration: 58, Log-Lik: -24563.511, Max-Change: 0.00020
Iteration: 59, Log-Lik: -24563.511, Max-Change: 0.00082
Iteration: 60, Log-Lik: -24563.511, Max-Change: 0.00016
Iteration: 61, Log-Lik: -24563.511, Max-Change: 0.00016
Iteration: 62, Log-Lik: -24563.511, Max-Change: 0.00082
Iteration: 63, Log-Lik: -24563.511, Max-Change: 0.00082
Iteration: 64, Log-Lik: -24563.511, Max-Change: 0.00020
Iteration: 65, Log-Lik: -24563.511, Max-Change: 0.00081
Iteration: 66, Log-Lik: -24563.510, Max-Change: 0.00016
Iteration: 67, Log-Lik: -24563.510, Max-Change: 0.00016
Iteration: 68, Log-Lik: -24563.510, Max-Change: 0.00081
Iteration: 69, Log-Lik: -24563.510, Max-Change: 0.00081
Iteration: 70, Log-Lik: -24563.510, Max-Change: 0.00020
Iteration: 71, Log-Lik: -24563.510, Max-Change: 0.00081
Iteration: 72, Log-Lik: -24563.510, Max-Change: 0.00016
Iteration: 73, Log-Lik: -24563.510, Max-Change: 0.00016
Iteration: 74, Log-Lik: -24563.510, Max-Change: 0.00080
Iteration: 75, Log-Lik: -24563.510, Max-Change: 0.00080
Iteration: 76, Log-Lik: -24563.510, Max-Change: 0.00020
Iteration: 77, Log-Lik: -24563.510, Max-Change: 0.00080
Iteration: 78, Log-Lik: -24563.510, Max-Change: 0.00016
Iteration: 79, Log-Lik: -24563.510, Max-Change: 0.00016
Iteration: 80, Log-Lik: -24563.510, Max-Change: 0.00080
Iteration: 81, Log-Lik: -24563.510, Max-Change: 0.00079
Iteration: 82, Log-Lik: -24563.510, Max-Change: 0.00020
Iteration: 83, Log-Lik: -24563.509, Max-Change: 0.00079
Iteration: 84, Log-Lik: -24563.509, Max-Change: 0.00016
Iteration: 85, Log-Lik: -24563.509, Max-Change: 0.00016
Iteration: 86, Log-Lik: -24563.509, Max-Change: 0.00079
Iteration: 87, Log-Lik: -24563.509, Max-Change: 0.00079
Iteration: 88, Log-Lik: -24563.509, Max-Change: 0.00020
Iteration: 89, Log-Lik: -24563.509, Max-Change: 0.00078
Iteration: 90, Log-Lik: -24563.509, Max-Change: 0.00016
Iteration: 91, Log-Lik: -24563.509, Max-Change: 0.00016
Iteration: 92, Log-Lik: -24563.509, Max-Change: 0.00078
Iteration: 93, Log-Lik: -24563.509, Max-Change: 0.00078
Iteration: 94, Log-Lik: -24563.509, Max-Change: 0.00020
Iteration: 95, Log-Lik: -24563.509, Max-Change: 0.00078
Iteration: 96, Log-Lik: -24563.509, Max-Change: 0.00016
Iteration: 97, Log-Lik: -24563.509, Max-Change: 0.00016
Iteration: 98, Log-Lik: -24563.509, Max-Change: 0.00078
Iteration: 99, Log-Lik: -24563.508, Max-Change: 0.00078
Iteration: 100, Log-Lik: -24563.508, Max-Change: 0.00020
Iteration: 101, Log-Lik: -24563.508, Max-Change: 0.00077
Iteration: 102, Log-Lik: -24563.508, Max-Change: 0.00016
Iteration: 103, Log-Lik: -24563.508, Max-Change: 0.00015
Iteration: 104, Log-Lik: -24563.508, Max-Change: 0.00077
Iteration: 105, Log-Lik: -24563.508, Max-Change: 0.00077
Iteration: 106, Log-Lik: -24563.508, Max-Change: 0.00020
Iteration: 107, Log-Lik: -24563.508, Max-Change: 0.00077
Iteration: 108, Log-Lik: -24563.508, Max-Change: 0.00016
Iteration: 109, Log-Lik: -24563.508, Max-Change: 0.00015
Iteration: 110, Log-Lik: -24563.508, Max-Change: 0.00076
Iteration: 111, Log-Lik: -24563.508, Max-Change: 0.00076
Iteration: 112, Log-Lik: -24563.508, Max-Change: 0.00020
Iteration: 113, Log-Lik: -24563.508, Max-Change: 0.00076
Iteration: 114, Log-Lik: -24563.508, Max-Change: 0.00016
Iteration: 115, Log-Lik: -24563.508, Max-Change: 0.00015
Iteration: 116, Log-Lik: -24563.508, Max-Change: 0.00076
Iteration: 117, Log-Lik: -24563.507, Max-Change: 0.00076
Iteration: 118, Log-Lik: -24563.507, Max-Change: 0.00020
Iteration: 119, Log-Lik: -24563.507, Max-Change: 0.00076
Iteration: 120, Log-Lik: -24563.507, Max-Change: 0.00016
Iteration: 121, Log-Lik: -24563.507, Max-Change: 0.00015
Iteration: 122, Log-Lik: -24563.507, Max-Change: 0.00075
Iteration: 123, Log-Lik: -24563.507, Max-Change: 0.00075
Iteration: 124, Log-Lik: -24563.507, Max-Change: 0.00020
Iteration: 125, Log-Lik: -24563.507, Max-Change: 0.00075
Iteration: 126, Log-Lik: -24563.507, Max-Change: 0.00016
Iteration: 127, Log-Lik: -24563.507, Max-Change: 0.00015
Iteration: 128, Log-Lik: -24563.507, Max-Change: 0.00075
Iteration: 129, Log-Lik: -24563.507, Max-Change: 0.00075
Iteration: 130, Log-Lik: -24563.507, Max-Change: 0.00020
Iteration: 131, Log-Lik: -24563.507, Max-Change: 0.00075
Iteration: 132, Log-Lik: -24563.507, Max-Change: 0.00016
Iteration: 133, Log-Lik: -24563.507, Max-Change: 0.00015
Iteration: 134, Log-Lik: -24563.506, Max-Change: 0.00074
Iteration: 135, Log-Lik: -24563.506, Max-Change: 0.00074
Iteration: 136, Log-Lik: -24563.506, Max-Change: 0.00020
Iteration: 137, Log-Lik: -24563.506, Max-Change: 0.00074
Iteration: 138, Log-Lik: -24563.506, Max-Change: 0.00016
Iteration: 139, Log-Lik: -24563.506, Max-Change: 0.00015
Iteration: 140, Log-Lik: -24563.506, Max-Change: 0.00074
Iteration: 141, Log-Lik: -24563.506, Max-Change: 0.00074
Iteration: 142, Log-Lik: -24563.506, Max-Change: 0.00020
Iteration: 143, Log-Lik: -24563.506, Max-Change: 0.00074
Iteration: 144, Log-Lik: -24563.506, Max-Change: 0.00016
Iteration: 145, Log-Lik: -24563.506, Max-Change: 0.00015
Iteration: 146, Log-Lik: -24563.506, Max-Change: 0.00074
Iteration: 147, Log-Lik: -24563.506, Max-Change: 0.00074
Iteration: 148, Log-Lik: -24563.506, Max-Change: 0.00020
Iteration: 149, Log-Lik: -24563.506, Max-Change: 0.00073
Iteration: 150, Log-Lik: -24563.506, Max-Change: 0.00016
Iteration: 151, Log-Lik: -24563.506, Max-Change: 0.00015
Iteration: 152, Log-Lik: -24563.505, Max-Change: 0.00073
Iteration: 153, Log-Lik: -24563.505, Max-Change: 0.00073
Iteration: 154, Log-Lik: -24563.505, Max-Change: 0.00021
Iteration: 155, Log-Lik: -24563.505, Max-Change: 0.00073
Iteration: 156, Log-Lik: -24563.505, Max-Change: 0.00016
Iteration: 157, Log-Lik: -24563.505, Max-Change: 0.00015
Iteration: 158, Log-Lik: -24563.505, Max-Change: 0.00073
Iteration: 159, Log-Lik: -24563.505, Max-Change: 0.00073
Iteration: 160, Log-Lik: -24563.505, Max-Change: 0.00021
Iteration: 161, Log-Lik: -24563.505, Max-Change: 0.00072
Iteration: 162, Log-Lik: -24563.505, Max-Change: 0.00016
Iteration: 163, Log-Lik: -24563.505, Max-Change: 0.00014
Iteration: 164, Log-Lik: -24563.505, Max-Change: 0.00072
Iteration: 165, Log-Lik: -24563.505, Max-Change: 0.00072
Iteration: 166, Log-Lik: -24563.505, Max-Change: 0.00021
Iteration: 167, Log-Lik: -24563.505, Max-Change: 0.00072
Iteration: 168, Log-Lik: -24563.505, Max-Change: 0.00016
Iteration: 169, Log-Lik: -24563.504, Max-Change: 0.00014
Iteration: 170, Log-Lik: -24563.504, Max-Change: 0.00072
Iteration: 171, Log-Lik: -24563.504, Max-Change: 0.00072
Iteration: 172, Log-Lik: -24563.504, Max-Change: 0.00021
Iteration: 173, Log-Lik: -24563.504, Max-Change: 0.00072
Iteration: 174, Log-Lik: -24563.504, Max-Change: 0.00016
Iteration: 175, Log-Lik: -24563.504, Max-Change: 0.00014
Iteration: 176, Log-Lik: -24563.504, Max-Change: 0.00072
Iteration: 177, Log-Lik: -24563.504, Max-Change: 0.00071
Iteration: 178, Log-Lik: -24563.504, Max-Change: 0.00021
Iteration: 179, Log-Lik: -24563.504, Max-Change: 0.00071
Iteration: 180, Log-Lik: -24563.504, Max-Change: 0.00016
Iteration: 181, Log-Lik: -24563.504, Max-Change: 0.00014
Iteration: 182, Log-Lik: -24563.504, Max-Change: 0.00071
Iteration: 183, Log-Lik: -24563.504, Max-Change: 0.00071
Iteration: 184, Log-Lik: -24563.504, Max-Change: 0.00021
Iteration: 185, Log-Lik: -24563.504, Max-Change: 0.00071
Iteration: 186, Log-Lik: -24563.504, Max-Change: 0.00016
Iteration: 187, Log-Lik: -24563.503, Max-Change: 0.00014
Iteration: 188, Log-Lik: -24563.503, Max-Change: 0.00071
Iteration: 189, Log-Lik: -24563.503, Max-Change: 0.00071
Iteration: 190, Log-Lik: -24563.503, Max-Change: 0.00021
Iteration: 191, Log-Lik: -24563.503, Max-Change: 0.00071
Iteration: 192, Log-Lik: -24563.503, Max-Change: 0.00016
Iteration: 193, Log-Lik: -24563.503, Max-Change: 0.00014
Iteration: 194, Log-Lik: -24563.503, Max-Change: 0.00071
Iteration: 195, Log-Lik: -24563.503, Max-Change: 0.00071
Iteration: 196, Log-Lik: -24563.503, Max-Change: 0.00021
Iteration: 197, Log-Lik: -24563.503, Max-Change: 0.00070
Iteration: 198, Log-Lik: -24563.503, Max-Change: 0.00016
Iteration: 199, Log-Lik: -24563.503, Max-Change: 0.00014
Iteration: 200, Log-Lik: -24563.503, Max-Change: 0.00070
Iteration: 201, Log-Lik: -24563.503, Max-Change: 0.00070
Iteration: 202, Log-Lik: -24563.503, Max-Change: 0.00021
Iteration: 203, Log-Lik: -24563.503, Max-Change: 0.00070
Iteration: 204, Log-Lik: -24563.503, Max-Change: 0.00016
Iteration: 205, Log-Lik: -24563.503, Max-Change: 0.00014
Iteration: 206, Log-Lik: -24563.502, Max-Change: 0.00070
Iteration: 207, Log-Lik: -24563.502, Max-Change: 0.00070
Iteration: 208, Log-Lik: -24563.502, Max-Change: 0.00021
Iteration: 209, Log-Lik: -24563.502, Max-Change: 0.00070
Iteration: 210, Log-Lik: -24563.502, Max-Change: 0.00017
Iteration: 211, Log-Lik: -24563.502, Max-Change: 0.00014
Iteration: 212, Log-Lik: -24563.502, Max-Change: 0.00070
Iteration: 213, Log-Lik: -24563.502, Max-Change: 0.00070
Iteration: 214, Log-Lik: -24563.502, Max-Change: 0.00021
Iteration: 215, Log-Lik: -24563.502, Max-Change: 0.00070
Iteration: 216, Log-Lik: -24563.502, Max-Change: 0.00017
Iteration: 217, Log-Lik: -24563.502, Max-Change: 0.00014
Iteration: 218, Log-Lik: -24563.502, Max-Change: 0.00069
Iteration: 219, Log-Lik: -24563.502, Max-Change: 0.00070
Iteration: 220, Log-Lik: -24563.502, Max-Change: 0.00021
Iteration: 221, Log-Lik: -24563.502, Max-Change: 0.00069
Iteration: 222, Log-Lik: -24563.502, Max-Change: 0.00017
Iteration: 223, Log-Lik: -24563.502, Max-Change: 0.00014
Iteration: 224, Log-Lik: -24563.501, Max-Change: 0.00069
Iteration: 225, Log-Lik: -24563.501, Max-Change: 0.00069
Iteration: 226, Log-Lik: -24563.501, Max-Change: 0.00021
Iteration: 227, Log-Lik: -24563.501, Max-Change: 0.00069
Iteration: 228, Log-Lik: -24563.501, Max-Change: 0.00017
Iteration: 229, Log-Lik: -24563.501, Max-Change: 0.00014
Iteration: 230, Log-Lik: -24563.501, Max-Change: 0.00069
Iteration: 231, Log-Lik: -24563.501, Max-Change: 0.00069
Iteration: 232, Log-Lik: -24563.501, Max-Change: 0.00021
Iteration: 233, Log-Lik: -24563.501, Max-Change: 0.00069
Iteration: 234, Log-Lik: -24563.501, Max-Change: 0.00017
Iteration: 235, Log-Lik: -24563.501, Max-Change: 0.00014
Iteration: 236, Log-Lik: -24563.501, Max-Change: 0.00069
Iteration: 237, Log-Lik: -24563.501, Max-Change: 0.00069
Iteration: 238, Log-Lik: -24563.501, Max-Change: 0.00022
Iteration: 239, Log-Lik: -24563.501, Max-Change: 0.00069
Iteration: 240, Log-Lik: -24563.501, Max-Change: 0.00017
Iteration: 241, Log-Lik: -24563.501, Max-Change: 0.00014
Iteration: 242, Log-Lik: -24563.500, Max-Change: 0.00069
Iteration: 243, Log-Lik: -24563.500, Max-Change: 0.00069
Iteration: 244, Log-Lik: -24563.500, Max-Change: 0.00022
Iteration: 245, Log-Lik: -24563.500, Max-Change: 0.00068
Iteration: 246, Log-Lik: -24563.500, Max-Change: 0.00017
Iteration: 247, Log-Lik: -24563.500, Max-Change: 0.00014
Iteration: 248, Log-Lik: -24563.500, Max-Change: 0.00068
Iteration: 249, Log-Lik: -24563.500, Max-Change: 0.00068
Iteration: 250, Log-Lik: -24563.500, Max-Change: 0.00022
Iteration: 251, Log-Lik: -24563.500, Max-Change: 0.00068
Iteration: 252, Log-Lik: -24563.500, Max-Change: 0.00017
Iteration: 253, Log-Lik: -24563.500, Max-Change: 0.00014
Iteration: 254, Log-Lik: -24563.500, Max-Change: 0.00068
Iteration: 255, Log-Lik: -24563.500, Max-Change: 0.00068
Iteration: 256, Log-Lik: -24563.500, Max-Change: 0.00022
Iteration: 257, Log-Lik: -24563.500, Max-Change: 0.00068
Iteration: 258, Log-Lik: -24563.500, Max-Change: 0.00017
Iteration: 259, Log-Lik: -24563.500, Max-Change: 0.00014
Iteration: 260, Log-Lik: -24563.500, Max-Change: 0.00068
Iteration: 261, Log-Lik: -24563.499, Max-Change: 0.00068
Iteration: 262, Log-Lik: -24563.499, Max-Change: 0.00022
Iteration: 263, Log-Lik: -24563.499, Max-Change: 0.00068
Iteration: 264, Log-Lik: -24563.499, Max-Change: 0.00017
Iteration: 265, Log-Lik: -24563.499, Max-Change: 0.00014
Iteration: 266, Log-Lik: -24563.499, Max-Change: 0.00068
Iteration: 267, Log-Lik: -24563.499, Max-Change: 0.00068
Iteration: 268, Log-Lik: -24563.499, Max-Change: 0.00022
Iteration: 269, Log-Lik: -24563.499, Max-Change: 0.00068
Iteration: 270, Log-Lik: -24563.499, Max-Change: 0.00017
Iteration: 271, Log-Lik: -24563.499, Max-Change: 0.00014
Iteration: 272, Log-Lik: -24563.499, Max-Change: 0.00068
Iteration: 273, Log-Lik: -24563.499, Max-Change: 0.00067
Iteration: 274, Log-Lik: -24563.499, Max-Change: 0.00022
Iteration: 275, Log-Lik: -24563.499, Max-Change: 0.00067
Iteration: 276, Log-Lik: -24563.499, Max-Change: 0.00017
Iteration: 277, Log-Lik: -24563.499, Max-Change: 0.00014
Iteration: 278, Log-Lik: -24563.499, Max-Change: 0.00067
Iteration: 279, Log-Lik: -24563.498, Max-Change: 0.00067
Iteration: 280, Log-Lik: -24563.498, Max-Change: 0.00022
Iteration: 281, Log-Lik: -24563.498, Max-Change: 0.00067
Iteration: 282, Log-Lik: -24563.498, Max-Change: 0.00017
Iteration: 283, Log-Lik: -24563.498, Max-Change: 0.00014
Iteration: 284, Log-Lik: -24563.498, Max-Change: 0.00067
Iteration: 285, Log-Lik: -24563.498, Max-Change: 0.00067
Iteration: 286, Log-Lik: -24563.498, Max-Change: 0.00022
Iteration: 287, Log-Lik: -24563.498, Max-Change: 0.00067
Iteration: 288, Log-Lik: -24563.498, Max-Change: 0.00017
Iteration: 289, Log-Lik: -24563.498, Max-Change: 0.00014
Iteration: 290, Log-Lik: -24563.498, Max-Change: 0.00067
Iteration: 291, Log-Lik: -24563.498, Max-Change: 0.00067
Iteration: 292, Log-Lik: -24563.498, Max-Change: 0.00022
Iteration: 293, Log-Lik: -24563.498, Max-Change: 0.00067
Iteration: 294, Log-Lik: -24563.498, Max-Change: 0.00017
Iteration: 295, Log-Lik: -24563.498, Max-Change: 0.00014
Iteration: 296, Log-Lik: -24563.498, Max-Change: 0.00067
Iteration: 297, Log-Lik: -24563.498, Max-Change: 0.00067
Iteration: 298, Log-Lik: -24563.497, Max-Change: 0.00022
Iteration: 299, Log-Lik: -24563.497, Max-Change: 0.00067
Iteration: 300, Log-Lik: -24563.497, Max-Change: 0.00017
Iteration: 301, Log-Lik: -24563.497, Max-Change: 0.00014
Iteration: 302, Log-Lik: -24563.497, Max-Change: 0.00067
Iteration: 303, Log-Lik: -24563.497, Max-Change: 0.00067
Iteration: 304, Log-Lik: -24563.497, Max-Change: 0.00022
Iteration: 305, Log-Lik: -24563.497, Max-Change: 0.00067
Iteration: 306, Log-Lik: -24563.497, Max-Change: 0.00017
Iteration: 307, Log-Lik: -24563.497, Max-Change: 0.00014
Iteration: 308, Log-Lik: -24563.497, Max-Change: 0.00067
Iteration: 309, Log-Lik: -24563.497, Max-Change: 0.00066
Iteration: 310, Log-Lik: -24563.497, Max-Change: 0.00022
Iteration: 311, Log-Lik: -24563.497, Max-Change: 0.00066
Iteration: 312, Log-Lik: -24563.497, Max-Change: 0.00017
Iteration: 313, Log-Lik: -24563.497, Max-Change: 0.00014
Iteration: 314, Log-Lik: -24563.497, Max-Change: 0.00066
Iteration: 315, Log-Lik: -24563.497, Max-Change: 0.00066
Iteration: 316, Log-Lik: -24563.497, Max-Change: 0.00022
Iteration: 317, Log-Lik: -24563.496, Max-Change: 0.00066
Iteration: 318, Log-Lik: -24563.496, Max-Change: 0.00017
Iteration: 319, Log-Lik: -24563.496, Max-Change: 0.00014
Iteration: 320, Log-Lik: -24563.496, Max-Change: 0.00066
Iteration: 321, Log-Lik: -24563.496, Max-Change: 0.00066
Iteration: 322, Log-Lik: -24563.496, Max-Change: 0.00022
Iteration: 323, Log-Lik: -24563.496, Max-Change: 0.00066
Iteration: 324, Log-Lik: -24563.496, Max-Change: 0.00017
Iteration: 325, Log-Lik: -24563.496, Max-Change: 0.00014
Iteration: 326, Log-Lik: -24563.496, Max-Change: 0.00066
Iteration: 327, Log-Lik: -24563.496, Max-Change: 0.00066
Iteration: 328, Log-Lik: -24563.496, Max-Change: 0.00022
Iteration: 329, Log-Lik: -24563.496, Max-Change: 0.00066
Iteration: 330, Log-Lik: -24563.496, Max-Change: 0.00018
Iteration: 331, Log-Lik: -24563.496, Max-Change: 0.00014
Iteration: 332, Log-Lik: -24563.496, Max-Change: 0.00066
Iteration: 333, Log-Lik: -24563.496, Max-Change: 0.00066
Iteration: 334, Log-Lik: -24563.496, Max-Change: 0.00023
Iteration: 335, Log-Lik: -24563.496, Max-Change: 0.00066
Iteration: 336, Log-Lik: -24563.495, Max-Change: 0.00018
Iteration: 337, Log-Lik: -24563.495, Max-Change: 0.00014
Iteration: 338, Log-Lik: -24563.495, Max-Change: 0.00066
Iteration: 339, Log-Lik: -24563.495, Max-Change: 0.00066
Iteration: 340, Log-Lik: -24563.495, Max-Change: 0.00023
Iteration: 341, Log-Lik: -24563.495, Max-Change: 0.00066
Iteration: 342, Log-Lik: -24563.495, Max-Change: 0.00018
Iteration: 343, Log-Lik: -24563.495, Max-Change: 0.00014
Iteration: 344, Log-Lik: -24563.495, Max-Change: 0.00066
Iteration: 345, Log-Lik: -24563.495, Max-Change: 0.00066
Iteration: 346, Log-Lik: -24563.495, Max-Change: 0.00023
Iteration: 347, Log-Lik: -24563.495, Max-Change: 0.00066
Iteration: 348, Log-Lik: -24563.495, Max-Change: 0.00018
Iteration: 349, Log-Lik: -24563.495, Max-Change: 0.00014
Iteration: 350, Log-Lik: -24563.495, Max-Change: 0.00066
Iteration: 351, Log-Lik: -24563.495, Max-Change: 0.00066
Iteration: 352, Log-Lik: -24563.495, Max-Change: 0.00023
Iteration: 353, Log-Lik: -24563.495, Max-Change: 0.00065
Iteration: 354, Log-Lik: -24563.494, Max-Change: 0.00018
Iteration: 355, Log-Lik: -24563.494, Max-Change: 0.00014
Iteration: 356, Log-Lik: -24563.494, Max-Change: 0.00066
Iteration: 357, Log-Lik: -24563.494, Max-Change: 0.00065
Iteration: 358, Log-Lik: -24563.494, Max-Change: 0.00023
Iteration: 359, Log-Lik: -24563.494, Max-Change: 0.00065
Iteration: 360, Log-Lik: -24563.494, Max-Change: 0.00018
Iteration: 361, Log-Lik: -24563.494, Max-Change: 0.00014
Iteration: 362, Log-Lik: -24563.494, Max-Change: 0.00065
Iteration: 363, Log-Lik: -24563.494, Max-Change: 0.00065
Iteration: 364, Log-Lik: -24563.494, Max-Change: 0.00023
Iteration: 365, Log-Lik: -24563.494, Max-Change: 0.00065
Iteration: 366, Log-Lik: -24563.494, Max-Change: 0.00018
Iteration: 367, Log-Lik: -24563.494, Max-Change: 0.00014
Iteration: 368, Log-Lik: -24563.494, Max-Change: 0.00065
Iteration: 369, Log-Lik: -24563.494, Max-Change: 0.00065
Iteration: 370, Log-Lik: -24563.494, Max-Change: 0.00023
Iteration: 371, Log-Lik: -24563.494, Max-Change: 0.00065
Iteration: 372, Log-Lik: -24563.494, Max-Change: 0.00018
Iteration: 373, Log-Lik: -24563.494, Max-Change: 0.00014
Iteration: 374, Log-Lik: -24563.493, Max-Change: 0.00065
Iteration: 375, Log-Lik: -24563.493, Max-Change: 0.00065
Iteration: 376, Log-Lik: -24563.493, Max-Change: 0.00023
Iteration: 377, Log-Lik: -24563.493, Max-Change: 0.00065
Iteration: 378, Log-Lik: -24563.493, Max-Change: 0.00018
Iteration: 379, Log-Lik: -24563.493, Max-Change: 0.00014
Iteration: 380, Log-Lik: -24563.493, Max-Change: 0.00065
Iteration: 381, Log-Lik: -24563.493, Max-Change: 0.00065
Iteration: 382, Log-Lik: -24563.493, Max-Change: 0.00023
Iteration: 383, Log-Lik: -24563.493, Max-Change: 0.00065
Iteration: 384, Log-Lik: -24563.493, Max-Change: 0.00018
Iteration: 385, Log-Lik: -24563.493, Max-Change: 0.00014
Iteration: 386, Log-Lik: -24563.493, Max-Change: 0.00065
Iteration: 387, Log-Lik: -24563.493, Max-Change: 0.00065
Iteration: 388, Log-Lik: -24563.493, Max-Change: 0.00023
Iteration: 389, Log-Lik: -24563.493, Max-Change: 0.00065
Iteration: 390, Log-Lik: -24563.493, Max-Change: 0.00018
Iteration: 391, Log-Lik: -24563.493, Max-Change: 0.00014
Iteration: 392, Log-Lik: -24563.493, Max-Change: 0.00065
Iteration: 393, Log-Lik: -24563.492, Max-Change: 0.00065
Iteration: 394, Log-Lik: -24563.492, Max-Change: 0.00023
Iteration: 395, Log-Lik: -24563.492, Max-Change: 0.00065
Iteration: 396, Log-Lik: -24563.492, Max-Change: 0.00018
Iteration: 397, Log-Lik: -24563.492, Max-Change: 0.00014
Iteration: 398, Log-Lik: -24563.492, Max-Change: 0.00065
Iteration: 399, Log-Lik: -24563.492, Max-Change: 0.00065
Iteration: 400, Log-Lik: -24563.492, Max-Change: 0.00023
Iteration: 401, Log-Lik: -24563.492, Max-Change: 0.00065
Iteration: 402, Log-Lik: -24563.492, Max-Change: 0.00018
Iteration: 403, Log-Lik: -24563.492, Max-Change: 0.00015
Iteration: 404, Log-Lik: -24563.492, Max-Change: 0.00065
Iteration: 405, Log-Lik: -24563.492, Max-Change: 0.00065
Iteration: 406, Log-Lik: -24563.492, Max-Change: 0.00023
Iteration: 407, Log-Lik: -24563.492, Max-Change: 0.00065
Iteration: 408, Log-Lik: -24563.492, Max-Change: 0.00018
Iteration: 409, Log-Lik: -24563.492, Max-Change: 0.00015
Iteration: 410, Log-Lik: -24563.492, Max-Change: 0.00065
Iteration: 411, Log-Lik: -24563.492, Max-Change: 0.00065
Iteration: 412, Log-Lik: -24563.492, Max-Change: 0.00023
Iteration: 413, Log-Lik: -24563.491, Max-Change: 0.00065
Iteration: 414, Log-Lik: -24563.491, Max-Change: 0.00018
Iteration: 415, Log-Lik: -24563.491, Max-Change: 0.00015
Iteration: 416, Log-Lik: -24563.491, Max-Change: 0.00065
Iteration: 417, Log-Lik: -24563.491, Max-Change: 0.00064
Iteration: 418, Log-Lik: -24563.491, Max-Change: 0.00023
Iteration: 419, Log-Lik: -24563.491, Max-Change: 0.00065
Iteration: 420, Log-Lik: -24563.491, Max-Change: 0.00018
Iteration: 421, Log-Lik: -24563.491, Max-Change: 0.00015
Iteration: 422, Log-Lik: -24563.491, Max-Change: 0.00064
Iteration: 423, Log-Lik: -24563.491, Max-Change: 0.00064
Iteration: 424, Log-Lik: -24563.491, Max-Change: 0.00023
Iteration: 425, Log-Lik: -24563.491, Max-Change: 0.00064
Iteration: 426, Log-Lik: -24563.491, Max-Change: 0.00018
Iteration: 427, Log-Lik: -24563.491, Max-Change: 0.00015
Iteration: 428, Log-Lik: -24563.491, Max-Change: 0.00064
Iteration: 429, Log-Lik: -24563.491, Max-Change: 0.00064
Iteration: 430, Log-Lik: -24563.491, Max-Change: 0.00023
Iteration: 431, Log-Lik: -24563.490, Max-Change: 0.00064
Iteration: 432, Log-Lik: -24563.490, Max-Change: 0.00018
Iteration: 433, Log-Lik: -24563.490, Max-Change: 0.00015
Iteration: 434, Log-Lik: -24563.490, Max-Change: 0.00064
Iteration: 435, Log-Lik: -24563.490, Max-Change: 0.00064
Iteration: 436, Log-Lik: -24563.490, Max-Change: 0.00023
Iteration: 437, Log-Lik: -24563.490, Max-Change: 0.00064
Iteration: 438, Log-Lik: -24563.490, Max-Change: 0.00018
Iteration: 439, Log-Lik: -24563.490, Max-Change: 0.00015
Iteration: 440, Log-Lik: -24563.490, Max-Change: 0.00064
Iteration: 441, Log-Lik: -24563.490, Max-Change: 0.00064
Iteration: 442, Log-Lik: -24563.490, Max-Change: 0.00023
Iteration: 443, Log-Lik: -24563.490, Max-Change: 0.00064
Iteration: 444, Log-Lik: -24563.490, Max-Change: 0.00018
Iteration: 445, Log-Lik: -24563.490, Max-Change: 0.00015
Iteration: 446, Log-Lik: -24563.490, Max-Change: 0.00064
Iteration: 447, Log-Lik: -24563.490, Max-Change: 0.00064
Iteration: 448, Log-Lik: -24563.490, Max-Change: 0.00024
Iteration: 449, Log-Lik: -24563.490, Max-Change: 0.00064
Iteration: 450, Log-Lik: -24563.489, Max-Change: 0.00018
Iteration: 451, Log-Lik: -24563.489, Max-Change: 0.00015
Iteration: 452, Log-Lik: -24563.489, Max-Change: 0.00064
Iteration: 453, Log-Lik: -24563.489, Max-Change: 0.00064
Iteration: 454, Log-Lik: -24563.489, Max-Change: 0.00024
Iteration: 455, Log-Lik: -24563.489, Max-Change: 0.00064
Iteration: 456, Log-Lik: -24563.489, Max-Change: 0.00018
Iteration: 457, Log-Lik: -24563.489, Max-Change: 0.00015
Iteration: 458, Log-Lik: -24563.489, Max-Change: 0.00064
Iteration: 459, Log-Lik: -24563.489, Max-Change: 0.00064
Iteration: 460, Log-Lik: -24563.489, Max-Change: 0.00024
Iteration: 461, Log-Lik: -24563.489, Max-Change: 0.00064
Iteration: 462, Log-Lik: -24563.489, Max-Change: 0.00018
Iteration: 463, Log-Lik: -24563.489, Max-Change: 0.00015
Iteration: 464, Log-Lik: -24563.489, Max-Change: 0.00064
Iteration: 465, Log-Lik: -24563.489, Max-Change: 0.00064
Iteration: 466, Log-Lik: -24563.489, Max-Change: 0.00024
Iteration: 467, Log-Lik: -24563.489, Max-Change: 0.00064
Iteration: 468, Log-Lik: -24563.489, Max-Change: 0.00018
Iteration: 469, Log-Lik: -24563.489, Max-Change: 0.00015
Iteration: 470, Log-Lik: -24563.489, Max-Change: 0.00064
Iteration: 471, Log-Lik: -24563.488, Max-Change: 0.00064
Iteration: 472, Log-Lik: -24563.488, Max-Change: 0.00024
Iteration: 473, Log-Lik: -24563.488, Max-Change: 0.00064
Iteration: 474, Log-Lik: -24563.488, Max-Change: 0.00019
Iteration: 475, Log-Lik: -24563.488, Max-Change: 0.00015
Iteration: 476, Log-Lik: -24563.488, Max-Change: 0.00064
Iteration: 477, Log-Lik: -24563.488, Max-Change: 0.00064
Iteration: 478, Log-Lik: -24563.488, Max-Change: 0.00024
Iteration: 479, Log-Lik: -24563.488, Max-Change: 0.00064
Iteration: 480, Log-Lik: -24563.488, Max-Change: 0.00019
Iteration: 481, Log-Lik: -24563.488, Max-Change: 0.00015
Iteration: 482, Log-Lik: -24563.488, Max-Change: 0.00064
Iteration: 483, Log-Lik: -24563.488, Max-Change: 0.00064
Iteration: 484, Log-Lik: -24563.488, Max-Change: 0.00024
Iteration: 485, Log-Lik: -24563.488, Max-Change: 0.00064
Iteration: 486, Log-Lik: -24563.488, Max-Change: 0.00019
Iteration: 487, Log-Lik: -24563.488, Max-Change: 0.00015
Iteration: 488, Log-Lik: -24563.488, Max-Change: 0.00064
Iteration: 489, Log-Lik: -24563.488, Max-Change: 0.00064
Iteration: 490, Log-Lik: -24563.487, Max-Change: 0.00024
Iteration: 491, Log-Lik: -24563.487, Max-Change: 0.00064
Iteration: 492, Log-Lik: -24563.487, Max-Change: 0.00019
Iteration: 493, Log-Lik: -24563.487, Max-Change: 0.00015
Iteration: 494, Log-Lik: -24563.487, Max-Change: 0.00064
Iteration: 495, Log-Lik: -24563.487, Max-Change: 0.00064
Iteration: 496, Log-Lik: -24563.487, Max-Change: 0.00024
Iteration: 497, Log-Lik: -24563.487, Max-Change: 0.00064
Iteration: 498, Log-Lik: -24563.487, Max-Change: 0.00019
Iteration: 499, Log-Lik: -24563.487, Max-Change: 0.00015
Iteration: 500, Log-Lik: -24563.487, Max-Change: 0.00064
#> Warning: EM cycles terminated after 500 iterations.
itemfit(x2)
#> item S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
#> 1 Item_1 13.109 15 0.000 0.594
#> 2 Item_2 13.513 15 0.000 0.563
#> 3 Item_3 21.887 15 0.015 0.111
#> 4 Item_4 9.894 15 0.000 0.826
#> 5 Item_5 16.248 15 0.006 0.366
#> 6 Item_6 10.218 16 0.000 0.855
#> 7 Item_7 18.279 15 0.010 0.248
#> 8 Item_8 13.587 16 0.000 0.629
#> 9 Item_9 13.485 15 0.000 0.565
#> 10 Item_10 10.569 16 0.000 0.835
#> 11 Item_11 16.325 15 0.007 0.361
#> 12 Item_12 9.663 15 0.000 0.840
#> 13 Item_13 19.394 16 0.010 0.249
#> 14 Item_14 16.357 15 0.007 0.359
#> 15 Item_15 9.410 16 0.000 0.896
#> 16 Item_16 13.578 16 0.000 0.630
#> 17 Item_17 29.945 16 0.021 0.018
#> 18 Item_18 15.058 16 0.000 0.520
#> 19 Item_19 15.663 15 0.005 0.405
#> 20 Item_20 9.333 15 0.000 0.859
#> 21 baditem 11.473 13 0.000 0.571
itemplot(x2, 21)
anova(x, x2)
#> AIC SABIC HQ BIC logLik X2 df p
#> x 49477.85 49579.65 49564.23 49713.09 -24696.93
#> x2 49214.97 49321.62 49305.46 49461.41 -24563.49 266.88 2 0
#------------------------------------------------------------
#similar example to Kang and Chen 2007
a <- matrix(c(.8,.4,.7, .8, .4, .7, 1, 1, 1, 1))
d <- matrix(rep(c(2.0,0.0,-1,-1.5),10), ncol=4, byrow=TRUE)
dat <- simdata(a,d,2000, itemtype = rep('graded', 10))
head(dat)
#> Item_1 Item_2 Item_3 Item_4 Item_5 Item_6 Item_7 Item_8 Item_9 Item_10
#> [1,] 4 0 1 4 1 4 3 2 1 4
#> [2,] 2 1 1 3 2 4 2 1 4 2
#> [3,] 2 2 3 0 0 0 4 4 4 4
#> [4,] 1 2 4 1 2 2 2 2 0 4
#> [5,] 1 3 0 2 1 4 4 4 3 1
#> [6,] 1 3 3 2 3 1 1 2 0 1
mod <- mirt(dat, 1)
#>
Iteration: 1, Log-Lik: -29588.164, Max-Change: 0.30451
Iteration: 2, Log-Lik: -29489.581, Max-Change: 0.11473
Iteration: 3, Log-Lik: -29475.859, Max-Change: 0.04424
Iteration: 4, Log-Lik: -29473.518, Max-Change: 0.01540
Iteration: 5, Log-Lik: -29473.111, Max-Change: 0.00809
Iteration: 6, Log-Lik: -29472.983, Max-Change: 0.00372
Iteration: 7, Log-Lik: -29472.964, Max-Change: 0.00210
Iteration: 8, Log-Lik: -29472.957, Max-Change: 0.00138
Iteration: 9, Log-Lik: -29472.956, Max-Change: 0.00098
Iteration: 10, Log-Lik: -29472.954, Max-Change: 0.00091
Iteration: 11, Log-Lik: -29472.953, Max-Change: 0.00013
Iteration: 12, Log-Lik: -29472.953, Max-Change: 0.00028
Iteration: 13, Log-Lik: -29472.953, Max-Change: 0.00018
Iteration: 14, Log-Lik: -29472.953, Max-Change: 0.00008
itemfit(mod)
#> item S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
#> 1 Item_1 143.021 103 0.014 0.006
#> 2 Item_2 85.589 109 0.000 0.953
#> 3 Item_3 110.835 105 0.005 0.330
#> 4 Item_4 121.145 103 0.009 0.107
#> 5 Item_5 107.875 111 0.000 0.566
#> 6 Item_6 93.905 102 0.000 0.704
#> 7 Item_7 113.544 99 0.009 0.151
#> 8 Item_8 100.858 99 0.003 0.429
#> 9 Item_9 83.214 98 0.000 0.857
#> 10 Item_10 104.402 99 0.005 0.336
itemfit(mod, 'X2') # less useful given inflated Type I error rates
#> item X2 df.X2 RMSEA.X2 p.X2
#> 1 Item_1 93.925 35 0.029 0.000
#> 2 Item_2 43.667 35 0.011 0.149
#> 3 Item_3 81.354 35 0.026 0.000
#> 4 Item_4 90.490 35 0.028 0.000
#> 5 Item_5 36.169 35 0.004 0.414
#> 6 Item_6 97.559 35 0.030 0.000
#> 7 Item_7 129.917 35 0.037 0.000
#> 8 Item_8 130.263 35 0.037 0.000
#> 9 Item_9 141.266 35 0.039 0.000
#> 10 Item_10 117.650 35 0.034 0.000
itemfit(mod, empirical.plot = 1)
itemfit(mod, empirical.plot = 1, empirical.poly.collapse=TRUE)
# collapsed tables (see mincell.X2) for X2 and G2
itemfit(mod, 'X2', return.tables = TRUE, which.items = 1)
#> $`theta = -1.4692`
#> Observed Expected z.Residual
#> cat_0 98 65.020718 4.0899247
#> cat_1 76 88.468143 -1.3255872
#> cat_2 12 26.774054 -2.8552400
#> cat_3 7 6.656543 0.1331215
#> cat_4 7 13.080542 -1.6812388
#>
#> $`theta = -0.8519`
#> Observed Expected z.Residual
#> cat_0 65 45.508938 2.8892636
#> cat_1 87 88.222767 -0.1301827
#> cat_2 29 35.896766 -1.1511126
#> cat_3 6 9.834511 -1.2227385
#> cat_4 13 20.537019 -1.6631481
#>
#> $`theta = -0.5476`
#> Observed Expected z.Residual
#> cat_0 35 37.54994 -0.4161270
#> cat_1 97 85.03642 1.2973549
#> cat_2 34 40.25662 -0.9861003
#> cat_3 5 11.70198 -1.9591763
#> cat_4 29 25.45504 0.7026267
#>
#> $`theta = -0.3145`
#> Observed Expected z.Residual
#> cat_0 27 32.21053 -0.9180857
#> cat_1 91 81.40120 1.0639013
#> cat_2 40 43.28252 -0.4989437
#> cat_3 15 13.23174 0.4861130
#> cat_4 27 29.87400 -0.5258232
#>
#> $`theta = -0.0993`
#> Observed Expected z.Residual
#> cat_0 23 27.84181 -0.9176111
#> cat_1 73 77.27754 -0.4865943
#> cat_2 60 45.69537 2.1161218
#> cat_3 12 14.68759 -0.7012737
#> cat_4 32 34.49770 -0.4252515
#>
#> $`theta = 0.1116`
#> Observed Expected z.Residual
#> cat_0 23 24.05321 -0.21474860
#> cat_1 73 72.66989 0.03872444
#> cat_2 50 47.59720 0.34827910
#> cat_3 16 16.11821 -0.02944308
#> cat_4 38 39.56149 -0.24825845
#>
#> $`theta = 0.3293`
#> Observed Expected z.Residual
#> cat_0 18 20.61824 -0.576612407
#> cat_1 69 67.48888 0.183942450
#> cat_2 49 48.98546 0.002077898
#> cat_3 24 17.55297 1.538809131
#> cat_4 40 45.35445 -0.795069543
#>
#> $`theta = 0.5568`
#> Observed Expected z.Residual
#> cat_0 6 17.49926 -2.74890777
#> cat_1 60 61.79242 -0.22801909
#> cat_2 56 49.73600 0.88821096
#> cat_3 19 18.94936 0.01163316
#> cat_4 59 52.02296 0.96732827
#>
#> $`theta = 0.8512`
#> Observed Expected z.Residual
#> cat_0 7 14.09896 -1.8906068
#> cat_1 45 54.28449 -1.2601441
#> cat_2 48 49.58044 -0.2244513
#> cat_3 26 20.49440 1.2161493
#> cat_4 74 61.54171 1.5880848
#>
#> $`theta = 1.4358`
#> Observed Expected z.Residual
#> cat_0 6 9.087564 -1.0242177
#> cat_1 25 40.094053 -2.3837784
#> cat_2 44 45.694100 -0.2506161
#> cat_3 21 22.208083 -0.2563547
#> cat_4 104 82.916200 2.3154169
#>
mod2 <- mirt(dat, 1, 'Rasch')
#>
Iteration: 1, Log-Lik: -30695.766, Max-Change: 0.71655
Iteration: 2, Log-Lik: -29726.980, Max-Change: 0.07848
Iteration: 3, Log-Lik: -29643.637, Max-Change: 0.05551
Iteration: 4, Log-Lik: -29611.208, Max-Change: 0.03577
Iteration: 5, Log-Lik: -29597.409, Max-Change: 0.01191
Iteration: 6, Log-Lik: -29591.508, Max-Change: 0.01423
Iteration: 7, Log-Lik: -29588.526, Max-Change: 0.00502
Iteration: 8, Log-Lik: -29587.133, Max-Change: 0.00323
Iteration: 9, Log-Lik: -29586.467, Max-Change: 0.00498
Iteration: 10, Log-Lik: -29586.046, Max-Change: 0.00380
Iteration: 11, Log-Lik: -29585.825, Max-Change: 0.00147
Iteration: 12, Log-Lik: -29585.739, Max-Change: 0.00132
Iteration: 13, Log-Lik: -29585.690, Max-Change: 0.00062
Iteration: 14, Log-Lik: -29585.666, Max-Change: 0.00049
Iteration: 15, Log-Lik: -29585.655, Max-Change: 0.00039
Iteration: 16, Log-Lik: -29585.651, Max-Change: 0.00095
Iteration: 17, Log-Lik: -29585.646, Max-Change: 0.00021
Iteration: 18, Log-Lik: -29585.645, Max-Change: 0.00015
Iteration: 19, Log-Lik: -29585.644, Max-Change: 0.00025
Iteration: 20, Log-Lik: -29585.644, Max-Change: 0.00004
itemfit(mod2, 'infit', method = 'ML')
#> item outfit z.outfit infit z.infit
#> 1 Item_1 0.959 -1.407 0.946 -2.141
#> 2 Item_2 1.098 3.226 1.074 2.791
#> 3 Item_3 0.962 -1.326 0.961 -1.575
#> 4 Item_4 0.946 -1.867 0.932 -2.704
#> 5 Item_5 1.121 3.943 1.094 3.496
#> 6 Item_6 0.917 -2.902 0.917 -3.296
#> 7 Item_7 0.864 -4.829 0.881 -4.899
#> 8 Item_8 0.873 -4.656 0.879 -5.025
#> 9 Item_9 0.876 -4.467 0.887 -4.696
#> 10 Item_10 0.883 -4.255 0.892 -4.519
# massive list of tables for S-X2
tables <- itemfit(mod, return.tables = TRUE)
#observed and expected total score patterns for item 1 (post collapsing)
tables$O[[1]]
#> 0 1 2 3 4
#> 4 12 3 0 0 0
#> 5 6 1 0 0 0
#> 6 8 17 1 0 0
#> 7 12 16 5 0 0
#> 8 22 8 0 0 0
#> 9 30 20 3 3 1
#> 10 19 27 9 1 7
#> 11 16 32 9 4 0
#> 12 17 40 17 1 5
#> 13 25 51 15 4 8
#> 14 22 44 14 3 8
#> 15 22 46 22 5 14
#> 16 14 41 32 8 24
#> 17 11 42 31 8 10
#> 18 11 57 25 7 25
#> 19 17 41 37 11 15
#> 20 11 35 28 12 26
#> 21 10 32 32 8 22
#> 22 5 32 18 15 29
#> 23 2 23 17 7 33
#> 24 2 30 22 9 23
#> 25 3 15 19 7 28
#> 26 3 12 16 11 23
#> 27 4 13 12 4 19
#> 28 3 6 9 5 18
#> 29 3 6 2 17 0
#> 30 3 10 2 21 0
#> 31 1 2 1 13 0
#> 32 1 4 5 6 0
#> 33 3 4 4 5 0
#> 34 1 3 1 11 0
#> 35 2 6 0 0 0
#> 36 2 6 0 0 0
tables$E[[1]]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 11.023325 3.976675 NA NA NA
#> [2,] 4.102366 2.897634 NA NA NA
#> [3,] 13.498246 10.610902 1.890852 NA NA
#> [4,] 15.184304 14.492730 3.322965 NA NA
#> [5,] 12.249443 13.799872 3.950685 NA NA
#> [6,] 20.682046 26.920288 6.923239 1.157706 1.316720
#> [7,] 20.332439 30.097150 8.830861 1.641385 2.098165
#> [8,] 17.517441 29.135716 9.625822 1.958940 2.762080
#> [9,] 20.446921 37.829468 13.940499 3.072836 4.710276
#> [10,] 23.437800 47.811327 19.504466 4.622495 7.623912
#> [11,] 18.436615 41.167389 18.467918 4.679944 8.248134
#> [12,] 19.651227 47.756678 23.431406 6.318731 11.841957
#> [13,] 19.076413 50.199010 26.830125 7.670547 15.223905
#> [14,] 14.528071 41.195659 23.904020 7.227464 15.144786
#> [15,] 15.799085 48.086720 30.192468 9.636968 21.284760
#> [16,] 13.544069 44.116503 29.895563 10.055666 23.388198
#> [17,] 11.078348 38.500292 28.110440 9.952500 24.358420
#> [18,] 9.068050 33.529616 26.330542 9.809752 25.262041
#> [19,] 7.581094 29.780090 25.109651 9.840833 26.688332
#> [20,] 5.489874 22.880802 20.702905 8.532437 24.393982
#> [21,] 5.010515 22.116677 21.467501 9.311108 28.094199
#> [22,] 3.626463 16.954931 17.637672 8.059013 25.721921
#> [23,] 2.805419 13.907880 15.517623 7.472196 25.296882
#> [24,] 1.907017 10.013898 12.004816 6.104317 21.969952
#> [25,] 1.261885 7.039995 9.063539 4.881523 18.753058
#> [26,] 4.944641 5.875443 3.354204 13.825711 NA
#> [27,] 5.454637 7.095249 4.313860 19.136254 NA
#> [28,] 2.176787 3.093386 2.019117 9.710709 NA
#> [29,] 1.685470 2.659415 1.858932 9.796184 NA
#> [30,] 1.334541 2.384692 1.813140 10.467628 NA
#> [31,] 1.040082 2.042086 1.733955 11.183876 NA
#> [32,] 2.050562 5.949438 NA NA NA
#> [33,] 1.369048 6.630952 NA NA NA
# can also select specific items
# itemfit(mod, return.tables = TRUE, which.items=1)
# fit stats with missing data (run in parallel using all cores)
dat[sample(1:prod(dim(dat)), 100)] <- NA
raschfit <- mirt(dat, 1, itemtype='Rasch')
#>
Iteration: 1, Log-Lik: -30540.692, Max-Change: 0.71626
Iteration: 2, Log-Lik: -29576.074, Max-Change: 0.07969
Iteration: 3, Log-Lik: -29491.591, Max-Change: 0.06442
Iteration: 4, Log-Lik: -29459.533, Max-Change: 0.03044
Iteration: 5, Log-Lik: -29446.023, Max-Change: 0.01942
Iteration: 6, Log-Lik: -29439.988, Max-Change: 0.01013
Iteration: 7, Log-Lik: -29437.156, Max-Change: 0.00491
Iteration: 8, Log-Lik: -29435.814, Max-Change: 0.00595
Iteration: 9, Log-Lik: -29435.088, Max-Change: 0.00299
Iteration: 10, Log-Lik: -29434.756, Max-Change: 0.00360
Iteration: 11, Log-Lik: -29434.539, Max-Change: 0.00274
Iteration: 12, Log-Lik: -29434.429, Max-Change: 0.00208
Iteration: 13, Log-Lik: -29434.362, Max-Change: 0.00105
Iteration: 14, Log-Lik: -29434.332, Max-Change: 0.00051
Iteration: 15, Log-Lik: -29434.319, Max-Change: 0.00039
Iteration: 16, Log-Lik: -29434.314, Max-Change: 0.00109
Iteration: 17, Log-Lik: -29434.308, Max-Change: 0.00019
Iteration: 18, Log-Lik: -29434.306, Max-Change: 0.00020
Iteration: 19, Log-Lik: -29434.306, Max-Change: 0.00077
Iteration: 20, Log-Lik: -29434.305, Max-Change: 0.00005
# use only valid data by removing rows with missing terms
itemfit(raschfit, c('S_X2', 'infit'), na.rm = TRUE)
#> Sample size after row-wise response data removal: 1901
#> item outfit z.outfit infit z.infit S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
#> 1 Item_1 0.906 -3.626 0.911 -3.660 155.053 102 0.017 0.001
#> 2 Item_2 0.997 -0.107 1.004 0.146 146.662 103 0.015 0.003
#> 3 Item_3 0.917 -3.282 0.919 -3.385 114.783 103 0.008 0.201
#> 4 Item_4 0.884 -4.448 0.896 -4.291 121.470 102 0.010 0.092
#> 5 Item_5 1.006 0.235 1.009 0.349 204.451 103 0.023 0.000
#> 6 Item_6 0.880 -4.515 0.895 -4.216 93.810 103 0.000 0.730
#> 7 Item_7 0.852 -5.852 0.866 -5.666 129.878 102 0.012 0.033
#> 8 Item_8 0.862 -5.635 0.870 -5.607 120.879 102 0.010 0.098
#> 9 Item_9 0.855 -5.841 0.867 -5.722 96.812 102 0.000 0.627
#> 10 Item_10 0.852 -6.127 0.863 -6.019 111.851 101 0.008 0.216
# note that X2, G2, PV-Q1, and X2* do not require complete datasets
thetas <- fscores(raschfit, method = 'ML') # save for faster computations
itemfit(raschfit, c('X2', 'G2'), Theta=thetas)
#> item X2 df.X2 RMSEA.X2 p.X2 G2 df.G2 RMSEA.G2 p.G2
#> 1 Item_1 56.082 36 0.017 0.018 57.138 36 0.017 0.014
#> 2 Item_2 72.433 36 0.023 0.000 68.605 36 0.021 0.001
#> 3 Item_3 51.674 36 0.015 0.044 52.944 36 0.015 0.034
#> 4 Item_4 42.209 36 0.009 0.220 40.864 36 0.008 0.265
#> 5 Item_5 108.433 36 0.032 0.000 93.285 36 0.028 0.000
#> 6 Item_6 37.478 36 0.005 0.401 39.799 36 0.007 0.305
#> 7 Item_7 61.895 36 0.019 0.005 68.502 35 0.022 0.001
#> 8 Item_8 56.125 36 0.017 0.017 59.579 36 0.018 0.008
#> 9 Item_9 66.332 36 0.021 0.002 69.041 36 0.021 0.001
#> 10 Item_10 47.281 36 0.013 0.099 51.188 36 0.015 0.048
itemfit(raschfit, empirical.plot=1, Theta=thetas)
itemfit(raschfit, 'X2', return.tables=TRUE, which.items=1, Theta=thetas)
#> $`theta = -0.9751`
#> Observed Expected z.Residual
#> cat_0 96 89.203274 0.7196302
#> cat_1 81 87.319279 -0.6762581
#> cat_2 14 20.552190 -1.4452982
#> cat_3 5 2.584993 1.5020654
#> cat_4 6 2.340264 2.3923098
#>
#> $`theta = -0.4747`
#> Observed Expected z.Residual
#> cat_0 52 55.810605 -0.5100768
#> cat_1 98 90.111135 0.8310464
#> cat_2 34 34.983142 -0.1662214
#> cat_3 6 7.257589 -0.4668126
#> cat_4 9 10.837528 -0.5581731
#>
#> $`theta = -0.2825`
#> Observed Expected z.Residual
#> cat_0 45 43.95405 0.1577652
#> cat_1 95 86.00287 0.9701688
#> cat_2 34 40.46184 -1.0158593
#> cat_3 9 10.17259 -0.3676465
#> cat_4 16 18.40864 -0.5613857
#>
#> $`theta = -0.151`
#> Observed Expected z.Residual
#> cat_0 33 36.30398 -0.5483529
#> cat_1 74 81.02032 -0.7799379
#> cat_2 45 43.47628 0.2310896
#> cat_3 11 12.46706 -0.4154939
#> cat_4 36 25.73237 2.0240925
#>
#> $`theta = -0.0334`
#> Observed Expected z.Residual
#> cat_0 19 29.93222 -1.9981990
#> cat_1 90 75.13532 1.7148795
#> cat_2 48 45.34903 0.3936594
#> cat_3 12 14.62666 -0.6868010
#> cat_4 30 33.95678 -0.6790139
#>
#> $`theta = 0.0651`
#> Observed Expected z.Residual
#> cat_0 23 25.02007 -0.4038516
#> cat_1 62 69.30476 -0.8774538
#> cat_2 63 46.15898 2.4787928
#> cat_3 17 16.42868 0.1409549
#> cat_4 34 42.08752 -1.2466326
#>
#> $`theta = 0.1642`
#> Observed Expected z.Residual
#> cat_0 19 20.52933 -0.33753058
#> cat_1 63 62.79341 0.02607073
#> cat_2 45 46.18193 -0.17392181
#> cat_3 23 18.15027 1.13834925
#> cat_4 49 51.34506 -0.32726919
#>
#> $`theta = 0.2767`
#> Observed Expected z.Residual
#> cat_0 4 16.04548 -3.007099726
#> cat_1 66 54.92379 1.494551513
#> cat_2 47 45.20504 0.266969704
#> cat_3 19 19.88229 -0.197868736
#> cat_4 63 62.94340 0.007134114
#>
#> $`theta = 0.4164`
#> Observed Expected z.Residual
#> cat_0 11 11.43297 -0.1280506
#> cat_1 44 45.00327 -0.1495531
#> cat_2 48 42.59391 0.8283409
#> cat_3 26 21.54290 0.9602843
#> cat_4 70 78.42694 -0.9515622
#>
#> $`theta = 0.7405`
#> Observed Expected z.Residual
#> cat_0 4 4.631286 -0.2933428
#> cat_1 23 25.205901 -0.4393746
#> cat_2 43 32.985379 1.7437081
#> cat_3 22 23.067149 -0.2221919
#> cat_4 110 116.110285 -0.5670562
#>
# }