BEMM.3PL | R Documentation |
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.
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)
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. |
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.
This function will return a list includes following:
A dataframe
consists of the estimates of a, b and c parameters and corresponding estimated standard errors.
A dataframe
consists of the estimates of theta and corresponding estimated standard errors (EAP method).
The loglikelihood.
The number of iterations.
The parameter estimation history of iterations.
The model fits information includes G2 test, AIC, BIC and RMSEA.
The running time of the program.
The initial values of item parameters.
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. \Sexpr[results=rd]{tools:::Rd_expr_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. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.3389/fpsyg.2017.02302")}
###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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.