Nothing
## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(echo = TRUE)
## ----eval=FALSE---------------------------------------------------------------
# install.packages("mlpwr")
# install.packages("mirt")
## ----message=FALSE, warning=FALSE, results='hide'-----------------------------
library(mlpwr)
library(mirt)
## ----message=FALSE, warning=FALSE, results='hide'-----------------------------
# Defining intercepts and slopes
a <- c(1.04, 1.2, 1.19, 0.61, 1.31, 0.83, 1.46, 1.27, 0.51, 0.81)
d <- c(0.06, -1.79, -1.15, 0.88, -0.2, -1.87, 1.23, -0.08, -0.71, 0.6)
# Setting number of observations
N <- 100
# Itemtype
itemtype <- "2PL"
## ----echo=TRUE----------------------------------------------------------------
# Simulate Data
sim_data <- simdata(a = a, d = d, N = N, itemtype = itemtype)
# First 5 rows if simulated data
sim_data[1:5,]
## ----message=FALSE, warning=FALSE, results='hide'-----------------------------
# Fit 2PL model
mod <- mirt(sim_data)
# Rasch contsraint for items 1-4
constrained <- "F = 1-4
CONSTRAIN = (1-4, a1)"
# Fit constrained model
mod_constrained <- mirt(sim_data, constrained) # Fit 2PL with equal item discrimination
# Compare model fit
res <- anova(mod_constrained, mod)
## ----echo=TRUE----------------------------------------------------------------
res$p[2] < 0.01 # extract significance
## ----message=FALSE, warning=FALSE, results='hide'-----------------------------
simfun_irt1 <- function(N) {
# generate data
dat <- simdata(a = c(1.04, 1.2, 1.19, 0.61, 1.31,
0.83, 1.46, 1.27, 0.51, 0.81), d = c(0.06,
-1.79, -1.15, 0.88, -0.2, -1.87, 1.23, -0.08,
-0.71, 0.6), N = N, itemtype = "2PL")
# test hypothesis
mod <- mirt(dat) # Fit 2PL Model
constrained <- "F = 1-4
CONSTRAIN = (1-4, a1)"
mod_constrained <- mirt(dat, constrained) # Fit 2PL with equal slopes
res <- anova(mod_constrained, mod) # perform model comparison
res$p[2] < 0.01 # extract significance
}
## ----eval = FALSE-------------------------------------------------------------
# example.simfun("irt1")
## ----echo=FALSE, results='hide'-----------------------------------------------
# The following loads the precomputed results of the next chunk to reduce the vignette creation time
ver <- as.character(packageVersion("mlpwr"))
file = paste0("/extdata/IRT_Vignette_results1_", ver, ".RData")
file_path <- paste0(system.file(package="mlpwr"),file)
if (!file.exists(file_path)) {
set.seed(123)
res <- find.design(simfun = simfun_irt1, boundaries = c(40,
100), power = .95, evaluations = 2000)
save(res, file = paste0("../inst",file))
} else {
load(file_path)
}
## ----results='hide', eval=FALSE-----------------------------------------------
# set.seed(123)
# res <- find.design(simfun = simfun_irt1, boundaries = c(40,
# 100), power = .95, evaluations = 2000)
## ----echo=TRUE----------------------------------------------------------------
summary(res)
## -----------------------------------------------------------------------------
plot(res)
## ----message=FALSE, warning=FALSE, results='hide'-----------------------------
library(mlpwr)
library(mirt)
## ----message=FALSE, warning=FALSE, results='hide'-----------------------------
simfun_irt2 <- function(N1, N2) {
# generate data
a1 <- a2 <- c(1.04, 1.2, 1.19, 0.61, 1.31, 0.83,
1.46, 1.27, 0.51, 0.81)
d1 <- d2 <- c(0.06, -1.79, -1.15, 0.88, -0.2, -1.87,
1.23, -0.08, -0.71, 0.6)
a2[1] <- a2[1] + 0.3
d2[1] <- d2[1] + 0.5
dat1 <- simdata(a = a1, d = d1, N = N1, itemtype = "2PL")
dat2 <- simdata(a = a2, d = d2, N = N2, itemtype = "2PL")
dat <- as.data.frame(rbind(dat1, dat2))
group <- c(rep("1", N1), rep("2", N2))
# Fit model
model <- multipleGroup(dat, 1, group = group)
# Perform DIF for item 1
dif <- DIF(model, which.par = c("a1", "d"), items2test = c(1))
#Extract significance
dif$p[1] < 0.05
}
## ----echo=FALSE---------------------------------------------------------------
a1 <- a2 <- c(1.04, 1.2, 1.19, 0.61, 1.31, 0.83,
1.46, 1.27, 0.51, 0.81)
d1 <- d2 <- c(0.06, -1.79, -1.15, 0.88, -0.2, -1.87,
1.23, -0.08, -0.71, 0.6)
a2[1] <- a2[1] + 0.3
d2[1] <- d2[1] + 0.5
dat1 <- simdata(a = a1, d = d1, N = 5, itemtype = "2PL")
dat2 <- simdata(a = a2, d = d2, N = 5, itemtype = "2PL")
group <- c(rep("1", 5), rep("2", 5))
dat <- as.data.frame(rbind(dat1, dat2))
dat$group <- group
dat[, c("group", names(dat)[names(dat) != "group"])]
## -----------------------------------------------------------------------------
costfun_irt2 <- function(N1, N2) 5 * N1 + 7 * N2
## ----echo=FALSE, results='hide'-----------------------------------------------
# The following loads the precomputed results of the next chunk to reduce the vignette creation time
ver <- as.character(packageVersion("mlpwr"))
file = paste0("/extdata/IRT_Vignette_results2_", ver, ".RData")
file_path <- paste0(system.file(package="mlpwr"),file)
if (!file.exists(file_path)) {
set.seed(111)
res <- find.design(simfun = simfun_irt2, boundaries = list(N1 = c(100,
700), N2 = c(100, 700)), costfun = costfun_irt2,
cost = 4000, evaluations = 1000)
save(res, file = paste0("../inst",file))
} else {
load(file_path)
}
## ----eval=FALSE---------------------------------------------------------------
# set.seed(111)
# res <- find.design(simfun = simfun_irt2, boundaries = list(N1 = c(100,
# 700), N2 = c(100, 700)), costfun = costfun_irt2,
# cost = 4000, evaluations = 1000)
## ----echo=TRUE----------------------------------------------------------------
summary(res)
## -----------------------------------------------------------------------------
plot(res)
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.