Setup

library(pacman); p_load(psych, lavaan, sjmisc)

CONGO <- function(F1, F2) {
  PHI = sum(F1*F2) / sqrt(sum(F1^2)*sum(F2^2))
  return(PHI)}

CRITR <- function(n, alpha = .05) {
  df <- n - 2; CRITT <- qt(alpha/2, df, lower.tail = F)
  CRITR <- sqrt((CRITT^2)/((CRITT^2) + df ))
  return(CRITR)}

ZREG <- function(B1, B2, SEB1, SEB2) {
  Z = (B1-B2)/sqrt((SEB1)^2 + (SEB2)^2)
  return(Z)}

FITM <- c("chisq", "df", "nPar", "cfi", "rmsea", "rmsea.ci.lower", "rmsea.ci.upper", "srmr") #No AIC or BIC, unfortunately, because the estimator is DWLS due to the dichotomous items.

Analysis

Data from Bates & Gignac (2022).

MCV for Curiosity

First analysis: the method of correlated vectors applied to this dataset.

data$incentive <- rec(data$sample, rec = "1 = 0; 2, 3 = 1") #Collapse
data$incentive2 <- rec(data$sample, rec = "1 = 0; 2 = 1; 3 = 2") #Full

tests = c("PFA1_r", "PFA2_r", "PFA3_r", "PFA4_r", "PFA5_r", "PFA6_r", "PFA7_r", "PFA8_r", "PFA9_r", "PFA10_r", "PFB1_r", "PFB2_r", "PFB3_r", "PFB4_r", "PFB5_r", "PFB6_r", "PFB7_r", "PFB8_r", "PFB9_r", "PFB10_r")
vars  = c("effort_avg_time1", "effort_avg_time2", tests)

dataIO <- subset(data, incentive == 1)

