Create Item Response Functions and Item Parameter Table
xxirt_createParTable.Rd
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 created 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
See mirt::createItem
for similar
functionality.
Examples
#############################################################################
## 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)