Thurstonian IRT Example

Dimitrios Zacharatos

Load

library(thurstonianIRT)

The data

First the data have to be encoded from Rank to binary. Examples of encoding are shown bellow.

Example 1

Rank Rank Rank
A B C
1 2 3
binary binary binary
{A, B} {A, C} {B, C}
1 1 1

Example 2

Rank Rank Rank
A B C
2 1 3
binary binary binary
{A, B} {A, C} {B, C}
0 1 1

The coded data

data("triplets")
head(triplets)
##   i1i2 i1i3 i2i3 i4i5 i4i6 i5i6 i7i8 i7i9 i8i9 i10i11 i10i12 i11i12
## 1    1    0    0    1    0    0    1    1    1      0      1      1
## 2    0    0    1    0    0    0    0    0    1      0      0      0
## 3    0    0    1    0    0    1    0    1    1      0      0      0
## 4    0    0    1    1    1    0    1    1    0      0      0      0
## 5    1    1    1    0    0    1    1    1    0      1      0      0
## 6    1    1    1    0    0    1    1    0    0      0      1      1

Define blocks

blocks<-set_block(c("i1","i2","i3"),
                  traits=c("t1","t2","t3"),
                  signs=c(1,1,1))+
  set_block(c("i4","i5","i6"),
            traits=c("t1","t2","t3"),
            signs=c(-1,1,1))+
  set_block(c("i7","i8","i9"),
            traits=c("t1","t2","t3"),
            signs=c(1,1,-1))+
  set_block(c("i10","i11","i12"),
            traits=c("t1","t2","t3"),
            signs=c(1,-1,1))
print(data.frame(blocks[[1]]))
##   items traits names signs items.1 traits.1 names.1 signs.1 items.2 traits.2 names.2 signs.2 items.3 traits.3 names.3 signs.3
## 1    i1     t1    i1     1      i4       t1      i4      -1      i7       t1      i7       1     i10       t1     i10       1
## 2    i2     t2    i2     1      i5       t2      i5       1      i8       t2      i8       1     i11       t2     i11      -1
## 3    i3     t3    i3     1      i6       t3      i6       1      i9       t3      i9      -1     i12       t3     i12       1

Triplets

triplets_long<-make_TIRT_data(data=triplets,blocks=blocks,direction="larger",format="pairwise",family="bernoulli",range=c(0,1))
head(triplets_long)
## # A tibble: 6 × 11
##   person block comparison itemC trait1 trait2 item1 item2 sign1 sign2 response
##                        
## 1      1     1          1     1 t1     t2     i1    i2        1     1        1
## 2      2     1          1     1 t1     t2     i1    i2        1     1        0
## 3      3     1          1     1 t1     t2     i1    i2        1     1        0
## 4      4     1          1     1 t1     t2     i1    i2        1     1        0
## 5      5     1          1     1 t1     t2     i1    i2        1     1        1
## 6      6     1          1     1 t1     t2     i1    i2        1     1        1

Model fit

# fit_lavaan<-fit_TIRT_lavaan(triplets_long,control=list(maxiter=1000))
# fit_stan<-fit_TIRT_stan(triplets_long)
# save(fit_lavaan,fit_stan,file="fit.RData")
load("fit.RData")
model<-fit_lavaan$fit 

Plot Model

semPlot::semPaths(model,what="est",rotation=2,reorder=FALSE)

semPlot::semPaths(model,what="std",rotation=2,reorder=FALSE)

semPlot::semPaths(model,what="paths",rotation=2,reorder=FALSE)

Evaluate Model

