The function is able to calculate the \(\beta\) index for all items after fitting CDM or directly.

get.beta(Y = NULL, Q = NULL, CDM.obj = NULL, model = "GDINA")

Arguments

Y

A required \(N\) × \(I\) matrix or data.frame consisting of the responses of N individuals to \(N\) × \(I\) items. Missing values need to be coded as NA.

Q

A required binary \(I\) × \(K\) matrix containing the attributes not required or required master the items. The ith row of the matrix is a binary indicator vector indicating which attributes are not required (coded by 0) and which attributes are required (coded by 1) to master item \(i\).

CDM.obj

An object of class CDM.obj. Can be NULL, but when it is not NULL, it enables rapid validation of the Q-matrix without the need for parameter estimation. @seealso CDM.

model

Type of model to be fitted; can be "GDINA", "LCDM", "DINA", "DINO", "ACDM", "LLM", or "rRUM". Default = "GDINA".

Value

An object of class matrix, which consisted of \(\beta\) index for each item and each possible attribute mastery pattern.

Details

For item \(i\) with the q-vector of the \(c\)-th (\(c = 1, 2, ..., 2^{K}\)) type, the \(\beta\) index is computed as follows:

$$ \beta_{ic} = \sum_{l=1}^{2^K} \left| \frac{r_{li}}{n_l} P_{ic}(\boldsymbol{\alpha}_{l}) - \left(1 - \frac{r_{li}}{n_l}\right) \left[1 - P_{ic}(\boldsymbol{\alpha}_{l})\right] \right| = \sum_{l=1}^{2^K} \left| \frac{r_{li}}{n_l} - \left[1 - P_{ic}(\boldsymbol{\alpha}_{l}) \right] \right| $$

In the formula, \(r_{li}\) represents the number of examinees in attribute mastery pattern \(\boldsymbol{\alpha}_{l}\) who correctly answered item \(i\), while \(n_l\) is the total number of examinees in attribute mastery pattern \(\boldsymbol{\alpha}_{l}\). \(P_{ic}(\boldsymbol{\alpha}_{l})\) denotes the probability that an examinee in attribute mastery pattern \(\boldsymbol{\alpha}_{l}\) answers item \(i\) correctly when the q-vector for item \(i\) is of the \(c\)-th type. In fact, \(\frac{r_{li}}{n_l}\) is the observed probability that an examinee in attribute mastery pattern \(\boldsymbol{\alpha}_{l}\) answers item \(i\) correctly, and \(\beta_{jc}\) represents the difference between the actual proportion of correct answers for item \(i\) in each attribute mastery pattern and the expected probability of answering the item incorrectly in that state. Therefore, to some extent, \(\beta_{jc}\) can be considered as a measure of discriminability.

References

Li, J., & Chen, P. (2024). A new Q-matrix validation method based on signal detection theory. British Journal of Mathematical and Statistical Psychology, 00, 1–33. DOI: 10.1111/bmsp.12371

See also

Author

Haijiang Qin <Haijiang133@outlook.com>

Examples

# \donttest{
library(Qval)

set.seed(123)

## generate Q-matrix and data
K <- 4
I <- 20
Q <- sim.Q(K, I)
IQ <- list(
  P0 = runif(I, 0.0, 0.3),
  P1 = runif(I, 0.7, 0.9)
)

model <- "GDINA"
data <- sim.data(Q = Q, N = 500, IQ = IQ, model = model, distribute = "horder")
#> distribute =  horder 
#>  model =  GDINA 
#>  number of attributes:  4 
#>  number of items:  20 
#>  num of examinees:  500 
#>  average of P0 =  0.128 
#>  average of P1 =  0.798 
#> theta_mean =  -0.06 , theta_sd = 0.996 
#>  a =  1.5 1.5 1.5 1.5 
#>  b =  0.5 1.5 -1.5 -0.5 

