Nothing
## File Name: rasch_mml2_mstep_missing1.R
## File Version: 0.159
#*** M-step for missing data model
rasch_mml2_mstep_missing1 <- function( theta.k, n.ik, mitermax, conv1,
b, beta, delta.miss, pjk, numdiff.parm,
constraints, est.delta, min.beta, est_delta, fixed.a=NULL, est.a=NULL,
min.delta=-200, max.delta=200, irtmodel="missing1")
{
I <- length(b)
if (is.null(fixed.a)){
fixed.a <- rep(1,fixed.a)
}
if (is.null(est.a)){
est.a <- rep(0,I)
}
est_a <- sum(est.a) > 0
se.a <- rep(0,I)
h <- numdiff.parm
se.delta <- 0
miter <- 0
diffindex <- est.b <- 1:I
diffindex1 <- est.delta
prob_fun <- rasch_mml2_calcprob_missing1
max_incr_b <- 1
max_incr_beta <- 1
max_incr_delta <- 1
max_incr_a <- 1
miterchange <- 1000
a0 <- fixed.a
#---
while( ( miterchange > conv1 ) & ( miter < mitermax ) ){
#--- update b
b0 <- b
max.increment <- max_incr_b
entry <- "b"
diffindex <- est.b
args0 <- list(theta.k=theta.k, b=b, beta=beta, delta.miss=delta.miss,
pjk=pjk, fixed.a=fixed.a, irtmodel=irtmodel)
res <- rasch_mml2_mstep_one_step(args0=args0, prob_fun=prob_fun, entry=entry,
n.ik=n.ik, diffindex=diffindex, max.increment=max.increment,
numdiff.parm=numdiff.parm)
args0 <- res$args0
b <- args0[[entry]]
max_incr_b <- res$max_increment
se.b <- res$se
if ( ! is.null(constraints) ){
b[ constraints[,1] ] <- constraints[,2]
}
#--- update beta
beta0 <- beta
max.increment <- max_incr_beta
entry <- "beta"
diffindex <- est.b
res <- rasch_mml2_mstep_one_step(args0=args0, prob_fun=prob_fun, entry=entry,
n.ik=n.ik, diffindex=diffindex, max.increment=max.increment,
numdiff.parm=numdiff.parm)
args0 <- res$args0
beta <- sirt_squeeze(args0[[entry]], lower=min.beta)
max_incr_beta <- res$max_increment
se.beta <- res$se
#--- update delta
if (est_delta){
delta0 <- delta.miss
max.increment <- max_incr_delta
entry <- "delta.miss"
diffindex <- est.delta
res <- rasch_mml2_mstep_one_step(args0=args0, prob_fun=prob_fun, entry=entry,
n.ik=n.ik, diffindex=diffindex, max.increment=max.increment,
numdiff.parm=numdiff.parm)
args0 <- res$args0
delta.miss <- sirt_squeeze(args0[[entry]], lower=min.delta, upper=max.delta)
args0[[entry]] <- delta.miss
max_incr_delta <- res$max_increment
se.delta <- res$se
}
#--- update a
if (est_a){
a0 <- fixed.a
max.increment <- max_incr_a
entry <- "fixed.a"
diffindex <- est.a
res <- rasch_mml2_mstep_one_step(args0=args0, prob_fun=prob_fun, entry=entry,
n.ik=n.ik, diffindex=diffindex, max.increment=max.increment,
numdiff.parm=numdiff.parm)
args0 <- res$args0
fixed.a <- args0[[entry]]
max_incr_a <- res$max_increment
se.a <- res$se
}
miter <- miter + 1
}
a_change <- max(abs(fixed.a-a0))
#-- output
res <- list(b=b, se.b=b, beta=beta, se.beta=se.beta,
delta.miss=delta.miss, se.delta=se.delta, fixed.a=fixed.a,
max_incr_a=max_incr_a, se.a=se.a, a_change=a_change)
return(res)
}
.mstep.mml.missing1 <- rasch_mml2_mstep_missing1
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.