Thurstonian IRT Example

Load

Code
library(thurstonianIRT)

The model is the Thurstonian IRT model of Brown and Maydeu-Olivares (2011), fitted with the thurstonianIRT package (Bürkner, Schulte & Holling, 2019).

The data

Forced-choice rankings must be expressed as binary pairwise outcomes: for each pair {i, k} in a block, y = 1 if item i is preferred to item k and 0 otherwise (Brown & Maydeu-Olivares, 2011). In the examples below, rank 1 denotes the most preferred item. The triplets data are already in this pairwise format; raw ranks could instead be passed to make_TIRT_data(..., format = "ranks", direction = "smaller"), which performs this recoding automatically.

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

Code
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

Code
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))
data.frame(blocks$blocks)
  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

Code
data_tirt<-make_TIRT_data(data=triplets,blocks=blocks,direction="larger",format="pairwise",family="bernoulli",range=c(0,1))

data_sem<-make_sem_data(data=data_tirt)
data_stan<-make_stan_data(data=data_tirt)

spesification_lavaan<-make_lavaan_code(data_tirt)
spesification_mplus<-make_mplus_code(data_tirt)

Model Specification

Code
# Specification in lavaan
cat(spesification_lavaan)
# factor loadings (lambda)
trait1 =~ start(1) * i1i2 + L1 * i1i2 + start(1) * i1i3 + L1 * i1i3 + start(1) * i4i5 + L4 * i4i5 + start(1) * i4i6 + L4 * i4i6 + start(1) * i7i8 + L7 * i7i8 + start(1) * i7i9 + L7 * i7i9 + start(1) * i10i11 + L10 * i10i11 + start(1) * i10i12 + L10 * i10i12
trait2 =~ start(-1) * i1i2 + L2n * i1i2 + start(1) * i2i3 + L2 * i2i3 + start(-1) * i4i5 + L5n * i4i5 + start(1) * i5i6 + L5 * i5i6 + start(-1) * i7i8 + L8n * i7i8 + start(1) * i8i9 + L8 * i8i9 + start(-1) * i10i11 + L11n * i10i11 + start(1) * i11i12 + L11 * i11i12
trait3 =~ start(-1) * i1i3 + L3n * i1i3 + start(-1) * i2i3 + L3n * i2i3 + start(-1) * i4i6 + L6n * i4i6 + start(-1) * i5i6 + L6n * i5i6 + start(-1) * i7i9 + L9n * i7i9 + start(-1) * i8i9 + L9n * i8i9 + start(-1) * i10i12 + L12n * i10i12 + start(-1) * i11i12 + L12n * i11i12

# fix factor variances to 1
trait1 ~~ 1 * trait1
trait2 ~~ 1 * trait2
trait3 ~~ 1 * trait3

# factor correlations
trait1 ~~ trait2 + trait3
trait2 ~~ trait3

# fix factor loadings of the same item to the same value
L2 == -L2n
L5 == -L5n
L8 == -L8n
L11 == -L11n

# declare uniquenesses (psi)
i1i2 ~~ P1P2 * i1i2
i1i3 ~~ P1P3 * i1i3
i2i3 ~~ P2P3 * i2i3
i4i5 ~~ P4P5 * i4i5
i4i6 ~~ P4P6 * i4i6
i5i6 ~~ P5P6 * i5i6
i7i8 ~~ P7P8 * i7i8
i7i9 ~~ P7P9 * i7i9
i8i9 ~~ P8P9 * i8i9
i10i11 ~~ P10P11 * i10i11
i10i12 ~~ P10P12 * i10i12
i11i12 ~~ P11P12 * i11i12