round(cor(data[vars]), 3)
##                  effort_avg_time1 effort_avg_time2 PFA1_r PFA2_r PFA3_r PFA4_r
## effort_avg_time1            1.000            0.752  0.046  0.115  0.102  0.083
## effort_avg_time2            0.752            1.000  0.050  0.124  0.075  0.131
## PFA1_r                      0.046            0.050  1.000  0.256  0.147  0.155
## PFA2_r                      0.115            0.124  0.256  1.000  0.258  0.290
## PFA3_r                      0.102            0.075  0.147  0.258  1.000  0.143
## PFA4_r                      0.083            0.131  0.155  0.290  0.143  1.000
## PFA5_r                      0.134            0.132  0.228  0.347  0.219  0.355
## PFA6_r                      0.162            0.127  0.200  0.262  0.251  0.256
## PFA7_r                      0.089            0.076  0.093  0.207  0.175  0.211
## PFA8_r                      0.154            0.135  0.127  0.179  0.121  0.187
## PFA9_r                      0.074            0.042  0.020  0.077  0.126  0.070
## PFA10_r                     0.140            0.068  0.075  0.107  0.055  0.055
## PFB1_r                      0.026            0.029  0.072  0.116  0.115  0.073
## PFB2_r                      0.052            0.083  0.197  0.332  0.214  0.288
## PFB3_r                      0.051            0.106  0.246  0.268  0.175  0.245
## PFB4_r                      0.071            0.111  0.165  0.260  0.157  0.295
## PFB5_r                     -0.018            0.002  0.070  0.099  0.085  0.076
## PFB6_r                      0.141            0.194  0.206  0.336  0.308  0.265
## PFB7_r                      0.123            0.153  0.174  0.308  0.347  0.236
## PFB8_r                      0.097            0.061  0.052  0.089  0.120  0.113
## PFB9_r                      0.065            0.103  0.100  0.207  0.180  0.226
## PFB10_r                     0.107            0.058  0.061  0.080  0.108  0.079
##                  PFA5_r PFA6_r PFA7_r PFA8_r PFA9_r PFA10_r PFB1_r PFB2_r
## effort_avg_time1  0.134  0.162  0.089  0.154  0.074   0.140  0.026  0.052
## effort_avg_time2  0.132  0.127  0.076  0.135  0.042   0.068  0.029  0.083
## PFA1_r            0.228  0.200  0.093  0.127  0.020   0.075  0.072  0.197
## PFA2_r            0.347  0.262  0.207  0.179  0.077   0.107  0.116  0.332
## PFA3_r            0.219  0.251  0.175  0.121  0.126   0.055  0.115  0.214
## PFA4_r            0.355  0.256  0.211  0.187  0.070   0.055  0.073  0.288
## PFA5_r            1.000  0.386  0.327  0.281  0.097   0.132  0.065  0.355
## PFA6_r            0.386  1.000  0.235  0.315  0.094   0.184  0.095  0.245
## PFA7_r            0.327  0.235  1.000  0.330  0.189   0.193  0.026  0.207
## PFA8_r            0.281  0.315  0.330  1.000  0.192   0.376  0.127  0.205
## PFA9_r            0.097  0.094  0.189  0.192  1.000   0.269  0.021  0.056
## PFA10_r           0.132  0.184  0.193  0.376  0.269   1.000  0.034  0.107
## PFB1_r            0.065  0.095  0.026  0.127  0.021   0.034  1.000  0.123
## PFB2_r            0.355  0.245  0.207  0.205  0.056   0.107  0.123  1.000
## PFB3_r            0.263  0.184  0.122  0.128  0.058   0.074  0.201  0.439
## PFB4_r            0.280  0.237  0.190  0.212  0.049   0.115  0.121  0.426
## PFB5_r            0.074  0.030  0.088  0.069  0.053   0.125  0.051  0.081
## PFB6_r            0.326  0.282  0.215  0.204  0.073   0.113  0.108  0.414
## PFB7_r            0.291  0.280  0.175  0.179  0.132   0.134  0.100  0.275
## PFB8_r            0.151  0.107  0.209  0.152  0.185   0.129  0.004  0.090
## PFB9_r            0.247  0.252  0.220  0.272  0.122   0.182  0.061  0.203
## PFB10_r           0.118  0.084  0.171  0.179  0.279   0.165  0.022  0.065
##                  PFB3_r PFB4_r PFB5_r PFB6_r PFB7_r PFB8_r PFB9_r PFB10_r
## effort_avg_time1  0.051  0.071 -0.018  0.141  0.123  0.097  0.065   0.107
## effort_avg_time2  0.106  0.111  0.002  0.194  0.153  0.061  0.103   0.058
## PFA1_r            0.246  0.165  0.070  0.206  0.174  0.052  0.100   0.061
## PFA2_r            0.268  0.260  0.099  0.336  0.308  0.089  0.207   0.080
## PFA3_r            0.175  0.157  0.085  0.308  0.347  0.120  0.180   0.108
## PFA4_r            0.245  0.295  0.076  0.265  0.236  0.113  0.226   0.079
## PFA5_r            0.263  0.280  0.074  0.326  0.291  0.151  0.247   0.118
## PFA6_r            0.184  0.237  0.030  0.282  0.280  0.107  0.252   0.084
## PFA7_r            0.122  0.190  0.088  0.215  0.175  0.209  0.220   0.171
## PFA8_r            0.128  0.212  0.069  0.204  0.179  0.152  0.272   0.179
## PFA9_r            0.058  0.049  0.053  0.073  0.132  0.185  0.122   0.279
## PFA10_r           0.074  0.115  0.125  0.113  0.134  0.129  0.182   0.165
## PFB1_r            0.201  0.121  0.051  0.108  0.100  0.004  0.061   0.022
## PFB2_r            0.439  0.426  0.081  0.414  0.275  0.090  0.203   0.065
## PFB3_r            1.000  0.328  0.135  0.362  0.216  0.014  0.155   0.026
## PFB4_r            0.328  1.000  0.094  0.368  0.264  0.081  0.204   0.065
## PFB5_r            0.135  0.094  1.000  0.113  0.170  0.048  0.065   0.072
## PFB6_r            0.362  0.368  0.113  1.000  0.412  0.097  0.274   0.094
## PFB7_r            0.216  0.264  0.170  0.412  1.000  0.143  0.272   0.114
## PFB8_r            0.014  0.081  0.048  0.097  0.143  1.000  0.099   0.229
## PFB9_r            0.155  0.204  0.065  0.274  0.272  0.099  1.000   0.143
## PFB10_r           0.026  0.065  0.072  0.094  0.114  0.229  0.143   1.000
cor(data$incentive, data[tests])
##           PFA1_r      PFA2_r      PFA3_r      PFA4_r      PFA5_r      PFA6_r
## [1,] -0.06146535 -0.03258912 0.001895143 -0.08841165 -0.05750572 -0.05037464
##           PFA7_r      PFA8_r        PFA9_r     PFA10_r      PFB1_r      PFB2_r
## [1,] -0.03387991 -0.06791671 -0.0005932086 -0.01815887 -0.04810072 -0.00529388
##           PFB3_r     PFB4_r      PFB5_r       PFB6_r      PFB7_r   PFB8_r
## [1,] -0.04827864 -0.0193202 -0.03983954 -0.004013605 -0.04671781 0.015179
##           PFB9_r     PFB10_r
## [1,] -0.08899386 0.003029902
cor(data$incentive2, data[tests], method = "spearman")
##           PFA1_r      PFA2_r      PFA3_r      PFA4_r      PFA5_r      PFA6_r
## [1,] -0.03700627 -0.03279588 -0.01651275 -0.07141417 -0.05051213 -0.04135374
##           PFA7_r      PFA8_r     PFA9_r      PFA10_r      PFB1_r      PFB2_r
## [1,] -0.02326079 -0.05518952 0.01438373 -0.007213661 -0.05595623 0.002212548
##          PFB3_r      PFB4_r      PFB5_r        PFB6_r      PFB7_r     PFB8_r
## [1,] -0.0261309 -0.01808831 -0.02169745 -0.0006196901 -0.04525231 0.02676853
##           PFB9_r    PFB10_r
## [1,] -0.08979483 0.02407979
cor(data$PFA_total, data$PFB_total)
## [1] 0.6461932
print(pca(data[tests], nfactors = 1), digits = 3)
## Principal Components Analysis
## Call: principal(r = r, nfactors = nfactors, residuals = residuals, 
##     rotate = rotate, n.obs = n.obs, covar = covar, scores = scores, 
##     missing = missing, impute = impute, oblique.scores = oblique.scores, 
##     method = method, use = use, cor = cor, correct = 0.5, weight = NULL)
## Standardized loadings (pattern matrix) based upon correlation matrix
##           PC1     h2    u2 com
## PFA1_r  0.386 0.1489 0.851   1
## PFA2_r  0.577 0.3335 0.667   1
## PFA3_r  0.465 0.2165 0.784   1
## PFA4_r  0.523 0.2736 0.726   1
## PFA5_r  0.637 0.4058 0.594   1
## PFA6_r  0.562 0.3162 0.684   1
## PFA7_r  0.487 0.2371 0.763   1
## PFA8_r  0.506 0.2565 0.743   1
## PFA9_r  0.267 0.0715 0.928   1
## PFA10_r 0.338 0.1144 0.886   1
## PFB1_r  0.223 0.0499 0.950   1
## PFB2_r  0.619 0.3834 0.617   1
## PFB3_r  0.522 0.2725 0.728   1
## PFB4_r  0.563 0.3166 0.683   1
## PFB5_r  0.218 0.0476 0.952   1
## PFB6_r  0.646 0.4167 0.583   1
## PFB7_r  0.583 0.3394 0.661   1
## PFB8_r  0.276 0.0762 0.924   1
## PFB9_r  0.487 0.2376 0.762   1
## PFB10_r 0.267 0.0714 0.929   1
## 
##                  PC1
## SS loadings    4.585
## Proportion Var 0.229
## 
## Mean item complexity =  1
## Test of the hypothesis that 1 component is sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.07 
##  with the empirical chi square  2503.909  with prob <  0 
## 
## Fit based upon off diagonal values = 0.877
print(pca(data[tests[1:10]], nfactors = 1), digits = 3)
## Principal Components Analysis
## Call: principal(r = r, nfactors = nfactors, residuals = residuals, 
##     rotate = rotate, n.obs = n.obs, covar = covar, scores = scores, 
##     missing = missing, impute = impute, oblique.scores = oblique.scores, 
##     method = method, use = use, cor = cor, correct = 0.5, weight = NULL)
## Standardized loadings (pattern matrix) based upon correlation matrix
##           PC1    h2    u2 com
## PFA1_r  0.405 0.164 0.836   1
## PFA2_r  0.582 0.339 0.661   1
## PFA3_r  0.451 0.204 0.796   1
## PFA4_r  0.532 0.283 0.717   1
## PFA5_r  0.688 0.473 0.527   1
## PFA6_r  0.638 0.408 0.592   1
## PFA7_r  0.576 0.332 0.668   1
## PFA8_r  0.602 0.363 0.637   1
## PFA9_r  0.330 0.109 0.891   1
## PFA10_r 0.422 0.178 0.822   1
## 
##                  PC1
## SS loadings    2.852
## Proportion Var 0.285
## 
## Mean item complexity =  1
## Test of the hypothesis that 1 component is sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.1 
##  with the empirical chi square  1210.325  with prob <  1.45e-231 
## 
## Fit based upon off diagonal values = 0.79
print(pca(data[tests[11:20]], nfactors = 1), digits = 3)
## Principal Components Analysis
## Call: principal(r = r, nfactors = nfactors, residuals = residuals, 
##     rotate = rotate, n.obs = n.obs, covar = covar, scores = scores, 
##     missing = missing, impute = impute, oblique.scores = oblique.scores, 
##     method = method, use = use, cor = cor, correct = 0.5, weight = NULL)
## Standardized loadings (pattern matrix) based upon correlation matrix
##           PC1     h2    u2 com
## PFB1_r  0.280 0.0783 0.922   1
## PFB2_r  0.705 0.4976 0.502   1
## PFB3_r  0.635 0.4038 0.596   1
## PFB4_r  0.655 0.4287 0.571   1
## PFB5_r  0.268 0.0720 0.928   1
## PFB6_r  0.726 0.5277 0.472   1
## PFB7_r  0.618 0.3819 0.618   1
## PFB8_r  0.230 0.0531 0.947   1
## PFB9_r  0.482 0.2321 0.768   1
## PFB10_r 0.226 0.0511 0.949   1
## 
##                  PC1
## SS loadings    2.726
## Proportion Var 0.273
## 
## Mean item complexity =  1
## Test of the hypothesis that 1 component is sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.088 
##  with the empirical chi square  935.703  with prob <  9e-174 
## 
## Fit based upon off diagonal values = 0.816
CONGO(c(.386, .577, .465, .523, .637, .562, .487, .506, .267, .338, .223, .619, .522, .563, .218, .646, .583, .276, .487, .267), c(.405, .582, .451, .532, .688, .638, .576, .602, .330, .422, .280, .705, .635, .655, .268, .726, .718, .230, .482, .226))
## [1] 0.9962547
MCVData <- data.frame("Effort1"     = c(.046, .115, .102, .083, .134, .162, .089, .154, .074, .140, .026, .052, .051, .071, -.018, .141, .123, .097, .065, .107),
                      "Effort2"     = c(.050, .124, .075, .131, .132, .127, .076, .135, .042, .068, .029, .083, .106, .111, .002, .194, .153, .061, .103, .058),
                      "Importance1" = c(-.062, .095, .118, .060, .099, .080, .058, .065, .015, .022, .061, .043, .043, .054, -.013, .098, .099, .036, .044, .041),
                      "Importance2" = c(-.018, .063, .117, .055, .079, .052, .035, .052, .021, .006, .068, .040, .077, .065, .025, .142, .136, .058, .023, .056),
                      "Incentive1"  = c(-.061, -.033, .002, -.088, -.058, -.050, -.034, -.068, -.001, -.018, -.048, -.005, -.048, -.019, -.040, -.004, -.047, .015, -.089, .003), #comes from vector correlations, point-biserial
                      "Incentive2"  = c(-.037, -.033, -.017, -.071, -.051, -.041, -.023, -.055, .014, -.007, -.056, .002, -.026, -.018, -.022, -.001, -.045, .027, -.090, .024), #same as above but with differences of degree, so it's a Spearman correlation
                      "gPCA"        = c(.386, .577, .465, .523, .637, .562, .487, .506, .267, .338, .223, .619, .522, .563, .218, .646, .583, .276, .487, .267))

