The update function provides a unified interface for refreshing or modifying existing analysis objects produced by the Qval package, including CDM, validation, sim.data, fit, is.Qident, att.hierarchy classes. By passing additional arguments, users can rerun fitting or simulation routines without reconstructing the entire object from scratch.

update(x, ...)

# S3 method for class 'CDM'
update(x, ...)

# S3 method for class 'validation'
update(x, ...)

# S3 method for class 'sim.data'
update(x, ...)

# S3 method for class 'fit'
update(x, ...)

# S3 method for class 'is.Qident'
update(x, ...)

# S3 method for class 'att.hierarchy'
update(x, ...)

Arguments

x

An object of class CDM, validation, sim.data, fit, is.Qident, att.hierarchy.

...

Additional arguments specific to the method being updated:

  • For CDM: Y, Q, model, method, mono.constraint, maxitr, verbose.

  • For validation: Y, Q, CDM.obj, par.method, mono.constraint, model, method, search.method, iter.level, maxitr, eps, alpha.level, criter, verbose.

  • For sim.data: Q, N, IQ, model, distribute, control, verbose.

  • For fit: Y, Q, model. ...

Value

An updated object of the same class as x, reflecting any changes in the supplied parameters.

Details

The update methods internally extract the original call arguments from the input object, combine them with any new parameters provided in ..., and re-invoke the corresponding constructor (CDM, validation, sim.data, fit, is.Qident), att.hierarchy. This approach ensures consistency and preserves all untouched settings from the original object.

Methods (by class)

  • update(CDM): Update method for CDM objects

  • update(validation): Update method for validation objects

  • update(sim.data): Update method for sim.data objects

  • update(fit): Update method for fit objects

  • update(is.Qident): Update method for is.Qident objects

  • update(att.hierarchy): Update method for att.hierarchy objects

Examples

set.seed(123)
library(Qval)

# \donttest{
################################################################
# Example 1: summary a CDM object                              #
################################################################
Q <- sim.Q(3, 20)
IQ <- list(P0 = runif(20, 0, 0.2), P1 = runif(20, 0.8, 1))
data.obj <- sim.data(Q, N = 500, IQ = IQ, 
                     model = "GDINA", distribute = "horder")
#> distribute =  horder 
#> model =  GDINA 
#>  number of attributes:  3 
#>  number of items:  20 
#>  num of examinees:  500 
#>  average of P0 =  0.083 
#>  average of P1 =  0.894 
#> theta_mean =  -0.055 , theta_sd = 0.996 
#>  a =  1.5 1.5 1.5 
#>  b =  -1.5 1.5 0 
CDM.obj <- CDM(data.obj$dat, Q, model = "GDINA", method = "BM")
#> 
Iter = 1  Max. abs. change = 0.47416  Deviance  = 10618.124                                                                                  
Iter = 2  Max. abs. change = 0.08438  Deviance  = 8530.162                                                                                  
Iter = 3  Max. abs. change = 0.01996  Deviance  = 8483.338                                                                                  
Iter = 4  Max. abs. change = 0.01259  Deviance  = 8480.464                                                                                  
Iter = 5  Max. abs. change = 0.01288  Deviance  = 8479.946                                                                                  
Iter = 6  Max. abs. change = 0.01062  Deviance  = 8479.774                                                                                  
Iter = 7  Max. abs. change = 0.00786  Deviance  = 8479.705                                                                                  
Iter = 8  Max. abs. change = 0.00546  Deviance  = 8479.675                                                                                  
Iter = 9  Max. abs. change = 0.00364  Deviance  = 8479.662                                                                                  
Iter = 10  Max. abs. change = 0.00237  Deviance  = 8479.656                                                                                  
Iter = 11  Max. abs. change = 0.00152  Deviance  = 8479.653                                                                                  
Iter = 12  Max. abs. change = 0.00097  Deviance  = 8479.652                                                                                  
Iter = 13  Max. abs. change = 0.00062  Deviance  = 8479.651                                                                                  
Iter = 14  Max. abs. change = 0.00039  Deviance  = 8479.651                                                                                  
Iter = 15  Max. abs. change = 0.00025  Deviance  = 8479.651                                                                                  
Iter = 16  Max. abs. change = 0.00016  Deviance  = 8479.651                                                                                  
Iter = 17  Max. abs. change = 0.00010  Deviance  = 8479.651                                                                                  
Iter = 18  Max. abs. change = 0.00007  Deviance  = 8479.651                                                                                  
summary(CDM.obj)
#> ==============================================
#>  Number of items       = 20 
#>  Number of attributes  = 3 
#>  Number of individuals = 500 
#> 
#> Model Fit:
#> Deviance     npar      AIC      BIC 
#> 8479.651   67.000 8613.651 8896.029 
#> 
#> Distribution of Alpha Patterns:
#>        000   001  010   011   100   101   110   111
#> freq    97    21  120   144     4     9    32    73
#> prop 0.194 0.042 0.24 0.288 0.008 0.018 0.064 0.146

