LPA - model selection based on BIC with function prior=priorControl()

156 Views Asked by At

I'm trying to fit models for latent profile analysis (packages: tidyLPA and mclust). For model VVI (variances=equal, covariances=zero), I get many "NA" for BIC when n_profiles > 5. I figured out that function "prior = priorControl()" can possibly fix that and - indeed - it does! But now I get a huge bump for BIC when n_profiles > 5 which indicates better model fit.

Does anyone have a guess what is going on here? Or does anybody have a recommendation how to deal with that? Any thoughts are appreciated. I hope the code below and plots attached can illustrate the issue.

Many thanks!!

###not run
library(mclust)
library(tidyLPA)
library(dplyr)

# cluster_1 is an imputed subset of 9 variables
cluster_1 <- subset %>%
    single_imputation() %>%
    mutate_all(list(scale))

# mclustBIC without priorControl
set.seed(0408)
BIC_m12a <- mclustBIC(cluster_1, modelNames = c("EEI", "VVI"))
BIC1_m12a

Bayesian Information Criterion (BIC): 
        EEI       VVI
1 -127005.8 -127005.8
2 -122298.6 -121027.1
3 -120579.4 -119558.0
4 -119883.4 -118765.7
5 -119244.2 -118293.6
6 -119064.4        NA
7 -118771.5        NA
8 -118681.0        NA
9 -118440.2        NA

# mclustBIC with priorControl
set.seed(0408)
BIC_m12b <- mclustBIC(cluster_1, modelNames = c("EEI", "VVI"), prior=priorControl())
BIC_m12b

Bayesian Information Criterion (BIC): 
        EEI       VVI
1 -127006.0 -127006.0
2 -122299.5 -121028.2
3 -120587.9 -119560.0
4 -119884.4 -118771.7
5 -119235.4 -118296.9
6 -118933.9 -112761.8
7 -118776.2 -112579.7
8 -118586.2 -112353.3
9 -118472.0 -112460.2

enter image description here enter image description here

0

There are 0 best solutions below