# correlated uniqunesses
i1i2 ~~ start(1) * i1i3 + P1 * i1i3
i1i2 ~~ start(-1) * i2i3 + P2n * i2i3
i1i3 ~~ start(1) * i2i3 + P3 * i2i3
i4i5 ~~ start(1) * i4i6 + P4 * i4i6
i4i5 ~~ start(-1) * i5i6 + P5n * i5i6
i4i6 ~~ start(1) * i5i6 + P6 * i5i6
i7i8 ~~ start(1) * i7i9 + P7 * i7i9
i7i8 ~~ start(-1) * i8i9 + P8n * i8i9
i7i9 ~~ start(1) * i8i9 + P9 * i8i9
i10i11 ~~ start(1) * i10i12 + P10 * i10i12
i10i11 ~~ start(-1) * i11i12 + P11n * i11i12
i10i12 ~~ start(1) * i11i12 + P12 * i11i12

# pair's uniqueness is equal to sum of 2 utility uniqunesses
P1P2 == P1 - P2n
P1P3 == P1 + P3
P2P3 ==  - P2n + P3
P4P5 == P4 - P5n
P4P6 == P4 + P6
P5P6 ==  - P5n + P6
P7P8 == P7 - P8n
P7P9 == P7 + P9
P8P9 ==  - P8n + P9
P10P11 == P10 - P11n
P10P12 == P10 + P12
P11P12 ==  - P11n + P12

# fix certain uniquenesses for identification
P1 == 1
P4 == 1
P7 == 1
P10 == 1

# force item parameters of the same item to be equal
Code
# Specification in MPLUS
cat(spesification_mplus$TITLE)
Thurstonian IRT model
Code
cat(spesification_mplus$DATA)
! It is assumed that the input file contains only item responses
! Any additional variables should be added below
Code
cat(spesification_mplus$VARIABLE)
CATEGORICAL ARE ALL;
Code
cat(spesification_mplus$ANALYSIS)
  ESTIMATOR = ulsmv;
  ITERATIONS = 1000;
  PARAMETERIZATION = theta;
Code
cat(spesification_mplus$MODEL)
! factor loadings (lambda)
trait1 BY
i1i2*1  (L1)
i1i3*1  (L1)
i4i5*1  (L4)
i4i6*1  (L4)
i7i8*1  (L7)
i7i9*1  (L7)
i10i11*1  (L10)
i10i12*1  (L10);

trait2 BY
i1i2*-1  (L2n)
i2i3*1  (L2)
i4i5*-1  (L5n)
i5i6*1  (L5)
i7i8*-1  (L8n)
i8i9*1  (L8)
i10i11*-1  (L11n)
i11i12*1  (L11);

trait3 BY
i1i3*-1  (L3n)
i2i3*-1  (L3n)
i4i6*-1  (L6n)
i5i6*-1  (L6n)
i7i9*-1  (L9n)
i8i9*-1  (L9n)
i10i12*-1  (L12n)
i11i12*-1  (L12n);


! fix factor variances to 1
trait1@1
trait2@1
trait3@1

! factor correlations
trait1 WITH
  trait2*0
  trait3*0;
trait2 WITH
  trait3*0;

! declare uniquenesses (psi)
i1i2*1 (P1P2);
i1i3*1 (P1P3);
i2i3*1 (P2P3);
i4i5*1 (P4P5);
i4i6*1 (P4P6);
i5i6*1 (P5P6);
i7i8*1 (P7P8);
i7i9*1 (P7P9);
i8i9*1 (P8P9);
i10i11*1 (P10P11);
i10i12*1 (P10P12);
i11i12*1 (P11P12);

! correlated uniqunesses
i1i2 WITH i1i3*1 (P1);
i1i2 WITH i2i3*-1 (P2n);
i1i3 WITH i2i3*1 (P3);
i4i5 WITH i4i6*1 (P4);
i4i5 WITH i5i6*-1 (P5n);
i4i6 WITH i5i6*1 (P6);
i7i8 WITH i7i9*1 (P7);
i7i8 WITH i8i9*-1 (P8n);
i7i9 WITH i8i9*1 (P9);
i10i11 WITH i10i12*1 (P10);
i10i11 WITH i11i12*-1 (P11n);
i10i12 WITH i11i12*1 (P12);
Code
cat(spesification_mplus$MODELCONSTRAINT)
! fix factor loadings of the same item to the same value
L2 = -L2n;
L5 = -L5n;
L8 = -L8n;
L11 = -L11n;