CDM.updated <- update(CDM.obj, method = "EM", maxitr = 1000)
#> 
Iter = 1  Max. abs. change = 0.58226  Deviance  = 10238.69                                                                                  
Iter = 2  Max. abs. change = 0.09628  Deviance  = 8499.25                                                                                  
Iter = 3  Max. abs. change = 0.03447  Deviance  = 8474.14                                                                                  
Iter = 4  Max. abs. change = 0.01418  Deviance  = 8473.11                                                                                  
Iter = 5  Max. abs. change = 0.01087  Deviance  = 8473.00                                                                                  
Iter = 6  Max. abs. change = 0.00870  Deviance  = 8472.98                                                                                  
Iter = 7  Max. abs. change = 0.00678  Deviance  = 8472.96                                                                                  
Iter = 8  Max. abs. change = 0.00521  Deviance  = 8472.96                                                                                  
Iter = 9  Max. abs. change = 0.00398  Deviance  = 8472.95                                                                                  
Iter = 10  Max. abs. change = 0.00303  Deviance  = 8472.95                                                                                  
Iter = 11  Max. abs. change = 0.00230  Deviance  = 8472.95                                                                                  
Iter = 12  Max. abs. change = 0.00174  Deviance  = 8472.95                                                                                  
Iter = 13  Max. abs. change = 0.00131  Deviance  = 8472.95                                                                                  
Iter = 14  Max. abs. change = 0.00099  Deviance  = 8472.95                                                                                  
Iter = 15  Max. abs. change = 0.00075  Deviance  = 8472.95                                                                                  
Iter = 16  Max. abs. change = 0.00056  Deviance  = 8472.95                                                                                  
Iter = 17  Max. abs. change = 0.00042  Deviance  = 8472.95                                                                                  
Iter = 18  Max. abs. change = 0.00032  Deviance  = 8472.95                                                                                  
Iter = 19  Max. abs. change = 0.00024  Deviance  = 8472.95                                                                                  
Iter = 20  Max. abs. change = 0.00018  Deviance  = 8472.95                                                                                  
Iter = 21  Max. abs. change = 0.00014  Deviance  = 8472.95                                                                                  
Iter = 22  Max. abs. change = 0.00010  Deviance  = 8472.95                                                                                  
Iter = 23  Max. abs. change = 0.00008  Deviance  = 8472.95                                                                                  
summary(CDM.updated)
#> ==============================================
#>  Number of items       = 20 
#>  Number of attributes  = 3 
#>  Number of individuals = 500 
#> 
#> Model Fit:
#> Deviance     npar      AIC      BIC 
#> 8472.948   87.000 8646.948 9013.619 
#> 
#> Distribution of Alpha Patterns:
#>        000   001  010   011   100   101   110   111
#> freq    97    21  120   144     4    13    32    69
#> prop 0.194 0.042 0.24 0.288 0.008 0.026 0.064 0.138


