# Setup for Examples 1 to 5 -------------------------------------------------
# Settings
set.seed(0) # seed for reproducibility
N <- 500 # number of persons
n <- 40 # number of items
# Example 1: 3PL Model and Lognormal Model ----------------------------------
# Generate person parameters
xi <- MASS::mvrnorm(
N,
mu = c(theta = 0.00, tau = 0.00),
Sigma = matrix(c(1.00, 0.25, 0.25, 0.25), ncol = 2)
)
# Generate item parameters
psi <- cbind(
a = rlnorm(n, meanlog = 0.00, sdlog = 0.25),
b = NA,
c = runif(n, min = 0.05, max = 0.30),
alpha = runif(n, min = 1.50, max = 2.50),
beta = NA
)
# Generate positively correlated difficulty and time intensity parameters
psi[, c("b", "beta")] <- MASS::mvrnorm(
n,
mu = c(b = 0.00, beta = 3.50),
Sigma = matrix(c(1.00, 0.20, 0.20, 0.15), ncol = 2)
)
# Simulate item scores and log response times
dat <- sim(psi, xi)
x <- dat$x
y <- dat$y
# Example 2: Generalized Partial Credit Model -------------------------------
# Generate person parameters
xi <- cbind(theta = rnorm(N, mean = 0.00, sd = 1.00))
# Generate item parameters
psi <- cbind(
a = rlnorm(n, meanlog = 0.00, sdlog = 0.25),
c0 = 0,
c1 = rnorm(n, mean = -1.00, sd = 0.50),
c2 = rnorm(n, mean = 0.00, sd = 0.50),
c3 = rnorm(n, mean = 1.00, sd = 0.50)
)
# Simulate item scores
x <- sim(psi, xi)$x
# Example 3: Graded Response Model ------------------------------------------
# Generate person parameters
xi <- cbind(theta = rnorm(N, mean = 0.00, sd = 1.00))
# Generate item parameters
psi <- cbind(
a = rlnorm(n, meanlog = 0.00, sdlog = 0.25),
b1 = rnorm(n, mean = -1.00, sd = 0.50),
b2 = rnorm(n, mean = 0.00, sd = 0.50),
b3 = rnorm(n, mean = 1.00, sd = 0.50)
)
# Sort item location parameters in increasing order
psi[, paste0("b", 1:3)] <- t(apply(psi[, paste0("b", 1:3)], 1, sort))
# Simulate item scores
x <- sim(psi, xi)$x
# Example 4: Nested Logit Model ---------------------------------------------
# Generate person parameters
xi <- MASS::mvrnorm(
N,
mu = c(theta = 0.00, eta = 0.00),
Sigma = matrix(c(1.00, 0.80, 0.80, 1.00), ncol = 2)
)
# Generate item parameters
psi <- cbind(
a = rlnorm(n, meanlog = 0.00, sdlog = 0.25),
b = rnorm(n, mean = 0.00, sd = 1.00),
c = runif(n, min = 0.05, max = 0.30),
lambda1 = rnorm(n, mean = 0.00, sd = 1.00),
lambda2 = rnorm(n, mean = 0.00, sd = 1.00),
lambda3 = rnorm(n, mean = 0.00, sd = 1.00),
zeta1 = rnorm(n, mean = 0.00, sd = 1.00),
zeta2 = rnorm(n, mean = 0.00, sd = 1.00),
zeta3 = rnorm(n, mean = 0.00, sd = 1.00)
)
# Simulate item scores and distractors
dat <- sim(psi, xi)
x <- dat$x
d <- dat$d
# Example 5: Nominal Response Model -----------------------------------------
# Generate person parameters
xi <- cbind(eta = rnorm(N, mean = 0.00, sd = 1.00))
# Generate item parameters
psi <- cbind(
lambda1 = rnorm(n, mean = -0.50, sd = 0.50),
lambda2 = rnorm(n, mean = -0.50, sd = 0.50),
lambda3 = rnorm(n, mean = -0.50, sd = 0.50),
lambda4 = rnorm(n, mean = 1.50, sd = 0.50),
zeta1 = rnorm(n, mean = -0.50, sd = 0.50),
zeta2 = rnorm(n, mean = -0.50, sd = 0.50),
zeta3 = rnorm(n, mean = -0.50, sd = 0.50),
zeta4 = rnorm(n, mean = 1.50, sd = 0.50)
)
# Simulate item responses
r <- sim(psi, xi)$r
Run the code above in your browser using DataLab