"Full"
## [1] "Full"
round(cor(MCVData, method = "spearman"), 3)
##             Effort1 Effort2 Importance1 Importance2 Incentive1 Incentive2
## Effort1       1.000   0.641       0.557       0.276      0.101      0.032
## Effort2       0.641   1.000       0.716       0.515     -0.326     -0.370
## Importance1   0.557   0.716       1.000       0.751     -0.143     -0.390
## Importance2   0.276   0.515       0.751       1.000      0.179     -0.040
## Incentive1    0.101  -0.326      -0.143       0.179      1.000      0.933
## Incentive2    0.032  -0.370      -0.390      -0.040      0.933      1.000
## gPCA          0.439   0.883       0.629       0.484     -0.190     -0.204
##               gPCA
## Effort1      0.439
## Effort2      0.883
## Importance1  0.629
## Importance2  0.484
## Incentive1  -0.190
## Incentive2  -0.204
## gPCA         1.000
"Time 2"
## [1] "Time 2"
round(cor(MCVData[11:20, ], method = "spearman"), 3)
##             Effort1 Effort2 Importance1 Importance2 Incentive1 Incentive2  gPCA
## Effort1       1.000   0.661       0.438       0.467      0.511      0.370 0.576
## Effort2       0.661   1.000       0.699       0.624     -0.036     -0.091 0.879
## Importance1   0.438   0.699       1.000       0.669     -0.338     -0.480 0.584
## Importance2   0.467   0.624       0.669       1.000      0.061     -0.030 0.479
## Incentive1    0.511  -0.036      -0.338       0.061      1.000      0.967 0.140
## Incentive2    0.370  -0.091      -0.480      -0.030      0.967      1.000 0.127
## gPCA          0.576   0.879       0.584       0.479      0.140      0.127 1.000
"Full"
## [1] "Full"
CONGO(MCVData$Effort1,     MCVData$g)
## [1] 0.918309
CONGO(MCVData$Effort2,     MCVData$g)
## [1] 0.9702032
CONGO(MCVData$Importance1, MCVData$g)
## [1] 0.859707
CONGO(MCVData$Importance2, MCVData$g)
## [1] 0.8672869
CONGO(MCVData$Incentive1,  MCVData$g)
## [1] -0.7719833
CONGO(MCVData$Incentive2,  MCVData$g)
## [1] -0.7009912
"Time 2"
## [1] "Time 2"
CONGO(MCVData$Effort1[11:20],     MCVData$g[11:20])
## [1] 0.8816419
CONGO(MCVData$Effort2[11:20],     MCVData$g[11:20])
## [1] 0.9590556
CONGO(MCVData$Importance1[11:20], MCVData$g[11:20])
## [1] 0.9137078
CONGO(MCVData$Importance2[11:20], MCVData$g[11:20])
## [1] 0.9005769
CONGO(MCVData$Incentive1[11:20],  MCVData$g[11:20])
## [1] -0.6537027
CONGO(MCVData$Incentive2[11:20],  MCVData$g[11:20])
## [1] -0.5126509

Invariance Between Groups

Second analysis - invariance between experimental timegroups, at either timepoint. I will first test whether the small and large incentive groups show measurement invariance.

FormA <- '
theta =~ PFA1_r + PFA2_r + PFA3_r + PFA4_r + PFA5_r + PFA6_r + PFA7_r + PFA8_r + PFA9_r + PFA10_r'

FormAFit <- cfa(FormA, data, std.lv = T, estimator = "DWLS")

FormAFitC <- cfa(FormA, dataIO, std.lv = T, estimator = "DWLS", group = "incentive2")
FormAFitM <- cfa(FormA, dataIO, std.lv = F, estimator = "DWLS", group = "incentive2", group.equal = "loadings")
FormAFitS <- cfa(FormA, dataIO, std.lv = F, estimator = "DWLS", group = "incentive2", group.equal = c("loadings", "intercepts"))
FormAFitR <- cfa(FormA, dataIO, std.lv = F, estimator = "DWLS", group = "incentive2", group.equal = c("loadings", "intercepts", "residuals"))
FormAFitL <- cfa(FormA, dataIO, std.lv = F, estimator = "DWLS", group = "incentive2", group.equal = c("loadings", "intercepts", "residuals", "lv.variances"))
FormAFitA <- cfa(FormA, dataIO, std.lv = F, estimator = "DWLS", group = "incentive2", group.equal = c("loadings", "intercepts", "residuals", "lv.variances", "means"))

round(cbind("Configural"       = fitMeasures(FormAFitC, FITM),
            "Metric"           = fitMeasures(FormAFitM, FITM),
            "Scalar"           = fitMeasures(FormAFitS, FITM),
            "Strict"           = fitMeasures(FormAFitR, FITM),
            "Latent Variances" = fitMeasures(FormAFitL, FITM),
            "Means"            = fitMeasures(FormAFitA, FITM)), 3)
