This function will provide the priorities of attributes for all items.

get.priority(
  Y = NULL,
  Q = NULL,
  att.str = NULL,
  CDM.obj = NULL,
  mono.constraint = FALSE,
  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\).

att.str

Specify attribute structures. NULL, by default, means there is no structure. Attribute structure needs be specified as a list - which will be internally handled by att.structure function. See examples. It can also be a matrix giving all permissible attribute profiles.

CDM.obj

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

mono.constraint

Logical indicating whether monotonicity constraints should be fulfilled in estimation. Default = FALSE.

model

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

Value

A matrix containing all attribute priorities.

Details

The calculation of priorities is straightforward (Qin & Guo, 2025): the priority of an attribute is the regression coefficient obtained from a LASSO multinomial logistic regression, with the attribute as the independent variable and the response data from the examinees as the dependent variable. The formula (Tu et al., 2022) is as follows:

$$ \log[\frac{P(X_{pi} = 1 | \boldsymbol{\Lambda}_{p})}{P(X_{pi} = 0 | \boldsymbol{\Lambda}_{p})}] = logit[P(X_{pi} = 1 | \boldsymbol{\Lambda}_{p})] = \beta_{i0} + \beta_{i1} \Lambda_{p1} + \ldots + \beta_{ik} \Lambda_{pk} + \ldots + \beta_{iK} \Lambda_{pK} $$

Where \(X_{pi}\) represents the response of examinee \(p\) on item \(i\), \(\boldsymbol{\Lambda}_{p}\) denotes the marginal mastery probabilities of examinee \(p\) (which can be obtained from the return value alpha.P of the CDM function), \(\beta_{i0}\) is the intercept term, and \(\beta_{ik}\) represents the regression coefficient.

The LASSO loss function can be expressed as:

$$l_{lasso}(\boldsymbol{X}_i | \boldsymbol{\Lambda}) = l(\boldsymbol{X}_i | \boldsymbol{\Lambda}) - \lambda |\boldsymbol{\beta}_i|$$

Where \(l_{lasso}(\boldsymbol{X}_i | \boldsymbol{\Lambda})\) is the penalized likelihood, \(l(\boldsymbol{X}_i | \boldsymbol{\Lambda})\) is the original likelihood, and \(\lambda\) is the tuning parameter for penalization (a larger value imposes a stronger penalty on \(\boldsymbol{\beta}_i = [\beta_{i1}, \ldots, \beta_{ik}, \ldots, \beta_{iK}]\)). The priority for attribute \(i\) is defined as: \(\boldsymbol{priority}_i = \boldsymbol{\beta}_i = [\beta_{i1}, \ldots, \beta_{ik}, \ldots, \beta_{iK}]\)

References

Qin, H., & Guo, L. (2025). Priority attribute algorithm for Q-matrix validation: A didactic. Behavior Research Methods, 57(1), 31. DOI: 10.3758/s13428-024-02547-5.

Tu, D., Chiu, J., Ma, W., Wang, D., Cai, Y., & Ouyang, X. (2022). A multiple logistic regression-based (MLR-B) Q-matrix validation method for cognitive diagnosis models: A confirmatory approach. Behavior Research Methods. DOI: 10.3758/s13428-022-01880-x.

See also

Examples

# \donttest{
set.seed(123)
library(Qval)

## generate Q-matrix and data
K <- 5
I <- 20
IQ <- list(
  P0 = runif(I, 0.1, 0.3),
  P1 = runif(I, 0.7, 0.9)
)

Q <- sim.Q(K, I)
data <- sim.data(Q = Q, N = 500, IQ = IQ, model = "GDINA", distribute = "horder")
#> distribute =  horder 
#> model =  GDINA 
#>  number of attributes:  5 
#>  number of items:  20 
#>  num of examinees:  500 
#>  average of P0 =  0.21 
#>  average of P1 =  0.815 
#> theta_mean =  0.03 , theta_sd = 0.969 
#>  a =  1.5 1.5 1.5 1.5 1.5 
#>  b =  1.5 -1.5 0 -0.75 0.75 
MQ <- sim.MQ(Q, 0.1)
#> rate of mis-specifications =  0.1 
#>  rate of  over-specifications =  0.07 
#>  rate of under-specifications =  0.03 

