BEMM.3PL {IRTBEMM} | R Documentation |
Calibrating 3PL model via Bayesian Expectation-Maximization-Maximization (BEMM) algorithm.
Description
This function can estimate the item parameters of the 3PL model via Bayesian Expectation-Maximization-Maximization (BEMM) algorithm proposed by Guo & Zheng(2019) and Zheng, Meng, Guo, & Liu (2018). Both Bayesan modal estimates and maximum likelihood estimates are available. In addition, the examinees' ability and a few model fits information can be also obtained through this function.
Usage
BEMM.3PL(data, PriorA = c(0, 0.25), PriorB = c(0, 4), PriorC = c(4, 16),
InitialA = NA, InitialB = NA, InitialC = NA,
Tol = 0.0001, max.ECycle = 2000L, max.MCycle = 100L,
n.decimal = 3L, n.Quadpts = 31L, Theta.lim = c(-6, 6),
Missing = -9, ParConstraint = FALSE, BiasSE=FALSE)
Arguments
data |
A |
PriorA |
The user specified logarithmic normal distribution prior for item discrimation (a) parameters in the 3PL and 4PL models. Can be:
|
PriorB |
The user specified normal distribution prior for item difficulty (b) parameters in the 3PL and 4PL models. Can be:
|
PriorC |
The user specified Beta(x,y) distribution prior for item guessing (c) parameters in the 3PL and 4PL models. Can be:
|
InitialA |
The user specified starting values for item discrimation (a) parameters in the 3PL and 4PL models. Can be:
|
InitialB |
The user specified starting values for item difficulty (b) parameters in the 3PL and 4PL models. Can be:
|
InitialC |
The user specified starting values for item guessing (c) parameters in the 3PL and 4PL models. Can be:
|
Tol |
A single number ( |
max.ECycle |
A single |
max.MCycle |
A single |
n.Quadpts |
A single |
n.decimal |
A single |
Theta.lim |
A |
Missing |
A single number ( |
ParConstraint |
A logical value to indicate whether estimates parametes in a reasonable range; default is FALSE. If ParConstraint=TRUE: a in [0.001, 6], b in [-6, 6], c in [0.0001, 0.5]. |
BiasSE |
A logical value to determine whether directly estimating SEs from inversed Hession matrix rather than USEM method, default is FALSE. |
Details
Three parameter logistic (3PL) model proposed by Birnbaum(1968):
P(x = 1|\theta, a, b, c) = c + (1 - c) / (1 + exp(-D * a * (\theta - b))),
where x=1 is the correct response, theta is examinne's ability; a, b and c are the item discrimination, difficulty and guessing parameter, respectively; D is the scaling constant 1.702. These parameter labels are capitalized in program for emphasis.
Value
This function will return a list includes following:
- Est.ItemPars
A
dataframe
consists of the estimates of a, b and c parameters and corresponding estimated standard errors.- Est.Theta
A
dataframe
consists of the estimates of theta and corresponding estimated standard errors (EAP method).- Loglikelihood
The loglikelihood.
- Iteration
The number of iterations.
- EM.Map
The parameter estimation history of iterations.
- fits.test
The model fits information includes G2 test, AIC, BIC and RMSEA.
- Elapsed.time
The running time of the program.
- InitialValues
The initial values of item parameters.
References
Birnbaum, A. (1968). Some latent trait models and their use in inferring an examinee's ability. In F. M. Lord & M. R. Novick (Eds.), Statistical theories of mental test scores (pp. 395-479). MA: Adison-Wesley.
Guo, S., & Zheng, C. (2019). The Bayesian Expectation-Maximization-Maximization for the 3PLM. Frontiers in Psychology, 10(1175), 1-11. doi:10.3389/fpsyg.2019.01175
Zheng, C., Meng, X., Guo, S., & Liu, Z. (2018). Expectation-Maximization-Maximization: A feasible MLE algorithm for the three-parameter logistic model based on a mixture modeling reformulation. Frontiers in Psychology, 8(2302), 1-10. doi:10.3389/fpsyg.2017.02302
Examples
###Example: A brief simulation study###
#generate true values and response matrix
set.seed(10)
library(IRTBEMM)
I=500 #set the number of examinees is 500
J=10 #set the number of items is 10
true.a=runif(J,0.4,2) #simulate true discrimination parameters
true.b=rnorm(J,0,1) #simulate true difficulty parameters
true.c=rbeta(J,2,8) #simulate true guessing parameters
true.th=rnorm(I,0,1) #simulate true theta parameters
true.par=list(A=true.a, B=true.b, C=true.c) #make a list
response=matrix(NA,I,J) #Create a array to save response data
for (i in 1:I){
#calucate the probability of 3PL
P=Prob.model(X=true.th[i], Model='3PL', Par.est0=true.par, D=1.702)
response[i,]=rbinom(J,1,P) #simulate the response
}
#To save example running time, we set the Tol to 0.1
#Obtain the Bayesian modal estimation (BME) using default priors
#Estimate model via BEMM algorithm
bme.res=BEMM.3PL(response, Tol=0.1)
bme.res$Est.ItemPars #show item estimates
bme.res$Est.Theta #show ability estimates
bme.res$Loglikelihood #show log-likelihood
bme.res$EM.Map #show EM iteration history
bme.res$fits.test #show model fits information
#Obtain the maximum likelihood estimation (MLE) by setting Prior=NA
#Estimate model via EMM algorithm
mle.res=BEMM.3PL(response, PriorA=NA, PriorB=NA, PriorC=NA, Tol=0.1)
mle.res$Est.ItemPars #show item estimates
mle.res$Est.Theta #show ability estimates
mle.res$Loglikelihood #show log-likelihood
mle.res$EM.Map #show EM iteration history
mle.res$fits.test #show model fits information