# Computes classification accuracy and consistency with Lee's approach for polytomous IRT models.

### Description

Computes classification accuracy and consistency with Lee's approach for polytomous tests. The probability of each possible total score conditional on ability is found with `gen.rec.raw()`

. Those probabilities are grouped according to the cut scores and used to estimate the indices.

### Usage

1 2 | ```
Lee.poly.D(cutscore, Pij, quadrature)
Lee.poly.P(cutscore, Pij, theta)
``` |

### Arguments

`cutscore` |
A scalar or vector of cut scores on the True Score scale. If you have cut scores on the theta scale, you can transform them with |

`Pij` |
An NxMxJ array of probabilities. Each slice of the array represents an item. Within a slice, each row corresponds to the respective element in |

`theta` |
Ability estimates for each subject. Must correspond to the first dimension of |

`quadrature` |
A list containing 1) The quadrature points and 2) Their corresponding weights. Must correspond to the first dimension of |

### Details

The polytomous generalization to `class.Lee`

. Requires the user build the `Pij`

array.

### Value

`Marginal` |
A matrix with two columns of marginal accuracy and consistency per cut score (and simultaneous if multiple cutscores are given) |

`Conditional` |
A matrix of conditional accuracy and conditional consistency |

### Note

In order to score above a cut, an examinee must score at or above the cut score. Since we are working on the total score scale, be aware that if a cut score is given with a decimal (like 2.4), the examinee must have a total score at the next integer or more (so 3 or more) to score above the cut.

If the test is mixed format (some dichotomous, some polytomous items), `Pij`

must be of an appropriate size for the item with the most response categories. The response categories that do no appear in other items can be filled with zeros. Note also that the function assumes response categories are scored as 0,1,2,3,...,M

### Note

While this function is needed for polytomous tests for the Lee approach, `class.Rud()`

works directly with polytomous tests when given the ability estimate and the standard error and so does not need an analogous set of functions.

### Author(s)

Quinn N. Lathrop

### References

Lee, W. (2010) Classification consistency and accuracy for complex assessments using item response theory. Journal of Educational Measurement, 47, 1–17.

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ```
#Same example as \code{class.Lee()},
#build \code{Pij} the same as in the example for \code{gen.rec.raw()}.
params <- matrix(c(1,1,1,1,-2,1,0,1,0,0,0,0),4,3)
theta <- rnorm(100)
Pij.flat <- irf(params, theta)$f
Pij.array <- array(NA, dim = c(length(theta), 2, nrow(params)))
Pij.array[,1,] <- 1 - Pij.flat #P(X_j = 0 | theta_i)
Pij.array[,2,] <- Pij.flat #P(X_j = 1 | theta_i)
Lee.poly.P(2, Pij.array, theta)$Marginal
#in the dichotomous case, identical to \code{Lee.P()}
Lee.P(2, params, theta)$Marginal
#For Rudner and polytomous tests, compute the theta estimate and se and use those as input
theta.est <- theta
#just for example
theta.se <- SEM(params, theta.est)
#also for example, SEM() assumes 3PL model,
#but if you use mirt or similar package,
#the theta estimates and their se will be available
Rud.P(.5, theta.est, theta.se)$Marginal
``` |