CDM.obj <- CDM(data$dat, MQ)
#> 
Iter = 1  Max. abs. change = 0.34790  Deviance  = 13326.50                                                                                  
Iter = 2  Max. abs. change = 0.17386  Deviance  = 11963.73                                                                                  
Iter = 3  Max. abs. change = 0.10554  Deviance  = 11845.74                                                                                  
Iter = 4  Max. abs. change = 0.09533  Deviance  = 11806.31                                                                                  
Iter = 5  Max. abs. change = 0.08312  Deviance  = 11787.70                                                                                  
Iter = 6  Max. abs. change = 0.10179  Deviance  = 11777.02                                                                                  
Iter = 7  Max. abs. change = 0.10305  Deviance  = 11770.30                                                                                  
Iter = 8  Max. abs. change = 0.09014  Deviance  = 11765.75                                                                                  
Iter = 9  Max. abs. change = 0.07415  Deviance  = 11762.53                                                                                  
Iter = 10  Max. abs. change = 0.06246  Deviance  = 11760.17                                                                                  
Iter = 11  Max. abs. change = 0.05713  Deviance  = 11758.42                                                                                  
Iter = 12  Max. abs. change = 0.05098  Deviance  = 11757.10                                                                                  
Iter = 13  Max. abs. change = 0.04476  Deviance  = 11756.09                                                                                  
Iter = 14  Max. abs. change = 0.03868  Deviance  = 11755.30                                                                                  
Iter = 15  Max. abs. change = 0.03271  Deviance  = 11754.66                                                                                  
Iter = 16  Max. abs. change = 0.02842  Deviance  = 11754.12                                                                                  
Iter = 17  Max. abs. change = 0.03057  Deviance  = 11753.67                                                                                  
Iter = 18  Max. abs. change = 0.03320  Deviance  = 11753.26                                                                                  
Iter = 19  Max. abs. change = 0.03610  Deviance  = 11752.88                                                                                  
Iter = 20  Max. abs. change = 0.03881  Deviance  = 11752.52                                                                                  
Iter = 21  Max. abs. change = 0.04042  Deviance  = 11752.15                                                                                  
Iter = 22  Max. abs. change = 0.03948  Deviance  = 11751.78                                                                                  
Iter = 23  Max. abs. change = 0.03461  Deviance  = 11751.40                                                                                  
Iter = 24  Max. abs. change = 0.02599  Deviance  = 11751.03                                                                                  
Iter = 25  Max. abs. change = 0.01624  Deviance  = 11750.72                                                                                  
Iter = 26  Max. abs. change = 0.00848  Deviance  = 11750.49                                                                                  
Iter = 27  Max. abs. change = 0.00383  Deviance  = 11750.34                                                                                  
Iter = 28  Max. abs. change = 0.00329  Deviance  = 11750.24                                                                                  
Iter = 29  Max. abs. change = 0.00292  Deviance  = 11750.17                                                                                  
Iter = 30  Max. abs. change = 0.00258  Deviance  = 11750.13                                                                                  
Iter = 31  Max. abs. change = 0.00234  Deviance  = 11750.10                                                                                  
Iter = 32  Max. abs. change = 0.00236  Deviance  = 11750.08                                                                                  
Iter = 33  Max. abs. change = 0.00242  Deviance  = 11750.06                                                                                  
Iter = 34  Max. abs. change = 0.00247  Deviance  = 11750.04                                                                                  
Iter = 35  Max. abs. change = 0.00251  Deviance  = 11750.03                                                                                  
Iter = 36  Max. abs. change = 0.00254  Deviance  = 11750.02                                                                                  
Iter = 37  Max. abs. change = 0.00257  Deviance  = 11750.01                                                                                  
Iter = 38  Max. abs. change = 0.00258  Deviance  = 11750.00                                                                                  
Iter = 39  Max. abs. change = 0.00259  Deviance  = 11749.99                                                                                  
Iter = 40  Max. abs. change = 0.00259  Deviance  = 11749.98                                                                                  
Iter = 41  Max. abs. change = 0.00258  Deviance  = 11749.98                                                                                  
Iter = 42  Max. abs. change = 0.00256  Deviance  = 11749.97                                                                                  
Iter = 43  Max. abs. change = 0.00253  Deviance  = 11749.96                                                                                  
Iter = 44  Max. abs. change = 0.00249  Deviance  = 11749.95                                                                                  
Iter = 45  Max. abs. change = 0.00243  Deviance  = 11749.95                                                                                  
Iter = 46  Max. abs. change = 0.00237  Deviance  = 11749.94                                                                                  
Iter = 47  Max. abs. change = 0.00229  Deviance  = 11749.93                                                                                  
Iter = 48  Max. abs. change = 0.00220  Deviance  = 11749.92                                                                                  
Iter = 49  Max. abs. change = 0.00210  Deviance  = 11749.92                                                                                  
Iter = 50  Max. abs. change = 0.00199  Deviance  = 11749.91                                                                                  
Iter = 51  Max. abs. change = 0.00187  Deviance  = 11749.91                                                                                  
Iter = 52  Max. abs. change = 0.00174  Deviance  = 11749.90                                                                                  
Iter = 53  Max. abs. change = 0.00161  Deviance  = 11749.89                                                                                  
Iter = 54  Max. abs. change = 0.00148  Deviance  = 11749.89                                                                                  
Iter = 55  Max. abs. change = 0.00135  Deviance  = 11749.88                                                                                  
Iter = 56  Max. abs. change = 0.00122  Deviance  = 11749.88                                                                                  
Iter = 57  Max. abs. change = 0.00109  Deviance  = 11749.87                                                                                  
Iter = 58  Max. abs. change = 0.00097  Deviance  = 11749.87                                                                                  
Iter = 59  Max. abs. change = 0.00086  Deviance  = 11749.86                                                                                  
Iter = 60  Max. abs. change = 0.00076  Deviance  = 11749.86                                                                                  
Iter = 61  Max. abs. change = 0.00066  Deviance  = 11749.85                                                                                  
Iter = 62  Max. abs. change = 0.00064  Deviance  = 11749.85                                                                                  
Iter = 63  Max. abs. change = 0.00064  Deviance  = 11749.85                                                                                  
Iter = 64  Max. abs. change = 0.00065  Deviance  = 11749.85                                                                                  
Iter = 65  Max. abs. change = 0.00065  Deviance  = 11749.84                                                                                  
Iter = 66  Max. abs. change = 0.00065  Deviance  = 11749.84                                                                                  
Iter = 67  Max. abs. change = 0.00064  Deviance  = 11749.84                                                                                  
Iter = 68  Max. abs. change = 0.00064  Deviance  = 11749.84                                                                                  
Iter = 69  Max. abs. change = 0.00064  Deviance  = 11749.83                                                                                  
Iter = 70  Max. abs. change = 0.00063  Deviance  = 11749.83                                                                                  
Iter = 71  Max. abs. change = 0.00062  Deviance  = 11749.83                                                                                  
Iter = 72  Max. abs. change = 0.00061  Deviance  = 11749.83                                                                                  
Iter = 73  Max. abs. change = 0.00060  Deviance  = 11749.83                                                                                  
Iter = 74  Max. abs. change = 0.00059  Deviance  = 11749.83                                                                                  
Iter = 75  Max. abs. change = 0.00058  Deviance  = 11749.82                                                                                  
Iter = 76  Max. abs. change = 0.00057  Deviance  = 11749.82                                                                                  
Iter = 77  Max. abs. change = 0.00056  Deviance  = 11749.82                                                                                  
Iter = 78  Max. abs. change = 0.00055  Deviance  = 11749.82                                                                                  
Iter = 79  Max. abs. change = 0.00054  Deviance  = 11749.82                                                                                  
Iter = 80  Max. abs. change = 0.00053  Deviance  = 11749.82                                                                                  
Iter = 81  Max. abs. change = 0.00051  Deviance  = 11749.82                                                                                  
Iter = 82  Max. abs. change = 0.00050  Deviance  = 11749.81                                                                                  
Iter = 83  Max. abs. change = 0.00049  Deviance  = 11749.81                                                                                  
Iter = 84  Max. abs. change = 0.00048  Deviance  = 11749.81                                                                                  
Iter = 85  Max. abs. change = 0.00047  Deviance  = 11749.81                                                                                  
Iter = 86  Max. abs. change = 0.00045  Deviance  = 11749.81                                                                                  
Iter = 87  Max. abs. change = 0.00044  Deviance  = 11749.81                                                                                  
Iter = 88  Max. abs. change = 0.00043  Deviance  = 11749.81                                                                                  
Iter = 89  Max. abs. change = 0.00042  Deviance  = 11749.81                                                                                  
Iter = 90  Max. abs. change = 0.00041  Deviance  = 11749.81                                                                                  
Iter = 91  Max. abs. change = 0.00039  Deviance  = 11749.81                                                                                  
Iter = 92  Max. abs. change = 0.00038  Deviance  = 11749.81                                                                                  
Iter = 93  Max. abs. change = 0.00037  Deviance  = 11749.80                                                                                  
Iter = 94  Max. abs. change = 0.00036  Deviance  = 11749.80                                                                                  
Iter = 95  Max. abs. change = 0.00035  Deviance  = 11749.80                                                                                  
Iter = 96  Max. abs. change = 0.00034  Deviance  = 11749.80                                                                                  
Iter = 97  Max. abs. change = 0.00033  Deviance  = 11749.80                                                                                  
Iter = 98  Max. abs. change = 0.00032  Deviance  = 11749.80                                                                                  
Iter = 99  Max. abs. change = 0.00031  Deviance  = 11749.80                                                                                  
Iter = 100  Max. abs. change = 0.00030  Deviance  = 11749.80                                                                                  
Iter = 101  Max. abs. change = 0.00029  Deviance  = 11749.80                                                                                  
Iter = 102  Max. abs. change = 0.00028  Deviance  = 11749.80                                                                                  
Iter = 103  Max. abs. change = 0.00027  Deviance  = 11749.80                                                                                  
Iter = 104  Max. abs. change = 0.00026  Deviance  = 11749.80                                                                                  
Iter = 105  Max. abs. change = 0.00026  Deviance  = 11749.80                                                                                  
Iter = 106  Max. abs. change = 0.00025  Deviance  = 11749.80                                                                                  
Iter = 107  Max. abs. change = 0.00024  Deviance  = 11749.79                                                                                  
Iter = 108  Max. abs. change = 0.00023  Deviance  = 11749.79                                                                                  
Iter = 109  Max. abs. change = 0.00022  Deviance  = 11749.79                                                                                  
Iter = 110  Max. abs. change = 0.00022  Deviance  = 11749.79                                                                                  
Iter = 111  Max. abs. change = 0.00021  Deviance  = 11749.79                                                                                  
Iter = 112  Max. abs. change = 0.00020  Deviance  = 11749.79                                                                                  
Iter = 113  Max. abs. change = 0.00019  Deviance  = 11749.79                                                                                  
Iter = 114  Max. abs. change = 0.00019  Deviance  = 11749.79                                                                                  
Iter = 115  Max. abs. change = 0.00018  Deviance  = 11749.79                                                                                  
Iter = 116  Max. abs. change = 0.00017  Deviance  = 11749.79                                                                                  
Iter = 117  Max. abs. change = 0.00017  Deviance  = 11749.79                                                                                  
Iter = 118  Max. abs. change = 0.00016  Deviance  = 11749.79                                                                                  
Iter = 119  Max. abs. change = 0.00016  Deviance  = 11749.79                                                                                  
Iter = 120  Max. abs. change = 0.00015  Deviance  = 11749.79                                                                                  
Iter = 121  Max. abs. change = 0.00015  Deviance  = 11749.79                                                                                  
Iter = 122  Max. abs. change = 0.00014  Deviance  = 11749.79                                                                                  
Iter = 123  Max. abs. change = 0.00013  Deviance  = 11749.79                                                                                  
Iter = 124  Max. abs. change = 0.00013  Deviance  = 11749.79                                                                                  
Iter = 125  Max. abs. change = 0.00012  Deviance  = 11749.79                                                                                  
Iter = 126  Max. abs. change = 0.00012  Deviance  = 11749.79                                                                                  
Iter = 127  Max. abs. change = 0.00012  Deviance  = 11749.79                                                                                  
Iter = 128  Max. abs. change = 0.00011  Deviance  = 11749.79                                                                                  
Iter = 129  Max. abs. change = 0.00011  Deviance  = 11749.79                                                                                  
Iter = 130  Max. abs. change = 0.00010  Deviance  = 11749.79                                                                                  
Iter = 131  Max. abs. change = 0.00010  Deviance  = 11749.79                                                                                  

priority <- get.priority(data$dat, Q, CDM.obj=CDM.obj)
head(priority)
#>        A1         A2        A3        A4        A5
#> item 1  0  5.1092248  0.000000  0.000000 0.0000000
#> item 2  0 -0.7697590 -1.459747 -1.246299 7.4984587
#> item 3  0  0.0000000  3.828876  0.000000 0.0000000
#> item 4  0  2.7903102  0.000000  0.000000 0.3352957
#> item 5  0  0.0000000  0.000000  1.217809 2.2270149
#> item 6  0  0.3648282  3.935674  0.000000 0.0000000
# }