This function returns an integer matrix of simulated responses under given item and person parameters.

sim_gpcm(thres, alpha, theta)

Arguments

thres

An numeric matrix which contains threshold parameters for each item. The first row must contain zeroes only!

alpha

A numeric vector, which contains the slope parameters - one parameter per item is expected.

theta

A numeric vector which contains person parameters.

See also

Examples

################# simulate GPCM ############################################### set.seed(1750) THRES <- matrix(c(-2,-1.23,1.11,3.48,1 ,2,-1,-0.2,0.5,1.3,-0.8,1.5),nrow=2) # slopes sl <- c(0.5,1,1.5,1.1,1,0.98) THRESx <- rbind(0,THRES) THETA <- rnorm(100) simdat_gpcm <- sim_gpcm(thres = THRESx,alpha = sl,theta = THETA) head(simdat_gpcm)
#> [,1] [,2] [,3] [,4] [,5] [,6] #> [1,] 2 0 0 0 0 1 #> [2,] 2 1 0 1 0 0 #> [3,] 2 0 1 2 1 1 #> [4,] 2 0 1 2 1 1 #> [5,] 1 0 1 2 2 2 #> [6,] 1 0 1 1 2 0
### simulate with a different number of categories THRES1 <- rbind(THRESx,c(NA,NA,NA,NA,1.7,1)) THRES1 # last 2 items have +1 category
#> [,1] [,2] [,3] [,4] [,5] [,6] #> [1,] 0.00 0.00 0 0.0 0.0 0.0 #> [2,] -2.00 1.11 1 -1.0 0.5 -0.8 #> [3,] -1.23 3.48 2 -0.2 1.3 1.5 #> [4,] NA NA NA NA 1.7 1.0
simdat_gpcm2 <- sim_gpcm(thres = THRES1,alpha = sl,theta = THETA) head(simdat_gpcm2)
#> [,1] [,2] [,3] [,4] [,5] [,6] #> [1,] 2 0 0 0 0 0 #> [2,] 1 1 0 2 0 2 #> [3,] 2 0 0 1 2 2 #> [4,] 2 1 1 2 2 0 #> [5,] 2 1 1 2 3 3 #> [6,] 2 0 0 2 0 1
# check the maximum category apply(simdat_gpcm2,2,max)
#> [1] 2 2 2 2 3 3