# Fit indices
pt<-options(fit=c("GFI","AGFI","RMSEA","NFI","NNFI","CFI","RNI","IFI","SRMR","AIC","AICc","BIC","CAIC"))
fit_index<-data.frame(fit=lavaan::inspect(model,"fit",add.labels=TRUE,add.class=TRUE,list.by.group=TRUE,drop.list.single.group=TRUE))
round(fit_index,2)
##                                   fit
## npar                            35.00
## fmin                             0.17
## chisq                           69.54
## df                              43.00
## pvalue                             NA
## chisq.scaled                    46.71
## df.scaled                       43.00
## pvalue.scaled                    0.32
## chisq.scaling.factor             2.01
## baseline.chisq                1615.94
## baseline.df                     66.00
## baseline.pvalue                    NA
## baseline.chisq.scaled          446.56
## baseline.df.scaled              66.00
## baseline.pvalue.scaled           0.00
## baseline.chisq.scaling.factor    3.81
## cfi                              0.98
## tli                              0.97
## cfi.scaled                       0.99
## tli.scaled                       0.99
## cfi.robust                         NA
## tli.robust                         NA
## nnfi                             0.97
## rfi                              0.93
## nfi                              0.96
## pnfi                             0.62
## ifi                              0.98
## rni                              0.98
## nnfi.scaled                      0.99
## rfi.scaled                       0.84
## nfi.scaled                       0.90
## pnfi.scaled                      0.58
## ifi.scaled                       0.99
## rni.scaled                       0.99
## nnfi.robust                        NA
## rni.robust                         NA
## rmsea                            0.06
## rmsea.ci.lower                   0.03
## rmsea.ci.upper                   0.08
## rmsea.ci.level                   0.90
## rmsea.pvalue                     0.33
## rmsea.close.h0                   0.05
## rmsea.notclose.pvalue            0.04
## rmsea.notclose.h0                0.08
## rmsea.scaled                     0.02
## rmsea.ci.lower.scaled            0.00
## rmsea.ci.upper.scaled            0.05
## rmsea.pvalue.scaled              0.92
## rmsea.notclose.pvalue.scaled     0.00
## rmsea.robust                       NA
## rmsea.ci.lower.robust              NA
## rmsea.ci.upper.robust              NA
## rmsea.pvalue.robust                NA
## rmsea.notclose.pvalue.robust       NA
## rmr                              0.06
## rmr_nomean                       0.07
## srmr                             0.07
## srmr_bentler                     0.06
## srmr_bentler_nomean              0.07
## crmr                             0.07
## crmr_nomean                      0.07
## srmr_mplus                         NA
## srmr_mplus_nomean                  NA
## cn_05                          170.72
## cn_01                          194.06
## gfi                              0.97
## agfi                             0.94
## pgfi                             0.53
## mfi                              0.94
## wrmr                             0.94
# Explained variance
r_squared<-data.frame(r_squared=lavaan::inspect(model,"rsquare",add.labels=TRUE,add.class=TRUE,list.by.group=TRUE,drop.list.single.group=TRUE))
r_squared
##        r_squared
## i1i2   0.6063962
## i1i3   0.5592264
## i2i3   0.4278743
## i4i5   0.5230762
## i4i6   0.6047728
## i5i6   0.3926475
## i7i8   0.5656510
## i7i9   0.5186509
## i8i9   0.5715663
## i10i11 0.4101206
## i10i12 0.5753794
## i11i12 0.5960012
# Estimates
unstandardized_estimates<-lavaan::inspect(model,"est",add.labels=TRUE,add.class=TRUE,list.by.group=TRUE,drop.list.single.group=TRUE)
unstandardized_estimates
## $lambda
##        trait1 trait2 trait3
## i1i2    1.174 -1.264  0.000
## i1i3    1.174  0.000 -1.224
## i4i5   -1.389 -1.240  0.000
## i4i6   -1.389  0.000 -0.923
## i7i8    1.036 -1.006  0.000
## i7i9    1.036  0.000  0.998
## i10i11  1.113  0.595  0.000
## i10i12  1.113  0.000 -1.231
## i2i3    0.000  1.264 -1.224
## i5i6    0.000  1.240 -0.923
## i8i9    0.000  1.006  0.998
## i11i12  0.000 -0.595 -1.231
## 
## $theta
##          i1i2   i1i3   i4i5   i4i6   i7i8   i7i9 i10i11 i10i12   i2i3   i5i6   i8i9 i11i12
## i1i2    2.432                                                                             
## i1i3    1.000  2.078                                                                      
## i4i5    0.000  0.000  2.344                                                               
## i4i6    0.000  0.000  1.000  1.958                                                        
## i7i8    0.000  0.000  0.000  0.000  2.016                                                 
## i7i9    0.000  0.000  0.000  0.000  1.000  2.081                                          
## i10i11  0.000  0.000  0.000  0.000  0.000  0.000  1.795                                   
## i10i12  0.000  0.000  0.000  0.000  0.000  0.000  1.000  1.864                            
## i2i3   -1.432  1.078  0.000  0.000  0.000  0.000  0.000  0.000  2.510                     
## i5i6    0.000  0.000 -1.344  0.958  0.000  0.000  0.000  0.000  0.000  2.302              
## i8i9    0.000  0.000  0.000  0.000 -1.016  1.081  0.000  0.000  0.000  0.000  2.097       
## i11i12  0.000  0.000  0.000  0.000  0.000  0.000 -0.795  0.864  0.000  0.000  0.000  1.659
## 
## $psi
##        trait1 trait2 trait3
## trait1  1.000              
## trait2 -0.260  1.000       
## trait3  0.083  0.394  1.000
## 
## $nu
##        intrcp
## i1i2        0
## i1i3        0
## i4i5        0
## i4i6        0
## i7i8        0
## i7i9        0
## i10i11      0
## i10i12      0
## i2i3        0
## i5i6        0
## i8i9        0
## i11i12      0
## 
## $alpha
##        intrcp
## trait1      0
## trait2      0
## trait3      0
## 
## $tau
##           thrshl
## i1i2|t1    0.470
## i1i3|t1   -1.170
## i4i5|t1    0.648
## i4i6|t1    1.135
## i7i8|t1   -0.859
## i7i9|t1   -1.181
## i10i11|t1  0.533
## i10i12|t1  1.514
## i2i3|t1   -1.917
## i5i6|t1    0.646
## i8i9|t1   -0.475
## i11i12|t1  0.892
## 
## $delta
##        scales
## i1i2    0.402
## i1i3    0.461
## i4i5    0.451
## i4i6    0.449
## i7i8    0.464
## i7i9    0.481
## i10i11  0.573
## i10i12  0.477
## i2i3    0.477
## i5i6    0.514
## i8i9    0.452
## i11i12  0.493
standardized_estimates<-lavaan::inspect(model,"std",add.labels=TRUE,add.class=TRUE,list.by.group=TRUE,drop.list.single.group=TRUE)
standardized_estimates
## $lambda
##        trait1 trait2 trait3
## i1i2    0.472 -0.508  0.000
## i1i3    0.541  0.000 -0.564
## i4i5   -0.626 -0.559  0.000
## i4i6   -0.624  0.000 -0.415
## i7i8    0.481 -0.467  0.000
## i7i9    0.498  0.000  0.480
## i10i11  0.638  0.341  0.000
## i10i12  0.531  0.000 -0.588
## i2i3    0.000  0.603 -0.584
## i5i6    0.000  0.637 -0.474
## i8i9    0.000  0.455  0.451
## i11i12  0.000 -0.294 -0.608
## 
## $theta
##          i1i2   i1i3   i4i5   i4i6   i7i8   i7i9 i10i11 i10i12   i2i3   i5i6   i8i9 i11i12
## i1i2    0.394                                                                             
## i1i3    0.445  0.441                                                                      
## i4i5    0.000  0.000  0.477                                                               
## i4i6    0.000  0.000  0.467  0.395                                                        
## i7i8    0.000  0.000  0.000  0.000  0.434                                                 
## i7i9    0.000  0.000  0.000  0.000  0.488  0.481                                          
## i10i11  0.000  0.000  0.000  0.000  0.000  0.000  0.590                                   
## i10i12  0.000  0.000  0.000  0.000  0.000  0.000  0.547  0.425                            
## i2i3   -0.580  0.472  0.000  0.000  0.000  0.000  0.000  0.000  0.572                     
## i5i6    0.000  0.000 -0.579  0.451  0.000  0.000  0.000  0.000  0.000  0.607              
## i8i9    0.000  0.000  0.000  0.000 -0.494  0.517  0.000  0.000  0.000  0.000  0.428       
## i11i12  0.000  0.000  0.000  0.000  0.000  0.000 -0.461  0.491  0.000  0.000  0.000  0.404
## 
## $psi
##        trait1 trait2 trait3
## trait1  1.000              
## trait2 -0.260  1.000       
## trait3  0.083  0.394  1.000
## 
## $nu
##        intrcp
## i1i2        0
## i1i3        0
## i4i5        0
## i4i6        0
## i7i8        0
## i7i9        0
## i10i11      0
## i10i12      0
## i2i3        0
## i5i6        0
## i8i9        0
## i11i12      0
## 
## $alpha
##        intrcp
## trait1      0
## trait2      0
## trait3      0
## 
## $tau
##           thrshl
## i1i2|t1    0.189
## i1i3|t1   -0.539
## i4i5|t1    0.292
## i4i6|t1    0.510
## i7i8|t1   -0.399
## i7i9|t1   -0.568
## i10i11|t1  0.305
## i10i12|t1  0.722
## i2i3|t1   -0.915
## i5i6|t1    0.332
## i8i9|t1   -0.215
## i11i12|t1  0.440
## 
## $delta
##        scales
## i1i2        1
## i1i3        1
## i4i5        1
## i4i6        1
## i7i8        1
## i7i9        1
## i10i11      1
## i10i12      1
## i2i3        1
## i5i6        1
## i8i9        1
## i11i12      1
lavaan::parameterEstimates(model,se=TRUE,
                           zstat=TRUE,
                           pvalue=TRUE,
                           ci=TRUE,
                           level=0.95,
                           boot.ci.type="perc",
                           standardized=TRUE,
                           fmi=FALSE,
                           remove.system.eq=TRUE,
                           remove.eq=FALSE,
                           remove.ineq=FALSE,
                           remove.def=FALSE,
                           rsquare=TRUE,
                           add.attributes=TRUE)
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper   Std.lv  Std.all
##   trait1 =~                                                                               
##     i1i2      (L1)    1.174    0.513    2.289    0.022    0.169    2.179    1.174    0.472
##     i1i3      (L1)    1.174    0.513    2.289    0.022    0.169    2.179    1.174    0.541
##     i4i5      (L4)   -1.389    0.607   -2.289    0.022   -2.578   -0.199   -1.389   -0.626
##     i4i6      (L4)   -1.389    0.607   -2.289    0.022   -2.578   -0.199   -1.389   -0.624
##     i7i8      (L7)    1.036    0.375    2.765    0.006    0.302    1.770    1.036    0.481
##     i7i9      (L7)    1.036    0.375    2.765    0.006    0.302    1.770    1.036    0.498
##     i10i11   (L10)    1.113    0.429    2.591    0.010    0.271    1.954    1.113    0.638
##     i10i12   (L10)    1.113    0.429    2.591    0.010    0.271    1.954    1.113    0.531
##   trait2 =~                                                                               
##     i1i2     (L2n)   -1.264    0.504   -2.507    0.012   -2.252   -0.276   -1.264   -0.508
##     i2i3      (L2)    1.264    0.504    2.507    0.012    0.276    2.252    1.264    0.603
##     i4i5     (L5n)   -1.240    0.517   -2.398    0.016   -2.253   -0.226   -1.240   -0.559
##     i5i6      (L5)    1.240    0.517    2.398    0.016    0.226    2.253    1.240    0.637
##     i7i8     (L8n)   -1.006    0.371   -2.713    0.007   -1.732   -0.279   -1.006   -0.467
##     i8i9      (L8)    1.006    0.371    2.713    0.007    0.279    1.732    1.006    0.455
##     i10i11  (L11n)    0.595    0.273    2.180    0.029    0.060    1.130    0.595    0.341
##     i11i12   (L11)   -0.595    0.273   -2.180    0.029   -1.130   -0.060   -0.595   -0.294
##   trait3 =~                                                                               
##     i1i3     (L3n)   -1.224    0.461   -2.656    0.008   -2.127   -0.321   -1.224   -0.564
##     i2i3     (L3n)   -1.224    0.461   -2.656    0.008   -2.127   -0.321   -1.224   -0.584
##     i4i6     (L6n)   -0.923    0.401   -2.302    0.021   -1.710   -0.137   -0.923   -0.415
##     i5i6     (L6n)   -0.923    0.401   -2.302    0.021   -1.710   -0.137   -0.923   -0.474
##     i7i9     (L9n)    0.998    0.339    2.944    0.003    0.334    1.663    0.998    0.480
##     i8i9     (L9n)    0.998    0.339    2.944    0.003    0.334    1.663    0.998    0.451
##     i10i12  (L12n)   -1.231    0.423   -2.909    0.004   -2.061   -0.402   -1.231   -0.588
##     i11i12  (L12n)   -1.231    0.423   -2.909    0.004   -2.061   -0.402   -1.231   -0.608
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper   Std.lv  Std.all
##   trait1 ~~                                                                               
##     trait2           -0.260    0.147   -1.766    0.077   -0.548    0.029   -0.260   -0.260
##     trait3            0.083    0.163    0.513    0.608   -0.236    0.402    0.083    0.083
##   trait2 ~~                                                                               
##     trait3            0.394    0.139    2.842    0.004    0.122    0.665    0.394    0.394
##  .i1i2 ~~                                                                                 
##    .i1i3      (P1)    1.000       NA                         NA       NA    1.000    0.445
##    .i2i3     (P2n)   -1.432    1.272   -1.126    0.260   -3.925    1.060   -1.432   -0.580
##  .i1i3 ~~                                                                                 
##    .i2i3      (P3)    1.078    1.114    0.968    0.333   -1.105    3.261    1.078    0.472
##  .i4i5 ~~                                                                                 
##    .i4i6      (P4)    1.000                               1.000    1.000    1.000    0.467
##    .i5i6     (P5n)   -1.344    1.134   -1.186    0.236   -3.567    0.878   -1.344   -0.579
##  .i4i6 ~~                                                                                 
##    .i5i6      (P6)    0.958    0.883    1.084    0.278   -0.774    2.689    0.958    0.451
##  .i7i8 ~~                                                                                 
##    .i7i9      (P7)    1.000                               1.000    1.000    1.000    0.488
##    .i8i9     (P8n)   -1.016    0.801   -1.269    0.204   -2.586    0.553   -1.016   -0.494
##  .i7i9 ~~                                                                                 
##    .i8i9      (P9)    1.081    0.879    1.230    0.219   -0.642    2.803    1.081    0.517
##  .i10i11 ~~                                                                               
##    .i10i12   (P10)    1.000                               1.000    1.000    1.000    0.547
##    .i11i12  (P11n)   -0.795    0.677   -1.174    0.240   -2.123    0.532   -0.795   -0.461
##  .i10i12 ~~                                                                               
##    .i11i12   (P12)    0.864    0.726    1.191    0.234   -0.558    2.286    0.864    0.491
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper   Std.lv  Std.all
##    .i1i2              0.000                               0.000    0.000    0.000    0.000
##    .i1i3              0.000                               0.000    0.000    0.000    0.000
##    .i4i5              0.000                               0.000    0.000    0.000    0.000
##    .i4i6              0.000                               0.000    0.000    0.000    0.000
##    .i7i8              0.000                               0.000    0.000    0.000    0.000
##    .i7i9              0.000                               0.000    0.000    0.000    0.000
##    .i10i11            0.000                               0.000    0.000    0.000    0.000
##    .i10i12            0.000                               0.000    0.000    0.000    0.000
##    .i2i3              0.000                               0.000    0.000    0.000    0.000
##    .i5i6              0.000                               0.000    0.000    0.000    0.000
##    .i8i9              0.000                               0.000    0.000    0.000    0.000
##    .i11i12            0.000                               0.000    0.000    0.000    0.000
##     trait1            0.000                               0.000    0.000    0.000    0.000
##     trait2            0.000                               0.000    0.000    0.000    0.000
##     trait3            0.000                               0.000    0.000    0.000    0.000
## 
## Thresholds:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper   Std.lv  Std.all
##     i1i2|t1           0.470    0.259    1.815    0.069   -0.037    0.978    0.470    0.189
##     i1i3|t1          -1.170    0.413   -2.835    0.005   -1.979   -0.361   -1.170   -0.539
##     i4i5|t1           0.648    0.282    2.297    0.022    0.095    1.201    0.648    0.292
##     i4i6|t1           1.135    0.413    2.748    0.006    0.326    1.945    1.135    0.510
##     i7i8|t1          -0.859    0.273   -3.147    0.002   -1.395   -0.324   -0.859   -0.399
##     i7i9|t1          -1.181    0.331   -3.565    0.000   -1.830   -0.532   -1.181   -0.568
##     i10i11|t1         0.533    0.211    2.525    0.012    0.119    0.947    0.533    0.305
##     i10i12|t1         1.514    0.439    3.447    0.001    0.653    2.374    1.514    0.722
##     i2i3|t1          -1.917    0.711   -2.696    0.007   -3.311   -0.524   -1.917   -0.915
##     i5i6|t1           0.646    0.284    2.273    0.023    0.089    1.203    0.646    0.332
##     i8i9|t1          -0.475    0.244   -1.944    0.052   -0.954    0.004   -0.475   -0.215
##     i11i12|t1         0.892    0.313    2.846    0.004    0.278    1.505    0.892    0.440
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper   Std.lv  Std.all
##     trat1             1.000                               1.000    1.000    1.000    1.000
##     trat2             1.000                               1.000    1.000    1.000    1.000
##     trat3             1.000                               1.000    1.000    1.000    1.000
##    .i1i2    (P1P2)    2.432    1.272    1.912    0.056   -0.060    4.925    2.432    0.394
##    .i1i3    (P1P3)    2.078    1.114    1.866    0.062   -0.105    4.261    2.078    0.441
##    .i2i3    (P2P3)    2.510    2.163    1.161    0.246   -1.729    6.750    2.510    0.572
##    .i4i5    (P4P5)    2.344    1.134    2.067    0.039    0.122    4.567    2.344    0.477
##    .i4i6    (P4P6)    1.958    0.883    2.216    0.027    0.226    3.689    1.958    0.395
##    .i5i6    (P5P6)    2.302    1.828    1.260    0.208   -1.280    5.884    2.302    0.607
##    .i7i8    (P7P8)    2.016    0.801    2.518    0.012    0.447    3.586    2.016    0.434
##    .i7i9    (P7P9)    2.081    0.879    2.368    0.018    0.358    3.803    2.081    0.481
##    .i8i9    (P8P9)    2.097    1.430    1.466    0.143   -0.706    4.900    2.097    0.428
##    .i1011 (P10P11)    1.795    0.677    2.650    0.008    0.468    3.123    1.795    0.590
##    .i1012 (P10P12)    1.864    0.726    2.569    0.010    0.442    3.286    1.864    0.425
##    .i1112   (P11P)    1.659    1.176    1.411    0.158   -0.646    3.964    1.659    0.404
## 
## Scales y*:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper   Std.lv  Std.all
##     i1i2              0.402                               0.402    0.402    0.402    1.000
##     i1i3              0.461                               0.461    0.461    0.461    1.000
##     i4i5              0.451                               0.451    0.451    0.451    1.000
##     i4i6              0.449                               0.449    0.449    0.449    1.000
##     i7i8              0.464                               0.464    0.464    0.464    1.000
##     i7i9              0.481                               0.481    0.481    0.481    1.000
##     i10i11            0.573                               0.573    0.573    0.573    1.000
##     i10i12            0.477                               0.477    0.477    0.477    1.000
##     i2i3              0.477                               0.477    0.477    0.477    1.000
##     i5i6              0.514                               0.514    0.514    0.514    1.000
##     i8i9              0.452                               0.452    0.452    0.452    1.000
##     i11i12            0.493                               0.493    0.493    0.493    1.000
## 
## R-Square:
##                    Estimate
##     i1i2              0.606
##     i1i3              0.559
##     i2i3              0.428
##     i4i5              0.523
##     i4i6              0.605
##     i5i6              0.393
##     i7i8              0.566
##     i7i9              0.519
##     i8i9              0.572
##     i10i11            0.410
##     i10i12            0.575
##     i11i12            0.596
## 
## Constraints:
##                                                |Slack|
##     L2 - (-L2n)                                  0.000
##     L5 - (-L5n)                                  0.000
##     L8 - (-L8n)                                  0.000
##     L11 - (-L11n)                                0.000
##     P1P2 - (P1-P2n)                              0.000
##     P1P3 - (P1+P3)                               0.000
##     P2P3 - (-P2n+P3)                             0.000
##     P4P5 - (P4-P5n)                              0.000
##     P4P6 - (P4+P6)                               0.000
##     P5P6 - (-P5n+P6)                             0.000
##     P7P8 - (P7-P8n)                              0.000
##     P7P9 - (P7+P9)                               0.000
##     P8P9 - (-P8n+P9)                             0.000
##     P10P11 - (P10-P11n)                          0.000
##     P10P12 - (P10+P12)                           0.000
##     P11P12 - (-P11n+P12)                         0.000
##     P1 - (1)                                     0.000
##     P4 - (1)                                     0.000
##     P7 - (1)                                     0.000
##     P10 - (1)                                    0.000
# Modification indices
lavaan::modificationIndices(model,
                            standardized=TRUE,
                            cov.std=TRUE,
                            information="expected",
                            power=TRUE,
                            delta=0.1,
                            alpha=0.05,
                            high.power=0.75,
                            sort.=TRUE,
                            minimum.value=0,
                            free.remove=FALSE,
                            na.remove=TRUE,
                            op=NULL)
