We had a few requirements when evaluating options. Specifically the system had to:
- Work well in the kind of exploratory environment conducive to analytics and AI
- Be robust enough to work in an enterprise-level production environment
- Be available under a license without source code restrictions
Common Lisp was the only framework that met all these requirements. And, it is not the first time lisp was used in a statistical setting. XLISP-STAT, our spiritual predecessor, was a contemporary of R in the early days of development. Wikipedia says about it: “XLispStat was historically influential in the field of statistical visualization” and its author, Luke Tierney, was a member of the original R core team.
What does Lisp-Stat do?
Lisp-Stat provides support for vectorized mathematical operations, and a comprehensive set of statistical methods that are implemented using the latest numerical algorithms. In addition, Common Lisp provides a dynamic programming environment (REPL), an excellent object-oriented facility (CLOS) and meta-object protocol (MOP).
Lisp-Stat is fully functional today, and most of the XLISP-STAT libraries can be ported with the aid of a compatibility package (XLS). This gives Lisp-Stat a leg up on ecosystem development. Though not as complete as CRAN, there is enough here to get useful work done.
Lisp-Stat includes a column-oriented data-frame. I/O methods are provided for delimited data files and JSON formats. Data may be loaded from the network or local disk.
Plotting is done with Vega-Lite. There are a few ways to plot; see the documentation and tutorials for example. Plotly is not yet supported, and we would welcome someone picking up that ball and running with it.
The XLS package implements many of the XLisp-Stat functions using Lisp-Stat equivalents. This package is working internally, but not yet released. If you need this, please raise an issue on github.
Git workflows are used both in development and in projects.
What’s next for Lisp-Stat?
Lisp-Stat is an open source project and we welcome patches and contributions to improve Lisp-Stat. Both code and documentation help, and documenting the systems is an excellent way to learn the ins and outs of a statistical system whilst it is small enough to be managable. We hope to continue to make improvements to the system along with the Lisp-Stat community.
Visit the github repository to see what we’re currently working on. If there is something you would like to see in Lisp-Stat, please create an issue yourself - or assign yourself an issue if you would like to fix or add something. See our contribution guidelines for more information.