Learn R Programming

mirt (version 0.3.0)

simdata: Simulate response patterns

Description

Simulates response patterns for compensetory and noncompensatory MIRT models from multivariate normally distributed factor ($\theta$) scores, or from a user input matrix of $\theta$'s.

Usage

simdata(a, d, N, itemtype, sigma = NULL, mu = NULL,
    guess = 0, upper = 1, nominal = NULL, Theta = NULL)

Arguments

a
a matrix of slope parameters. If slopes are to be constrained to zero then use NA. a may also be a similar matrix specifying factor loadings if factor.loads = TRUE
d
a matrix of intercepts. The matrix should have as many columns as the item with the largest number of categories, and filled empty locations with NA
itemtype
a character vector of length nrow(a) specifying the type of items to simulate. Can be 'dich', 'graded', 'gpcm','nominal', or 'partcomp', for dichotomous, graded, generalized partial credit, nominal, and parti
nominal
a matrix of specific item category slopes for nominal models. Should be the dimensions as the intecept specification with one less column, with NA in locations where not applicable. Note that during estimation the first slope will be
N
sample size
guess
a vector of guessing parameters for each item; only applicable for dichotomous items. Must be either a scalar value that will affect all of the dichotomous items, or a vector with as many values as to be simulated items
upper
same as guess, but for upper bound parameters
sigma
a covariance matrix of the underlying distribution. Default is the identity matrix
mu
a mean vector of the underlying distribution. Default is a vector of zeros
Theta
a user specified matrix of the underlying ability parameters, where nrow(Theta) == N and ncol(Theta) == ncol(a)

Details

Returns a data matrix simulated from the parameters.

References

Reckase, M. D. (2009). Multidimensional Item Response Theory. New York: Springer.

Examples

Run this code
###Parameters from Reckase (2009), p. 153
a <- matrix(c(
 .7471, .0250, .1428,
 .4595, .0097, .0692,
 .8613, .0067, .4040,
1.0141, .0080, .0470,
 .5521, .0204, .1482,
1.3547, .0064, .5362,
1.3761, .0861, .4676,
 .8525, .0383, .2574,
1.0113, .0055, .2024,
 .9212, .0119, .3044,
 .0026, .0119, .8036,
 .0008, .1905,1.1945,
 .0575, .0853, .7077,
 .0182, .3307,2.1414,
 .0256, .0478, .8551,
 .0246, .1496, .9348,
 .0262, .2872,1.3561,
 .0038, .2229, .8993,
 .0039, .4720, .7318,
 .0068, .0949, .6416,
 .3073, .9704, .0031,
 .1819, .4980, .0020,
 .4115,1.1136, .2008,
 .1536,1.7251, .0345,
 .1530, .6688, .0020,
 .2890,1.2419, .0220,
 .1341,1.4882, .0050,
 .0524, .4754, .0012,
 .2139, .4612, .0063,
 .1761,1.1200, .0870),30,3,byrow=TRUE)

d <- matrix(c(.1826,-.1924,-.4656,-.4336,-.4428,-.5845,-1.0403,
  .6431,.0122,.0912,.8082,-.1867,.4533,-1.8398,.4139,
  -.3004,-.1824,.5125,1.1342,.0230,.6172,-.1955,-.3668,
  -1.7590,-.2434,.4925,-.3410,.2896,.006,.0329),ncol=1)

mu <- c(-.4, -.7, .1)
sigma <- matrix(c(1.21,.297,1.232,.297,.81,.252,1.232,.252,1.96),3,3)
itemtype <- rep('dich', nrow(a))

dataset1 <- simdata(a, d, 2000, itemtype)
dataset2 <- simdata(a, d, 2000, itemtype, mu = mu, sigma = sigma)

###An example of a mixed item, bifactor loadings pattern with correlated specific factors
a <- matrix(c(
.8,.4,NA,
.4,.4,NA,
.7,.4,NA,
.8,NA,.4,
.4,NA,.4,
.7,NA,.4),ncol=3,byrow=TRUE)

d <- matrix(c(
-1.0,NA,NA,
 1.5,NA,NA,
 0.0,NA,NA,
0.0,-1.0,1.5,  #the first 0 here is the recommended constraint for nominal
0.0,1.0,-1, #the first 0 here is the recommended constraint for gpcm
2.0,0.0,NA),ncol=3,byrow=TRUE)

nominal <- matrix(NA, nrow(d), ncol(d))
nominal[4, ] <- c(0,1.2,2) #the first 0 and last (ncat - 1) = 2 values are the recommended constraints

sigma <- diag(3)
sigma[2,3] <- sigma[3,2] <- .25
items <- c('dich','dich','dich','nominal','gpcm','graded')

dataset <- simdata(a,d,1000,items,sigma=sigma,nominal=nominal)

####Unidimensional nonlinear factor pattern
theta <- rnorm(2000)
Theta <- cbind(theta,theta^2)

a <- matrix(c(
.8,.4,
.4,.4,
.7,.4,
.8,NA,
.4,NA,
.7,NA),ncol=2,byrow=TRUE)
d <- matrix(rnorm(6))
itemtype <- rep('dich',6)

nonlindata <- simdata(a,d,2000,itemtype,Theta=Theta)

Run the code above in your browser using DataLab