Sim3PL {psychotools} | R Documentation |
Simulated Data for fitting a 3PL and 3PLu
Description
Simulated responses of 10000 persons to 10 dichotomous items under two different simulation conditions.
Usage
data("Sim3PL", package = "psychotools")
Format
A data frame containing 10000 observations on 2 variables.
- resp
Item response matrix with 10 items (see details below).
- resp2
Item response matrix with 10 items (see details below).
Details
Data were simulated under the 3PL (resp
) and 3PLu (resp2
) (see
nplmodel
). For the 3PL scenario, the random number generator's
seed was set to 277. For the 3PLu scenario, the random number generator's seed
was set to 167. Person parameters of 10000 persons were drawn
from the standard normal distribution. Item difficulties
of 10
items (under the classical IRT parametrization) were drawn from the standard
normal distribution. Item discrimination parameters
were drawn
from a log-normal distribution with a mean of
and a variance of
on the log scale. For the 3PL, guessing parameters
were drawn from a uniform distribution with a lower limit of
and an upper limit of
. For the 3PLu, upper asymptote
parameters
were drawn from a uniform distribution with a lower
limit of
and an upper limit of
. In both scenarios, a
x
matrix based on realizations of a uniform distribution
with a lower limit of
and an upper limit of
was generated and
compared to a
x
matrix based on the probability function
under the respective model. If the probability of person
solving item
exceeded the corresponding realization of the uniform distribution,
this cell of the matrix was set to
, e.g., person
solved item
.
See Also
Examples
## overview
data("Sim3PL", package = "psychotools")
str(Sim3PL)
## data generation
M <- 10000
N <- 10
## 3PL scenario
set.seed(277)
theta <- rnorm(M, 0, 1)
a <- rlnorm(N, 0, 0.25)
b <- rnorm(N, 0, 1)
g <- runif(N, 0.1, 0.2)
u <- rep(1, N)
probs <- matrix(g, M, N, byrow = TRUE) + matrix(u - g, M, N, byrow = TRUE) *
plogis(matrix(a, M, N, byrow = TRUE) * outer(theta, b, "-"))
resp <- (probs > matrix(runif(M * N, 0, 1), M, N)) + 0
all.equal(resp, Sim3PL$resp, check.attributes = FALSE)
## 3PLu scenario
set.seed(167)
theta <- rnorm(M, 0, 1)
a <- rlnorm(N, 0, 0.25)
b <- rnorm(N, 0, 1)
g <- rep(0, N)
u <- runif(N, 0.8, 0.9)
probs <- matrix(g, M, N, byrow = TRUE) + matrix(u - g, M, N, byrow = TRUE) *
plogis(matrix(a, M, N, byrow = TRUE) * outer(theta, b, "-"))
resp2 <- (probs > matrix(runif(M * N, 0, 1), M, N)) + 0
all.equal(resp2, Sim3PL$resp2, check.attributes = FALSE)