## calculate beta directly
beta <-get.beta(Y = data$dat, Q = Q, model = model)
#> 
Iter = 1  Max. abs. change = 0.38660  Deviance  = 12248.06                                                                                  
Iter = 2  Max. abs. change = 0.11059  Deviance  = 11183.81                                                                                  
Iter = 3  Max. abs. change = 0.06737  Deviance  = 11131.99                                                                                  
Iter = 4  Max. abs. change = 0.03748  Deviance  = 11115.14                                                                                  
Iter = 5  Max. abs. change = 0.02617  Deviance  = 11108.05                                                                                  
Iter = 6  Max. abs. change = 0.02186  Deviance  = 11104.61                                                                                  
Iter = 7  Max. abs. change = 0.01803  Deviance  = 11102.43                                                                                  
Iter = 8  Max. abs. change = 0.01493  Deviance  = 11100.84                                                                                  
Iter = 9  Max. abs. change = 0.01338  Deviance  = 11099.61                                                                                  
Iter = 10  Max. abs. change = 0.01295  Deviance  = 11098.62                                                                                  
Iter = 11  Max. abs. change = 0.01246  Deviance  = 11097.79                                                                                  
Iter = 12  Max. abs. change = 0.01018  Deviance  = 11097.08                                                                                  
Iter = 13  Max. abs. change = 0.00954  Deviance  = 11096.54                                                                                  
Iter = 14  Max. abs. change = 0.00887  Deviance  = 11096.11                                                                                  
Iter = 15  Max. abs. change = 0.00824  Deviance  = 11095.75                                                                                  
Iter = 16  Max. abs. change = 0.00763  Deviance  = 11095.46                                                                                  
Iter = 17  Max. abs. change = 0.00704  Deviance  = 11095.22                                                                                  
Iter = 18  Max. abs. change = 0.00731  Deviance  = 11095.01                                                                                  
Iter = 19  Max. abs. change = 0.00754  Deviance  = 11094.84                                                                                  
Iter = 20  Max. abs. change = 0.00767  Deviance  = 11094.70                                                                                  
Iter = 21  Max. abs. change = 0.00771  Deviance  = 11094.57                                                                                  
Iter = 22  Max. abs. change = 0.00762  Deviance  = 11094.47                                                                                  
Iter = 23  Max. abs. change = 0.00745  Deviance  = 11094.38                                                                                  
Iter = 24  Max. abs. change = 0.00711  Deviance  = 11094.30                                                                                  
Iter = 25  Max. abs. change = 0.00667  Deviance  = 11094.23                                                                                  
Iter = 26  Max. abs. change = 0.00614  Deviance  = 11094.17                                                                                  
Iter = 27  Max. abs. change = 0.00554  Deviance  = 11094.12                                                                                  
Iter = 28  Max. abs. change = 0.00491  Deviance  = 11094.08                                                                                  
Iter = 29  Max. abs. change = 0.00425  Deviance  = 11094.04                                                                                  
Iter = 30  Max. abs. change = 0.00201  Deviance  = 11094.01                                                                                  
Iter = 31  Max. abs. change = 0.00180  Deviance  = 11094.00                                                                                  
Iter = 32  Max. abs. change = 0.00161  Deviance  = 11093.99                                                                                  
Iter = 33  Max. abs. change = 0.00144  Deviance  = 11093.98                                                                                  
Iter = 34  Max. abs. change = 0.00130  Deviance  = 11093.97                                                                                  
Iter = 35  Max. abs. change = 0.00115  Deviance  = 11093.97                                                                                  
Iter = 36  Max. abs. change = 0.00102  Deviance  = 11093.96                                                                                  
Iter = 37  Max. abs. change = 0.00091  Deviance  = 11093.96                                                                                  
Iter = 38  Max. abs. change = 0.00081  Deviance  = 11093.96                                                                                  
Iter = 39  Max. abs. change = 0.00072  Deviance  = 11093.96                                                                                  
Iter = 40  Max. abs. change = 0.00064  Deviance  = 11093.96                                                                                  
Iter = 41  Max. abs. change = 0.00056  Deviance  = 11093.95                                                                                  
Iter = 42  Max. abs. change = 0.00050  Deviance  = 11093.95                                                                                  
Iter = 43  Max. abs. change = 0.00045  Deviance  = 11093.95                                                                                  
Iter = 44  Max. abs. change = 0.00040  Deviance  = 11093.95                                                                                  
Iter = 45  Max. abs. change = 0.00035  Deviance  = 11093.95                                                                                  
Iter = 46  Max. abs. change = 0.00030  Deviance  = 11093.95                                                                                  
Iter = 47  Max. abs. change = 0.00028  Deviance  = 11093.95                                                                                  
Iter = 48  Max. abs. change = 0.00029  Deviance  = 11093.95                                                                                  
Iter = 49  Max. abs. change = 0.00023  Deviance  = 11093.95                                                                                  
Iter = 50  Max. abs. change = 0.00030  Deviance  = 11093.95                                                                                  
Iter = 51  Max. abs. change = 0.00021  Deviance  = 11093.95                                                                                  
Iter = 52  Max. abs. change = 0.00022  Deviance  = 11093.95                                                                                  
Iter = 53  Max. abs. change = 0.00009  Deviance  = 11093.95                                                                                  
print(beta)
#>         0000      1000     0100      0010      0001      1100      1010
#> item 1     0 12.536013 6.348455  6.665375  6.545036 12.657793 12.556949
#> item 2     0  4.701023 4.835594  7.880464  4.767784  4.880682  7.783595
#> item 3     0  6.000423 5.984464 11.081292  5.817400  6.002723 11.052846
#> item 4     0  6.610759 6.431350 12.025389  6.330424  6.607650 11.951857
#> item 5     0  4.228729 4.511071  4.397403  8.075214  4.461032  4.328413
#> item 6     0  7.197747 7.276834 13.286388  6.982937  7.259455 13.382040
#> item 7     0  6.051121 5.989876 10.685024  6.042967  6.041710 10.716182
#> item 8     0  6.373027 4.418952  6.602897  4.604694  6.192314  8.397309
#> item 9     0  5.935687 4.610452  4.619872  3.672466  6.044533  5.843310
#> item 10    0  5.814636 4.934839  6.430626  5.736079  5.792140  7.649807
#> item 11    0  6.521445 6.597461  6.356808 11.597482  6.644690  6.417650
#> item 12    0 11.424552 6.408670  6.083692  6.405874 11.410291 11.425579
#> item 13    0  6.206209 3.571933  3.867014  3.731433  6.186664  5.861326
#> item 14    0  5.169853 3.050974  3.690706  2.869024  5.129340  4.805456
#> item 15    0  4.527839 4.413331  3.323129  4.580388  5.540836  4.293511
#> item 16    0  6.250999 3.773858  3.655213  4.052968  6.193971  6.259447
#> item 17    0  5.222225 7.704109  4.903814  5.411812  7.507962  5.265666
#> item 18    0  5.163551 9.189938  5.031139  5.291272  9.155232  5.069919
#> item 19    0  6.682333 6.629218  9.933980  6.823642  6.808410  9.862425
#> item 20    0  4.551945 8.458591  4.776411  4.683912  8.499697  4.578905
#>              1001      0110      0101      0011      1110      1101      1011
#> item 1  12.537130  6.524098  6.470262  6.684472 12.691206 12.671379 12.580063
#> item 2   4.947082  8.682393  4.983938  7.486894  8.602055  5.244937  7.497519
#> item 3   6.002485 11.084444  5.941692 11.119824 11.168770  6.012785 11.074382
#> item 4   6.613297 12.161278  6.286634 12.025343 12.156251  6.775847 11.960736
#> item 5   8.064761  4.590315  7.907560  8.059337  4.519330  7.911191  7.919195
#> item 6   7.201219 13.249824  7.089261 13.313447 13.337597  7.295846 13.393667
#> item 7   6.164742 10.761184  6.072888 10.583438 10.849242  6.130770 10.655110
#> item 8   6.377801  6.515879  4.439771  6.605767  8.277720  6.259688  8.439031
#> item 9   5.912215  5.462050  4.560078  4.601273  6.956146  6.277363  5.806324
#> item 10  6.185118  6.367021  5.972354  6.887771  7.734083  6.524238  7.868563
#> item 11 11.603467  6.442324 11.566194 11.717475  6.818969 11.534082 11.748548
#> item 12 11.400680  6.235673  6.599607  6.274384 11.387673 11.459979 11.475697
#> item 13  6.310694  3.883613  3.838437  3.998608  5.752488  6.345020  5.994691
#> item 14  5.157142  3.653213  3.136201  3.690737  4.827572  5.212326  4.821559
#> item 15  5.323391  4.565228  4.785982  4.328527  5.201699  5.322589  5.030275
#> item 16  6.299490  3.758537  4.136836  4.010889  6.209957  6.337644  6.395614
#> item 17  6.107792  7.690399  7.785926  5.484147  7.789898  8.383722  6.365087
#> item 18  5.466447  9.209104  9.276330  5.172116  9.268414  9.300077  6.016222
#> item 19  7.072193  9.885432  6.856686  9.816128 10.867454  7.234742  9.930915
#> item 20  4.680667  8.272343  8.406371  4.719096  8.196607  8.458628  4.686106
#>              0111      1111
#> item 1   6.873338 12.751971
#> item 2   8.504328  8.387309
#> item 3  11.054784 11.277695
#> item 4  12.109899 12.138941
#> item 5   7.692517  7.880922
#> item 6  13.306965 13.455563
#> item 7  10.693936 10.771122
#> item 8   6.518057  8.346711
#> item 9   5.786593  7.020561
#> item 10  7.072747  8.515929
#> item 11 11.715761 11.707787
#> item 12  7.428606 11.702021
#> item 13  4.771940  6.149082
#> item 14  3.739666  5.181292
#> item 15  4.779394  5.179952
#> item 16  3.937856  6.605509
#> item 17  8.633396  8.347022
#> item 18  9.239467  9.571837
#> item 19  9.940013 10.290767
#> item 20  8.063542  8.102853