! pair's uniqueness is equal to sum of 2 utility uniqunesses
P1P2 = P1- P2n;
P1P3 = P1 + P3;
P2P3 = - P2n + P3;
P4P5 = P4- P5n;
P4P6 = P4 + P6;
P5P6 = - P5n + P6;
P7P8 = P7- P8n;
P7P9 = P7 + P9;
P8P9 = - P8n + P9;
P10P11 = P10- P11n;
P10P12 = P10 + P12;
P11P12 = - P11n + P12;

! fix certain uniquenesses for identification
P1 = 1;
P4 = 1;
P7 = 1;
P10 = 1;

! force item parameters of the same item to be equal

! trait scores for individuals are estimated and saved in a file
Code
cat(spesification_mplus$SAVEDATA)
  FILE IS 'eta.csv';
  SAVE = FSCORES;

Model fit

Code
fit_lavaan<-fit_TIRT_lavaan(data_tirt,control=list(maxiter=1000))
# fit_mplus<-fit_TIRT_mplus(data_tirt)
fit_stan<-fit_TIRT_stan(data_tirt)

SAMPLING FOR MODEL 'thurstonian_irt_model' NOW (CHAIN 1).
Chain 1: 
Chain 1: Gradient evaluation took 0.000958 seconds
Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 9.58 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: 33.763 seconds (Warm-up)
Chain 1:                28.628 seconds (Sampling)
Chain 1:                62.391 seconds (Total)
Chain 1: 

SAMPLING FOR MODEL 'thurstonian_irt_model' NOW (CHAIN 2).
Chain 2: 
Chain 2: Gradient evaluation took 0.000631 seconds
Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 6.31 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: 35.075 seconds (Warm-up)
Chain 2:                29.31 seconds (Sampling)
Chain 2:                64.385 seconds (Total)
Chain 2: 

SAMPLING FOR MODEL 'thurstonian_irt_model' NOW (CHAIN 3).
Chain 3: 
Chain 3: Gradient evaluation took 0.000398 seconds
Chain 3: 1000 transitions using 10 leapfrog steps per transition would take 3.98 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: 33.105 seconds (Warm-up)
Chain 3:                27.95 seconds (Sampling)
Chain 3:                61.055 seconds (Total)
Chain 3: 

SAMPLING FOR MODEL 'thurstonian_irt_model' NOW (CHAIN 4).
Chain 4: 
Chain 4: Gradient evaluation took 0.000402 seconds
Chain 4: 1000 transitions using 10 leapfrog steps per transition would take 4.02 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: 34.711 seconds (Warm-up)
Chain 4:                29.236 seconds (Sampling)
Chain 4:                63.947 seconds (Total)
Chain 4: 
Code
model<-fit_lavaan$fit 

predict(fit_lavaan,newdata=data_tirt)
# A tibble: 600 × 3
      id trait  estimate
   <int> <chr>     <dbl>
 1     1 trait1    0.300
 2     1 trait2   -1.21 
 3     1 trait3    0.143
 4     2 trait1   -0.915
 5     2 trait2    0.858
 6     2 trait3    0.640
 7     3 trait1   -0.631
 8     3 trait2    1.34 
 9     3 trait3    0.877
10     4 trait1   -0.952
# ℹ 590 more rows

Plot Model

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

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

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

Evaluate Model

Code
# Fit indices (ULSMV estimator: robust chi-square-based indices; AIC/BIC are not available)
fit_index<-data.frame(fit=lavaan::fitMeasures(model,c("chisq.scaled","df.scaled","pvalue.scaled","cfi.scaled","tli.scaled","rmsea.scaled","srmr","gfi")))
round(fit_index,2)
                fit
