modid {D3mirt} | R Documentation |
D3mirt Model Identification
Description
modid()
performs model identification for descriptive multidimensional item response theory (DMIRT) models by indicating what items, from a set or scale, to use to identify the DMIRT model.
Usage
modid(
x,
efa = TRUE,
factors = 3,
lower = 0.5,
upper = 0.1,
fac.order = NULL,
itemtype = "graded",
method = "EM",
rotate = "oblimin",
...
)
Arguments
x |
A data frame with item data or item factor loadings that fit the multidimensional graded response model (MGRM) or the multidimensional 2-parameter logistic model (M2PL). |
efa |
Logical, if the data should be explored with exploratory factor analysis (EFA). The default is |
factors |
The number of factors for the exploratory factor analysis. The default is |
lower |
The lower bound for the item pool calculated using the standard deviation of scaled item factor loadings. The default is |
upper |
The upper bound for filtering absolute sum scores less than or equal to the indicated value. The default is |
fac.order |
Optional. Users can override the automatic sorting of factors by manually indicating factor order with integer values, e.g., |
itemtype |
The item model for the exploratory factor analysis. Note, only item type 'graded' (for the MGRM) or '2PL' (for the M2PL) are allowed. The default is |
method |
A string indicating what integration algorithm to use for the EFA. The default is |
rotate |
A string indicating what rotation method to use for the EFA. The default is |
... |
Any additional arguments passed to mirt(). |
Details
Before performing DMIRT analysis, it is necessary to identify the compensatory model (Reckase, 2009). For a three-dimensional model, this implies that two items must be chosen and their loadings restricted as follows. The first item is fixed not to load on the second and third axes (y and z), while the second item is fixed not to load on the third axis (z). If this can be achieved, it is possible to create a three-dimensional DMIRT model that reflects the data correctly.
The modid()
function can help by suggesting what items to use for the latter purpose.
The function does this by first performing an EFA on the data and then selecting the strongest loading items, following the order of strength of the factors and following the statistical assumptions described above.
This orders the entire model so that the strongest loading item, from the strongest factor, always aligns with the x-axis, and the other items follow thereon.
Note that the modid()
function is not limited to three-dimensional analysis and can be used to identify a DMIRT model on any number of dimensions.
Because D3mirt
analysis is based on the M2PL and the MGRM, it is recommended to use multidimensional item response theory EFA methods, such as the EFA option in mirt::mirt (Chalmers, 2012) with itemtype = 'graded'
or '2PL'
, so that the EFA is performed with the proper item model.
For this reason, the mirt()
function is integrated into modid()
so that the user needs only to provide the data frame containing empirical item data in the first argument in the call to the function.
Accordingly, in the default mode (efa = TRUE
), using raw item data, the function performs an EFA with three factors as default (factors = 3
), and finishes with the model identification.
However, it is also possible to use the modid()
function without performing the EFA by setting efa = FALSE
if, for instance, a data frame with factor loadings is already available.
This allows the function to move directly to the model identification step.
Note, the EFA is only used to find model identification items that meet the necessary DMIRT model specification requirements. The EFA model itself is discarded after this step in the procedure and the user can, therefore, try different rotation methods and compare the results.
Running the function prints the number of items and factors together with the suggested model identification items to the console and the summary function is used to inspect the full results.
The latter includes data frames that hold all the model identification items (Item.1...Item.n
) selected by modid()
together with the items absolute sum score (ABS
), one frame for the sum of squares for factors sorted in descending order, and one frame for item factor loadings.
The order of the factors follows the model identification items so that item 1 comes from the strongest factor, item 2 from the second strongest factor, and so on.
Model identification items should preferably (a) have an absolute sum score of less than or equal to .10 and (b) have the highest factor loading scores on the factor of interest. Of these two criteria, (a) should be given the strongest weight in the selection decision. If these conditions cannot be met, the user is advised to proceed with caution since the loading scores, therefore, imply that an adequate orthogonal structure may not be empirically attainable. For more details on the model identification process and troubleshooting, please see the package vignette.
Value
A S3 object of class modid
with lists of items and absolute sum scores, sorted by the latter, and sum of squared factor loadings and frame with raw factor loadings with columns ordered on explained variance (high to low) or according to user settings.
Author(s)
Erik Forsberg
References
Chalmers, R., P. (2012). mirt: A Multidimensional Item Response Theory Package for the R Environment. Journal of Statistical Software, 48(6), 1-29.
https://doi.org/10.18637/jss.v048.i06
Reckase, M. D. (2009). Multidimensional Item Response Theory. Springer.
Examples
# Load data
data("anes0809offwaves")
x <- anes0809offwaves
x <- x[,3:22] # Remove columns for age and gender
# Identify the DMIRT model using a three-factor EFA
id <- modid(x)
# Call to summary
summary(id)
# Call to modid with increased lower and upper bound
# Assign loadings to a data frame and set efa to false
x <- id$loadings
id <- modid(x, efa = FALSE, lower = 1, upper = 1 )
summary(id)
# Override factor order by reversing columns in the original data frame
id <- modid(x, efa = FALSE, fac.order = c(3,2,1))
summary(id)