individual likelihood statistics (classic Mx MX%P)

Posted on
Picture of user. t0mpr1c3 Joined: 12/14/2009
Forums
Is there some way to export the likelihood function for a vector of observations equivalent to the 1st column of the classic Mx MX%P= command?
Replied on Wed, 07/20/2011 - 09:25
Picture of user. mspiegel Joined: 07/31/2009

I am unfamiliar with "MX%P=" but it sounds similar to the vector=TRUE argument of the mxFIMLObjective() function. The demo 'OneFactorModel_LikelihoodVector' has an example of using this argument.
Replied on Mon, 07/25/2011 - 00:32
Picture of user. neale Joined: 07/31/2009

In reply to by mspiegel

Although one can use vector=TRUE, it is a bit of a shame that one cannot see the vector of individual likelihoods unless one uses this alternative approach - which involves using an mxAlgebra and mxAlgebraObjective. Unless someone knows another way to retrieve them?
Replied on Mon, 07/25/2011 - 10:30
Picture of user. mspiegel Joined: 07/31/2009

In reply to by neale

We have talked about this feature for several months. So I implemented it today. In the latest version from the svn repository, I've added the '@likelihoods' slot to MxFIMLObjective and MxRAMObjective objects. It stores a vector with the likelihood values. This will be included in the OpenMx 1.2 release. We need some test cases to verify this feature is working correctly. The ordinal and joint ordinal/continuous implementations are trickier than the continuous implementation, so it would be good to test all three alternatives.
Replied on Mon, 07/25/2011 - 10:54
Picture of user. neale Joined: 07/31/2009

In reply to by mspiegel

Really superb! So pleased to have this information coming back. The only case when one might not want it to be potentially available would be where bandwidth is a concern and a large raw dataset is being analyzed. In this case one might want to switch it off. This might apply to the contents of other slots, so I am wondering whether an argument of the form

mxRun(model, slotsNotWanted=list("estimatedHessian","likelihoods","otherStuff")

would offer the user control over the volume of information being passed back to R from the backend.

Replied on Mon, 07/25/2011 - 11:29
Picture of user. tbrick Joined: 07/31/2009

In reply to by neale

I think mxOption is a better place for this than mxRun.

First of all, we need to limit the number of argument to mxRun to keep complexity down for the user.

Second, this is actually an option that people would want to change for each individual objective function, rather than for each overall run.

Third, it's something that many people will either want to have returned, or just won't care about at all. Since it's fairly cheap to return in the general case, it's unlikely to be changed by many folks. That means that an argument to mxRun runs a higher risk of confusing people than it does of helping them.

I'd recommend instead that we use the mxOption interface the way that we do for the RAM Optimization and Data Sorting; these can be set for each child model or for the parent model as a whole, and we can add options boundlessly without adding too much confusion.

I'd probably also stick to names like "Return Row Likelihoods" so that what they do is clear.

Replied on Wed, 07/20/2011 - 10:31
Picture of user. Ryne Joined: 07/31/2009

In reply to by t0mpr1c3

0.3.3 is an old version. Install the current 1.0.7 release by following these instructions:

http://openmx.psyc.virginia.edu/installing-openmx

Further, you can install the beta 1.1 release and use/test even newer features like so:

http://openmx.psyc.virginia.edu/2011/06/more-stable-openmx-11-beta-release

Replied on Tue, 04/11/2023 - 05:57
No user picture. cjvanlissa Joined: 04/10/2019

Sorry to revive this old thread; it is the most relevant I could find. I'm wondering if it's possible to retrieve the likelihood vector for arbitrary models? I'm running a model using `mxExpectationMixture()`, and when I set `vector = TRUE` on the fitfunction, I get this error:

`
Running mix2 with 13 parameters
Error: The job for model 'mix2' exited abnormally with the error message: mix2.fitfunction of type imxFitFunciontHiddenMarkov returned 150 values instead of 1, not sure how to proceed
`

Replied on Tue, 04/11/2023 - 10:35
Picture of user. AdminHunter Joined: 03/01/2013

For many models, the best thing to do is use the rowDiagnostics argument of the mxFitFunctionML() function. Something like this:


mxFitFunctionML(rowDiagnostics=TRUE)

This returns row likelihoods, row Mahalanobis distances, and the number of non-missing variables by row. See the help page via ?mxFitFunctionML for further details and example use.