################################################################
# Example 2: summary a validation object                       #
################################################################
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.obj2 <- CDM(data.obj$dat, MQ)
#> 
Iter = 1  Max. abs. change = 0.55372  Deviance  = 11376.15                                                                                  
Iter = 2  Max. abs. change = 0.20467  Deviance  = 8794.76                                                                                  
Iter = 3  Max. abs. change = 0.09264  Deviance  = 8719.26                                                                                  
Iter = 4  Max. abs. change = 0.02536  Deviance  = 8711.41                                                                                  
Iter = 5  Max. abs. change = 0.01925  Deviance  = 8709.92                                                                                  
Iter = 6  Max. abs. change = 0.01285  Deviance  = 8709.44                                                                                  
Iter = 7  Max. abs. change = 0.00801  Deviance  = 8709.25                                                                                  
Iter = 8  Max. abs. change = 0.00478  Deviance  = 8709.17                                                                                  
Iter = 9  Max. abs. change = 0.00281  Deviance  = 8709.14                                                                                  
Iter = 10  Max. abs. change = 0.00167  Deviance  = 8709.13                                                                                  
Iter = 11  Max. abs. change = 0.00101  Deviance  = 8709.12                                                                                  
Iter = 12  Max. abs. change = 0.00064  Deviance  = 8709.12                                                                                  
Iter = 13  Max. abs. change = 0.00041  Deviance  = 8709.12                                                                                  
Iter = 14  Max. abs. change = 0.00029  Deviance  = 8709.11                                                                                  
Iter = 15  Max. abs. change = 0.00021  Deviance  = 8709.11                                                                                  
Iter = 16  Max. abs. change = 0.00015  Deviance  = 8709.11                                                                                  
Iter = 17  Max. abs. change = 0.00011  Deviance  = 8709.11                                                                                  
Iter = 18  Max. abs. change = 0.00008  Deviance  = 8709.11                                                                                  
validation.obj <- validation(data.obj$dat, MQ, CDM.obj2, 
                             method = "GDI")
#> GDI  method with  PAA  in  test  level iteration ...
#> Iter  =  1/  1,   9 items have changed, ΔPVAF=1.04625 
summary(validation.obj)
#> ==============================================
#> 
#> Suggested Q-matrix: 
#> 
#>         A1 A2 A3
#> item 1  0  1  0 
#> item 2  1  0  1 
#> item 3  1  0* 1 
#> item 4  0  0  1 
#> item 5  1* 0  1 
#> item 6  0* 0  1 
#> item 7  0  0  1 
#> item 8  0* 1  0 
#> item 9  0  0  1 
#> item 10 0* 1  1 
#> item 11 1  1  0*
#> item 12 0  1  1*
#> item 13 1  0  0 
#> item 14 0  0  1 
#> item 15 1  0* 0 
#> item 16 0  1  1 
#> item 17 1  1  1 
#> item 18 1  0  1 
#> item 19 0  1  0*
#> item 20 1  1  1 
#> Note: * denotes a modified element.

validation.updated <- update(validation.obj, method = "Hull")
#> Hull  method with  PAA  in  test  level iteration ...
#> Iter  =   1/   1, 12 items have changed, ΔPVAF=1.29641 
summary(validation.updated)
#> ==============================================
#> 
#> Suggested Q-matrix: 
#> 
#>         A1 A2 A3
#> item 1  0  1  1*
#> item 2  1  0  1 
#> item 3  1  0* 1 
#> item 4  0  0  1 
#> item 5  1* 0  1 
#> item 6  0* 0  1 
#> item 7  0  0  1 
#> item 8  0* 1  0 
#> item 9  0  0  1 
#> item 10 0* 1  1 
#> item 11 1  1  0*
#> item 12 0  1  1*
#> item 13 1  0  0 
#> item 14 0  0  1 
#> item 15 1  0* 0 
#> item 16 0  1  1 
#> item 17 0* 1  0*
#> item 18 1  0  1 
#> item 19 0  1  0*
#> item 20 1  1  0*
#> Note: * denotes a modified element.


################################################################
# Example 3: summary a sim.data object                         #
################################################################
data.obj2 <- sim.data(Q = sim.Q(3, 10), N = 1000)
#> distribute =  uniform 
#> model =  GDINA 
#>  number of attributes:  3 
#>  number of items:  10 
#>  num of examinees:  1000 
#>  average of P0 =  0.134 
#>  average of P1 =  0.865 
summary(data.obj2)
#> ==============================================
#>  Number of items       = 10 
#>  Number of attributes  = 3 
#>  Number of individuals = 1000 
#> 
#> Distribution of Alpha Patterns:
#>        000   001   010   011   100   101  110   111
#> freq   134   106   119   117   127   139  130   128
#> prop 0.134 0.106 0.119 0.117 0.127 0.139 0.13 0.128

data.updated <- update(data.obj2, N = 200)
#> distribute =  uniform 
#> model =  GDINA 
#>  number of attributes:  3 
#>  number of items:  10 
#>  num of examinees:  200 
#>  average of P0 =  0.124 
#>  average of P1 =  0.876 
summary(data.updated)
#> ==============================================
#>  Number of items       = 10 
#>  Number of attributes  = 3 
#>  Number of individuals = 200 
#> 
#> Distribution of Alpha Patterns:
#>        000  001  010   011  100  101  110  111
#> freq    29   30   22    27   24   22   24   22
#> prop 0.145 0.15 0.11 0.135 0.12 0.11 0.12 0.11


