Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 5
)
## ----eval=FALSE---------------------------------------------------------------
# library(ForceChoice)
#
# # Simulate binary response data
# sim <- sim.data.MIRT(N = 20, I = 6, D = 2, model = "2PL")
#
# # Fit via iStEM
# fit <- fit.MIRT(sim$data, model = "2PL", D = 2,
# method = "iStEM",
# control.method = list(
# vis = FALSE, seed = 123,
# M = 2, B = 2, burnin.maxitr = 2,
# maxitr = 3, eps1 = 10, eps2 = 10,
# estimate.se = FALSE))
#
# # Examine results
# print(fit)
# summary(fit)
#
# # Item parameter estimates (first 6 items)
# head(coef(fit))
#
# # Factor correlation matrix
# fit$Corr$est
#
# # Trait recovery
# diag(cor(fit$theta$est, sim$theta))
## ----eval=FALSE---------------------------------------------------------------
# # Compute comprehensive fit indices
# gof <- get.fit.index(fit)
#
# # Summary of fit indices
# summary(gof)
#
# # Extract specific indices
# gof$M2 # Limited-information M2 statistic
# gof$RMSEA # RMSEA with 90% CI
# gof$CFI # Comparative Fit Index
# gof$TLI # Tucker-Lewis Index
# gof$SRMSR # Standardized Root Mean Square Residual
# gof$AIC # Akaike Information Criterion
# gof$BIC # Bayesian Information Criterion
## ----eval=FALSE---------------------------------------------------------------
# # Simulate forced-choice ranking data
# sim <- sim.data.FCMIRT(N.person = 20, N.block = 3, I.block = 2,
# D = 2, model = "2PL", fc.type = "RANK")
#
# # The data contains ranking strings
# head(sim$data)
#
# # Fit: block.items and fc.type are auto-detected
# fit <- fit.FCMIRT(sim$data, model = "2PL", D = 2,
# method = "iStEM",
# control.method = list(
# vis = FALSE, seed = 123,
# M = 2, B = 2, burnin.maxitr = 2,
# maxitr = 3, eps1 = 10, eps2 = 10,
# estimate.se = FALSE))
#
# # Trait recovery
# cor(fit$theta$est, sim$theta)
#
# # Goodness-of-fit (uses nominal binary expansion)
# gof <- get.fit.index(fit)
# summary(gof)
## ----eval=FALSE---------------------------------------------------------------
# sim <- sim.data.TIRT(N.person = 20, N.block = 3, I.block = 2,
# D = 2, fc.type = "RANK")
#
# fit <- fit.TIRT(sim$data, Q.matrix = sim$Q.matrix,
# block.items = sim$block.items,
# method = "iStEM",
# control.method = list(
# vis = FALSE, seed = 123,
# M = 2, B = 2, burnin.maxitr = 2,
# maxitr = 3, eps1 = 10, eps2 = 10,
# estimate.se = FALSE))
#
# # Structural parameters: loadings and uniquenesses
# head(coef(fit))
#
# # Gamma matrix (pairwise intercepts)
# fit$gamma.matrix$est[1:5, 1:5]
## ----eval=FALSE---------------------------------------------------------------
# sim <- sim.data.FCDCM(N.person = 20, N.block = 3, D = 2,
# dcm.type = "DINA")
#
# fit <- fit.FCDCM(sim$data, Q.matrix = sim$Q.matrix,
# block.items = sim$block.items,
# method = "iStEM",
# control.method = list(
# vis = FALSE, seed = 123,
# M = 2, B = 2, burnin.maxitr = 2,
# maxitr = 3, eps1 = 10, eps2 = 10,
# estimate.se = FALSE))
#
# # Posterior attribute mastery probabilities
# head(fit$alpha$prob)
#
# # Attribute mastery proportions
# colMeans(fit$alpha$prob > 0.5)
#
# # Higher-order IRT parameters
# fit$delta$est
## ----eval=FALSE---------------------------------------------------------------
# sim <- sim.data.FCGDINA(N.person = 20, N.block = 2, I.block = 2,
# D = 2, model = "GDINA", fc.type = "RANK")
#
# fit <- fit.FCGDINA(sim$data, Q.matrix = sim$Q.matrix,
# block.items = sim$block.items, model = "GDINA",
# fc.type = sim$fc.type, method = "EM",
# control.method = list(vis = FALSE, seed = 123,
# maxitr = 2,
# estimate.se = FALSE))
#
# # Posterior attribute mastery probabilities
# head(fit$alpha$est)
#
# # CDM item-parameter estimates
# coef(fit, type = "delta")
## ----eval=FALSE---------------------------------------------------------------
# sim <- sim.data.MGPCM(N = 20, I = 6, D = 2, length.poly = 4)
#
# fit <- fit.MGPCM(sim$data, D = 2, method = "iStEM",
# control.method = list(
# vis = FALSE, seed = 123,
# M = 2, B = 2, burnin.maxitr = 2,
# maxitr = 3, eps1 = 10, eps2 = 10,
# estimate.se = FALSE))
#
# # Category threshold parameters
# coef(fit)
## ----eval=FALSE---------------------------------------------------------------
# sim <- sim.data.MGGUM(N = 20, I = 6, D = 2, length.poly = 4)
#
# fit <- fit.MGGUM(sim$data, D = 2, method = "iStEM",
# control.method = list(
# vis = FALSE, seed = 123,
# M = 2, B = 2, burnin.maxitr = 2,
# maxitr = 3, eps1 = 10, eps2 = 10,
# estimate.se = FALSE))
#
# coef(fit)
## ----eval=FALSE---------------------------------------------------------------
# fit_rot <- rotate.MIRT(fit, rotate = "oblimin")
#
# # Compare original and rotated loadings
# head(coef(fit))
# head(coef(fit_rot))
## ----eval=FALSE---------------------------------------------------------------
# # Item characteristic curves (ICC)
# plot(fit, type = "icc", items = 1:8)
#
# # Person parameter distributions
# plot(fit, type = "theta")
#
# # iStEM convergence trace
# plot(fit, type = "trace")
## ----eval=FALSE---------------------------------------------------------------
# fit <- fit.MIRT(data, model = "2PL", D = 2, method = "iStEM",
# control.method = list(
# vis = FALSE,
# seed = 123, # Reproducibility
# M = 2, B = 2, burnin.maxitr = 2,
# maxitr = 3, eps1 = 10, eps2 = 10,
# estimate.se = FALSE))
## ----eval=FALSE---------------------------------------------------------------
# # stan code, long time
# fit <- fit.MIRT(data, model = "2PL", D = 2, method = "stan",
# control.method = list(chains = 1, iter = 200,
# warmup = 100, cores = 1,
# seed = 123))
## ----eval=FALSE---------------------------------------------------------------
# fit <- fit.MIRT(data, model = "2PL", D = 2, method = "iStEM",
# control.method = list(
# seed = 123,
# M = 2, # Burn-in batches for convergence
# B = 2, # Iterations per batch
# burnin.maxitr = 2,
# maxitr = 3,
# eps1 = 1.5, # Geweke convergence threshold
# eps2 = 0.4 # MC error tolerance
# ))
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.