tidyLPA icon indicating copy to clipboard operation
tidyLPA copied to clipboard

Feature request: Consider adding the option to increase the number of random start values using Mplus

Open peter1328 opened this issue 3 years ago • 3 comments

My kind request is similar to the one on multiple starts using MClust to improve convergence-issues: I use tidyLPA with Mplus a lot. An issue that I encounter very often is that the solution has (or hasn't) converged at a local minimum because the default number of random starts in MPlus is very low, with just 20 (of which the four most promising after the first ten iterations are used to continue estimation). It would be so handy to be able to increase the number of random starts for Mplus using the "starts = " (and perhaps in combination with multi-threading via "process = ")-option to support convergence; would it be possible to enable these options in tidyLPA? Even more useful would be the option to be able to add any commands that belong to the "analysis:"-commands in Mplus. With the current default of "starts = 20 4", Mplus just so often does not converge and I have to do the whole work externally (or using MplusAutomation manually) via Mplus-inputs. In my experience (I have used LPA on hundreds of data sets and done Monte Carlo-Simulations on it), there are more than just a few data sets for which LPA makes a lot of sense but they just use easily a few hundred random starts until they converge. A thought: If you like to keep it simple, even just the option to choose between "starts = 20 4;", "starts = 100 20"; or "starts = 500 100" (the latter perhaps in combination with "process = 4" to use multi-threading; which does not harm if a computer does not have that many threads) would be very useful. As far as I am concerned, this would be the most useful new option, apart from heterogeneous variances, which thankfully are already implemented.

peter1328 avatar Oct 26 '21 06:10 peter1328

This option is already there; you can pass arguments to MplusAutomation::mplusModeler() through estimate_profiles(). So from the top of my head, I believe that would be estimate_profiles(ANALYSIS = "starts = 100 20;")?

cjvanlissa avatar Oct 26 '21 07:10 cjvanlissa

Awesome, sorry that I've overlooked that (it wasn't visible to me from the documentation) and thanks for the quick reply! I've tried it, works perfectly, also with multi-threading

peter1328 avatar Oct 26 '21 08:10 peter1328

Quote from documentation: "... Additional arguments are passed to the estimating function; i.e., Mclust, or mplusModeler."

cjvanlissa avatar Oct 26 '21 08:10 cjvanlissa