## Warning: lavaan->modificationIndices():  
##    the modindices() function ignores equality constraints; use lavTestScore() to assess the impact of releasing one or multiple constraints.
##        lhs op    rhs     mi    epc sepc.all delta   ncp power decision
## 122 trait1 =~   i2i3 13.197 -0.644   -0.307   0.1 0.318 0.087  **(m)**
## 180 i10i12 ~~   i5i6 11.332  1.077    0.520   0.1 0.098 0.061  **(m)**
## 153   i4i5 ~~   i7i9  9.980 -1.287   -0.583   0.1 0.060 0.057  **(m)**
## 176 i10i11 ~~   i2i3  8.760 -0.835   -0.393   0.1 0.126 0.065  **(m)**
## 123 trait1 =~   i5i6  7.414  0.433    0.222   0.1 0.396 0.096  **(m)**
## 179 i10i12 ~~   i2i3  5.250 -0.838   -0.387   0.1 0.075 0.059  **(m)**
## 173   i7i9 ~~   i2i3  5.138 -0.818   -0.358   0.1 0.077 0.059  **(m)**
## 125 trait1 =~ i11i12  4.999  0.340    0.168   0.1 0.434 0.101  **(m)**
## 177 i10i11 ~~   i5i6  4.190  0.543    0.267   0.1 0.142 0.066  **(m)**
## 166   i7i8 ~~ i10i11  3.730 -0.623   -0.327   0.1 0.096 0.061      (i)
## 148   i1i3 ~~ i10i12  3.665  0.777    0.395   0.1 0.061 0.057      (i)
## 184   i2i3 ~~ i11i12  3.331  0.663    0.325   0.1 0.076 0.059      (i)
## 128 trait2 =~   i7i9  2.733 -0.391   -0.188   0.1 0.179 0.071      (i)
## 130 trait3 =~   i1i2  2.463 -0.305   -0.123   0.1 0.265 0.081      (i)
## 175   i7i9 ~~ i11i12  2.422  0.581    0.313   0.1 0.072 0.058      (i)
## 139   i1i2 ~~ i10i12  2.366  0.670    0.314   0.1 0.053 0.056      (i)
## 124 trait1 =~   i8i9  2.266  0.275    0.124   0.1 0.299 0.085      (i)
## 140   i1i2 ~~   i5i6  2.229  0.601    0.254   0.1 0.062 0.057      (i)
## 155   i4i5 ~~ i10i12  2.213 -0.565   -0.270   0.1 0.069 0.058      (i)
## 145   i1i3 ~~   i7i8  2.210 -0.601   -0.294   0.1 0.061 0.057      (i)
## 149   i1i3 ~~   i5i6  2.191 -0.493   -0.225   0.1 0.090 0.060      (i)
## 186   i5i6 ~~ i11i12  2.154 -0.475   -0.243   0.1 0.096 0.061      (i)
## 135   i1i2 ~~   i4i6  2.130  0.671    0.308   0.1 0.047 0.055      (i)
## 170   i7i8 ~~ i11i12  1.807  0.495    0.271   0.1 0.074 0.058      (i)
## 138   i1i2 ~~ i10i11  1.734  0.473    0.226   0.1 0.078 0.059      (i)
## 154   i4i5 ~~ i10i11  1.730  0.445    0.217   0.1 0.087 0.060      (i)
## 156   i4i5 ~~   i2i3  1.460 -0.466   -0.192   0.1 0.067 0.058      (i)
## 150   i1i3 ~~   i8i9  1.409  0.500    0.239   0.1 0.056 0.056      (i)
## 41  i10i12 ~~ i10i12  1.258 -0.493   -0.425   0.1 0.052 0.056      (i)
## 38    i7i9 ~~   i7i9  1.220 -0.529   -0.481   0.1 0.044 0.055      (i)
## 134   i1i2 ~~   i4i5  1.161  0.492    0.206   0.1 0.048 0.056      (i)
## 174   i7i9 ~~   i5i6  1.032 -0.353   -0.161   0.1 0.083 0.060      (i)
## 171   i7i9 ~~ i10i11  1.024 -0.321   -0.166   0.1 0.099 0.061      (i)
## 151   i1i3 ~~ i11i12  1.018 -0.385   -0.207   0.1 0.069 0.058      (i)
## 132 trait3 =~   i7i8  0.869  0.194    0.090   0.1 0.231 0.077      (i)
## 182   i2i3 ~~   i5i6  0.822 -0.330   -0.137   0.1 0.075 0.059      (i)
## 144   i1i3 ~~   i4i6  0.727 -0.342   -0.169   0.1 0.062 0.057      (i)
## 143   i1i3 ~~   i4i5  0.719  0.326    0.148   0.1 0.068 0.058      (i)
## 40  i10i11 ~~ i10i11  0.684  0.342    0.590   0.1 0.058 0.057      (i)
## 127 trait2 =~   i4i6  0.662 -0.150   -0.067   0.1 0.294 0.084      (i)
## 5   trait1 =~   i7i8  0.651 -0.122   -0.057   0.1 0.435 0.101      (i)
## 34    i4i5 ~~   i4i5  0.637 -0.509   -0.477   0.1 0.025 0.053      (i)
## 50    i7i8 ~~   i8i9  0.587  0.258    0.126   0.1 0.088 0.060      (i)
## 24  trait3 =~ i11i12  0.582  0.156    0.077   0.1 0.238 0.078      (i)
## 39    i8i9 ~~   i8i9  0.578  0.423    0.428   0.1 0.032 0.054      (i)
## 131 trait3 =~   i4i5  0.560 -0.133   -0.060   0.1 0.317 0.087      (i)
## 53  i10i11 ~~ i11i12  0.525  0.181    0.105   0.1 0.160 0.069      (i)
## 142   i1i2 ~~ i11i12  0.503  0.299    0.149   0.1 0.056 0.056      (i)
## 172   i7i9 ~~ i10i12  0.465 -0.257   -0.130   0.1 0.071 0.058      (i)
## 6   trait1 =~   i7i9  0.421  0.079    0.038   0.1 0.673 0.130      (i)
## 187   i8i9 ~~ i11i12  0.408  0.262    0.140   0.1 0.059 0.057      (i)
## 157   i4i5 ~~   i8i9  0.406 -0.262   -0.118   0.1 0.059 0.057      (i)
## 36    i5i6 ~~   i5i6  0.380  0.346    0.607   0.1 0.032 0.054      (i)
## 168   i7i8 ~~   i2i3  0.363 -0.241   -0.107   0.1 0.062 0.057      (i)
## 162   i4i6 ~~ i10i12  0.346  0.230    0.120   0.1 0.066 0.058      (i)
## 16  trait2 =~ i11i12  0.323 -0.078   -0.038   0.1 0.537 0.113      (i)
## 161   i4i6 ~~ i10i11  0.314 -0.188   -0.100   0.1 0.089 0.060      (i)
## 32    i1i3 ~~   i1i3  0.272  0.272    0.441   0.1 0.037 0.054      (i)
## 14  trait2 =~   i8i9  0.262 -0.095   -0.043   0.1 0.289 0.084      (i)
## 54  i10i12 ~~ i11i12  0.247  0.149    0.085   0.1 0.111 0.063      (i)
## 17  trait3 =~   i1i3  0.240  0.063    0.029   0.1 0.597 0.121      (i)
## 164   i4i6 ~~   i8i9  0.225  0.194    0.096   0.1 0.060 0.057      (i)
## 11  trait2 =~   i4i5  0.224 -0.055   -0.025   0.1 0.743 0.139      (i)
## 167   i7i8 ~~ i10i12  0.217 -0.178   -0.092   0.1 0.068 0.058      (i)
## 129 trait2 =~ i10i12  0.214  0.089    0.042   0.1 0.273 0.082      (i)
## 23  trait3 =~ i10i12  0.209 -0.056   -0.027   0.1 0.664 0.129      (i)
## 37    i7i8 ~~   i7i8  0.207  0.228    0.434   0.1 0.040 0.055      (i)
## 12  trait2 =~   i5i6  0.205 -0.050   -0.026   0.1 0.812 0.147      (i)
## 49    i7i8 ~~   i7i9  0.197  0.141    0.069   0.1 0.100 0.061      (i)
## 48    i4i6 ~~   i5i6  0.195 -0.135   -0.064   0.1 0.107 0.062      (i)
## 137   i1i2 ~~   i7i9  0.190  0.188    0.084   0.1 0.054 0.056      (i)
## 13  trait2 =~   i7i8  0.190 -0.069   -0.032   0.1 0.399 0.097      (i)
## 33    i2i3 ~~   i2i3  0.171 -0.199   -0.572   0.1 0.043 0.055      (i)
## 42  i11i12 ~~ i11i12  0.161  0.179    0.404   0.1 0.050 0.056      (i)
## 18  trait3 =~   i2i3  0.154 -0.041   -0.019   0.1 0.931 0.162      (i)
## 185   i5i6 ~~   i8i9  0.148 -0.141   -0.064   0.1 0.074 0.059      (i)
## 44    i1i2 ~~   i2i3  0.122 -0.129   -0.052   0.1 0.074 0.058      (i)
## 43    i1i2 ~~   i1i3  0.122 -0.133   -0.059   0.1 0.069 0.058      (i)
## 15  trait2 =~ i10i11  0.119 -0.029   -0.016   0.1 1.454 0.226      (i)
## 159   i4i6 ~~   i7i8  0.117 -0.140   -0.071   0.1 0.060 0.057      (i)
## 46    i4i5 ~~   i4i6  0.101  0.111    0.052   0.1 0.082 0.059      (i)
## 163   i4i6 ~~   i2i3  0.095 -0.117   -0.053   0.1 0.070 0.058      (i)
## 22  trait3 =~   i8i9  0.094 -0.056   -0.025   0.1 0.297 0.085      (i)
## 51    i7i9 ~~   i8i9  0.093  0.099    0.048   0.1 0.095 0.061      (i)
## 8   trait1 =~ i10i12  0.091  0.034    0.016   0.1 0.770 0.142      (i)
## 158   i4i5 ~~ i11i12  0.091 -0.110   -0.056   0.1 0.075 0.059      (i)
## 126 trait2 =~   i1i3  0.086  0.061    0.028   0.1 0.231 0.077      (i)
## 147   i1i3 ~~ i10i11  0.084 -0.090   -0.047   0.1 0.104 0.062      (i)
## 7   trait1 =~ i10i11  0.084 -0.032   -0.018   0.1 0.839 0.150      (i)
## 9   trait2 =~   i1i2  0.059 -0.049   -0.020   0.1 0.244 0.078      (i)
## 169   i7i8 ~~   i5i6  0.054 -0.083   -0.039   0.1 0.078 0.059      (i)
## 1   trait1 =~   i1i2  0.052 -0.040   -0.016   0.1 0.325 0.088      (i)
## 165   i4i6 ~~ i11i12  0.048 -0.084   -0.046   0.1 0.068 0.058      (i)
## 141   i1i2 ~~   i8i9  0.047  0.103    0.045   0.1 0.045 0.055      (i)
## 21  trait3 =~   i7i9  0.043  0.026    0.012   0.1 0.645 0.126      (i)
## 178 i10i11 ~~   i8i9  0.037  0.063    0.033   0.1 0.091 0.061      (i)
## 146   i1i3 ~~   i7i9  0.034 -0.072   -0.035   0.1 0.066 0.058      (i)
## 183   i2i3 ~~   i8i9  0.034  0.075    0.033   0.1 0.060 0.057      (i)
## 35    i4i6 ~~   i4i6  0.033  0.097    0.395   0.1 0.035 0.054      (i)
## 133 trait3 =~ i10i11  0.032 -0.029   -0.016   0.1 0.396 0.096      (i)
## 19  trait3 =~   i4i6  0.025  0.019    0.009   0.1 0.660 0.128      (i)
## 2   trait1 =~   i1i3  0.024  0.019    0.009   0.1 0.699 0.133      (i)
## 52  i10i11 ~~ i10i12  0.020  0.037    0.020   0.1 0.150 0.067      (i)
## 10  trait2 =~   i2i3  0.016 -0.014   -0.006   0.1 0.885 0.156      (i)
## 20  trait3 =~   i5i6  0.014 -0.011   -0.006   0.1 1.166 0.191      (i)
## 160   i4i6 ~~   i7i9  0.010 -0.042   -0.021   0.1 0.056 0.056      (i)
## 152   i4i5 ~~   i7i8  0.006  0.032    0.015   0.1 0.058 0.057      (i)
## 181 i10i12 ~~   i8i9  0.006  0.031    0.015   0.1 0.061 0.057      (i)
## 31    i1i2 ~~   i1i2  0.003 -0.039   -0.394   0.1 0.023 0.053      (i)
## 47    i4i5 ~~   i5i6  0.002 -0.014   -0.006   0.1 0.107 0.062      (i)
## 45    i1i3 ~~   i2i3  0.002 -0.015   -0.006   0.1 0.097 0.061      (i)
## 4   trait1 =~   i4i6  0.001 -0.006   -0.002   0.1 0.409 0.098      (i)
## 3   trait1 =~   i4i5  0.001  0.003    0.001   0.1 0.722 0.136      (i)
## 136   i1i2 ~~   i7i8  0.000 -0.007   -0.003   0.1 0.043 0.055      (i)
## 65    i8i9  |     t1  0.000  0.000    0.000   0.1 0.409 0.098      (i)
## 62  i10i12  |     t1  0.000  0.000    0.000   0.1 0.456 0.104      (i)
## 63    i2i3  |     t1  0.000  0.000    0.000   0.1 0.456 0.104      (i)
## 58    i4i6  |     t1  0.000  0.000    0.000   0.1 0.404 0.097      (i)
## 56    i1i3  |     t1  0.000  0.000    0.000   0.1 0.424 0.100      (i)
## 57    i4i5  |     t1  0.000  0.000    0.000   0.1 0.407 0.098      (i)
## 61  i10i11  |     t1  0.000  0.000    0.000   0.1 0.657 0.128      (i)
## 64    i5i6  |     t1  0.000  0.000    0.000   0.1 0.528 0.112      (i)
## 60    i7i9  |     t1  0.000  0.000    0.000   0.1 0.463 0.104      (i)
## 30  trait2 ~~ trait3  0.000  0.000    0.000   0.1 5.225 0.628      (i)
## 66  i11i12  |     t1  0.000  0.000    0.000   0.1 0.487 0.107      (i)
## 29  trait1 ~~ trait3  0.000  0.000    0.000   0.1 6.167 0.700      (i)
## 28  trait1 ~~ trait2  0.000  0.000    0.000   0.1 5.631 0.660      (i)
## 55    i1i2  |     t1  0.000  0.000    0.000   0.1 0.324 0.088      (i)
## 59    i7i8  |     t1  0.000  0.000    0.000   0.1 0.431 0.101      (i)

