Learn R Programming

sirt (version 2.4-20)

xxirt_createParTable: Create Item Response Functions and Item Parameter Table

Description

Create item response functions and item parameter table

Usage

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 )

Arguments

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 creeated by xxirt_createDiscItem

partable

Item parameter table

parname

Parameter name

item

Item

value

Value of item parameter

parindex

Parameter index

parlabel

Item parameter label

See Also

xxirt

See mirt::createItem for similar functionality.

Examples

Run this code
# NOT RUN {
#############################################################################
## 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)                
# }

Run the code above in your browser using DataLab