Bug when doing partial measurement invariance
maugavilla opened this issue · 2 comments
Ed
I was running a couple of examples of longitudinal measurement invariance. The issue only happened with factor loading invariance, didint happened with intercept invariance. And when I did partial measurement invariance I get issues
-
If between time points, 2 of them are equal and only 1 factor loading is different it works fine (s_g3)
ft3 =~ l1as_g3 + l2r_g3 + l3m_g3
ft5 =~ l1bs_g5 + l2r_g5 + l3m_g5
ft8 =~ l1bs_g8 + l2r_g8 + l3*m_g8 -
But when for an indicator, all factor loadings are different over time it doesnt work
ft3 =~ l1as_g3 + l2r_g3 + l3m_g3
ft5 =~ l1bs_g5 + l2r_g5 + l3m_g5
ft8 =~ l1cs_g8 + l2r_g8 + l3*m_g8
Stan reports this issue over and over and the chains dont sample
Chain 2: Exception: Exception: []: accessing element out of range. index 7 out of range; expecting index to be between 1 and 5; index position = 1load_par2 (in 'model_stanmarg' at line 115)
(in 'model_stanmarg' at line 823)
small_example_data.xlsx
With the data set I am attaching this code produce the error for me
weak_mod <- '
factor loadings
ft3 =~ l1as_g3 + l2r_g3 + l3m_g3
ft5 =~ l1bs_g5 + l2r_g5 + l3m_g5
ft8 =~ l1cs_g8 + l2r_g8 + l3*m_g8
residual covariances
s_g3 ~~ s_g5 + s_g8
s_g5 ~~ s_g8
r_g3 ~~ r_g5 + r_g8
r_g5 ~~ r_g8
m_g3 ~~ m_g5 + m_g8
m_g5 ~~ m_g8
Factor means
ft3 ~01
ft5 ~01
ft8 ~0*1
factor variances
ft3 ~~ 1ft3
ft5 ~~ NAft5
ft8 ~~ NA*ft8
item intercepts
s_g3 ~1
r_g3 ~1
m_g3 ~1
s_g5 ~1
r_g5 ~1
m_g5 ~1
s_g8 ~1
r_g8 ~1
m_g8 ~1
'
fit_weak <- bcfa(weak_mod,
std.lv=T,
data = dat2,
n.chains = 3,
burnin = 3000,
sample = 1000,
target="stan",
bcontrol = list(cores=3))
summary(fit_weak,
standardize=T,
rsquare=T,
neff=T)
sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] blavaan_0.3-11.649 Rcpp_1.0.5 lavaan_0.6-7
loaded via a namespace (and not attached):
[1] TH.data_1.0-10 colorspace_1.4-1 ellipsis_0.3.1 ggridges_0.5.2
[5] brms_2.13.5 rsconnect_0.8.16 estimability_1.3 markdown_1.1
[9] base64enc_0.1-3 rstudioapi_0.11 listenv_0.8.0 rstan_2.21.2
[13] MatrixModels_0.4-1 DT_0.15 fansi_0.4.1 mvtnorm_1.1-1
[17] bridgesampling_1.0-0 codetools_0.2-16 splines_4.0.2 mnormt_2.0.2
[21] shinythemes_1.1.2 bayesplot_1.7.2 jsonlite_1.7.1 mcmc_0.9-7
[25] shiny_1.5.0 compiler_4.0.2 backports_1.1.10 emmeans_1.5.1
[29] assertthat_0.2.1 Matrix_1.2-18 fastmap_1.0.1 cli_2.0.2
[33] later_1.1.0.1 htmltools_0.5.0 quantreg_5.67 prettyunits_1.1.1
[37] tools_4.0.2 igraph_1.2.5 coda_0.19-3 gtable_0.3.0
[41] glue_1.4.2 reshape2_1.4.4 dplyr_1.0.2 V8_3.2.0
[45] vctrs_0.3.4 nlme_3.1-149 conquer_1.0.2 crosstalk_1.1.0.1
[49] stringr_1.4.0 globals_0.13.0 ps_1.3.4 mime_0.9
[53] miniUI_0.1.1.1 CompQuadForm_1.4.3 lifecycle_0.2.0 runjags_2.0.4-6
[57] semTools_0.5-3 gtools_3.8.2 future_1.18.0 MASS_7.3-51.6
[61] zoo_1.8-8 scales_1.1.1 colourpicker_1.1.0 promises_1.1.1
[65] Brobdingnag_1.2-6 parallel_4.0.2 sandwich_2.5-1 inline_0.3.16
[69] SparseM_1.78 shinystan_2.5.0 curl_4.3 gridExtra_2.3
[73] ggplot2_3.3.2 loo_2.3.1 StanHeaders_2.21.0-6 stringi_1.5.3
[77] dygraphs_1.1.1.6 pkgbuild_1.1.0 rlang_0.4.7 pkgconfig_2.0.3
[81] matrixStats_0.56.0 lattice_0.20-41 purrr_0.3.4 rstantools_2.1.1
[85] htmlwidgets_1.5.1 processx_3.4.4 tidyselect_1.1.0 plyr_1.8.6
[89] magrittr_1.5 R6_2.4.1 generics_0.0.2 multcomp_1.4-13
[93] pillar_1.4.6 withr_2.2.0 xts_0.12.1 survival_3.1-12
[97] abind_1.4-5 tibble_3.0.3 future.apply_1.6.0 crayon_1.3.4
[101] nonnest2_0.5-5 tmvnsim_1.0-2 grid_4.0.2 pbivnorm_0.6.0
[105] callr_3.4.4 threejs_0.3.3 digest_0.6.25 xtable_1.8-4
[109] httpuv_1.5.4 MCMCpack_1.4-9 RcppParallel_5.0.2 stats4_4.0.2
[113] munsell_0.5.0 shinyjs_2.0.0
I think the markdown mangled your code, but I got it and think it is now fixed. But I still need to test it more...
Oh, I am sorry, apparentle it didnt like the use of quotes for the lavaan syntax
I tried the github version, and worked for my example
thanks