Learn R Programming

sirt (version 1.5-0)

fit.isop: Fitting the ISOP and ADISOP Model for Frequency Tables

Description

Fit the isotonic probabilistic model (ISOP; Scheiblechner, 1995) and the additive isotonic probabilistic model (ADISOP; Scheiblechner, 1999).

Usage

fit.isop(freq.correct, wgt, conv = 1e-04, maxit = 100, 
      progress = TRUE, calc.ll=TRUE)

fit.adisop(freq.correct, wgt, conv = 1e-04, maxit = 100, 
      epsilon = 0.01, progress = TRUE, calc.ll=TRUE)

Arguments

freq.correct
Frequency table
wgt
Weights for frequency table (number of persons in each cell)
conv
Convergence criterion
maxit
Maximum number of iterations
epsilon
Additive constant to handle cell frequencies of 0 or 1 in fit.adisop
progress
Display progress?
calc.ll
Calculate log-likelihood values? The default is TRUE.

Value

  • A list with following entries
  • fXFitted frequency table
  • ResXResidual frequency table
  • fitFit statistic: weighted least squares of deviations between observed and expected frequencies
  • item.scEstimated item parameters
  • person.scEstimated person parameters
  • llLog-likelihood of the model
  • freq.fittedFitted frequencies in a long data frame

Details

See isop.dich for more details of the ISOP and ADISOP model.

References

Scheiblechner, H. (1995). Isotonic ordinal probabilistic models (ISOP). Psychometrika, 60, 281-304. Scheiblechner, H. (1999). Additive conjoint isotonic probabilistic models (ADISOP). Psychometrika, 64, 295-316.

See Also

For fitting the ISOP model to dichotomous and polytomous data see isop.dich.

Examples

Run this code
#############################################################################
# EXAMPLE 1: Dataset Reading
#############################################################################

data(data.read)
dat <- as.matrix( data.read)
dat.resp <- 1 - is.na(dat) # response indicator matrix
I <- ncol(dat)

#***
# (1) Data preparation
#     actually only freq.correct and wgt are needed
#     but these matrices must be computed in advance.

# different scores of students
stud.p <- rowMeans( dat , na.rm=TRUE )
# different item p values
item.p <- colMeans( dat , na.rm=TRUE )
item.ps <- sort( item.p, index.return=TRUE)
dat <- dat[ ,  item.ps$ix ]
# define score groups students
scores <- sort( unique( stud.p ) )
SC <- length(scores)
# create table
freq.correct <- matrix( NA , SC , I )
wgt <- freq.correct
# percent correct
a1 <- aggregate( dat == 1 , list( stud.p ) , mean , na.rm=TRUE )
freq.correct <- a1[,-1]
# weights
a1 <- aggregate( dat.resp , list( stud.p ) , sum , na.rm=TRUE )
wgt <- a1[,-1]

#***
# (2) Fit ISOP model
res.isop <- fit.isop( freq.correct , wgt )   
# fitted frequency table
res.isop$fX

#***
# (3) Fit ADISOP model
# use monotonely smoothed frequency table from ISOP model
res.adisop <- fit.adisop( freq.correct=res.isop$fX , wgt )   
# fitted frequency table
res.adisop$fX

Run the code above in your browser using DataLab