Stat-JR is a general purpose statistical package with wide-ranging and flexible functionality. Its features include:
- Stat-JR uses a modular system of templates, each defining a certain function (or suite of functions). Users choose a template to use in conjunction with their dataset of interest. Some templates fit models, others plot charts, some produce data summaries, and so on.
Ability to communicate with other statistical software
- Stat-JR can interoperate with many commonly-used statistical software packages, for example R, SPSS, Stata, SAS, MLwiN and WinBUGS. This means that a common interface can be used to fit the same model in several packages. Again the policy of transparency means that not only will the system fit the model in an external package but it will return all the package-specific inputs and outputs to provide users with a route into learning the functionality of an unfamiliar package. This interoperability is extremely flexible, and templates can be written to utilise specific features that are unique to a package.
A choice of interfaces
- TREE (Template Reading and Execution Environment) is a menu-driven point-and-click interface: a flexible environment in which you pair-up templates with datasets, and then specify inputs to perform desired functions (see also the screenshots below).
- DEEP (Documents with Embedded Execution and Provenance) is a dynamic eBook-reading environment. It can fully-exploit Stat-JR's statistical functionality, but the eBook environment also allows a lot of contextual information to be provided by the eBook author (see also the screenshots below).
- LEAF (Logging and Execution of Analysis Flows) is an environment which runs workflows. This uses the Blockly visual programming system, extending the selection of blocks available to include blocks that perform common statistical processes. As such, it has a user-friendly front-end which allows users to build up a workflow using different blocks, with each block conceptually representing a particular section of code.
- runStatJR is a command line interface (still under development).
- The code constituting the modular templates Stat-JR uses can be accessed and edited, allowing expert users to add functionality by writing their own templates (in Python).
- Expert users can write their own dynamic eBooks for Stat-JR's DEEP interface.
In-house MCMC engine
- Stat-JR has its own in-built MCMC estimation engine that takes a model description and produces a mathematical representation of the corresponding algorithm before producing code to fit the model, running the code and returning the results. This complete transparency removes the disconnect between the methods and the application.
The figure below gives an overview of how the system works:
Screenshots of the TREE interface
Choosing a template
Stat-JR uses a modular system of templates, each defining a certain function: some fit models, others plot charts, some produce data summaries, and so on:
Once the user has chosen a template (and dataset), inputs specific to those choices are then entered:
Having specified all the inputs the template requests, Stat-JR produces the files it needs to complete the desired execution, together with useful descriptive resources such as equations (LaTeX):
Template execution finished
Once the desired execution has run, the final output files are returned; here we see some model results (other outputs would be accessible via the drop-down list just above the output pane):
Screenshots of the DEEP interface
The content of the eBook can be dictated by choices the user has made as he/she is reading through; here the user has chosen the fixed effects for a model which, for comparison, is fitted both with, and without, random effects for school (at level 2):
Here the variance partition coefficient is returned based on the user's model choices; these will be calculated anew every time the user changes the model specification:
Interoperability with other statistical software
Both TREE and DEEP can interoperate with other statistical software. Here is an example in which a plot reflecting the user's specification has been produced using R, with both the plot, and the R script used to derive it, returned as content in the eBook:
Screenshots of the workflow system
The workflow system consists of a range of blocks accessible from the menus on the left-hand side; each block performs a different function:
Here we have selected a block which loops through whatever blocks are placed inside it (i.e. to the right of "do") with the number of times it does that defined by whatever we place at the top (i.e. in between "repeat" and "times"):
The blocks themselves ensure syntactical rules are respected
As well as the physical shape of blocks determining how users can join them together, you'll find sometimes if you try to fit a block which isn't appropriate - here trying to place a string object (which could consist of inappropriate characters, such as letters) - then it won't allow you to: the block 'pops' out each time you try to fit it in. In this way the blocks themselves guide users to respect correct syntax when fitting them together, helping avoid errors at run-time (note in this picture we've enlarged the size of the blocks):
In contrast when we try to use a numeric object block to define the number of iterations the loop will make, the block accepts it:
Attaching blocks together to make a workflow
By attaching blocks together, complex workflows can be gradually built up. In this example there are conditional statements, loops, procedure calls, and even questions which prompt the user for input when the workflow runs: