This script cleans & analyzes the fall 20 ACI data

Contents:

Part 1 - load test data & prep for analysis

Part 2 - basic psychometric analyses

Part 3 - multidimensional analyses

Part 1

load libraries and data

library(mirt)
## Warning: package 'mirt' was built under R version 4.1.3
## Loading required package: stats4
## Loading required package: lattice
## Warning: package 'lattice' was built under R version 4.1.3
library(psych)
library(mokken)
## Warning: package 'mokken' was built under R version 4.1.3
## Loading required package: poLCA
## Warning: package 'poLCA' was built under R version 4.1.3
## Loading required package: scatterplot3d
## Loading required package: MASS
## Warning: package 'MASS' was built under R version 4.1.3
## 
## Attaching package: 'mokken'
## The following object is masked from 'package:psych':
## 
##     ICC
f20 <- read.csv("G:/My Drive/EACI/R files/f20_data.csv")
f20 <- f20[, -c(1:24,27:31,57,68,69,74,77)]

Part 2

basic descriptives

itemDesc <- describe(f20) # get item descriptives
itemDesc
##      vars   n mean   sd median trimmed mad min max range  skew kurtosis   se
## d05     1 272 0.43 0.50      0    0.41   0   0   1     1  0.30    -1.92 0.03
## d06     2 241 0.47 0.50      0    0.47   0   0   1     1  0.11    -2.00 0.03
## sb09    3 443 0.81 0.39      1    0.89   0   0   1     1 -1.58     0.49 0.02
## sb11    4 471 0.79 0.41      1    0.86   0   0   1     1 -1.40    -0.03 0.02
## sb14    5 434 0.78 0.42      1    0.84   0   0   1     1 -1.32    -0.25 0.02
## sb15    6 430 0.45 0.50      0    0.44   0   0   1     1  0.19    -1.97 0.02
## sb18    7 372 0.74 0.44      1    0.80   0   0   1     1 -1.09    -0.82 0.02
## sb21    8 336 0.78 0.42      1    0.85   0   0   1     1 -1.34    -0.19 0.02
## sb26    9 375 0.49 0.50      0    0.49   0   0   1     1  0.03    -2.00 0.03
## sb27   10 445 0.76 0.43      1    0.82   0   0   1     1 -1.18    -0.60 0.02
## sb28   11 371 0.55 0.50      1    0.56   0   0   1     1 -0.20    -1.97 0.03
## sb30   12 354 0.39 0.49      0    0.37   0   0   1     1  0.44    -1.81 0.03
## sb32   13 300 0.46 0.50      0    0.45   0   0   1     1  0.15    -1.99 0.03
## sb34   14 277 0.74 0.44      1    0.80   0   0   1     1 -1.11    -0.77 0.03
## sb35   15 408 0.67 0.47      1    0.71   0   0   1     1 -0.72    -1.49 0.02
## sb36   16 418 0.78 0.41      1    0.85   0   0   1     1 -1.38    -0.10 0.02
## sb37   17 371 0.76 0.43      1    0.82   0   0   1     1 -1.20    -0.57 0.02
## sb38   18 354 0.46 0.50      0    0.45   0   0   1     1  0.17    -1.98 0.03
## sb39   19 300 0.76 0.43      1    0.82   0   0   1     1 -1.19    -0.59 0.02
## sb40   20 278 0.67 0.47      1    0.71   0   0   1     1 -0.71    -1.49 0.03
## sb41   21 480 0.55 0.50      1    0.56   0   0   1     1 -0.19    -1.97 0.02
## sb42   22 437 0.54 0.50      1    0.55   0   0   1     1 -0.17    -1.98 0.02
## sb43   23 438 0.59 0.49      1    0.61   0   0   1     1 -0.36    -1.87 0.02
## sb44   24 378 0.62 0.49      1    0.64   0   0   1     1 -0.48    -1.78 0.03
## se09   25 353 0.62 0.49      1    0.65   0   0   1     1 -0.49    -1.76 0.03
## se10   26 310 0.16 0.37      0    0.08   0   0   1     1  1.80     1.25 0.02
## se12   27 315 0.24 0.43      0    0.17   0   0   1     1  1.22    -0.50 0.02
## se18   28 238 0.19 0.39      0    0.11   0   0   1     1  1.58     0.49 0.03
## se19   29 312 0.18 0.39      0    0.10   0   0   1     1  1.63     0.67 0.02
## se20   30 339 0.60 0.49      1    0.62   0   0   1     1 -0.39    -1.85 0.03
## se21   31 304 0.61 0.49      1    0.64   0   0   1     1 -0.44    -1.81 0.03
## se22   32 305 0.19 0.39      0    0.11   0   0   1     1  1.60     0.56 0.02
## se23   33 265 0.19 0.39      0    0.12   0   0   1     1  1.55     0.41 0.02
## se25   34 237 0.19 0.39      0    0.11   0   0   1     1  1.61     0.58 0.03
## se26   35 302 0.34 0.47      0    0.30   0   0   1     1  0.67    -1.56 0.03
## se49   36 272 0.31 0.46      0    0.26   0   0   1     1  0.82    -1.33 0.03
## se57   37 312 0.19 0.39      0    0.11   0   0   1     1  1.58     0.50 0.02
## ss16   38 265 0.47 0.50      0    0.46   0   0   1     1  0.13    -1.99 0.03
## ss35   39 350 0.36 0.48      0    0.32   0   0   1     1  0.58    -1.67 0.03
## ss39   40 340 0.34 0.47      0    0.30   0   0   1     1  0.68    -1.54 0.03
## ss53   41 339 0.63 0.48      1    0.66   0   0   1     1 -0.52    -1.74 0.03
## ss60   42 248 0.51 0.50      1    0.51   0   0   1     1 -0.03    -2.01 0.03
## ss65   43 399 0.73 0.44      1    0.79   0   0   1     1 -1.03    -0.94 0.02
## ss67   44 363 0.80 0.40      1    0.87   0   0   1     1 -1.49     0.21 0.02
## ss68   45 288 0.31 0.46      0    0.26   0   0   1     1  0.84    -1.30 0.03
## ss69   46 266 0.42 0.50      0    0.41   0   0   1     1  0.30    -1.92 0.03
## ss70   47 350 0.46 0.50      0    0.45   0   0   1     1  0.16    -1.98 0.03
## ss71   48 384 0.41 0.49      0    0.39   0   0   1     1  0.36    -1.88 0.03
## ss72   49 347 0.24 0.43      0    0.18   0   0   1     1  1.20    -0.56 0.02
## a1     50 884 0.65 0.48      1    0.69   0   0   1     1 -0.62    -1.61 0.02
## a2     51 879 0.69 0.46      1    0.73   0   0   1     1 -0.81    -1.34 0.02
## a3     52 878 0.60 0.49      1    0.63   0   0   1     1 -0.42    -1.83 0.02
## a4     53 877 0.40 0.49      0    0.37   0   0   1     1  0.41    -1.83 0.02
## a5     54 878 0.65 0.48      1    0.69   0   0   1     1 -0.63    -1.60 0.02
## a6     55 879 0.76 0.43      1    0.83   0   0   1     1 -1.24    -0.47 0.01
itemDiff <- itemDesc$mean # save the difficulties as a vector for plotting
items    <- itemDesc$vars # save item names as a vector for plotting

plot item difficulties

plot(items,itemDiff, type = "l")
points(items,itemDiff)

IRT Analyses

m_1dimension <- 'math.skill = 1-55' # make the 1 dimensional model

fit the Rasch

results.1pl.f20 <- mirt(data=f20, model=m_1dimension, itemtype="Rasch", SE=TRUE, verbose=FALSE)
## Warning: data contains response patterns with only NAs
coef.1pl.f20 <- coef(results.1pl.f20, IRTpars=TRUE, simplify=TRUE)

fit the 2pl

results.2pl.f20 <- mirt(data=f20, model=m_1dimension, itemtype="2PL", SE=TRUE, verbose=FALSE)
## Warning: data contains response patterns with only NAs
coef.2pl.f20 <- coef(results.2pl.f20, IRTpars=TRUE, simplify=TRUE)

param.num.3pl <- mirt(data=f20, model=m_1dimension, itemtype="3PL", SE=TRUE, verbose=FALSE,
                      pars='values') # get the parameter numbers
## Warning: data contains response patterns with only NAs

3 pl

m <- 'F = 1-55
      PRIOR = (1-55, g, norm, -1.1,3)'
model <- mirt.model(m)
results.3pl.f20 <- mirt(data=f20, model=model, itemtype="3PL", SE=TRUE, verbose=FALSE) # fit the 3pl
## Warning: data contains response patterns with only NAs
## EM cycles terminated after 500 iterations.
coef.3pl.f20    <- coef(results.3pl.f20, IRTpars=TRUE, simplify=TRUE)
coef.3pl.f20
## $items
##           a      b     g u
## d05   1.488  0.414 0.051 1
## d06   0.999  0.135 0.026 1
## sb09  2.556 -0.936 0.152 1
## sb11  2.306 -0.811 0.050 1
## sb14  1.245 -1.148 0.100 1
## sb15  1.918  0.431 0.145 1
## sb18  4.591 -0.127 0.412 1
## sb21  2.742 -0.685 0.262 1
## sb26  0.593  1.999 0.327 1
## sb27  2.018 -0.654 0.077 1
## sb28  3.354  0.350 0.232 1
## sb30  1.218  1.664 0.273 1
## sb32  5.314  0.354 0.130 1
## sb34  3.212 -0.259 0.384 1
## sb35  2.273 -0.408 0.116 1
## sb36  2.461 -0.738 0.052 1
## sb37  2.424 -0.532 0.230 1
## sb38  2.474  0.450 0.167 1
## sb39  2.117 -0.423 0.330 1
## sb40  1.915 -0.518 0.074 1
## sb41  2.783  0.171 0.127 1
## sb42 38.223  0.361 0.247 1
## sb43 55.692  0.293 0.349 1
## sb44 34.473  0.330 0.373 1
## se09  0.662 -0.289 0.143 1
## se10 16.175  1.491 0.107 1
## se12 33.697  1.490 0.180 1
## se18 19.384  1.678 0.160 1
## se19 16.227  1.789 0.159 1
## se20  0.381 -0.305 0.131 1
## se21  0.732 -0.299 0.140 1
## se22 27.296  1.564 0.134 1
## se23 25.356  1.590 0.149 1
## se25  0.412  4.673 0.064 1
## se26  0.412  2.442 0.094 1
## se49  0.429  2.760 0.088 1
## se57  0.332  7.821 0.127 1
## ss16  0.888  0.307 0.055 1
## ss35  0.768  0.976 0.035 1
## ss39  0.880  3.380 0.292 1
## ss53  1.434  0.056 0.288 1
## ss60  0.851  0.182 0.096 1
## ss65  1.968 -0.306 0.251 1
## ss67  2.168  0.014 0.577 1
## ss68  1.746  0.991 0.082 1
## ss69  1.772  1.007 0.254 1
## ss70  1.431  0.339 0.083 1
## ss71  0.579  0.933 0.032 1
## ss72  1.425  2.032 0.157 1
## a1    2.946 -0.454 0.012 1
## a2    2.706 -0.558 0.047 1
## a3    3.196  0.005 0.210 1
## a4    1.666  0.576 0.089 1
## a5    2.070 -0.277 0.166 1
## a6    1.913 -0.623 0.275 1
## 
## $means
## F 
## 0 
## 
## $cov
##   F
## F 1

lr tests

anova(results.1pl.f20, results.2pl.f20)
## 
## Model 1: mirt(data = f20, model = m_1dimension, itemtype = "Rasch", SE = TRUE, 
##     verbose = FALSE)
## Model 2: mirt(data = f20, model = m_1dimension, itemtype = "2PL", SE = TRUE, 
##     verbose = FALSE)
##        AIC    SABIC       HQ      BIC    logLik      X2  df   p
## 1 24501.79 24612.08 24610.04 24789.96 -12194.89     NaN NaN NaN
## 2 23794.36 24011.00 24007.00 24360.42 -11787.18 815.428  54   0
anova(results.2pl.f20, results.3pl.f20)
## 
## Model 1: mirt(data = f20, model = m_1dimension, itemtype = "2PL", SE = TRUE, 
##     verbose = FALSE)
## Model 2: mirt(data = f20, model = model, itemtype = "3PL", SE = TRUE, 
##     verbose = FALSE)
##        AIC    SABIC       HQ      BIC    logLik   logPost  df
## 1 23794.36 24011.00 24007.00 24360.42 -11787.18 -11787.18 NaN
## 2 23649.37 23974.34 23968.33 24498.46 -11659.68 -11774.77  55
firstFive <- c(1:5)
itemplot(results.3pl.f20, 1)

plot(results.3pl.f20, type='trace', auto.key=F) # all item trace lines

plot(results.3pl.f20, type='infotrace',auto.key=T)

plot(results.3pl.f20, type='info', auto.key=T) # all item trace lines

theta <- fscores(results.3pl.f20)

Part 3

2 factor model

#parnums.multi2.3pl.f20 <- mirt(data=f20, model=2, itemtype="3PL",
#                           pars = 'values', SE=TRUE, verbose=FALSE) # get param numbers
#results.multi2.3pl.f20 <- mirt(data=f20, model=2, itemtype="3PL",
#                           parprior = list(c(seq(4,275,5), 'norm', -1.1,3),
#                                           c(seq(1,275,5), 'norm',  0.0,3),
#                                           c(seq(2,275,5), 'norm',  0.0,3),
#                                           c(seq(3,275,5), 'norm',  0.0,3)),
#                           SE=TRUE, verbose=FALSE) # fit the 3pl
#save(results.multi2.3pl.f20, file = "results.multi2.3pl.f20")
load('C:/Users/Sydne/Documents/results.multi2.3pl.f20')
coef.multi2.3pl.f20 <- coef(results.multi2.3pl.f20, simplify = T, rotate = 'bifactorT')
## 
## Rotation:  bifactorT
coef.multi2.3pl.f20
## $items
##         a1     a2      d     g u
## d05  1.960 -0.520 -0.756 0.057 1
## d06  1.172 -0.521 -0.145 0.022 1
## sb09 2.315  0.636  2.506 0.070 1
## sb11 2.211  0.940  1.980 0.038 1
## sb14 1.225  0.581  1.515 0.088 1
## sb15 1.845  0.867 -0.867 0.150 1
## sb18 2.873  1.090  0.991 0.329 1
## sb21 2.220  0.120  2.014 0.128 1
## sb26 0.271  0.831 -0.168 0.058 1
## sb27 1.928  0.458  1.314 0.078 1
## sb28 3.429  0.912 -1.083 0.214 1
## sb30 0.775  1.295 -1.790 0.219 1
## sb32 4.439  1.252 -1.472 0.108 1
## sb34 3.165  0.056  0.847 0.378 1
## sb35 2.356 -0.027  0.894 0.133 1
## sb36 2.596 -0.027  1.865 0.064 1
## sb37 2.515  0.069  1.358 0.227 1
## sb38 2.703  0.877 -1.298 0.176 1
## sb39 2.299  0.041  0.731 0.376 1
## sb40 1.995  0.143  0.918 0.103 1
## sb41 3.918  4.826 -0.031 0.043 1
## sb42 3.339  5.982  0.490 0.022 1
## sb43 4.197  5.502  0.606 0.157 1
## sb44 3.696  4.655  0.712 0.146 1
## se09 0.722  0.049  0.075 0.187 1
## se10 2.514 -0.182 -4.481 0.097 1
## se12 3.548 -1.882 -5.330 0.150 1
## se18 1.214 -1.866 -3.367 0.088 1
## se19 0.791 -1.342 -2.979 0.094 1
## se20 0.458 -0.320  0.213 0.090 1
## se21 0.706 -0.004  0.189 0.149 1
## se22 3.205 -1.967 -5.024 0.093 1
## se23 2.128 -1.676 -4.229 0.110 1
## se25 0.488 -1.241 -2.230 0.044 1
## se26 0.349 -0.059 -0.928 0.076 1
## se49 0.313  0.840 -1.158 0.043 1
## se57 0.167 -1.514 -3.348 0.124 1
## ss16 0.895 -0.158 -0.269 0.049 1
## ss35 0.805 -0.226 -0.753 0.031 1
## ss39 1.044 -0.722 -2.858 0.274 1
## ss53 1.339  0.064 -0.003 0.270 1
## ss60 0.999 -0.229 -0.305 0.140 1
## ss65 2.191  0.020  0.529 0.280 1
## ss67 2.395  0.649 -0.251 0.599 1
## ss68 2.183  0.423 -2.208 0.101 1
## ss69 1.379 -0.181 -1.395 0.224 1
## ss70 1.376 -0.055 -0.427 0.067 1
## ss71 0.703 -0.420 -0.542 0.024 1
## ss72 1.345  1.074 -3.214 0.152 1
## a1   2.888  0.372  1.338 0.012 1
## a2   2.737  0.143  1.533 0.046 1
## a3   3.438  0.461 -0.060 0.217 1
## a4   1.788  0.269 -1.105 0.105 1
## a5   1.986 -0.329  0.779 0.099 1
## a6   2.121  0.000  1.097 0.321 1
## 
## $means
## F1 F2 
##  0  0 
## 
## $cov
##    F1 F2
## F1  1  0
## F2  0  1