################################################################
# Example 4: summary a fit object                              #
################################################################
fit.obj <- fit(data.obj$dat, Q, model = "GDINA")
#> 
Iter = 1  Max. abs. change = 0.58226  Deviance  = 10238.69                                                                                  
Iter = 2  Max. abs. change = 0.09628  Deviance  = 8499.25                                                                                  
Iter = 3  Max. abs. change = 0.03447  Deviance  = 8474.14                                                                                  
Iter = 4  Max. abs. change = 0.01418  Deviance  = 8473.11                                                                                  
Iter = 5  Max. abs. change = 0.01087  Deviance  = 8473.00                                                                                  
Iter = 6  Max. abs. change = 0.00870  Deviance  = 8472.98                                                                                  
Iter = 7  Max. abs. change = 0.00678  Deviance  = 8472.96                                                                                  
Iter = 8  Max. abs. change = 0.00521  Deviance  = 8472.96                                                                                  
Iter = 9  Max. abs. change = 0.00398  Deviance  = 8472.95                                                                                  
Iter = 10  Max. abs. change = 0.00303  Deviance  = 8472.95                                                                                  
Iter = 11  Max. abs. change = 0.00230  Deviance  = 8472.95                                                                                  
Iter = 12  Max. abs. change = 0.00174  Deviance  = 8472.95                                                                                  
Iter = 13  Max. abs. change = 0.00131  Deviance  = 8472.95                                                                                  
Iter = 14  Max. abs. change = 0.00099  Deviance  = 8472.95                                                                                  
Iter = 15  Max. abs. change = 0.00075  Deviance  = 8472.95                                                                                  
Iter = 16  Max. abs. change = 0.00056  Deviance  = 8472.95                                                                                  
Iter = 17  Max. abs. change = 0.00042  Deviance  = 8472.95                                                                                  
Iter = 18  Max. abs. change = 0.00032  Deviance  = 8472.95                                                                                  
Iter = 19  Max. abs. change = 0.00024  Deviance  = 8472.95                                                                                  
Iter = 20  Max. abs. change = 0.00018  Deviance  = 8472.95                                                                                  
Iter = 21  Max. abs. change = 0.00014  Deviance  = 8472.95                                                                                  
Iter = 22  Max. abs. change = 0.00010  Deviance  = 8472.95                                                                                  
Iter = 23  Max. abs. change = 0.00008  Deviance  = 8472.95                                                                                  
summary(fit.obj)
#> ==============================================
#>  Number of parameters  = 87 
#> 
#> Relative fit indices  = :
#>     -2LL      AIC      BIC     CAIC    SABIC 
#> 8472.948 8646.948 9013.619 9100.619 8737.475 
#> 
#> Absolute fit indices = :
#>      M2      df p.value  RMSEA2   SRMSR 
#> 126.958 123.000   0.385   0.008   0.028 