##                Configural  Metric  Scalar  Strict Latent Variances   Means
## chisq             189.413 208.305 216.082 222.917          224.470 225.596
## df                 70.000  79.000  88.000  98.000           99.000 100.000
## npar               60.000  51.000  42.000  32.000           31.000  30.000
## cfi                 0.946   0.942   0.942   0.944            0.943   0.943
## rmsea               0.060   0.059   0.055   0.052            0.052   0.051
## rmsea.ci.lower      0.050   0.049   0.046   0.043            0.043   0.043
## rmsea.ci.upper      0.070   0.069   0.065   0.061            0.061   0.060
## srmr                0.058   0.060   0.061   0.065            0.065   0.065
pchisq(208.305 - 189.413, 79 - 70, lower.tail = F); "Metric"
## [1] 0.02612702
## [1] "Metric"
pchisq(216.082 - 208.305, 88 - 79, lower.tail = F); "Scalar"
## [1] 0.5567662
## [1] "Scalar"
pchisq(222.917 - 216.082, 98 - 88, lower.tail = F); "Strict"
## [1] 0.7409247
## [1] "Strict"
pchisq(224.470 - 222.917, 99 - 98, lower.tail = F); "Latent Variance Homogeneity"
## [1] 0.2126931
## [1] "Latent Variance Homogeneity"
pchisq(225.596 - 224.470, 100 - 99, lower.tail = F); "Mean Homogeneity"
## [1] 0.2886302
## [1] "Mean Homogeneity"
FormB<- '
theta =~ PFB1_r + PFB2_r + PFB3_r + PFB4_r + PFB5_r + PFB6_r + PFB7_r + PFB8_r + PFB9_r + PFB10_r'

FormBFit <- cfa(FormB, dataIO, std.lv = T, estimator = "DWLS")

FormBFitC <- cfa(FormB, dataIO, std.lv = T, estimator = "DWLS", group = "incentive2")
FormBFitM <- cfa(FormB, dataIO, std.lv = F, estimator = "DWLS", group = "incentive2", group.equal = "loadings")
FormBFitS <- cfa(FormB, dataIO, std.lv = F, estimator = "DWLS", group = "incentive2", group.equal = c("loadings", "intercepts"))
FormBFitR <- cfa(FormB, dataIO, std.lv = F, estimator = "DWLS", group = "incentive2", group.equal = c("loadings", "intercepts", "residuals"))
FormBFitL <- cfa(FormB, dataIO, std.lv = F, estimator = "DWLS", group = "incentive2", group.equal = c("loadings", "intercepts", "residuals", "lv.variances"))
FormBFitA <- cfa(FormB, dataIO, std.lv = F, estimator = "DWLS", group = "incentive2", group.equal = c("loadings", "intercepts", "residuals", "lv.variances", "means"))

round(cbind("Configural"       = fitMeasures(FormBFitC, FITM),
            "Metric"           = fitMeasures(FormBFitM, FITM),
            "Scalar"           = fitMeasures(FormBFitS, FITM),
            "Strict"           = fitMeasures(FormBFitR, FITM),
            "Latent Variances" = fitMeasures(FormBFitL, FITM),
            "Means"            = fitMeasures(FormBFitA, FITM)), 3)
##                Configural  Metric  Scalar  Strict Latent Variances   Means
## chisq             112.833 129.787 138.278 149.757          150.283 151.420
## df                 70.000  79.000  88.000  98.000           99.000 100.000
## npar               60.000  51.000  42.000  32.000           31.000  30.000
## cfi                 0.973   0.968   0.968   0.967            0.968   0.968
## rmsea               0.036   0.037   0.035   0.033            0.033   0.033
## rmsea.ci.lower      0.023   0.025   0.023   0.022            0.022   0.022
## rmsea.ci.upper      0.048   0.048   0.045   0.044            0.043   0.043
## srmr                0.049   0.051   0.052   0.057            0.058   0.058
pchisq(129.787 - 112.833, 79 - 70, lower.tail = F); "Metric"
## [1] 0.04944122
## [1] "Metric"
pchisq(138.278 - 129.787, 88 - 79, lower.tail = F); "Scalar"
## [1] 0.4855196
## [1] "Scalar"
pchisq(149.757 - 138.278, 98 - 88, lower.tail = F); "Strict"
## [1] 0.321436
## [1] "Strict"
pchisq(150.283 - 149.757, 99 - 98, lower.tail = F); "Latent Variance Homogeneity"
## [1] 0.4682934
## [1] "Latent Variance Homogeneity"
pchisq(151.420 - 150.283, 100 - 99, lower.tail = F); "Mean Homogeneity"
## [1] 0.2862871
## [1] "Mean Homogeneity"

Despite p just under .05 for the metric model, it is highly unlikely these groups differ. That number is very likely chance, and one that appeared due to the suitably large sample size. These groups are almost indisputably comparable. However, it is odd that in both groups, only one parameter was strongly noninvariant, and it was not the same one both times. This could have reinforced the case for chance, but there’s no telling what the items were, so there’s no telling if they were the same or different, or related, and that’s especially true since the forms were different. In both cases, the noninvariant loading was higher in the group with the smaller incentives, but in the first place, they had no difference in incentives; they only did in the second, so there should not have been an initial difference, and the second was marginal. I’m going to chalk this up to chance and combine the groups, since resampling from either group once at random using the Stata Repsample package gave me the same result of one noninvariant parameter each time, although the loadings were higher and lower rather than higher and higher for the first group when I did that.

FormAFitM <- cfa(FormA, dataIO, std.lv = T, estimator = "DWLS", group = "incentive2", group.equal = "loadings", group.partial = c("theta =~ PFA1_r"))

fitMeasures(FormAFitC, FITM)
##          chisq             df           npar            cfi          rmsea 
##        189.413         70.000         60.000          0.946          0.060 
## rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.050          0.070          0.058
fitMeasures(FormAFitM, FITM)
##          chisq             df           npar            cfi          rmsea 
##        196.777         78.000         52.000          0.946          0.057 
## rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.047          0.067          0.059
pchisq(fitMeasures(FormAFitM, "chisq") - fitMeasures(FormAFitC, "chisq"), fitMeasures(FormAFitM, "df") - fitMeasures(FormAFitC, "df"), lower.tail = F)
## chisq 
## 0.498
FormBFitM <- cfa(FormB, dataIO, std.lv = T, estimator = "DWLS", group = "incentive2", group.equal = "loadings", group.partial = c("theta =~ PFB9_r"))

fitMeasures(FormBFitC, FITM)
##          chisq             df           npar            cfi          rmsea 
##        112.833         70.000         60.000          0.973          0.036 
## rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.023          0.048          0.049
fitMeasures(FormBFitM, FITM)
##          chisq             df           npar            cfi          rmsea 
##        118.347         78.000         52.000          0.975          0.033 
## rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.020          0.045          0.050
pchisq(fitMeasures(FormBFitM, "chisq") - fitMeasures(FormBFitC, "chisq"), fitMeasures(FormBFitM, "df") - fitMeasures(FormBFitC, "df"), lower.tail = F)
## chisq 
## 0.701