3 factor model

#parnums.multi3.3pl.f20 <- mirt(data=f20, model=3, itemtype="3PL",
#                           pars = 'values', SE=TRUE, verbose=FALSE) # get param numbers
#results.multi3.3pl.f20 <- mirt(data=f20, model=3, itemtype="3PL",
#                           parprior = list(c(seq(5,330,6), 'norm', -1.1,3),
#                                           c(seq(1,330,6), 'norm',  0.0,3),
#                                           c(seq(2,330,6), 'norm',  0.0,3),
#                                           c(seq(3,330,6), 'norm',  0.0,3),
#                                           c(seq(4,330,6), 'norm',  0.0,3)),
#                           SE=TRUE, verbose=FALSE) # fit the 3pl
#save(results.multi3.3pl.f20, file = "results.multi3.3pl.f20")
load('C:/Users/Sydne/Documents/results.multi3.3pl.f20')
coef.multi3.3pl.f20 <- coef(results.multi3.3pl.f20, simplify = T, rotate = 'bifactorT')
## 
## Rotation:  bifactorT
coef.multi3.3pl.f20
## $items
##         a1     a2     a3      d     g u
## d05  2.225 -1.344  0.288 -0.943 0.074 1
## d06  1.496 -1.934 -0.144 -0.147 0.025 1
## sb09 2.945  0.128 -1.108  3.183 0.039 1
## sb11 2.534  0.500  0.444  2.135 0.039 1
## sb14 1.367  0.286  0.376  1.607 0.078 1
## sb15 1.787  0.068 -0.765 -0.323 0.045 1
## sb18 2.613  0.817  1.113  1.546 0.213 1
## sb21 2.549  0.041  1.374  2.493 0.102 1
## sb26 0.410  0.622 -0.258 -0.194 0.073 1
## sb27 2.061  0.086  0.363  1.375 0.081 1
## sb28 3.234  0.233 -0.443 -0.839 0.196 1
## sb30 1.004  1.012 -1.012 -1.716 0.193 1
## sb32 4.541  0.283 -0.070 -1.307 0.099 1
## sb34 3.317  0.355  2.386  1.976 0.255 1
## sb35 2.567 -0.547 -0.824  1.211 0.092 1
## sb36 3.065 -0.770 -1.075  2.281 0.052 1
## sb37 2.432 -0.518 -0.150  1.471 0.198 1
## sb38 3.551 -0.040 -0.469 -1.602 0.190 1
## sb39 2.191 -0.226  0.863  0.931 0.349 1
## sb40 1.843 -0.244  0.454  0.967 0.088 1
## sb41 4.842  3.931 -0.039  0.130 0.040 1
## sb42 4.427  5.136 -0.148  0.665 0.016 1
## sb43 4.909  4.188 -0.416  0.810 0.145 1
## sb44 4.030  3.579 -0.484  1.192 0.074 1
## se09 0.766 -0.149 -0.127 -0.036 0.227 1
## se10 1.676  0.485  2.699 -4.282 0.056 1
## se12 1.272  0.249  3.509 -3.242 0.038 1
## se18 0.864 -0.786  2.437 -4.009 0.099 1
## se19 0.760 -0.703  2.084 -3.665 0.087 1
## se20 0.422 -0.518  0.051  0.207 0.092 1
## se21 0.703 -0.245 -0.049  0.199 0.147 1
## se22 1.944 -0.135  2.716 -4.385 0.077 1
## se23 1.527  0.086  2.780 -4.842 0.113 1
## se25 0.169 -0.953  0.872 -2.307 0.058 1
## se26 0.275  0.081  0.584 -0.869 0.052 1
## se49 0.513  0.461 -0.563 -1.118 0.033 1
## se57 0.040 -0.495  0.334 -1.838 0.045 1
## ss16 0.805 -0.109  0.515 -0.275 0.054 1
## ss35 0.749 -0.372 -0.091 -0.738 0.030 1
## ss39 1.078 -1.029  0.734 -3.285 0.280 1
## ss53 1.419 -0.403 -0.422  0.118 0.240 1
## ss60 0.846 -0.388  0.207 -0.212 0.119 1
## ss65 2.163 -0.470 -0.056  0.548 0.280 1
## ss67 3.025 -0.216 -0.958 -0.211 0.592 1
## ss68 2.689 -0.269 -0.041 -2.609 0.113 1
## ss69 1.090  0.326  1.085 -1.119 0.167 1
## ss70 1.372 -0.369 -0.068 -0.439 0.075 1
## ss71 0.601 -0.560 -0.026 -0.547 0.024 1
## ss72 1.736  0.390 -0.835 -3.398 0.149 1
## a1   2.992 -0.248  0.398  1.418 0.011 1
## a2   2.829 -0.432  0.567  1.622 0.050 1
## a3   3.383 -0.304 -0.376  0.131 0.195 1
## a4   1.732 -0.023  0.169 -1.043 0.102 1
## a5   2.023 -0.784  0.643  0.817 0.111 1
## a6   1.976 -0.571  0.425  1.199 0.297 1
## 
## $means
## F1 F2 F3 
##  0  0  0 
## 
## $cov
##    F1 F2 F3
## F1  1  0  0
## F2  0  1  0
## F3  0  0  1

4 factor model

