Major changes for version 1.0.0

Caspar van Lissa


tidyLPA update

Rationale for the update

tidyLPA has received a major update. Your old function calls might not work as expected anymore. The new version of tidyLPA aims to make Latent Profile Analysis (LPA) even more accessible to a broad audience, by means of a user-friendly interface, and to fit more seemlessly into a ‘tidyverse’ workflow.

As before, tidyLPA offers a parallel workflow for the open-source package Mclust, and the commercial package Mplus.

These changes necessitated some simplification of the existing functions. Advanced options are still available, but require slightly more work on the user’s part. The upside of this is that, for most users, the tidyLPA workflow and documentation are substantially simplified.

Major changes

There have been major changes to the two primary functions, estimate_profiles() and compare_solutions()

The best way to understand these changes to tidyLPA, though, is by explaining the new workflow.

Example analysis using estimate_profiles()

A full analysis might look like the following:


pisaUSA15[1:100, ] %>%
    select(broad_interest, enjoyment, self_efficacy) %>%
    single_imputation() %>%
## tidyLPA analysis using mclust: 
##  Model Classes AIC     BIC     Entropy prob_min prob_max n_min n_max
##  1     3       648.244 684.716 0.796   0.830    0.946    0.030 0.660
##  BLRT_p
##  0.030

You can use Mplus simply by changing the package argument for estimate_profiles():

pisaUSA15[1:100, ] %>%
    select(broad_interest, enjoyment, self_efficacy) %>%
    single_imputation() %>%
    estimate_profiles(3, package = "MplusAutomation")

A simple summary of the analysis is printed to the console (and its posterior probability). The resulting object can be further passed down a pipeline to other functions, such as plot, compare_solutions, get_data, get_fit, etc. This is the “tidy” part, in that the function can be embedded in a tidy analysis pipeline.

If you have Mplus installed, you can call the version of this function that uses MPlus in the same way, by adding the argument package = "MplusAutomation.

We can plot the profiles by piping the output to plot_profiles().

pisaUSA15[1:100, ] %>%
    select(broad_interest, enjoyment, self_efficacy) %>%
    single_imputation() %>%
    scale() %>%
    estimate_profiles(3, package = "MplusAutomation") %>% 

Example analysis using compare_solutions()

The function compare_solutions() compares the fit of several estimated models, with varying numbers of profiles and model specifications:

pisaUSA15[1:100, ] %>%
    select(broad_interest, enjoyment, self_efficacy) %>%
    single_imputation() %>%
                      variances = c("equal", "varying"),
                      covariances = c("zero", "varying")) %>%
    compare_solutions(statistics = c("AIC", "BIC"))

Deprecated functionality:

For Mclust:

* prior_control

For Mplus:

* starts
* m_iterations
* st_iterations
* convergence_criterion
* optseed
* cluster_ID
* include_VLMR
* include_BLRT (but BLRT is returned by default now)