Third analysis - comparing the intervention and nonintervention groups.

FormA <- '
theta =~ PFA1_r + PFA2_r + PFA3_r + PFA4_r + PFA5_r + PFA6_r + PFA7_r + PFA8_r + PFA9_r + PFA10_r'

FormAFit <- cfa(FormA, data, std.lv = T, estimator = "DWLS")

FormAFitC <- cfa(FormA, data, std.lv = T, estimator = "DWLS", group = "incentive")
FormAFitM <- cfa(FormA, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = "loadings")
FormAFitS <- cfa(FormA, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = c("loadings", "intercepts"))
FormAFitR <- cfa(FormA, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = c("loadings", "intercepts", "residuals"))
FormAFitL <- cfa(FormA, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = c("loadings", "intercepts", "residuals", "lv.variances"))
FormAFitA <- cfa(FormA, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = c("loadings", "intercepts", "residuals", "lv.variances", "means"))

round(cbind("Configural"       = fitMeasures(FormAFitC, FITM),
            "Metric"           = fitMeasures(FormAFitM, FITM),
            "Scalar"           = fitMeasures(FormAFitS, FITM),
            "Strict"           = fitMeasures(FormAFitR, FITM),
            "Latent Variances" = fitMeasures(FormAFitL, FITM),
            "Means"            = fitMeasures(FormAFitA, FITM)), 3)
##                Configural  Metric  Scalar  Strict Latent Variances   Means
## chisq             253.519 256.704 265.013 301.728          308.059 334.797
## df                 70.000  79.000  88.000  98.000           99.000 100.000
## npar               60.000  51.000  42.000  32.000           31.000  30.000
## cfi                 0.937   0.939   0.939   0.930            0.928   0.919
## rmsea               0.062   0.058   0.055   0.056            0.056   0.059
## rmsea.ci.lower      0.054   0.050   0.047   0.048            0.049   0.052
## rmsea.ci.upper      0.071   0.066   0.062   0.063            0.063   0.066
## srmr                0.056   0.056   0.057   0.065            0.066   0.068
pchisq(256.704 - 253.519, 79 - 70, lower.tail = F); "Metric"
## [1] 0.9565062
## [1] "Metric"
pchisq(265.013 - 256.704, 88 - 79, lower.tail = F); "Scalar"
## [1] 0.5033313
## [1] "Scalar"
pchisq(301.728 - 265.013, 98 - 88, lower.tail = F); "Strict"
## [1] 6.339024e-05
## [1] "Strict"
pchisq(308.059 - 301.728, 99 - 98, lower.tail = F); "Latent Variance Homogeneity"
## [1] 0.01186454
## [1] "Latent Variance Homogeneity"
pchisq(334.797 - 308.059, 100 - 99, lower.tail = F); "Mean Homogeneity"
## [1] 2.329942e-07
## [1] "Mean Homogeneity"
FormB<- '
theta =~ PFB1_r + PFB2_r + PFB3_r + PFB4_r + PFB5_r + PFB6_r + PFB7_r + PFB8_r + PFB9_r + PFB10_r'

FormBFit <- cfa(FormB, data, std.lv = T, estimator = "DWLS")

FormBFitC <- cfa(FormB, data, std.lv = T, estimator = "DWLS", group = "incentive")
FormBFitM <- cfa(FormB, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = "loadings")
FormBFitS <- cfa(FormB, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = c("loadings", "intercepts"))
FormBFitR <- cfa(FormB, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = c("loadings", "intercepts", "residuals"))
FormBFitL <- cfa(FormB, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = c("loadings", "intercepts", "residuals", "lv.variances"))
FormBFitA <- cfa(FormB, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = c("loadings", "intercepts", "residuals", "lv.variances", "means"))

round(cbind("Configural"       = fitMeasures(FormBFitC, FITM),
            "Metric"           = fitMeasures(FormBFitM, FITM),
            "Scalar"           = fitMeasures(FormBFitS, FITM),
            "Strict"           = fitMeasures(FormBFitR, FITM),
            "Latent Variances" = fitMeasures(FormBFitL, FITM),
            "Means"            = fitMeasures(FormBFitA, FITM)), 3)
##                Configural  Metric  Scalar  Strict Latent Variances   Means
## chisq             141.971 231.352 246.687 266.049          267.948 276.791
## df                 70.000  79.000  88.000  98.000           99.000 100.000
## npar               60.000  51.000  42.000  32.000           31.000  30.000
## cfi                 0.966   0.928   0.925   0.921            0.920   0.917
## rmsea               0.039   0.053   0.052   0.050            0.050   0.051
## rmsea.ci.lower      0.030   0.046   0.044   0.043            0.043   0.044
## rmsea.ci.upper      0.048   0.062   0.059   0.058            0.058   0.058
## srmr                0.046   0.059   0.060   0.075            0.075   0.076
pchisq(231.352 - 141.971, 79 - 70, lower.tail = F); "Metric"
## [1] 2.166897e-15
## [1] "Metric"
pchisq(246.687 - 231.352, 88 - 79, lower.tail = F); "Scalar"
## [1] 0.08213562
## [1] "Scalar"
pchisq(266.049 - 246.687, 98 - 88, lower.tail = F); "Strict"
## [1] 0.03589846
## [1] "Strict"
pchisq(267.948 - 266.049, 99 - 98, lower.tail = F); "Latent Variance Homogeneity"
## [1] 0.1681903
## [1] "Latent Variance Homogeneity"
pchisq(276.791 - 267.948, 100 - 99, lower.tail = F); "Mean Homogeneity"
## [1] 0.002942151
## [1] "Mean Homogeneity"
FormAFitR <- cfa(FormA, data, std.lv = F, estimator = "DWLS", group = "incentive", group.equal = c("loadings", "intercepts", "residuals"), group.partial = c("PFA8_r ~~ PFA8_r", "PFA3_r ~~ PFA3_r", "PFA4_r ~~ PFA4_r"))

fitMeasures(FormAFitS, FITM)
##          chisq             df           npar            cfi          rmsea 
##        265.013         88.000         42.000          0.939          0.055 
## rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.047          0.062          0.057
fitMeasures(FormAFitR, FITM)
##          chisq             df           npar            cfi          rmsea 
##        277.025         95.000         35.000          0.937          0.053 
## rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.046          0.061          0.063
pchisq(fitMeasures(FormAFitR, "chisq") - fitMeasures(FormAFitS, "chisq"), fitMeasures(FormAFitR, "df") - fitMeasures(FormAFitS, "df"), lower.tail = F)
## chisq 
##   0.1

Since there’s only one mean and one latent variance, the other two models do not need to be fitted.

FormBFitM <- cfa(FormB, data, std.lv = T, estimator = "DWLS", group = "incentive", group.equal = "loadings", group.partial = c("theta =~ PFB1_r", "theta =~ PFB5_r", "theta =~ PFB3_r", "theta =~ PFB7_r"))