#parnums.multi4.3pl.f20 <- mirt(data=f20, model=4, itemtype="3PL",
#                               pars = 'values', SE=TRUE, verbose=FALSE) # get param numbers
#results.multi4.3pl.f20 <- mirt(data=f20, model=4, itemtype="3PL",
#                               parprior = list(c(seq(6,385,7), 'norm', -1.1,3),
#                                               c(seq(1,385,7), 'norm',  0.0,3),
#                                               c(seq(2,385,7), 'norm',  0.0,3),
#                                               c(seq(3,385,7), 'norm',  0.0,3),
#                                               c(seq(4,385,7), 'norm',  0.0,3),
#                                               c(seq(5,385,7), 'norm',  0.0,3)),
#                               SE=TRUE, verbose=FALSE, method = 'QMCEM') # fit the 3pl
#save(results.multi4.3pl.f20, file = "results.multi4.3pl.f20")
load('C:/Users/Sydne/Documents/results.multi4.3pl.f20')
coef.multi4.3pl.f20 <- coef(results.multi4.3pl.f20, simplify = T, rotate = 'bifactorT')
## 
## Rotation:  bifactorT
coef.multi4.3pl.f20
## $items
##          a1     a2     a3     a4      d     g u
## d05   2.119  0.402  0.186  1.465 -0.919 0.062 1
## d06   1.524 -0.132 -0.154  2.501 -0.219 0.026 1
## sb09  3.441 -1.900 -0.249 -0.105  3.565 0.091 1
## sb11  2.754  0.407  0.708 -0.807  2.296 0.042 1
## sb14  2.194  0.156  1.280 -0.809  1.435 0.328 1
## sb15  1.774 -0.731 -0.324  0.013 -0.320 0.043 1
## sb18  3.154 -0.087  1.344 -0.945  1.791 0.195 1
## sb21  2.577 -0.562  1.278  0.083  2.457 0.124 1
## sb26  0.430 -0.284 -0.298 -0.582 -0.227 0.080 1
## sb27  2.075  0.318  0.170 -0.049  1.291 0.105 1
## sb28  3.200  0.056 -2.312  0.252 -0.051 0.063 1
## sb30  0.717 -0.381 -1.830 -0.384 -1.071 0.058 1
## sb32  4.735  0.275 -0.751  0.183 -1.446 0.095 1
## sb34  3.648 -0.991  1.928 -0.105  1.565 0.317 1
## sb35  2.501 -0.755 -0.226  0.626  1.033 0.122 1
## sb36  2.824 -0.732  0.036  0.773  2.001 0.078 1
## sb37  2.241 -0.322  0.482  0.442  1.569 0.148 1
## sb38  3.834 -0.772  0.064  0.066 -1.658 0.182 1
## sb39  3.059 -0.652  1.450  0.367  0.998 0.372 1
## sb40  1.996 -0.550  0.341  0.503  0.968 0.106 1
## sb41  4.699  0.421 -1.237 -3.384  0.113 0.031 1
## sb42  4.853  0.155 -1.426 -4.948  0.577 0.022 1
## sb43  5.320 -0.029 -1.159 -4.128  0.764 0.151 1
## sb44  4.355  0.206 -1.085 -3.418  1.149 0.087 1
## se09  0.699  0.133 -0.340  0.333  0.258 0.115 1
## se10  1.376  2.614 -0.446 -0.318 -4.041 0.049 1
## se12  1.220  3.252  0.434 -0.199 -3.179 0.043 1
## se18  0.609  2.187  1.870  0.605 -3.619 0.049 1
## se19  0.652  0.732  2.561  0.167 -3.805 0.067 1
## se20  0.383 -0.066  0.273  0.416  0.202 0.088 1
## se21  0.690 -0.074  0.196  0.240  0.199 0.144 1
## se22  1.935  2.850  0.265  0.149 -4.582 0.078 1
## se23  1.017  2.690  0.235 -0.099 -3.766 0.066 1
## se25  0.205 -0.308  1.569  1.040 -2.596 0.039 1
## se26  0.278  0.731 -0.166  0.033 -0.953 0.058 1
## se49  0.520 -0.455 -0.370 -0.366 -1.145 0.045 1
## se57 -0.022  0.116  0.500  0.642 -2.097 0.065 1
## ss16  0.820 -0.052  0.361  0.155 -0.266 0.047 1
## ss35  0.814 -0.707  0.510  0.224 -0.869 0.033 1
## ss39  1.213  0.306  1.361  0.405 -3.236 0.268 1
## ss53  1.265 -0.276 -0.218  0.436  0.247 0.195 1
## ss60  0.879 -0.299  0.312  0.437 -0.318 0.144 1
## ss65  2.200 -0.408  0.570  0.280  0.503 0.277 1
## ss67  3.629 -1.046  0.211  0.326 -0.340 0.595 1
## ss68  2.956 -0.023 -0.464  0.485 -2.972 0.120 1
## ss69  1.917 -0.161  1.452 -0.416 -2.008 0.231 1
## ss70  1.357 -0.001 -0.138  0.500 -0.462 0.076 1
## ss71  0.709 -0.568  0.746  0.407 -0.696 0.031 1
## ss72  0.888 -0.131 -1.105 -0.059 -2.325 0.097 1
## a1    3.043  0.557  0.131  0.333  1.420 0.009 1
## a2    2.678  0.574  0.352  0.432  1.587 0.033 1
## a3    3.595  0.067 -1.020  0.797  0.216 0.179 1
## a4    1.627  0.501 -0.255  0.187 -0.943 0.076 1
## a5    2.018  0.680  0.441  0.814  0.805 0.108 1
## a6    2.115  0.221  0.393  0.456  1.064 0.333 1
## 
## $means
## F1 F2 F3 F4 
##  0  0  0  0 
## 
## $cov
##    F1 F2 F3 F4
## F1  1  0  0  0
## F2  0  1  0  0
## F3  0  0  1  0
## F4  0  0  0  1

compare fit

anova(results.3pl.f20, results.multi2.3pl.f20, results.multi3.3pl.f20,
      results.multi4.3pl.f20)
##        AIC    SABIC       HQ      BIC    logLik   logPost  df
## 1 23649.37 23974.34 23968.33 24498.46 -11659.68 -11774.77 NaN
## 2 23502.28 23933.60 23925.62 24629.25 -11532.14 -12016.24  54
## 3 23441.51 23977.21 23967.31 24841.21 -11448.75 -12047.08  53
## 4 23428.08 24066.20 24054.41 25095.38 -11390.04 -12102.21  52

calculate IECV 2 factor