## calculate beta after fitting CDM
CDM.obj <- CDM(data$dat, Q, model=model)
#> 
Iter = 1  Max. abs. change = 0.38660  Deviance  = 12248.06                                                                                  
Iter = 2  Max. abs. change = 0.11059  Deviance  = 11183.81                                                                                  
Iter = 3  Max. abs. change = 0.06737  Deviance  = 11131.99                                                                                  
Iter = 4  Max. abs. change = 0.03748  Deviance  = 11115.14                                                                                  
Iter = 5  Max. abs. change = 0.02617  Deviance  = 11108.05                                                                                  
Iter = 6  Max. abs. change = 0.02186  Deviance  = 11104.61                                                                                  
Iter = 7  Max. abs. change = 0.01803  Deviance  = 11102.43                                                                                  
Iter = 8  Max. abs. change = 0.01493  Deviance  = 11100.84                                                                                  
Iter = 9  Max. abs. change = 0.01338  Deviance  = 11099.61                                                                                  
Iter = 10  Max. abs. change = 0.01295  Deviance  = 11098.62                                                                                  
Iter = 11  Max. abs. change = 0.01246  Deviance  = 11097.79                                                                                  
Iter = 12  Max. abs. change = 0.01018  Deviance  = 11097.08                                                                                  
Iter = 13  Max. abs. change = 0.00954  Deviance  = 11096.54                                                                                  
Iter = 14  Max. abs. change = 0.00887  Deviance  = 11096.11                                                                                  
Iter = 15  Max. abs. change = 0.00824  Deviance  = 11095.75                                                                                  
Iter = 16  Max. abs. change = 0.00763  Deviance  = 11095.46                                                                                  
Iter = 17  Max. abs. change = 0.00704  Deviance  = 11095.22                                                                                  
Iter = 18  Max. abs. change = 0.00731  Deviance  = 11095.01                                                                                  
Iter = 19  Max. abs. change = 0.00754  Deviance  = 11094.84                                                                                  
Iter = 20  Max. abs. change = 0.00767  Deviance  = 11094.70                                                                                  
Iter = 21  Max. abs. change = 0.00771  Deviance  = 11094.57                                                                                  
Iter = 22  Max. abs. change = 0.00762  Deviance  = 11094.47                                                                                  
Iter = 23  Max. abs. change = 0.00745  Deviance  = 11094.38                                                                                  
Iter = 24  Max. abs. change = 0.00711  Deviance  = 11094.30                                                                                  
Iter = 25  Max. abs. change = 0.00667  Deviance  = 11094.23                                                                                  
Iter = 26  Max. abs. change = 0.00614  Deviance  = 11094.17                                                                                  
Iter = 27  Max. abs. change = 0.00554  Deviance  = 11094.12                                                                                  
Iter = 28  Max. abs. change = 0.00491  Deviance  = 11094.08                                                                                  
Iter = 29  Max. abs. change = 0.00425  Deviance  = 11094.04                                                                                  
Iter = 30  Max. abs. change = 0.00201  Deviance  = 11094.01                                                                                  
Iter = 31  Max. abs. change = 0.00180  Deviance  = 11094.00                                                                                  
Iter = 32  Max. abs. change = 0.00161  Deviance  = 11093.99                                                                                  
Iter = 33  Max. abs. change = 0.00144  Deviance  = 11093.98                                                                                  
Iter = 34  Max. abs. change = 0.00130  Deviance  = 11093.97                                                                                  
Iter = 35  Max. abs. change = 0.00115  Deviance  = 11093.97                                                                                  
Iter = 36  Max. abs. change = 0.00102  Deviance  = 11093.96                                                                                  
Iter = 37  Max. abs. change = 0.00091  Deviance  = 11093.96                                                                                  
Iter = 38  Max. abs. change = 0.00081  Deviance  = 11093.96                                                                                  
Iter = 39  Max. abs. change = 0.00072  Deviance  = 11093.96                                                                                  
Iter = 40  Max. abs. change = 0.00064  Deviance  = 11093.96                                                                                  
Iter = 41  Max. abs. change = 0.00056  Deviance  = 11093.95                                                                                  
Iter = 42  Max. abs. change = 0.00050  Deviance  = 11093.95                                                                                  
Iter = 43  Max. abs. change = 0.00045  Deviance  = 11093.95                                                                                  
Iter = 44  Max. abs. change = 0.00040  Deviance  = 11093.95                                                                                  
Iter = 45  Max. abs. change = 0.00035  Deviance  = 11093.95                                                                                  
Iter = 46  Max. abs. change = 0.00030  Deviance  = 11093.95                                                                                  
Iter = 47  Max. abs. change = 0.00028  Deviance  = 11093.95                                                                                  
Iter = 48  Max. abs. change = 0.00029  Deviance  = 11093.95                                                                                  
Iter = 49  Max. abs. change = 0.00023  Deviance  = 11093.95                                                                                  
Iter = 50  Max. abs. change = 0.00030  Deviance  = 11093.95                                                                                  
Iter = 51  Max. abs. change = 0.00021  Deviance  = 11093.95                                                                                  
Iter = 52  Max. abs. change = 0.00022  Deviance  = 11093.95                                                                                  
Iter = 53  Max. abs. change = 0.00009  Deviance  = 11093.95                                                                                  
beta <-get.beta(CDM.obj = CDM.obj)
print(beta)
#>         0000      1000     0100      0010      0001      1100      1010
#> item 1     0 12.536013 6.348455  6.665375  6.545036 12.657793 12.556949
#> item 2     0  4.701023 4.835594  7.880464  4.767784  4.880682  7.783595
#> item 3     0  6.000423 5.984464 11.081292  5.817400  6.002723 11.052846
#> item 4     0  6.610759 6.431350 12.025389  6.330424  6.607650 11.951857
#> item 5     0  4.228729 4.511071  4.397403  8.075214  4.461032  4.328413
#> item 6     0  7.197747 7.276834 13.286388  6.982937  7.259455 13.382040
#> item 7     0  6.051121 5.989876 10.685024  6.042967  6.041710 10.716182
#> item 8     0  6.373027 4.418952  6.602897  4.604694  6.192314  8.397309
#> item 9     0  5.935687 4.610452  4.619872  3.672466  6.044533  5.843310
#> item 10    0  5.814636 4.934839  6.430626  5.736079  5.792140  7.649807
#> item 11    0  6.521445 6.597461  6.356808 11.597482  6.644690  6.417650
#> item 12    0 11.424552 6.408670  6.083692  6.405874 11.410291 11.425579
#> item 13    0  6.206209 3.571933  3.867014  3.731433  6.186664  5.861326
#> item 14    0  5.169853 3.050974  3.690706  2.869024  5.129340  4.805456
#> item 15    0  4.527839 4.413331  3.323129  4.580388  5.540836  4.293511
#> item 16    0  6.250999 3.773858  3.655213  4.052968  6.193971  6.259447
#> item 17    0  5.222225 7.704109  4.903814  5.411812  7.507962  5.265666
#> item 18    0  5.163551 9.189938  5.031139  5.291272  9.155232  5.069919
#> item 19    0  6.682333 6.629218  9.933980  6.823642  6.808410  9.862425
#> item 20    0  4.551945 8.458591  4.776411  4.683912  8.499697  4.578905
#>              1001      0110      0101      0011      1110      1101      1011
#> item 1  12.537130  6.524098  6.470262  6.684472 12.691206 12.671379 12.580063
#> item 2   4.947082  8.682393  4.983938  7.486894  8.602055  5.244937  7.497519
#> item 3   6.002485 11.084444  5.941692 11.119824 11.168770  6.012785 11.074382
#> item 4   6.613297 12.161278  6.286634 12.025343 12.156251  6.775847 11.960736
#> item 5   8.064761  4.590315  7.907560  8.059337  4.519330  7.911191  7.919195
#> item 6   7.201219 13.249824  7.089261 13.313447 13.337597  7.295846 13.393667
#> item 7   6.164742 10.761184  6.072888 10.583438 10.849242  6.130770 10.655110
#> item 8   6.377801  6.515879  4.439771  6.605767  8.277720  6.259688  8.439031
#> item 9   5.912215  5.462050  4.560078  4.601273  6.956146  6.277363  5.806324
#> item 10  6.185118  6.367021  5.972354  6.887771  7.734083  6.524238  7.868563
#> item 11 11.603467  6.442324 11.566194 11.717475  6.818969 11.534082 11.748548
#> item 12 11.400680  6.235673  6.599607  6.274384 11.387673 11.459979 11.475697
#> item 13  6.310694  3.883613  3.838437  3.998608  5.752488  6.345020  5.994691
#> item 14  5.157142  3.653213  3.136201  3.690737  4.827572  5.212326  4.821559
#> item 15  5.323391  4.565228  4.785982  4.328527  5.201699  5.322589  5.030275
#> item 16  6.299490  3.758537  4.136836  4.010889  6.209957  6.337644  6.395614
#> item 17  6.107792  7.690399  7.785926  5.484147  7.789898  8.383722  6.365087
#> item 18  5.466447  9.209104  9.276330  5.172116  9.268414  9.300077  6.016222
#> item 19  7.072193  9.885432  6.856686  9.816128 10.867454  7.234742  9.930915
#> item 20  4.680667  8.272343  8.406371  4.719096  8.196607  8.458628  4.686106
#>              0111      1111
#> item 1   6.873338 12.751971
#> item 2   8.504328  8.387309
#> item 3  11.054784 11.277695
#> item 4  12.109899 12.138941
#> item 5   7.692517  7.880922
#> item 6  13.306965 13.455563
#> item 7  10.693936 10.771122
#> item 8   6.518057  8.346711
#> item 9   5.786593  7.020561
#> item 10  7.072747  8.515929
#> item 11 11.715761 11.707787
#> item 12  7.428606 11.702021
#> item 13  4.771940  6.149082
#> item 14  3.739666  5.181292
#> item 15  4.779394  5.179952
#> item 16  3.937856  6.605509
#> item 17  8.633396  8.347022
#> item 18  9.239467  9.571837
#> item 19  9.940013 10.290767
#> item 20  8.063542  8.102853
# }