fitMeasures(FormBFitC, FITM)
##          chisq             df           npar            cfi          rmsea 
##        141.971         70.000         60.000          0.966          0.039 
## rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.030          0.048          0.046
fitMeasures(FormBFitM, FITM)
##          chisq             df           npar            cfi          rmsea 
##        150.628         75.000         55.000          0.964          0.039 
## rmsea.ci.lower rmsea.ci.upper           srmr 
##          0.030          0.048          0.048
pchisq(fitMeasures(FormBFitM, "chisq") - fitMeasures(FormBFitC, "chisq"), fitMeasures(FormBFitM, "df") - fitMeasures(FormBFitC, "df"), lower.tail = F)
## chisq 
## 0.124

It is actually hard to make anything of these estimates, either. Apparently the incentive affected the interpretation of some of the items, but not much else. The later partial models could not be fitted due to convergence issues.

Invariance Over Time

This cannot be tested for a simple reason: different forms were used in different time points. A strategy aimed at reducing practice effects that makes sense because others have found smaller practice effects with different forms of the same tests, also makes it impossible to test for longitudinal invariance in the sense of the same instrument measuring the same factors over time. This is unfortunate, and makes it so causal inference is more complicated in this experiment, contrary to its intent. It is exactly the wrong decision because of the implied psychometric intractability of the results. Try to run the model: it is highly biased.

We can try to work through this differently, by looking at the correlation between forms, under the assumption that merely trying harder does not actually improve ability but, in fact, as Lubinski (2000) suggested some things may do, affected the unique variances. Note that the PFA_total - PFB_total correlation is 0.646.

DualGModel <- '
  g1 =~ PFA1_r + PFA2_r + PFA3_r + PFA4_r + PFA5_r + PFA6_r + PFA7_r + PFA8_r + PFA9_r + PFA10_r
  g2 =~ PFB1_r + PFB2_r + PFB3_r + PFB4_r + PFB5_r + PFB6_r + PFB7_r + PFB8_r + PFB9_r + PFB10_r'

DualGFit <- cfa(DualGModel, data, std.lv = T, estimator = "DWLS") 
DualGFitC <- cfa(DualGModel, data, std.lv = T, estimator = "DWLS", group = "incentive") #Loading identification does not work