sum.multi2.f20 <- summary(results.multi2.3pl.f20, rotate = "bifactorT")
## 
## Rotation:  bifactorT 
## 
## Rotated factor loadings: 
## 
##         F1       F2     h2
## d05  0.740 -0.19623 0.5867
## d06  0.550 -0.24466 0.3623
## sb09 0.787  0.21597 0.6656
## sb11 0.751  0.31912 0.6658
## sb14 0.563  0.26706 0.3881
## sb15 0.695  0.32644 0.5893
## sb18 0.818  0.31018 0.7652
## sb21 0.793  0.04277 0.6305
## sb26 0.141  0.43430 0.2086
## sb27 0.738  0.17528 0.5755
## sb28 0.871  0.23177 0.8129
## sb30 0.341  0.56936 0.4402
## sb32 0.903  0.25469 0.8802
## sb34 0.881  0.01556 0.7758
## sb35 0.811 -0.00913 0.6571
## sb36 0.836 -0.00867 0.6994
## sb37 0.828  0.02273 0.6860
## sb38 0.816  0.26467 0.7360
## sb39 0.804  0.01444 0.6461
## sb40 0.760  0.05427 0.5799
## sb41 0.608  0.74884 0.9303
## sb42 0.473  0.84743 0.9419
## sb43 0.589  0.77208 0.9430
## sb44 0.598  0.75292 0.9242
## se09 0.391  0.02639 0.1533
## se10 0.827 -0.05970 0.6868
## se12 0.813 -0.43145 0.8478
## se18 0.433 -0.66589 0.6311
## se19 0.343 -0.58166 0.4558
## se20 0.256 -0.17841 0.0971
## se21 0.383 -0.00222 0.1469
## se22 0.776 -0.47658 0.8300
## se23 0.665 -0.52385 0.7169
## se25 0.226 -0.57390 0.3803
## se26 0.201 -0.03415 0.0415
## se49 0.163  0.43675 0.2172
## se57 0.073 -0.66287 0.4447
## ss16 0.464 -0.08172 0.2219
## ss35 0.424 -0.11910 0.1942
## ss39 0.492 -0.33997 0.3575
## ss53 0.618  0.02940 0.3830
## ss60 0.503 -0.11506 0.2663
## ss65 0.790  0.00735 0.6236
## ss67 0.796  0.21577 0.6801
## ss68 0.780  0.15111 0.6306
## ss69 0.627 -0.08256 0.4004
## ss70 0.629 -0.02526 0.3958
## ss71 0.372 -0.22232 0.1880
## ss72 0.556  0.44352 0.5055
## a1   0.856  0.11023 0.7453
## a2   0.848  0.04443 0.7217
## a3   0.890  0.11930 0.8059
## a4   0.720  0.10847 0.5302
## a5   0.753 -0.12468 0.5832
## a6   0.780  0.00000 0.6083
## 
## Rotated SS loadings:  23.885 6.696 
## 
## Factor correlations: 
## 
##    F1 F2
## F1  1  0
## F2  0  1
f2.iecv.f20 <- sum.multi2.f20$rotF[,1]^2/sum.multi2.f20$h2
f2.summary <- as.data.frame(cbind(sum.multi2.f20$rotF[,1], sum.multi2.f20$h2,
                                  f2.iecv.f20))
names(f2.summary) <- c("Gen Factor", "Communality", "IECV")
round(f2.summary,2)
##      Gen Factor Communality IECV
## d05        0.74        0.59 0.93
## d06        0.55        0.36 0.83
## sb09       0.79        0.67 0.93
## sb11       0.75        0.67 0.85
## sb14       0.56        0.39 0.82
## sb15       0.69        0.59 0.82
## sb18       0.82        0.77 0.87
## sb21       0.79        0.63 1.00
## sb26       0.14        0.21 0.10
## sb27       0.74        0.58 0.95
## sb28       0.87        0.81 0.93
## sb30       0.34        0.44 0.26
## sb32       0.90        0.88 0.93
## sb34       0.88        0.78 1.00
## sb35       0.81        0.66 1.00
## sb36       0.84        0.70 1.00
## sb37       0.83        0.69 1.00
## sb38       0.82        0.74 0.90
## sb39       0.80        0.65 1.00
## sb40       0.76        0.58 0.99
## sb41       0.61        0.93 0.40
## sb42       0.47        0.94 0.24
## sb43       0.59        0.94 0.37
## sb44       0.60        0.92 0.39
## se09       0.39        0.15 1.00
## se10       0.83        0.69 0.99
## se12       0.81        0.85 0.78
## se18       0.43        0.63 0.30
## se19       0.34        0.46 0.26
## se20       0.26        0.10 0.67
## se21       0.38        0.15 1.00
## se22       0.78        0.83 0.73
## se23       0.67        0.72 0.62
## se25       0.23        0.38 0.13
## se26       0.20        0.04 0.97
## se49       0.16        0.22 0.12
## se57       0.07        0.44 0.01
## ss16       0.46        0.22 0.97
## ss35       0.42        0.19 0.93
## ss39       0.49        0.36 0.68
## ss53       0.62        0.38 1.00
## ss60       0.50        0.27 0.95
## ss65       0.79        0.62 1.00
## ss67       0.80        0.68 0.93
## ss68       0.78        0.63 0.96
## ss69       0.63        0.40 0.98
## ss70       0.63        0.40 1.00
## ss71       0.37        0.19 0.74
## ss72       0.56        0.51 0.61
## a1         0.86        0.75 0.98
## a2         0.85        0.72 1.00
## a3         0.89        0.81 0.98
## a4         0.72        0.53 0.98
## a5         0.75        0.58 0.97
## a6         0.78        0.61 1.00

calculate IECV 3 factor

sum.multi3.f20 <- summary(results.multi3.3pl.f20, rotate = "bifactorT")
## 
## Rotation:  bifactorT 
## 
## Rotated factor loadings: 
## 
##          F1       F2       F3    h2
## d05  0.7131 -0.43074  0.09229 0.703
## d06  0.5016 -0.64844 -0.04837 0.674
## sb09 0.8227  0.03579 -0.30951 0.774
## sb11 0.8109  0.15990  0.14195 0.703
## sb14 0.6119  0.12791  0.16851 0.419
## sb15 0.6914  0.02625 -0.29595 0.566
## sb18 0.7661  0.23970  0.32647 0.751
## sb21 0.7589  0.01208  0.40892 0.743
## sb26 0.2186  0.33169 -0.13737 0.177
## sb27 0.7636  0.03189  0.13439 0.602
## sb28 0.8767  0.06312 -0.12002 0.787
## sb30 0.4115  0.41465 -0.41486 0.513
## sb32 0.9347  0.05824 -0.01444 0.877
## sb34 0.7470  0.07992  0.53730 0.853
## sb35 0.7935 -0.16897 -0.25483 0.723
## sb36 0.8180 -0.20557 -0.28694 0.794
## sb37 0.8061 -0.17169 -0.04977 0.682
## sb38 0.8954 -0.01000 -0.11833 0.816
## sb39 0.7519 -0.07738  0.29615 0.659
## sb40 0.7195 -0.09528  0.17730 0.558
## sb41 0.7490  0.60803 -0.00608 0.931
## sb42 0.6331  0.73448 -0.02110 0.941
## sb43 0.7342  0.62638 -0.06229 0.935
## sb44 0.7104  0.63093 -0.08539 0.910
## se09 0.4080 -0.07955 -0.06793 0.177
## se10 0.4608  0.13344  0.74218 0.781
## se12 0.3094  0.06060  0.85385 0.828
## se18 0.2706 -0.24600  0.76304 0.716
## se19 0.2637 -0.24396  0.72286 0.652
## se20 0.2308 -0.28334  0.02794 0.134
## se21 0.3782 -0.13210 -0.02645 0.161
## se22 0.5183 -0.03588  0.72402 0.794
## se23 0.4242  0.02382  0.77209 0.777
## se25 0.0790 -0.44470  0.40680 0.369
## se26 0.1512  0.04425  0.32040 0.127
## se49 0.2670  0.23979 -0.29296 0.215
## se57 0.0221 -0.27428  0.18533 0.110
## ss16 0.4117 -0.05570  0.26337 0.242
## ss35 0.3943 -0.19601 -0.04775 0.196
## ss39 0.4534 -0.43268  0.30871 0.488
## ss53 0.6193 -0.17587 -0.18425 0.448
## ss60 0.4336 -0.19909  0.10607 0.239
## ss65 0.7745 -0.16821 -0.01997 0.629
## ss67 0.8386 -0.05993 -0.26567 0.777
## ss68 0.8419 -0.08417 -0.01290 0.716
## ss69 0.4706  0.14065  0.46809 0.460
## ss70 0.6187 -0.16624 -0.03047 0.411
## ss71 0.3182 -0.29628 -0.01394 0.189
## ss72 0.6677  0.15004 -0.32114 0.571
## a1   0.8613 -0.07151  0.11469 0.760
## a2   0.8376 -0.12786  0.16775 0.746
## a3   0.8861 -0.07950 -0.09836 0.801
## a4   0.7115 -0.00946  0.06927 0.511
## a5   0.7144 -0.27707  0.22695 0.639
## a6   0.7310 -0.21118  0.15725 0.604
## 
## Rotated SS loadings:  22.357 4.044 5.962 
## 
## Factor correlations: 
## 
##    F1 F2 F3
## F1  1  0  0
## F2  0  1  0
## F3  0  0  1
f3.iecv.f20 <- sum.multi3.f20$rotF[,1]^2/sum.multi3.f20$h2
f3.summary <- as.data.frame(cbind(sum.multi3.f20$rotF[,1], sum.multi3.f20$h2,
                                  f3.iecv.f20))