Score data

score<-predict(fit_lavaan)
score<-data.frame(score)
score<-reshape(score, direction="wide", idvar="id", timevar="trait")

triplets_new<-make_TIRT_data(data=triplets[1,],blocks=blocks,direction="larger",format="pairwise",family="bernoulli",range=c(0,1))
score_new<-predict(fit_stan,newdata=triplets_new)
## 
## SAMPLING FOR MODEL 'thurstonian_irt_model_newdata' NOW (CHAIN 1).
## Chain 1: 
## Chain 1: Gradient evaluation took 2.2e-05 seconds
## Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.22 seconds.
## Chain 1: Adjust your expectations accordingly!
## Chain 1: 
## Chain 1: 
## Chain 1: Iteration:    1 / 2000 [  0%]  (Warmup)
## Chain 1: Iteration:  200 / 2000 [ 10%]  (Warmup)
## Chain 1: Iteration:  400 / 2000 [ 20%]  (Warmup)
## Chain 1: Iteration:  600 / 2000 [ 30%]  (Warmup)
## Chain 1: Iteration:  800 / 2000 [ 40%]  (Warmup)
## Chain 1: Iteration: 1000 / 2000 [ 50%]  (Warmup)
## Chain 1: Iteration: 1001 / 2000 [ 50%]  (Sampling)
## Chain 1: Iteration: 1200 / 2000 [ 60%]  (Sampling)
## Chain 1: Iteration: 1400 / 2000 [ 70%]  (Sampling)
## Chain 1: Iteration: 1600 / 2000 [ 80%]  (Sampling)
## Chain 1: Iteration: 1800 / 2000 [ 90%]  (Sampling)
## Chain 1: Iteration: 2000 / 2000 [100%]  (Sampling)
## Chain 1: 
## Chain 1:  Elapsed Time: 0.026 seconds (Warm-up)
## Chain 1:                0.022 seconds (Sampling)
## Chain 1:                0.048 seconds (Total)
## Chain 1: 
## 
## SAMPLING FOR MODEL 'thurstonian_irt_model_newdata' NOW (CHAIN 2).
## Chain 2: 
## Chain 2: Gradient evaluation took 9e-06 seconds
## Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 0.09 seconds.
## Chain 2: Adjust your expectations accordingly!
## Chain 2: 
## Chain 2: 
## Chain 2: Iteration:    1 / 2000 [  0%]  (Warmup)
## Chain 2: Iteration:  200 / 2000 [ 10%]  (Warmup)
## Chain 2: Iteration:  400 / 2000 [ 20%]  (Warmup)
## Chain 2: Iteration:  600 / 2000 [ 30%]  (Warmup)
## Chain 2: Iteration:  800 / 2000 [ 40%]  (Warmup)
## Chain 2: Iteration: 1000 / 2000 [ 50%]  (Warmup)
## Chain 2: Iteration: 1001 / 2000 [ 50%]  (Sampling)
## Chain 2: Iteration: 1200 / 2000 [ 60%]  (Sampling)
## Chain 2: Iteration: 1400 / 2000 [ 70%]  (Sampling)
## Chain 2: Iteration: 1600 / 2000 [ 80%]  (Sampling)
## Chain 2: Iteration: 1800 / 2000 [ 90%]  (Sampling)
## Chain 2: Iteration: 2000 / 2000 [100%]  (Sampling)
## Chain 2: 
## Chain 2:  Elapsed Time: 0.024 seconds (Warm-up)
## Chain 2:                0.027 seconds (Sampling)
## Chain 2:                0.051 seconds (Total)
## Chain 2: 
## 
## SAMPLING FOR MODEL 'thurstonian_irt_model_newdata' NOW (CHAIN 3).
## Chain 3: 
## Chain 3: Gradient evaluation took 7e-06 seconds
## Chain 3: 1000 transitions using 10 leapfrog steps per transition would take 0.07 seconds.
## Chain 3: Adjust your expectations accordingly!
## Chain 3: 
## Chain 3: 
## Chain 3: Iteration:    1 / 2000 [  0%]  (Warmup)
## Chain 3: Iteration:  200 / 2000 [ 10%]  (Warmup)
## Chain 3: Iteration:  400 / 2000 [ 20%]  (Warmup)
## Chain 3: Iteration:  600 / 2000 [ 30%]  (Warmup)
## Chain 3: Iteration:  800 / 2000 [ 40%]  (Warmup)
## Chain 3: Iteration: 1000 / 2000 [ 50%]  (Warmup)
## Chain 3: Iteration: 1001 / 2000 [ 50%]  (Sampling)
## Chain 3: Iteration: 1200 / 2000 [ 60%]  (Sampling)
## Chain 3: Iteration: 1400 / 2000 [ 70%]  (Sampling)
## Chain 3: Iteration: 1600 / 2000 [ 80%]  (Sampling)
## Chain 3: Iteration: 1800 / 2000 [ 90%]  (Sampling)
## Chain 3: Iteration: 2000 / 2000 [100%]  (Sampling)
## Chain 3: 
## Chain 3:  Elapsed Time: 0.025 seconds (Warm-up)
## Chain 3:                0.024 seconds (Sampling)
## Chain 3:                0.049 seconds (Total)
## Chain 3: 
## 
## SAMPLING FOR MODEL 'thurstonian_irt_model_newdata' NOW (CHAIN 4).
## Chain 4: 
## Chain 4: Gradient evaluation took 1.2e-05 seconds
## Chain 4: 1000 transitions using 10 leapfrog steps per transition would take 0.12 seconds.
## Chain 4: Adjust your expectations accordingly!
## Chain 4: 
## Chain 4: 
## Chain 4: Iteration:    1 / 2000 [  0%]  (Warmup)
## Chain 4: Iteration:  200 / 2000 [ 10%]  (Warmup)
## Chain 4: Iteration:  400 / 2000 [ 20%]  (Warmup)
## Chain 4: Iteration:  600 / 2000 [ 30%]  (Warmup)
## Chain 4: Iteration:  800 / 2000 [ 40%]  (Warmup)
## Chain 4: Iteration: 1000 / 2000 [ 50%]  (Warmup)
## Chain 4: Iteration: 1001 / 2000 [ 50%]  (Sampling)
## Chain 4: Iteration: 1200 / 2000 [ 60%]  (Sampling)
## Chain 4: Iteration: 1400 / 2000 [ 70%]  (Sampling)
## Chain 4: Iteration: 1600 / 2000 [ 80%]  (Sampling)
## Chain 4: Iteration: 1800 / 2000 [ 90%]  (Sampling)
## Chain 4: Iteration: 2000 / 2000 [100%]  (Sampling)
## Chain 4: 
## Chain 4:  Elapsed Time: 0.024 seconds (Warm-up)
## Chain 4:                0.023 seconds (Sampling)
## Chain 4:                0.047 seconds (Total)
## Chain 4:
score_new<-data.frame(score_new)
score_new<-reshape(score_new[,c("id","trait","estimate")], direction="wide", idvar="id", timevar="trait")