Type: | Package |
Title: | Joint Maximum Likelihood Estimation for High-Dimensional Item Factor Analysis |
Version: | 1.4.0 |
Date: | 2020-06-02 |
Author: | Siliang Zhang [aut, cre], Yunxiao Chen [aut], Xiaoou Li [aut] |
Maintainer: | Siliang Zhang <zhangsiliang123@gmail.com> |
Description: | Provides constrained joint maximum likelihood estimation algorithms for item factor analysis (IFA) based on multidimensional item response theory models. So far, we provide functions for exploratory and confirmatory IFA based on the multidimensional two parameter logistic (M2PL) model for binary response data. Comparing with traditional estimation methods for IFA, the methods implemented in this package scale better to data with large numbers of respondents, items, and latent factors. The computation is facilitated by multiprocessing 'OpenMP' API. For more information, please refer to: 1. Chen, Y., Li, X., & Zhang, S. (2018). Joint Maximum Likelihood Estimation for High-Dimensional Exploratory Item Factor Analysis. Psychometrika, 1-23. <doi:10.1007/s11336-018-9646-5>; 2. Chen, Y., Li, X., & Zhang, S. (2019). Structured Latent Factor Analysis for Large-scale Data: Identifiability, Estimability, and Their Implications. Journal of the American Statistical Association, <doi:10.1080/01621459.2019.1635485>. |
License: | GPL-3 |
URL: | https://github.com/slzhang-fd/mirtjml |
BugReports: | https://github.com/slzhang-fd/mirtjml/issues |
LazyData: | true |
Depends: | R (≥ 3.1) |
Imports: | Rcpp (≥ 0.12.17), stats, GPArotation |
LinkingTo: | Rcpp, RcppArmadillo |
RoxygenNote: | 7.1.0 |
Encoding: | UTF-8 |
NeedsCompilation: | yes |
Packaged: | 2020-06-02 21:58:01 UTC; siliangzhang |
Repository: | CRAN |
Date/Publication: | 2020-06-08 21:40:11 UTC |
Simulated dataset for item factor analysis on the multidimensional two parameter logistic model.
Description
The dataset contains the simulation setting and the response data.
Usage
data_sim
Format
An object of class list
of length 9.
Get the number of threads that mirtjml is using
Description
Get the number of threads that mirtjml is using
Usage
getMIRTthreads()
Value
The number of threads that mirtjml is using
Constrained joint maximum likelihood estimation for confirmatory item factor analysis on the multidimensional two parameter logistic model.
Description
Constrained joint maximum likelihood estimation for confirmatory item factor analysis on the multidimensional two parameter logistic model.
Usage
mirtjml_conf(
response,
Q,
theta0,
A0,
d0,
cc = NULL,
tol = 5,
print_proc = TRUE
)
Arguments
response |
N by J matrix containing 0/1/NA responses, where N is the number of respondents, J is the number of items, and NA indicates a missing response. |
Q |
J by K matrix containing 0/1 entries, where J is the number of items and K is the number of latent traits. Each entry indicates whether an item measures a certain latent trait. |
theta0 |
N by K matrix, the initial value of latent factor scores for each respondent. |
A0 |
J by K matrix, the initial value of loading matrix, satisfying the constraints given by Q. |
d0 |
Length J vector, the initial value of intercept parameters. |
cc |
A constant constraining the magnitude of the norms of person and item parameter vectors. |
tol |
The tolerance for convergence with a default value 5. |
print_proc |
Print the precision during the estimation procedure with a default value TRUE. |
Value
The function returns a list with the following components:
- theta_hat
The estimated person parameter matrix.
- A_hat
The estimated loading parameter matrix
- d_hat
The estimated intercept parameters.
References
Chen, Y., Li, X., & Zhang, S. (2019). Structured Latent Factor Analysis for Large-scale Data: Identifiability, Estimability, and Their Implications. Journal of the American Statistical Association <doi: 10.1080/01621459.2019.1635485>.
Examples
# load a simulated dataset
attach(data_sim)
# generate starting values for the algorithm
A0 <- Q
d0 <- rep(0, J)
theta0 <- matrix(rnorm(N*K, 0, 1),N)
# use all available cores by running
# setMIRTthreads(-1)
# run the confirmatory analysis
res_conf <- mirtjml_conf(response, Q, theta0, A0, d0)
Constrained joint maximum likelihood estimation for exploratory item factor analysis on the multidimensional two parameter logistic model.
Description
Constrained joint maximum likelihood estimation for exploratory item factor analysis on the multidimensional two parameter logistic model.
Usage
mirtjml_expr(
response,
K,
theta0 = NULL,
A0 = NULL,
d0 = NULL,
cc = NULL,
tol = 5,
print_proc = TRUE
)
Arguments
response |
N by J matrix containing 0/1/NA responses, where N is the number of respondents, J is the number of items, and NA indicates a missing response. |
K |
The number of factors in exploratory item factor analysis. |
theta0 |
N by K matrix, the initial value of latent factor scores for each respondent. |
A0 |
J by K matrix, the initial value of loading matrix. |
d0 |
Length J vector, the initial value of intercept parameters. |
cc |
A constant constraining the magnitude of the norms of person and item parameter vectors. |
tol |
The tolerance for convergence with a default value 5. |
print_proc |
Print the precision during the estimation procedure with a default value TRUE. |
Value
The function returns a list with the following components:
- theta_hat
The estimated person parameter matrix.
- A_hat
The estimated loading parameter matrix
- d_hat
The estimated intercept parameters.
References
Chen, Y., Li, X., & Zhang, S. (2018). Joint Maximum Likelihood Estimation for High-Dimensional Exploratory Item Factor Analysis. Psychometrika, 1-23. <doi:10.1007/s11336-018-9646-5>;
Examples
# load a simulated dataset
attach(data_sim)
# use all available cores by running
# setMIRTthreads(-1)
# run the exploratory analysis
res <- mirtjml_expr(response, K)
Set the number of threads that mirtjml should use
Description
Set the number of threads that mirtjml should use
Usage
setMIRTthreads(threads = NULL)
Arguments
threads |
NULL (default) rereads environment variables. 0 means to use all logical CPUs available. Otherwise a number >= 1 |
Value
The number of threads that mirtjml was using previously