Item tree analysis (ITA) on a set of binary responses.

ita(R, L = NULL, makeK = FALSE, search = c("local", "global"))

Arguments

R

a subject-by-problem indicator matrix representing the responses.

L

the threshold of violations acceptable for the precedence relation. If NULL (default), an optimal threshold is searched for.

makeK

should the corresponding knowledge structure be returned?

search

local (default) or global threshold search.

Details

ITA seeks to establish a precedence relation among a set of binary items. For each pair of items \((p, q)\), it counts how often \(p\) is not solved if \(q\) is solved, which constitutes a violation of the relation. ITA searches for a threshold L for the maximum number of violations consistent with a (transitive) precedence relation. Its attempts to minimize the total discrepancy between R and K.

See van Leeuwe (1974) and Schrepp (1999) for details.

Value

An object of class ita having the following components:

K

the knowledge structure corresponding to the precedence relation.

discrepancy

the discrepancy between R and K (fit), between K and R (complexity), and their sum (total).

transitiveL

the vector of transitive thresholds.

searchL

either NULL or the method used for threshold search.

L

the selected or requested threshold.

P

the precedence matrix containing the number of violations.

I

the precedence relation as a logical incidence matrix at threshold L.

References

Schrepp, M. (1999). On the empirical construction of implications between bi-valued test items. Mathematical Social Sciences, 38(3), 361--375. doi:10.1016/S0165-4896(99)00025-6

Van Leeuwe, J.F. (1974). Item tree analysis. Nederlands Tijdschrift voor de Psychologie en haar Grensgebieden, 29(6), 475--483.

See also

Examples

data(chess)

ita(chess$R)  # find (locally) optimal threshold L
#> 
#> Item tree analysis (ITA)
#> 
#> Violations of precedence relation:
#>       >
#> <       s gs egs eegs cs gcs ts ges  f gf gff ggff ggf ff tf tff
#>   s     0  0   0    0 10   0  3   1 22  1   0    0   0 11 10   3
#>   gs   33  0   0    2 18   3 19   6 52  7   6    1   2 30 32  12
#>   egs  42  9   0    3 18   4 24  10 60 13  10    3   2 39 36  17
#>   eegs 45 14   6    0 20   6 26  14 63 16  13    6   4 42 40  20
#>   cs   46 21  12   11  0   5 28  18 55 25  20   12   8 41 37  25
#>   gcs  48 18  10    9 17   0 31  16 66 22  16    9   7 47 43  22
#>   ts   24  7   3    2 13   4  0   5 39  8   6    2   1 23 20   8
#>   ges  36  8   3    4 17   3 19   0 53 11   8    4   4 34 30  13
#>   f     4  1   0    0  1   0  0   0  0  0   0    1   0  2  2   1
#>   gf   30  3   0    0 18   3 16   5 47  0   2    1   1 26 28   9
#>   gff  36  9   4    4 20   4 21   9 54  9   0    4   2 34 34  12
#>   ggff 47 15   8    8 23   8 28  16 66 19  15    0   7 44 43  21
#>   ggf  48 17   8    7 20   7 28  17 66 20  14    8   0 46 43  21
#>   ff   15  1   1    1  9   3  6   3 24  1   2    1   2  0 11   3
#>   tf   16  5   0    1  7   1  5   1 26  5   4    2   1 13  0   4
#>   tff  31  7   3    3 17   2 15   6 47  8   4    2   1 27 26   0
#> 
#> Selected threshold (L): 4
#> Transitive thresholds:
#> [1]  0  2  4  5  6 66
#> 

i <- ita(chess$R, L = 6, makeK = TRUE)
identical(sort(as.pattern(i$K)),
          sort(as.pattern(chess$dst1)))
#> [1] TRUE

## Plotting the precedence relation
if(requireNamespace("relations") &&
   requireNamespace("Rgraphviz")) {
  plot(relations::as.relation(i$I))
}