Good to think about what 2.0 will show in summary()?
With a goal of surfacing the almost-always wanted top-level detail for the user, and not showing things that are obtained elsewhere or are not summary data, then 4 elements that can perhaps be dropped are:
1. compute plan
2. data
3. timestamp
4. OpenMx version
Then perhaps a line of text beneath the summary saying:
"See help(OpenMx_Output) for examples of how to easily access expected and obtained data summarys, elapsed time, packageVersion("OpenMx"), the compute plan and more." [1]
Then the user gets free parameters, and the parameter counts, fit stats, etc they likely want to see. what do people think?
[1] Happy to write an OpenMx_Output.Rd documenting how to get these other things.
Comments
#1
Having the OpenMx version, and which optimizer was used are both very useful pieces of information when users encounter issues. Often users send snippets of output, and they may have run the job on a cluster so don't even have the objects to hand any more. I'd vote for hanging onto version & optimizer info. Compute plan for IFA or similar that use multiple optimizers I figure could be hidden from summary.
Very important to have a nice walk-the-whole-model-tree function to summarize the data. User confusion often arises because they only see estimates and not the data. While this is an argument for keeping the data summary section, I agree it's way too voluminous at present, and can easily be obtained by summary() or describe() on the data. Again a walk-the-tree function to get these on all sub-mxModels would be very helpful.
#2
Sounds good: Perhaps when we are out of beta, stop running packageVersion("OpenMx") for people every time.
We currently don't show the optimizer... (list of current output from a simple RAM model below)
Output walker is a good idea. I think also that having a "whatMplusShowsYou()" would be a help(er)ful function to write.
Example output from OpenMx version number: 999.0.0-3521
#3
Er yes, we do show the optimizer in the compute plan:
Mplus style output function seems reasonable, but could well be a rapidly moving target. I'd name it something else (maybe cover Mplus, LISREL, Amos whatever). Also, since we don't fit saturated ML all the time, it would be abbreviated unless user supplies the saturated model fit & df (or npars).
#4
If the compute plan falls out of summary, we'll have to copy $engine into somewhere else in summary. Though I do agree with Mike: engine and version need to be in summary. Compute plan should be accessible, but probably not in summary (though we could get clever and create some type of verbose or include argument to summary in the …). Data summary should probably go away, in part because we don't teach using summary for data, instead pushing towards psych's describe function. Having summaries that are taller than the default R window size always seemed weird to me, at least for simple models.
#5
I also concur that engine and version should be in
summary()
output.#6
The issue is complicated (as Josh anticipated) by the possible use of multiple optimizers in one mxRun(). Failure (non-pd matrix or similar) might occur at any stage, and it would useful to know at which one. Also possible is failure even before any attempt at optimization (Let's see if likelihood or other fit function can be evaluated at the starting values...).
Communication of this sort seems like a nicety, but it's really advantageous to novice user and expert alike, in that it simplifies their communication with each other and identifies the source of the problem.
#7
Perhaps a function might help people get help, maybe a function
mxHelpRequest(model, reveal = c("all", "result", "model", "m_and_simData"), "remarks")
which would take the user's model and create a post on the help forums, a gist and/or attached .Rdata file they can use for bug reports?
kind of nice, and perhaps doable
#8
The current MxSummary of the Frontpage model is below:
#9
nice mike!
A minor, and perhaps not useful thought: lineup elements of the stats table visually?
For people wanting to get this stuff into word or elsewhere, I am now embedding R2HTML calls in my reporting functions, so the result get opened in the web browser as an html table. Easy to paste into other places.
#10
#11
Just to say that as of 3750 we are not showing the engine, even when there was only one.
#12
The engine is part of the compute plan and is shown in summary when verbose=TRUE.