summary(DualGFit, stand = T, fit = T); summary(DualGFitC, stand = T, fit = T)
## lavaan 0.6-9 ended normally after 107 iterations
## 
##   Estimator                                       DWLS
##   Optimization method                           NLMINB
##   Number of model parameters                        41
##                                                       
##   Number of observations                          1351
##                                                       
## Model Test User Model:
##                                                       
##   Test statistic                               687.336
##   Degrees of freedom                               169
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                              9669.945
##   Degrees of freedom                               190
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.945
##   Tucker-Lewis Index (TLI)                       0.939
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.048
##   90 Percent confidence interval - lower         0.044
##   90 Percent confidence interval - upper         0.051
##   P-value RMSEA <= 0.05                          0.846
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.056
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model        Unstructured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   g1 =~                                                                 
##     PFA1_r            0.095    0.005   20.973    0.000    0.095    0.333
##     PFA2_r            0.260    0.007   35.059    0.000    0.260    0.547
##     PFA3_r            0.217    0.007   29.263    0.000    0.217    0.434
##     PFA4_r            0.237    0.007   32.078    0.000    0.237    0.492
##     PFA5_r            0.311    0.008   40.243    0.000    0.311    0.629
##     PFA6_r            0.242    0.007   35.174    0.000    0.242    0.548
##     PFA7_r            0.193    0.006   32.130    0.000    0.193    0.440
##     PFA8_r            0.237    0.007   32.190    0.000    0.237    0.475
##     PFA9_r            0.052    0.004   14.460    0.000    0.052    0.196
##     PFA10_r           0.122    0.006   20.753    0.000    0.122    0.289
##   g2 =~                                                                 
##     PFB1_r            0.033    0.003   11.456    0.000    0.033    0.185
##     PFB2_r            0.244    0.007   34.847    0.000    0.244    0.578
##     PFB3_r            0.151    0.006   27.150    0.000    0.151    0.453
##     PFB4_r            0.217    0.007   32.030    0.000    0.217    0.523
##     PFB5_r            0.092    0.007   13.770    0.000    0.092    0.195
##     PFB6_r            0.299    0.008   38.718    0.000    0.299    0.637
##     PFB7_r            0.284    0.008   37.393    0.000    0.284    0.568
##     PFB8_r            0.077    0.005   15.927    0.000    0.077    0.220
##     PFB9_r            0.228    0.007   30.615    0.000    0.228    0.457
##     PFB10_r           0.053    0.004   14.759    0.000    0.053    0.199
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   g1 ~~                                                                 
##     g2                0.889    0.019   46.972    0.000    0.889    0.889
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .PFA1_r            0.073    0.006   11.273    0.000    0.073    0.889
##    .PFA2_r            0.159    0.006   28.608    0.000    0.159    0.701
##    .PFA3_r            0.202    0.003   61.017    0.000    0.202    0.812
##    .PFA4_r            0.176    0.005   35.465    0.000    0.176    0.758
##    .PFA5_r            0.148    0.005   28.379    0.000    0.148    0.604
##    .PFA6_r            0.136    0.007   20.767    0.000    0.136    0.700
##    .PFA7_r            0.156    0.006   25.369    0.000    0.156    0.807
##    .PFA8_r            0.193    0.004   54.168    0.000    0.193    0.774
##    .PFA9_r            0.067    0.006   10.912    0.000    0.067    0.961
##    .PFA10_r           0.164    0.006   25.997    0.000    0.164    0.917
##    .PFB1_r            0.031    0.005    6.820    0.000    0.031    0.966
##    .PFB2_r            0.118    0.007   16.789    0.000    0.118    0.666
##    .PFB3_r            0.088    0.007   12.683    0.000    0.088    0.795
##    .PFB4_r            0.125    0.007   17.911    0.000    0.125    0.727
##    .PFB5_r            0.212    0.005   46.690    0.000    0.212    0.962
##    .PFB6_r            0.131    0.006   20.543    0.000    0.131    0.594
##    .PFB7_r            0.169    0.004   39.200    0.000    0.169    0.677
##    .PFB8_r            0.115    0.007   16.823    0.000    0.115    0.951
##    .PFB9_r            0.198    0.003   58.074    0.000    0.198    0.791
##    .PFB10_r           0.068    0.006   11.039    0.000    0.068    0.961
##     g1                1.000                               1.000    1.000
##     g2                1.000                               1.000    1.000
## lavaan 0.6-9 ended normally after 113 iterations
## 
##   Estimator                                       DWLS
##   Optimization method                           NLMINB
##   Number of model parameters                       122
##                                                       
##   Number of observations per group:                   
##     0                                              400
##     1                                              951
##                                                       
## Model Test User Model:
##                                                       
##   Test statistic                               823.109
##   Degrees of freedom                               338
##   P-value (Chi-square)                           0.000
##   Test statistic for each group:
##     0                                          280.840
##     1                                          542.269
## 
## Model Test Baseline Model:
## 
##   Test statistic                              9870.366
##   Degrees of freedom                               380
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.949
##   Tucker-Lewis Index (TLI)                       0.943
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.046
##   90 Percent confidence interval - lower         0.042
##   90 Percent confidence interval - upper         0.050
##   P-value RMSEA <= 0.05                          0.944
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.056
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model        Unstructured
## 
## 
## Group 1 [0]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   g1 =~                                                                 
##     PFA1_r            0.066    0.007    9.202    0.000    0.066    0.271
##     PFA2_r            0.228    0.014   16.054    0.000    0.228    0.487
##     PFA3_r            0.197    0.014   13.762    0.000    0.197    0.393
##     PFA4_r            0.229    0.014   16.350    0.000    0.229    0.500
##     PFA5_r            0.308    0.015   20.246    0.000    0.308    0.632
##     PFA6_r            0.235    0.013   17.838    0.000    0.235    0.558
##     PFA7_r            0.190    0.012   15.790    0.000    0.190    0.421
##     PFA8_r            0.216    0.014   15.026    0.000    0.216    0.432
##     PFA9_r            0.049    0.007    7.217    0.000    0.049    0.186
##     PFA10_r           0.107    0.012    9.235    0.000    0.107    0.249
##   g2 =~                                                                 
##     PFB1_r           -0.004    0.003   -1.417    0.156   -0.004   -0.029
##     PFB2_r            0.242    0.014   17.743    0.000    0.242    0.576
##     PFB3_r            0.113    0.010   11.529    0.000    0.113    0.372
##     PFB4_r            0.187    0.013   14.759    0.000    0.187    0.461
##     PFB5_r            0.043    0.013    3.268    0.001    0.043    0.091
##     PFB6_r            0.302    0.015   20.068    0.000    0.302    0.643
##     PFB7_r            0.326    0.015   21.135    0.000    0.326    0.652
##     PFB8_r            0.065    0.009    7.172    0.000    0.065    0.192
##     PFB9_r            0.214    0.014   14.757    0.000    0.214    0.431
##     PFB10_r           0.060    0.006    9.283    0.000    0.060    0.227
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   g1 ~~                                                                 
##     g2                0.865    0.037   23.217    0.000    0.865    0.865
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .PFA1_r            0.938    0.012   77.402    0.000    0.938    3.868
##    .PFA2_r            0.677    0.023   28.967    0.000    0.677    1.448
##    .PFA3_r            0.530    0.025   21.223    0.000    0.530    1.061
##    .PFA4_r            0.700    0.023   30.528    0.000    0.700    1.526
##    .PFA5_r            0.618    0.024   25.393    0.000    0.618    1.269
##    .PFA6_r            0.770    0.021   36.567    0.000    0.770    1.827
##    .PFA7_r            0.285    0.023   12.618    0.000    0.285    0.631
##    .PFA8_r            0.527    0.025   21.116    0.000    0.527    1.055
##    .PFA9_r            0.075    0.013    5.691    0.000    0.075    0.284
##    .PFA10_r           0.245    0.022   11.385    0.000    0.245    0.569
##    .PFB1_r            0.980    0.007  139.896    0.000    0.980    6.991
##    .PFB2_r            0.772    0.021   36.827    0.000    0.772    1.840
##    .PFB3_r            0.897    0.015   59.138    0.000    0.897    2.955
##    .PFB4_r            0.792    0.020   39.057    0.000    0.792    1.952
##    .PFB5_r            0.357    0.024   14.908    0.000    0.357    0.745
##    .PFB6_r            0.675    0.023   28.802    0.000    0.675    1.439
##    .PFB7_r            0.527    0.025   21.116    0.000    0.527    1.055
##    .PFB8_r            0.133    0.017    7.811    0.000    0.133    0.390
##    .PFB9_r            0.568    0.025   22.893    0.000    0.568    1.144
##    .PFB10_r           0.075    0.013    5.691    0.000    0.075    0.284
##     g1                0.000                               0.000    0.000
##     g2                0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .PFA1_r            0.054    0.011    5.114    0.000    0.054    0.926
##    .PFA2_r            0.167    0.011   15.857    0.000    0.167    0.762
##    .PFA3_r            0.211    0.006   36.338    0.000    0.211    0.845
##    .PFA4_r            0.158    0.011   14.084    0.000    0.158    0.750
##    .PFA5_r            0.142    0.011   12.972    0.000    0.142    0.600
##    .PFA6_r            0.122    0.013    9.443    0.000    0.122    0.689
##    .PFA7_r            0.168    0.011   15.640    0.000    0.168    0.823
##    .PFA8_r            0.203    0.006   31.895    0.000    0.203    0.813
##    .PFA9_r            0.067    0.011    5.983    0.000    0.067    0.965
##    .PFA10_r           0.174    0.011   15.459    0.000    0.174    0.938
##    .PFB1_r            0.020    0.007    2.919    0.004    0.020    0.999
##    .PFB2_r            0.118    0.013    8.922    0.000    0.118    0.668
##    .PFB3_r            0.079    0.012    6.476    0.000    0.079    0.861
##    .PFB4_r            0.130    0.013   10.153    0.000    0.130    0.787
##    .PFB5_r            0.228    0.007   32.947    0.000    0.228    0.992
##    .PFB6_r            0.129    0.012   10.534    0.000    0.129    0.586
##    .PFB7_r            0.144    0.010   14.187    0.000    0.144    0.575
##    .PFB8_r            0.111    0.013    8.860    0.000    0.111    0.963
##    .PFB9_r            0.200    0.007   28.465    0.000    0.200    0.814
##    .PFB10_r           0.066    0.011    5.873    0.000    0.066    0.948
##     g1                1.000                               1.000    1.000
##     g2                1.000                               1.000    1.000
## 
## 
## Group 2 [1]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   g1 =~                                                                 
##     PFA1_r            0.105    0.006   18.851    0.000    0.105    0.349
##     PFA2_r            0.274    0.009   31.392    0.000    0.274    0.571
##     PFA3_r            0.226    0.009   26.077    0.000    0.226    0.452
##     PFA4_r            0.236    0.009   27.351    0.000    0.236    0.484
##     PFA5_r            0.310    0.009   34.597    0.000    0.310    0.624
##     PFA6_r            0.245    0.008   30.418    0.000    0.245    0.546
##     PFA7_r            0.193    0.007   27.927    0.000    0.193    0.445
##     PFA8_r            0.243    0.009   28.394    0.000    0.243    0.488
##     PFA9_r            0.053    0.004   12.512    0.000    0.053    0.200
##     PFA10_r           0.128    0.007   18.769    0.000    0.128    0.305
##   g2 =~                                                                 
##     PFB1_r            0.045    0.004   12.093    0.000    0.045    0.232
##     PFB2_r            0.247    0.008   30.336    0.000    0.247    0.583
##     PFB3_r            0.166    0.007   24.773    0.000    0.166    0.480
##     PFB4_r            0.227    0.008   28.561    0.000    0.227    0.544
##     PFB5_r            0.109    0.008   14.281    0.000    0.109    0.235
##     PFB6_r            0.300    0.009   33.342    0.000    0.300    0.638
##     PFB7_r            0.268    0.009   30.675    0.000    0.268    0.536
##     PFB8_r            0.084    0.006   14.859    0.000    0.084    0.238
##     PFB9_r            0.230    0.009   26.616    0.000    0.230    0.460
##     PFB10_r           0.050    0.004   11.897    0.000    0.050    0.189
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   g1 ~~                                                                 
##     g2                0.897    0.022   41.035    0.000    0.897    0.897
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .PFA1_r            0.899    0.010   91.964    0.000    0.899    2.983
##    .PFA2_r            0.644    0.016   41.404    0.000    0.644    1.343
##    .PFA3_r            0.532    0.016   32.860    0.000    0.532    1.066
##    .PFA4_r            0.607    0.016   38.275    0.000    0.607    1.241
##    .PFA5_r            0.555    0.016   34.428    0.000    0.555    1.117
##    .PFA6_r            0.721    0.015   49.580    0.000    0.721    1.608
##    .PFA7_r            0.252    0.014   17.904    0.000    0.252    0.581
##    .PFA8_r            0.453    0.016   28.055    0.000    0.453    0.910
##    .PFA9_r            0.075    0.009    8.753    0.000    0.075    0.284
##    .PFA10_r           0.228    0.014   16.755    0.000    0.228    0.543
##    .PFB1_r            0.961    0.006  153.158    0.000    0.961    4.968
##    .PFB2_r            0.768    0.014   56.006    0.000    0.768    1.817
##    .PFB3_r            0.862    0.011   77.097    0.000    0.862    2.501
##    .PFB4_r            0.775    0.014   57.187    0.000    0.775    1.855
##    .PFB5_r            0.317    0.015   20.970    0.000    0.317    0.680
##    .PFB6_r            0.671    0.015   43.995    0.000    0.671    1.427
##    .PFB7_r            0.476    0.016   29.390    0.000    0.476    0.953
##    .PFB8_r            0.144    0.011   12.642    0.000    0.144    0.410
##    .PFB9_r            0.470    0.016   29.021    0.000    0.470    0.941
##    .PFB10_r           0.077    0.009    8.886    0.000    0.077    0.288
##     g1                0.000                               0.000    0.000
##     g2                0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .PFA1_r            0.080    0.008   10.116    0.000    0.080    0.879
##    .PFA2_r            0.155    0.007   23.712    0.000    0.155    0.674
##    .PFA3_r            0.198    0.004   49.055    0.000    0.198    0.796
##    .PFA4_r            0.183    0.005   34.480    0.000    0.183    0.766
##    .PFA5_r            0.151    0.006   25.833    0.000    0.151    0.611
##    .PFA6_r            0.141    0.008   18.701    0.000    0.141    0.702
##    .PFA7_r            0.151    0.007   20.252    0.000    0.151    0.802
##    .PFA8_r            0.189    0.004   42.750    0.000    0.189    0.762
##    .PFA9_r            0.066    0.007    9.133    0.000    0.066    0.960
##    .PFA10_r           0.160    0.008   21.022    0.000    0.160    0.907
##    .PFB1_r            0.035    0.006    6.111    0.000    0.035    0.946
##    .PFB2_r            0.118    0.008   14.091    0.000    0.118    0.660
##    .PFB3_r            0.092    0.008   10.894    0.000    0.092    0.770
##    .PFB4_r            0.123    0.008   14.841    0.000    0.123    0.704
##    .PFB5_r            0.205    0.006   35.368    0.000    0.205    0.945
##    .PFB6_r            0.131    0.008   17.480    0.000    0.131    0.593
##    .PFB7_r            0.178    0.005   37.599    0.000    0.178    0.713
##    .PFB8_r            0.116    0.008   14.257    0.000    0.116    0.943
##    .PFB9_r            0.197    0.004   48.067    0.000    0.197    0.788
##    .PFB10_r           0.068    0.007    9.338    0.000    0.068    0.964
##     g1                1.000                               1.000    1.000
##     g2                1.000                               1.000    1.000
standardizedSolution(DualGFitC)
ZREG(.865, .897, .037, .022)
## [1] -0.7433824