data.updated <- update(fit.obj, model = "DINA")
#> 
Iter = 1  Max. abs. change = 0.59291  Deviance  = 10238.69                                                                                  
Iter = 2  Max. abs. change = 0.06920  Deviance  = 9793.16                                                                                  
Iter = 3  Max. abs. change = 0.04277  Deviance  = 9750.58                                                                                  
Iter = 4  Max. abs. change = 0.03099  Deviance  = 9736.79                                                                                  
Iter = 5  Max. abs. change = 0.02597  Deviance  = 9728.43                                                                                  
Iter = 6  Max. abs. change = 0.02258  Deviance  = 9722.29                                                                                  
Iter = 7  Max. abs. change = 0.01978  Deviance  = 9717.38                                                                                  
Iter = 8  Max. abs. change = 0.01727  Deviance  = 9713.31                                                                                  
Iter = 9  Max. abs. change = 0.01501  Deviance  = 9709.93                                                                                  
Iter = 10  Max. abs. change = 0.01301  Deviance  = 9707.14                                                                                  
Iter = 11  Max. abs. change = 0.01162  Deviance  = 9704.83                                                                                  
Iter = 12  Max. abs. change = 0.01043  Deviance  = 9702.96                                                                                  
Iter = 13  Max. abs. change = 0.00928  Deviance  = 9701.43                                                                                  
Iter = 14  Max. abs. change = 0.00819  Deviance  = 9700.22                                                                                  
Iter = 15  Max. abs. change = 0.00719  Deviance  = 9699.27                                                                                  
Iter = 16  Max. abs. change = 0.00629  Deviance  = 9698.52                                                                                  
Iter = 17  Max. abs. change = 0.00550  Deviance  = 9697.96                                                                                  
Iter = 18  Max. abs. change = 0.00481  Deviance  = 9697.53                                                                                  
Iter = 19  Max. abs. change = 0.00421  Deviance  = 9697.21                                                                                  
Iter = 20  Max. abs. change = 0.00369  Deviance  = 9696.97                                                                                  
Iter = 21  Max. abs. change = 0.00324  Deviance  = 9696.79                                                                                  
Iter = 22  Max. abs. change = 0.00284  Deviance  = 9696.67                                                                                  
Iter = 23  Max. abs. change = 0.00250  Deviance  = 9696.57                                                                                  
Iter = 24  Max. abs. change = 0.00220  Deviance  = 9696.50                                                                                  
Iter = 25  Max. abs. change = 0.00195  Deviance  = 9696.45                                                                                  
Iter = 26  Max. abs. change = 0.00172  Deviance  = 9696.41                                                                                  
Iter = 27  Max. abs. change = 0.00153  Deviance  = 9696.38                                                                                  
Iter = 28  Max. abs. change = 0.00135  Deviance  = 9696.36                                                                                  
Iter = 29  Max. abs. change = 0.00120  Deviance  = 9696.34                                                                                  
Iter = 30  Max. abs. change = 0.00107  Deviance  = 9696.33                                                                                  
Iter = 31  Max. abs. change = 0.00095  Deviance  = 9696.32                                                                                  
Iter = 32  Max. abs. change = 0.00085  Deviance  = 9696.31                                                                                  
Iter = 33  Max. abs. change = 0.00075  Deviance  = 9696.30                                                                                  
Iter = 34  Max. abs. change = 0.00067  Deviance  = 9696.30                                                                                  
Iter = 35  Max. abs. change = 0.00060  Deviance  = 9696.30                                                                                  
Iter = 36  Max. abs. change = 0.00054  Deviance  = 9696.29                                                                                  
Iter = 37  Max. abs. change = 0.00048  Deviance  = 9696.29                                                                                  
Iter = 38  Max. abs. change = 0.00043  Deviance  = 9696.29                                                                                  
Iter = 39  Max. abs. change = 0.00038  Deviance  = 9696.29                                                                                  
Iter = 40  Max. abs. change = 0.00034  Deviance  = 9696.28                                                                                  
Iter = 41  Max. abs. change = 0.00031  Deviance  = 9696.28                                                                                  
Iter = 42  Max. abs. change = 0.00027  Deviance  = 9696.28                                                                                  
Iter = 43  Max. abs. change = 0.00024  Deviance  = 9696.28                                                                                  
Iter = 44  Max. abs. change = 0.00022  Deviance  = 9696.28                                                                                  
Iter = 45  Max. abs. change = 0.00020  Deviance  = 9696.28                                                                                  
Iter = 46  Max. abs. change = 0.00018  Deviance  = 9696.28                                                                                  
Iter = 47  Max. abs. change = 0.00016  Deviance  = 9696.28                                                                                  
Iter = 48  Max. abs. change = 0.00014  Deviance  = 9696.28                                                                                  
Iter = 49  Max. abs. change = 0.00013  Deviance  = 9696.28                                                                                  
Iter = 50  Max. abs. change = 0.00011  Deviance  = 9696.28                                                                                  
Iter = 51  Max. abs. change = 0.00010  Deviance  = 9696.28                                                                                  
Iter = 52  Max. abs. change = 0.00009  Deviance  = 9696.28                                                                                  
summary(data.updated)
#> ==============================================
#>  Number of parameters  = 47 
#> 
#> Relative fit indices  = :
#>      -2LL       AIC       BIC      CAIC     SABIC 
#>  9696.279  9790.279  9988.366 10035.366  9839.185 
#> 
#> Absolute fit indices = :
#>      M2      df p.value  RMSEA2   SRMSR 
#> 644.528 163.000   0.000   0.077   0.147 
# }