names(f3.summary) <- c("Gen Factor", "Communality", "IECV")
round(f3.summary,2)
##      Gen Factor Communality IECV
## d05        0.71        0.70 0.72
## d06        0.50        0.67 0.37
## sb09       0.82        0.77 0.87
## sb11       0.81        0.70 0.93
## sb14       0.61        0.42 0.89
## sb15       0.69        0.57 0.84
## sb18       0.77        0.75 0.78
## sb21       0.76        0.74 0.77
## sb26       0.22        0.18 0.27
## sb27       0.76        0.60 0.97
## sb28       0.88        0.79 0.98
## sb30       0.41        0.51 0.33
## sb32       0.93        0.88 1.00
## sb34       0.75        0.85 0.65
## sb35       0.79        0.72 0.87
## sb36       0.82        0.79 0.84
## sb37       0.81        0.68 0.95
## sb38       0.90        0.82 0.98
## sb39       0.75        0.66 0.86
## sb40       0.72        0.56 0.93
## sb41       0.75        0.93 0.60
## sb42       0.63        0.94 0.43
## sb43       0.73        0.94 0.58
## sb44       0.71        0.91 0.55
## se09       0.41        0.18 0.94
## se10       0.46        0.78 0.27
## se12       0.31        0.83 0.12
## se18       0.27        0.72 0.10
## se19       0.26        0.65 0.11
## se20       0.23        0.13 0.40
## se21       0.38        0.16 0.89
## se22       0.52        0.79 0.34
## se23       0.42        0.78 0.23
## se25       0.08        0.37 0.02
## se26       0.15        0.13 0.18
## se49       0.27        0.21 0.33
## se57       0.02        0.11 0.00
## ss16       0.41        0.24 0.70
## ss35       0.39        0.20 0.79
## ss39       0.45        0.49 0.42
## ss53       0.62        0.45 0.86
## ss60       0.43        0.24 0.79
## ss65       0.77        0.63 0.95
## ss67       0.84        0.78 0.90
## ss68       0.84        0.72 0.99
## ss69       0.47        0.46 0.48
## ss70       0.62        0.41 0.93
## ss71       0.32        0.19 0.54
## ss72       0.67        0.57 0.78
## a1         0.86        0.76 0.98
## a2         0.84        0.75 0.94
## a3         0.89        0.80 0.98
## a4         0.71        0.51 0.99
## a5         0.71        0.64 0.80
## a6         0.73        0.60 0.89

calculate IECV 4 factor

sum.multi4.f20 <- summary(results.multi4.3pl.f20, rotate = "bifactorT")
## 
## Rotation:  bifactorT 
## 
## Rotated factor loadings: 
## 
##           F1        F2      F3       F4    h2
## d05   0.6792  0.128776  0.0596  0.46982 0.702
## d06   0.4492 -0.038973 -0.0455  0.73695 0.748
## sb09  0.8018 -0.442639 -0.0581 -0.02456 0.843
## sb11  0.8017  0.118379  0.2061 -0.23490 0.754
## sb14  0.6929  0.049168  0.4042 -0.25545 0.711
## sb15  0.6862 -0.282883 -0.1252  0.00513 0.567
## sb18  0.7998 -0.022001  0.3408 -0.23956 0.814
## sb21  0.7601 -0.165911  0.3769  0.02434 0.748
## sb26  0.2268 -0.149954 -0.1574 -0.30710 0.193
## sb27  0.7662  0.117251  0.0628 -0.01801 0.605
## sb28  0.7430  0.013113 -0.5368  0.05841 0.844
## sb30  0.2701 -0.143558 -0.6891 -0.14446 0.589
## sb32  0.9288  0.053991 -0.1473  0.03585 0.889
## sb34  0.7976 -0.216625  0.4217 -0.02286 0.861
## sb35  0.7844 -0.236813 -0.0708  0.19640 0.715
## sb36  0.8149 -0.211391  0.0104  0.22303 0.759
## sb37  0.7709 -0.110830  0.1658  0.15206 0.657
## sb38  0.8987 -0.181044  0.0149  0.01536 0.841
## sb39  0.7921 -0.168761  0.3754  0.09508 0.806
## sb40  0.7263 -0.200035  0.1241  0.18320 0.616
## sb41  0.7609  0.068121 -0.2003 -0.54800 0.924
## sb42  0.6667  0.021231 -0.1958 -0.67976 0.945
## sb43  0.7555 -0.004184 -0.1646 -0.58625 0.942
## sb44  0.7386  0.034907 -0.1841 -0.57963 0.917
## se09  0.3670  0.069796 -0.1786  0.17493 0.202
## se10  0.3984  0.757024 -0.1293 -0.09196 0.757
## se12  0.3129  0.834482  0.1113 -0.05102 0.809
## se18  0.1763  0.633525  0.5419  0.17532 0.757
## se19  0.2018  0.226587  0.7924  0.05158 0.723
## se20  0.2112 -0.036226  0.1506  0.22893 0.121
## se21  0.3701 -0.039473  0.1051  0.12883 0.166
## se22  0.5020  0.739450  0.0687  0.03861 0.805
## se23  0.3035  0.802595  0.0703 -0.02946 0.742
## se25  0.0801 -0.120160  0.6117  0.40569 0.560
## se26  0.1476  0.388721 -0.0883  0.01746 0.181
## se49  0.2724 -0.238326 -0.1937 -0.19163 0.205
## se57 -0.0119  0.061169  0.2647  0.33980 0.189
## ss16  0.4249 -0.026833  0.1872  0.08046 0.223
## ss35  0.3895 -0.338420  0.2439  0.10710 0.337
## ss39  0.4767  0.120387  0.5346  0.15920 0.553
## ss53  0.5767 -0.125651 -0.0995  0.19887 0.398
## ss60  0.4371 -0.148388  0.1551  0.21729 0.284
## ss65  0.7634 -0.141501  0.1978  0.09714 0.651
## ss67  0.8722 -0.251411  0.0508  0.07840 0.833
## ss68  0.8503 -0.006488 -0.1334  0.13959 0.760
## ss69  0.6432 -0.054108  0.4874 -0.13960 0.674
## ss70  0.6064 -0.000575 -0.0617  0.22361 0.422
## ss71  0.3365 -0.269381  0.3538  0.19321 0.348
## ss72  0.4001 -0.059012 -0.4979 -0.02638 0.412
## a1    0.8574  0.156932  0.0370  0.09373 0.770
## a2    0.8184  0.175385  0.1075  0.13208 0.730
## a3    0.8593  0.016077 -0.2438  0.19056 0.834
## a4    0.6702  0.206480 -0.1050  0.07697 0.509
## a5    0.7010  0.236066  0.1530  0.28266 0.650
## a6    0.7583  0.079135  0.1408  0.16344 0.628
## 
## Rotated SS loadings:  21.81 4.303 4.539 3.571 
## 
## Factor correlations: 
## 
##    F1 F2 F3 F4
## F1  1  0  0  0
## F2  0  1  0  0
## F3  0  0  1  0
## F4  0  0  0  1
f4.iecv.f20 <- sum.multi4.f20$rotF[,1]^2/sum.multi4.f20$h2
f4.summary <- as.data.frame(cbind(sum.multi4.f20$rotF[,1], sum.multi4.f20$h2,
                                  f4.iecv.f20))
