Predict Knowledge States from Basic Local Independence Models (BLIMs)

Description

Predict knowledge state or state probabilities based on a fitted blim object given a response pattern.

Usage

## S3 method for class 'blim'
predict(object, newdata = NULL, type = c("state", "probs"),
        method = c("ML", "MD", "MDML"), quiet = FALSE,
        ties.method = c("min", "max", "random"), i.RK = NULL,
        incradius = object\$incradius, as.pattern = TRUE, ...)

Arguments

object an object of class blim, typically the result of a call to blim.
newdata a character vector of response patterns with which to predict.
type for each pattern, predict a knowledge state or the state probabilities.
method how to compute the posterior state probabilities. (See Details.)
quiet silence message when estimation and prediction methods differ.
ties.method how to deal with a posteriori equally probable states.
i.RK optional indicator matrix of states at minimum distance from response patterns.
incradius see blim.
as.pattern return a character vector via as.pattern or an indicator matrix.
further arguments passed to as.pattern.

Details

Predicted is the modal posterior state (type = “state”) or the posterior distribution (type = “probs”) of knowledge states given a response pattern. Depending on the method argument, the posterior distribution is defined as:

  • Maximum likelihood (method = “ML”)

    P(K | R)_{ML} = =

  • Minimum discrepancy (method = “MD”)

    P(K | R)_{MD} =

  • Minimum discrepancy ML (method = “MDML”)

    P(K | R){MDML} = {K i{RK} P(K | R){ML}}

where \(i_{RK}\) is a pattern-by-state indicator matrix that is one for each state \(K\) that is at minimum distance from pattern \(R\).

Value

If type = “state”, a character vector of knowledge states (if as.pattern = TRUE) or a state-by-problem indicator matrix (if as.pattern = FALSE).

If type = “probs”, a matrix of posterior state probabilities.

See Also

blim, slm.

Examples

library("pks")

data(DoignonFalmagne7)
m <- blim(DoignonFalmagne7$K, DoignonFalmagne7$N.R)
predict(m)
 [1] "00000" "10000" "01000" "00000" "00000" "00000" "11000" "11100" "11010"
[10] "10000" "11100" "11010" "01000" "11110" "11101" "00000" "11100" "11010"
[19] "11101" "11110" "11101" "11010" "11110" "11101" "11010" "11111" "11110"
[28] "11101" "11010" "11111" "11111" "11111"
predict(m, newdata = c("00100", "10100", "01111"), as.pattern = FALSE)
      a b c d e
00000 0 0 0 0 0
11100 1 1 1 0 0
11111 1 1 1 1 1
m <- slm(DoignonFalmagne7$K, DoignonFalmagne7$N.R)
predict(m, newdata = "00100")
[1] "00000"
data(endm)
m <- blim(endm$K, endm$N.R)
predict(m, type = "probs", method = "MD")
        0000      0110      0101 1110 1101 1011      1111
1  1.0000000 0.0000000 0.0000000  0.0  0.0  0.0 0.0000000
2  1.0000000 0.0000000 0.0000000  0.0  0.0  0.0 0.0000000
3  0.3333333 0.3333333 0.3333333  0.0  0.0  0.0 0.0000000
4  0.5000000 0.5000000 0.0000000  0.0  0.0  0.0 0.0000000
5  0.5000000 0.0000000 0.5000000  0.0  0.0  0.0 0.0000000
6  0.0000000 0.0000000 0.0000000  0.5  0.5  0.0 0.0000000
7  0.0000000 0.0000000 0.0000000  0.5  0.0  0.5 0.0000000
8  0.0000000 0.0000000 0.0000000  0.0  0.5  0.5 0.0000000
9  0.0000000 1.0000000 0.0000000  0.0  0.0  0.0 0.0000000
10 0.0000000 0.0000000 1.0000000  0.0  0.0  0.0 0.0000000
11 0.0000000 0.0000000 0.0000000  0.0  0.0  1.0 0.0000000
12 0.0000000 0.0000000 0.0000000  1.0  0.0  0.0 0.0000000
13 0.0000000 0.0000000 0.0000000  0.0  1.0  0.0 0.0000000
14 0.0000000 0.0000000 0.0000000  0.0  0.0  1.0 0.0000000
15 0.0000000 0.3333333 0.3333333  0.0  0.0  0.0 0.3333333
16 0.0000000 0.0000000 0.0000000  0.0  0.0  0.0 1.0000000
cbind(
  observed = names(m$N.R),
  min = predict(m, method = "MD", ties.method = "min"),
  max = predict(m, method = "MD", ties.method = "max"),
  rnd = predict(m, method = "MD", ties.method = "random")
) |> print(quote = FALSE)
      observed min  max  rnd 
 [1,] 0000     0000 0000 0000
 [2,] 1000     0000 0000 0000
 [3,] 0100     0000 0110 0000
 [4,] 0010     0000 0110 0110
 [5,] 0001     0000 0101 0000
 [6,] 1100     1110 1110 1101
 [7,] 1010     1110 1110 1110
 [8,] 1001     1101 1101 1011
 [9,] 0110     0110 0110 0110
[10,] 0101     0101 0101 0101
[11,] 0011     1011 1011 1011
[12,] 1110     1110 1110 1110
[13,] 1101     1101 1101 1101
[14,] 1011     1011 1011 1011
[15,] 0111     0110 1111 0110
[16,] 1111     1111 1111 1111