Attempting to move on to testing the invariance of the measurement model and then the structural one, the models would not converge. Based on the lack of widespread metric noninvariance it does not seem likely that the factor covariances (or regressions) would have differed regardless. The amount things differed in the configural model should be the greatest of the subsequent invariance testing models, so it is doubtful that there were changes due to general ability improvement instead of changes in the residual means.

Discussion

It is hard to do anything with this data because of the choice to use different forms for times 1 and 2. Despite being part of a strategy to reduce practice effects, they have made it impossible to generate strong conclusions because of the resulting indeterminate measurement qualities.

References

Bates, T. C., & Gignac, G. E. (2022). Effort impacts IQ test scores in a minor way: A multi-study investigation with healthy adult volunteers. Intelligence, 92, 101652. https://doi.org/10.1016/j.intell.2022.101652

Lubinski, D. (2000). Scientific and Social Significance of Assessing Individual Differences: “Sinking Shafts at a Few Critical Points.” Annual Review of Psychology, 51(1), 405–444. https://doi.org/10.1146/annurev.psych.51.1.405

sessionInfo()
## R version 4.1.2 (2021-11-01)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19042)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=English_United States.1252 
## [2] LC_CTYPE=English_United States.1252   
## [3] LC_MONETARY=English_United States.1252
## [4] LC_NUMERIC=C                          
## [5] LC_TIME=English_United States.1252    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] sjmisc_2.8.7 lavaan_0.6-9 psych_2.1.9  pacman_0.5.1
## 
## loaded via a namespace (and not attached):
##  [1] bslib_0.3.1      compiler_4.1.2   pillar_1.6.4     jquerylib_0.1.4 
##  [5] tools_4.1.2      digest_0.6.28    tibble_3.1.5     jsonlite_1.7.2  
##  [9] evaluate_0.14    lifecycle_1.0.1  nlme_3.1-153     lattice_0.20-45 
## [13] pkgconfig_2.0.3  rlang_0.4.12     DBI_1.1.2        yaml_2.2.1      
## [17] parallel_4.1.2   pbivnorm_0.6.0   xfun_0.27        fastmap_1.1.0   
## [21] stringr_1.4.0    dplyr_1.0.7      knitr_1.36       generics_0.1.1  
## [25] sass_0.4.0       vctrs_0.3.8      tidyselect_1.1.1 stats4_4.1.2    
## [29] sjlabelled_1.1.8 grid_4.1.2       snakecase_0.11.0 glue_1.4.2      
## [33] R6_2.5.1         fansi_0.5.0      rmarkdown_2.11   purrr_0.3.4     
## [37] magrittr_2.0.1   MASS_7.3-54      ellipsis_0.3.2   htmltools_0.5.2 
## [41] assertthat_0.2.1 mnormt_2.0.2     insight_0.17.0   utf8_1.2.2      
## [45] stringi_1.7.5    tmvnsim_1.0-2    crayon_1.4.2