get.beta.Rd
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")
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
.
A required binary \(I\) × \(K\) matrix containing the attributes not required or required
master the items. The i
th 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\).
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
.
Type of model to be fitted; can be "GDINA"
, "LCDM"
, "DINA"
, "DINO"
,
"ACDM"
, "LLM"
, or "rRUM"
. Default = "GDINA"
.
An object of class matrix
, which consisted of \(\beta\) index for each item and each possible attribute mastery pattern.
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.
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
# \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
# }