Print concise, user-friendly summaries of objects generated by the Qval package. Supports objects of classes CDM, validation, sim.data, as well as their corresponding summary objects.

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

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

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

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

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

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

Arguments

x

An object of the appropriate class (e.g., CDM, validation, sim.data, or their summaries).

...

Currently unused. Additional arguments are ignored.

Value

Invisibly returns x.

Details

The print methods provide an at-a-glance view of key information:

print.CDM

displays sample size, item and attribute counts, and package information.

print.validation

shows suggested modifications to the Q-matrix, marking changed entries with an asterisk.

print.sim.data

reports dimensions of simulated data and offers guidance on extraction.

print.summary.CDM

prints fitted model details and alpha-pattern distribution from a summary.CDM object.

print.summary.validation

prints suggested Q-matrix changes or a message if none are recommended.

print.summary.sim.data

prints attribute-pattern frequencies and proportions from summary.sim.data.

Methods (by class)

  • print(CDM): Print method for CDM objects

  • print(validation): Print method for validation objects

  • print(sim.data): Print method for sim.data objects

  • print(summary.CDM): Print method for summary.CDM objects

  • print(summary.validation): Print method for summary.validation objects

  • print(summary.sim.data): Print method for summary.sim.data objects

Examples

set.seed(123)
library(Qval)

# \donttest{
################################################################
# Example 1: print a CDM object                                #
################################################################
Q <- sim.Q(3, 20)
IQ <- list(P0 = runif(20, 0.0, 0.2), P1 = runif(20, 0.8, 1.0))
data.obj <- sim.data(Q = 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 = "EM", maxitr = 2000, verbose = 1)
#> 
Iter = 1  Max. abs. change = 0.57951  Deviance  = 10238.69                                                                                  
Iter = 2  Max. abs. change = 0.09509  Deviance  = 8501.84                                                                                  
Iter = 3  Max. abs. change = 0.03995  Deviance  = 8478.24                                                                                  
Iter = 4  Max. abs. change = 0.01792  Deviance  = 8477.13                                                                                  
Iter = 5  Max. abs. change = 0.02604  Deviance  = 8477.02                                                                                  
Iter = 6  Max. abs. change = 0.01142  Deviance  = 8476.97                                                                                  
Iter = 7  Max. abs. change = 0.01740  Deviance  = 8476.96                                                                                  
Iter = 8  Max. abs. change = 0.00686  Deviance  = 8476.95                                                                                  
Iter = 9  Max. abs. change = 0.00466  Deviance  = 8476.94                                                                                  
Iter = 10  Max. abs. change = 0.00253  Deviance  = 8476.94                                                                                  
Iter = 11  Max. abs. change = 0.00030  Deviance  = 8476.94                                                                                  
Iter = 12  Max. abs. change = 0.00014  Deviance  = 8476.94                                                                                  
Iter = 13  Max. abs. change = 0.00016  Deviance  = 8476.94                                                                                  
Iter = 14  Max. abs. change = 0.00760  Deviance  = 8476.94                                                                                  
Iter = 15  Max. abs. change = 0.00246  Deviance  = 8476.94                                                                                  
Iter = 16  Max. abs. change = 0.00502  Deviance  = 8476.94                                                                                  
Iter = 17  Max. abs. change = 0.00017  Deviance  = 8476.94                                                                                  
Iter = 18  Max. abs. change = 0.00109  Deviance  = 8476.94                                                                                  
Iter = 19  Max. abs. change = 0.00004  Deviance  = 8476.94                                                                                  
print(CDM.obj)
#> Qval version1.2.2(2025-05-02) 
#> ==============================================
#>  Number of items       = 20 
#>  Number of attributes  = 3 
#>  Number of individuals = 500 
#>  To extract components, use the method extract.


################################################################
# Example 2: print a validation object                         #
################################################################
set.seed(123)
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.obj$dat, MQ)
#> 
Iter = 1  Max. abs. change = 0.47926  Deviance  = 11325.04                                                                                  
Iter = 2  Max. abs. change = 0.13995  Deviance  = 9168.03                                                                                  
Iter = 3  Max. abs. change = 0.07841  Deviance  = 9097.21                                                                                  
Iter = 4  Max. abs. change = 0.02452  Deviance  = 9091.20                                                                                  
Iter = 5  Max. abs. change = 0.00702  Deviance  = 9090.55                                                                                  
Iter = 6  Max. abs. change = 0.00397  Deviance  = 9090.47                                                                                  
Iter = 7  Max. abs. change = 0.00229  Deviance  = 9090.46                                                                                  
Iter = 8  Max. abs. change = 0.00148  Deviance  = 9090.46                                                                                  
Iter = 9  Max. abs. change = 0.00081  Deviance  = 9090.46                                                                                  
Iter = 10  Max. abs. change = 0.00054  Deviance  = 9090.46                                                                                  
Iter = 11  Max. abs. change = 0.00033  Deviance  = 9090.45                                                                                  
Iter = 12  Max. abs. change = 0.00020  Deviance  = 9090.45                                                                                  
Iter = 13  Max. abs. change = 0.00010  Deviance  = 9090.45                                                                                  
Iter = 14  Max. abs. change = 0.00004  Deviance  = 9090.45                                                                                  
validation.obj <- validation(data.obj$dat, MQ, CDM.obj, 
                             method = "GDI")
#> GDI  method with  PAA  in  test  level iteration ...
#> Iter  =  1/  1,   6 items have changed, ΔPVAF=1.37410 
print(validation.obj)
#> Qval version1.2.2(2025-05-02) 
#> ==============================================
#> 
#> 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.


################################################################
# Example 3: print a sim.data object                           #
################################################################
set.seed(123)
Q2 <- sim.Q(3, 10)
data.obj2 <- sim.data(Q = Q2, N = 1000)
#> distribute =  uniform 
#>  model =  GDINA 
#>  number of attributes:  3 
#>  number of items:  10 
#>  num of examinees:  1000 
#>  average of P0 =  0.174 
#>  average of P1 =  0.889 
print(data.obj2)
#> Qval version1.2.2(2025-05-02) 
#> ==============================================
#>  Number of items       = 10 
#>  Number of attributes  = 3 
#>  Number of individuals = 1000 
#>  To extract components, use the method extract.


################################################################
# Example 4: print summary objects                             #
################################################################
summary.CDM.obj <- summary(CDM.obj)
print(summary.CDM.obj)
#> ==============================================
#>  Number of items       = 20 
#>  Number of attributes  = 3 
#>  Number of individuals = 500 
#> 
#> Model Fit:
#> Deviance     npar      AIC      BIC 
#> 9090.455   89.000 9268.455 9643.555 
#> 
#> Distribution of Alpha Patterns:
#>        000   001   010  011   100   101   110  111
#> freq    96    17   124  135     4    11    33   80
#> prop 0.192 0.034 0.248 0.27 0.008 0.022 0.066 0.16

summary.val.obj <- summary(validation.obj)
print(summary.val.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.

summary.sim.obj <- summary(data.obj2)
print(summary.sim.obj)
#> ==============================================
#>  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   126   116   118   137  130   119   121   133
#> prop 0.126 0.116 0.118 0.137 0.13 0.119 0.121 0.133
# }