names(f4.summary) <- c("Gen Factor", "Communality", "IECV")
round(f4.summary,2)
##      Gen Factor Communality IECV
## d05        0.68        0.70 0.66
## d06        0.45        0.75 0.27
## sb09       0.80        0.84 0.76
## sb11       0.80        0.75 0.85
## sb14       0.69        0.71 0.68
## sb15       0.69        0.57 0.83
## sb18       0.80        0.81 0.79
## sb21       0.76        0.75 0.77
## sb26       0.23        0.19 0.27
## sb27       0.77        0.61 0.97
## sb28       0.74        0.84 0.65
## sb30       0.27        0.59 0.12
## sb32       0.93        0.89 0.97
## sb34       0.80        0.86 0.74
## sb35       0.78        0.71 0.86
## sb36       0.81        0.76 0.88
## sb37       0.77        0.66 0.90
## sb38       0.90        0.84 0.96
## sb39       0.79        0.81 0.78
## sb40       0.73        0.62 0.86
## sb41       0.76        0.92 0.63
## sb42       0.67        0.95 0.47
## sb43       0.76        0.94 0.61
## sb44       0.74        0.92 0.60
## se09       0.37        0.20 0.67
## se10       0.40        0.76 0.21
## se12       0.31        0.81 0.12
## se18       0.18        0.76 0.04
## se19       0.20        0.72 0.06
## se20       0.21        0.12 0.37
## se21       0.37        0.17 0.82
## se22       0.50        0.80 0.31
## se23       0.30        0.74 0.12
## se25       0.08        0.56 0.01
## se26       0.15        0.18 0.12
## se49       0.27        0.21 0.36
## se57      -0.01        0.19 0.00
## ss16       0.42        0.22 0.81
## ss35       0.39        0.34 0.45
## ss39       0.48        0.55 0.41
## ss53       0.58        0.40 0.84
## ss60       0.44        0.28 0.67
## ss65       0.76        0.65 0.89
## ss67       0.87        0.83 0.91
## ss68       0.85        0.76 0.95
## ss69       0.64        0.67 0.61
## ss70       0.61        0.42 0.87
## ss71       0.34        0.35 0.33
## ss72       0.40        0.41 0.39
## a1         0.86        0.77 0.95
## a2         0.82        0.73 0.92
## a3         0.86        0.83 0.88
## a4         0.67        0.51 0.88
## a5         0.70        0.65 0.76
## a6         0.76        0.63 0.92

target rotation, 3 factors

target3.f20 <- matrix(data = c(rep(1,24),rep(0,13),rep(0,18),
                               rep(0,24),rep(1,13),rep(0,18),
                               rep(0,24),rep(0,13),rep(1,18)), ncol = 3)

coef.target3.3pl.f20 <- coef(results.multi3.3pl.f20, simplify = T, rotate = 'targetT',
                        Target = target3.f20)
## 
## Rotation:  targetT
coef.target3.3pl.f20
## $items
##          a1     a2     a3      d     g u
## d05   2.055  1.560  0.432 -0.943 0.074 1
## d06   1.761  1.609 -0.557 -0.147 0.025 1
## sb09  3.015 -0.320  0.853  3.183 0.039 1
## sb11  1.851  0.322  1.826  2.135 0.039 1
## sb14  0.930  0.249  1.079  1.607 0.078 1
## sb15  1.875 -0.246  0.455 -0.323 0.045 1
## sb18  1.535  0.523  2.471  1.546 0.213 1
## sb21  1.524  1.263  2.114  2.493 0.102 1
## sb26  0.340 -0.565  0.432 -0.194 0.073 1
## sb27  1.573  0.504  1.287  1.375 0.081 1
## sb28  2.925  0.073  1.465 -0.839 0.196 1
## sb30  1.121 -1.242  0.507 -1.716 0.193 1
## sb32  3.857  0.487  2.365 -1.307 0.099 1
## sb34  1.636  1.798  3.304  1.976 0.255 1
## sb35  2.701  0.307  0.419  1.211 0.092 1
## sb36  3.294  0.397  0.372  2.281 0.052 1
## sb37  2.262  0.693  0.781  1.471 0.198 1
## sb38  3.267  0.313  1.435 -1.602 0.190 1
## sb39  1.515  1.080  1.462  0.931 0.349 1
## sb40  1.414  0.775  1.030  0.967 0.088 1
## sb41  3.321 -2.190  4.803  0.130 0.040 1
## sb42  2.760 -3.234  5.284  0.665 0.016 1
## sb43  3.501 -2.613  4.767  0.810 0.145 1
## sb44  2.912 -2.342  3.914  1.192 0.074 1
## se09  0.747  0.157  0.206 -0.036 0.227 1
## se10  0.056  1.630  2.769 -4.282 0.056 1
## se12 -0.622  2.258  2.916 -3.242 0.038 1
## se18 -0.243  2.287  1.419 -4.009 0.099 1
## se19 -0.183  1.983  1.204 -3.665 0.087 1
## se20  0.448  0.492 -0.084  0.207 0.092 1
## se21  0.677  0.269  0.163  0.199 0.147 1
## se22  0.410  2.152  2.525 -4.385 0.077 1
## se23 -0.024  1.959  2.497 -4.842 0.113 1
## se25 -0.063  1.301  0.020 -2.307 0.058 1
## se26 -0.057  0.357  0.541 -0.869 0.052 1
## se49  0.606 -0.621  0.196 -1.118 0.033 1
## se57 -0.018  0.592 -0.085 -1.838 0.045 1
## ss16  0.469  0.542  0.641 -0.275 0.054 1
## ss35  0.763  0.345  0.081 -0.738 0.030 1
## ss39  0.796  1.420  0.336 -3.285 0.280 1
## ss53  1.499  0.267  0.189  0.118 0.240 1
## ss60  0.709  0.563  0.300 -0.212 0.119 1
## ss65  1.977  0.673  0.736  0.548 0.280 1
## ss67  3.086  0.048  0.768 -0.211 0.592 1
## ss68  2.377  0.617  1.129 -2.609 0.113 1
## ss69  0.351  0.625  1.399 -1.119 0.167 1
## ss70  1.284  0.460  0.404 -0.439 0.075 1
## ss71  0.646  0.503 -0.069 -0.547 0.024 1
## ss72  1.796 -0.541  0.588 -3.398 0.149 1
## a1    2.424  0.932  1.558  1.418 0.011 1
## a2    2.244  1.150  1.466  1.622 0.050 1
## a3    3.136  0.544  1.245  0.131 0.195 1
## a4    1.407  0.409  0.939 -1.043 0.102 1
## a5    1.594  1.332  0.897  0.817 0.111 1
## a6    1.612  1.025  0.874  1.199 0.297 1
## 
## $means
## F1 F2 F3 
##  0  0  0 
## 
## $cov
##    F1 F2 F3
## F1  1  0  0
## F2  0  1  0
## F3  0  0  1

target rotation, 4 factors

target4.f20 <- matrix(data = c(rep(1,55),
                               rep(1,24),rep(0,13),rep(0,18),
                               rep(0,24),rep(1,13),rep(0,18),
                               rep(0,24),rep(0,13),rep(1,18)), ncol = 4)

coef.target4.3pl.f20 <- coef(results.multi4.3pl.f20, simplify = T, rotate = 'targetT',
                            Target = target4.f20)
