Create Item Response Functions and Item Parameter Table
Create item response functions and item parameter table
xxirt_createDiscItem( name, par, est, P, lower=-Inf, upper=Inf, prior=NULL, prior_par1=NULL, prior_par2=NULL) xxirt_createParTable(dat, itemtype, customItems=NULL) xxirt_modifyParTable( partable, parname, item=NULL, value=NULL, est=NULL, parlabel=NULL, parindex=NULL, lower=NULL, upper=NULL, prior=NULL, prior_par1=NULL, prior_par2=NULL )
name |
Type of item response function |
par |
Named vector of starting values of item parameters |
est |
Logical vector indicating which parameters should be estimated |
P |
Item response function |
lower |
Lower bounds |
upper |
Upper bounds |
prior |
Prior distribution |
prior_par1 |
First parameter prior distribution |
prior_par2 |
Second parameter prior distribution |
dat |
Data frame with item responses |
itemtype |
Vector of item types |
customItems |
List with item objects created by |
partable |
Item parameter table |
parname |
Parameter name |
item |
Item |
value |
Value of item parameter |
parindex |
Parameter index |
parlabel |
Item parameter label |
See mirt::createItem
for similar
functionality.
############################################################################# ## EXAMPLE 1: Definition of item response functions ############################################################################# data(data.read) dat <- data.read #------ Definition of item response functions #*** IRF 2PL P_2PL <- function( par, Theta, ncat){ a <- par[1] b <- par[2] TP <- nrow(Theta) P <- matrix( NA, nrow=TP, ncol=ncat) P[,1] <- 1 for (cc in 2:ncat){ P[,cc] <- exp( (cc-1) * a * Theta[,1] - b ) } P <- P / rowSums(P) return(P) } #*** IRF 1PL P_1PL <- function( par, Theta, ncat){ b <- par[1] TP <- nrow(Theta) par0 <- c(1,b) P <- P_2PL( par=par0, Theta=Theta, ncat=ncat) return(P) } #** created item classes of 1PL and 2PL models par <- c( "a"=1, "b"=0 ) # define some slightly informative prior of 2PL item_2PL <- sirt::xxirt_createDiscItem( name="2PL", par=par, est=c(TRUE,TRUE), P=P_2PL, prior=c( a="dlnorm"), prior_par1=c(a=0), prior_par2=c(a=5) ) item_1PL <- sirt::xxirt_createDiscItem( name="1PL", par=par[2], est=c(TRUE), P=P_1PL ) # list of item classes in customItems customItems <- list( item_1PL, item_2PL ) #-- create parameter table itemtype <- rep( "1PL", 12 ) partable <- sirt::xxirt_createParTable(dat, itemtype=itemtype, customItems=customItems) # privide starting values partable1 <- sirt::xxirt_modifyParTable( partable, parname="b", value=- stats::qlogis( colMeans(dat) ) ) # equality constraint of parameters and definition of lower bounds partable1 <- sirt::xxirt_modifyParTable( partable1, item=c("A1","A2"), parname="b", parindex=110, lower=-1, value=0) print(partable1)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.