chisq.scaled  46.71
df.scaled     43.00
pvalue.scaled  0.32
cfi.scaled     0.99
tli.scaled     0.99
rmsea.scaled   0.02
srmr           0.07
gfi            0.98
Code
# Explained variance
r_squared<-data.frame(r_squared=lavaan::inspect(model,"rsquare"))
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
Code
# Estimates
unstandardized_estimates<-lavaan::inspect(model,"est")
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
Code
standardized_estimates<-lavaan::inspect(model,"std")
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
Code
lavaan::parameterEstimates(model,se=TRUE,
                           zstat=TRUE,
                           pvalue=TRUE,
                           ci=TRUE,
                           level=0.95,
                           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                               1.000    1.000    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
Code
# 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)
       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)
72    i7i9 ~*~   i7i9  2.680 -0.065   -1.000   0.1  6.414 0.717      (i)
74  i10i12 ~*~ i10i12  2.583 -0.055   -1.000   0.1  8.526 0.831     (nm)
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)
73  i10i11 ~*~ i10i11  1.340  0.063    1.000   0.1  3.367 0.450      (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)
69    i4i5 ~*~   i4i5  1.043 -0.038   -1.000   0.1  7.125 0.761     (nm)
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)
77    i8i9 ~*~   i8i9  1.007  0.034    1.000   0.1  8.695 0.839     (nm)
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)
76    i5i6 ~*~   i5i6  0.729  0.045    1.000   0.1  3.613 0.476      (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)
68    i1i3 ~*~   i1i3  0.603  0.029    1.000   0.1  6.960 0.751     (nm)
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)
75    i2i3 ~*~   i2i3  0.544 -0.034   -1.000   0.1  4.598 0.573      (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)
71    i7i8 ~*~   i7i8  0.404  0.022    1.000   0.1  8.130 0.814     (nm)
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)
78  i11i12 ~*~ i11i12  0.308  0.021    1.000   0.1  7.251 0.768     (nm)
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)
70    i4i6 ~*~   i4i6  0.064  0.008    1.000   0.1  8.854 0.845     (nm)
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)
67    i1i2 ~*~   i1i2  0.005 -0.002   -1.000   0.1 13.261 0.954     (nm)
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

Code
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:2,],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 1e-05 seconds
Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.1 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.028 seconds (Warm-up)
Chain 1:                0.027 seconds (Sampling)
Chain 1:                0.055 seconds (Total)
Chain 1: 

SAMPLING FOR MODEL 'thurstonian_irt_model_newdata' NOW (CHAIN 2).
Chain 2: 
Chain 2: Gradient evaluation took 1.8e-05 seconds
Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 0.18 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.028 seconds (Warm-up)
Chain 2:                0.027 seconds (Sampling)
Chain 2:                0.055 seconds (Total)
Chain 2: 

SAMPLING FOR MODEL 'thurstonian_irt_model_newdata' NOW (CHAIN 3).
Chain 3: 
Chain 3: Gradient evaluation took 6e-06 seconds
Chain 3: 1000 transitions using 10 leapfrog steps per transition would take 0.06 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.028 seconds (Warm-up)
Chain 3:                0.03 seconds (Sampling)
Chain 3:                0.058 seconds (Total)
Chain 3: 

SAMPLING FOR MODEL 'thurstonian_irt_model_newdata' NOW (CHAIN 4).
Chain 4: 
Chain 4: Gradient evaluation took 6e-06 seconds
Chain 4: 1000 transitions using 10 leapfrog steps per transition would take 0.06 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.027 seconds (Warm-up)
Chain 4:                0.027 seconds (Sampling)
Chain 4:                0.054 seconds (Total)
Chain 4: 
Code
score_new<-data.frame(score_new)
score_new<-reshape(score_new[,c("id","trait","estimate")], direction="wide", idvar="id", timevar="trait")

References

Brown, A., & Maydeu-Olivares, A. (2011). Item response modeling of forced-choice questionnaires. Educational and Psychological Measurement, 71(3), 460–502. https://doi.org/10.1177/0013164410375112

Bürkner, P.-C., Schulte, N., & Holling, H. (2019). On the statistical and practical limitations of Thurstonian IRT models. Educational and Psychological Measurement, 79(5), 827–854. https://doi.org/10.1177/0013164419832063