## 
## Rotation:  targetT
coef.target4.3pl.f20
## $items
##          a1     a2     a3     a4      d     g u
## d05   2.295 -0.245  0.167  1.214 -0.919 0.062 1
## d06   1.978 -1.144 -0.640  1.728 -0.219 0.026 1
## sb09  2.291  2.459 -1.342  1.559  3.565 0.091 1
## sb11  2.070  1.863  0.993  0.399  2.296 0.042 1
## sb14  1.347  1.800  1.233  0.745  1.435 0.328 1
## sb15  1.342  1.080 -0.683  0.596 -0.320 0.043 1
## sb18  2.022  2.469  1.165  1.053  1.791 0.195 1
## sb21  1.663  1.605  0.597  1.702  2.457 0.124 1
## sb26  0.187  0.713 -0.285 -0.262 -0.227 0.080 1
## sb27  1.817  0.915  0.386  0.389  1.291 0.105 1
## sb28  3.445  0.912 -1.626 -0.554 -0.051 0.063 1
## sb30  0.872  0.482 -1.496 -0.963 -1.071 0.058 1
## sb32  4.381  1.861 -0.301  0.593 -1.446 0.095 1
## sb34  2.192  2.541  0.846  2.457  1.565 0.317 1
## sb35  2.092  0.986 -0.728  1.178  1.033 0.122 1
## sb36  2.343  1.062 -0.544  1.481  2.001 0.078 1
## sb37  1.780  0.940  0.102  1.220  1.569 0.148 1
## sb38  2.987  2.097 -0.395  1.354 -1.658 0.182 1
## sb39  2.073  1.684  0.620  2.123  0.998 0.372 1
## sb40  1.547  0.849 -0.168  1.231  0.968 0.106 1
## sb41  3.556  4.404  0.115 -1.786  0.113 0.031 1
## sb42  3.214  5.741  0.101 -2.605  0.577 0.022 1
## sb43  3.698  5.462  0.029 -1.782  0.764 0.151 1
## sb44  3.136  4.381  0.083 -1.681  1.149 0.087 1
## se09  0.827 -0.034 -0.208  0.073  0.258 0.115 1
## se10  2.133 -0.274  1.487 -1.480 -4.041 0.049 1
## se12  2.018 -0.557  2.522 -1.244 -3.179 0.043 1
## se18  0.946 -0.770  2.701  0.486 -3.619 0.049 1
## se19  0.157  0.306  2.328  1.417 -3.805 0.067 1
## se20  0.342 -0.060  0.085  0.521  0.202 0.088 1
## se21  0.573  0.208  0.063  0.450  0.199 0.144 1
## se22  2.625 -0.343  2.083 -0.780 -4.582 0.078 1
## se23  1.728 -0.527  1.984 -1.065 -3.766 0.066 1
## se25 -0.080 -0.300  0.746  1.740 -2.596 0.039 1
## se26  0.550 -0.226  0.361 -0.395 -0.953 0.058 1
## se49  0.282  0.651 -0.489 -0.075 -1.145 0.045 1
## se57  0.061 -0.462  0.319  0.599 -2.097 0.065 1
## ss16  0.623  0.352  0.217  0.521 -0.266 0.047 1
## ss35  0.363  0.596 -0.121  0.986 -0.869 0.033 1
## ss39  0.878  0.367  1.141  1.173 -3.236 0.268 1
## ss53  1.157  0.346 -0.396  0.545  0.247 0.195 1
## ss60  0.676  0.262 -0.034  0.790 -0.318 0.144 1
## ss65  1.647  1.094  0.139  1.218  0.503 0.277 1
## ss67  2.746  1.941 -0.521  1.683 -0.340 0.595 1
## ss68  2.767  0.962 -0.382  0.682 -2.972 0.120 1
## ss69  1.059  1.532  1.069  1.169 -2.008 0.231 1
## ss70  1.329  0.240 -0.167  0.509 -0.462 0.076 1
## ss71  0.309  0.389  0.106  1.136 -0.696 0.031 1
## ss72  0.996  0.334 -0.861 -0.431 -2.325 0.097 1
## a1    2.841  0.977  0.463  0.678  1.420 0.009 1
## a2    2.503  0.759  0.609  0.775  1.587 0.033 1
## a3    3.580  0.898 -0.773  0.620  0.216 0.179 1
## a4    1.683  0.376  0.144  0.066 -0.943 0.076 1
## a5    2.060  0.128  0.657  0.837  0.805 0.108 1
## a6    1.894  0.629  0.389  0.866  1.064 0.333 1
## 
## $means
## F1 F2 F3 F4 
##  0  0  0  0 
## 
## $cov
##    F1 F2 F3 F4
## F1  1  0  0  0
## F2  0  1  0  0
## F3  0  0  1  0
## F4  0  0  0  1

make plots

# 2 factors
f2.summary <- f2.summary[order(f2.summary$IECV),]
f2.summary$color <- ifelse(f2.summary$IECV < .5, "green3",
                           ifelse(f2.summary$IECV > .5 & f2.summary$IECV < .8,
                                  "gold2", "red"))
f2.summary$pch <- ifelse(f2.summary$Communality < .33, 1, 16)
plot(f2.summary$Communality, f2.summary$IECV,
     xlab = "Communality", ylab = "IECV", main = "2 Dimensions",
     col = f2.summary$color, pch = f2.summary$pch)
text(-.03+f2.summary$Communality, f2.summary$IECV,
     labels = row.names(f2.summary))

plot(1-f2.summary$Communality, f2.summary$IECV,
     xlab = "Uniqueness", ylab = "IECV", main = "2 Dimensions")

plot(f2.summary$IECV, xlab = "Item", ylab = "IECV", xaxt = "n")
axis(1, at = seq(1,55,1), las = 2, labels = row.names(f2.summary))

# 3 factors
f3.summary <- f3.summary[order(f3.summary$IECV),]
f3.summary$color <- ifelse(f3.summary$IECV < .5, "green3",
                           ifelse(f3.summary$IECV > .5 & f3.summary$IECV < .8,
                                  "gold2", "red"))
f3.summary$pch <- ifelse(f3.summary$Communality < .33, 1, 16)
plot(f3.summary$Communality, f3.summary$IECV,
     xlab = "Communality", ylab = "IECV", main = "3 Dimensions",
     col = f3.summary$color, pch = f3.summary$pch)
text(-.03+f3.summary$Communality, f3.summary$IECV,
     labels = row.names(f3.summary))

plot(1-f3.summary$Communality, f3.summary$IECV,
     xlab = "Uniqueness", ylab = "IECV", main = "3 Dimensions")

plot(f3.summary$IECV, xlab = "Item", ylab = "IECV", xaxt = "n")
axis(1, at = seq(1,55,1), las = 2, labels = row.names(f3.summary))

# 4 factors
f4.summary <- f4.summary[order(f4.summary$IECV),]
f4.summary$color <- ifelse(f4.summary$IECV < .5, "green3",
                           ifelse(f4.summary$IECV > .5 & f4.summary$IECV < .8,
                                  "gold2", "red"))
f4.summary$pch <- ifelse(f4.summary$Communality < .33, 1, 16)
plot(f4.summary$Communality, f4.summary$IECV,
     xlab = "Communality", ylab = "IECV", main = "4 Dimensions",
     col = f4.summary$color, pch = f4.summary$pch)
text(-.03+f4.summary$Communality, f4.summary$IECV,
     labels = row.names(f4.summary))

plot(1-f4.summary$Communality, f4.summary$IECV,
     xlab = "Uniqueness", ylab = "IECV", main = "4 Dimensions")

plot(f4.summary$IECV, xlab = "Item", ylab = "IECV", xaxt = "n")
axis(1, at = seq(1,55,1), las = 2, labels = row.names(f4.summary))