<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Lisp-Stat</title>
    <link>/</link>
    <description>Recent content on Lisp-Stat</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Quick Plot</title>
      <link>/docs/cookbooks/quick-plot/</link>
      <pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate>
      <guid>/docs/cookbooks/quick-plot/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;geom&lt;/code&gt; and &lt;code&gt;gg&lt;/code&gt; packages provide a set of composable helper&#xA;functions for building &lt;a href=&#34;https://vega.github.io/vega-lite/&#34;&gt;Vega-Lite&lt;/a&gt;&#xA;plot specifications. Inspired by R&amp;rsquo;s&#xA;&lt;a href=&#34;https://ggplot2.tidyverse.org/&#34;&gt;ggplot2&lt;/a&gt;, specifications are&#xA;constructed by combining independent layers — geometry, labels, scales,&#xA;coordinates and themes — rather than writing monolithic JSON-like&#xA;plists by hand.&lt;/p&gt;&#xA;&lt;p&gt;Each helper returns a plist. The function &lt;code&gt;merge-plists&lt;/code&gt; recursively&#xA;merges them into a single Vega-Lite spec, which &lt;code&gt;vega:defplot&lt;/code&gt;&#xA;compiles and &lt;code&gt;plot:plot&lt;/code&gt; renders.&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&lt;h4 class=&#34;alert-heading&#34;&gt;Package setup&lt;/h4&gt;&#xA;&#xA;    &lt;p&gt;The examples below&#xA;assume you are working in the &lt;code&gt;LS-USER&lt;/code&gt; package so you need to use the&#xA;qualified forms (&lt;code&gt;geom:point&lt;/code&gt;, &lt;code&gt;gg:label&lt;/code&gt;, etc.) or import the&#xA;appropriate symbols into the current package (which should be&#xA;&lt;code&gt;LS-USER&lt;/code&gt;):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Array Operations</title>
      <link>/docs/manuals/array-operations/</link>
      <pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate>
      <guid>/docs/manuals/array-operations/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;array-operations&lt;/code&gt; system contains a collection of functions and&#xA;macros for manipulating Common Lisp arrays and performing numerical&#xA;calculations with them.&lt;/p&gt;&#xA;&lt;p&gt;Array-operations is a &amp;lsquo;generic&amp;rsquo; way of operating on array like data&#xA;structures. Several &lt;code&gt;aops&lt;/code&gt; functions have been implemented for&#xA;&lt;code&gt;data-frame&lt;/code&gt;.  For those that haven&amp;rsquo;t, you can transform arrays to&#xA;data frames using the &lt;code&gt;df:matrix-df&lt;/code&gt; function, and a data-frame to an&#xA;array using &lt;code&gt;df:as-array&lt;/code&gt;.  This make it convenient to work with the&#xA;data sets using either system.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installation</title>
      <link>/docs/getting-started/installation/</link>
      <pubDate>Sat, 18 Jun 2022 00:00:00 +0000</pubDate>
      <guid>/docs/getting-started/installation/</guid>
      <description>&lt;h2 id=&#34;intallation-methods&#34;&gt;Intallation methods&lt;/h2&gt;&#xA;&lt;h3 id=&#34;online-notebook&#34;&gt;Online Notebook&lt;/h3&gt;&#xA;&lt;figure&gt;&lt;a href=&#34;https://mybinder.org/v2/gh/Lisp-Stat/IPS9/HEAD?urlpath=%2Fdoc%2Ftree%2Findex.ipynb&#34;&gt;&lt;img src=&#34;https://mybinder.org/badge_logo.svg&#34;&#xA;    alt=&#34;Binder&#34;&gt;&lt;/a&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;The easiest way to get started is with the link above which will open a preconfigured&#xA;notebook on mybinder.org.&lt;/p&gt;&#xA;&lt;h3 id=&#34;local-jupyter-container&#34;&gt;Local Jupyter Container&lt;/h3&gt;&#xA;&lt;p&gt;You can also run the Jupyter notebook in a pre-built OCI image.  This is a minimal Docker file:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;FROM ghcr.io/lisp-stat/cl-jupyter:latest&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Our images are based on &lt;a href=&#34;https://jupyter-docker-stacks.readthedocs.io/en/latest/using/running.html&#34;&gt;Jupyter Docker Stacks&lt;/a&gt; and all of their&#xA;documentation is applicable to the &lt;code&gt;cl-jupyter&lt;/code&gt; image.&lt;/p&gt;&#xA;&lt;p&gt;For a quickstart:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -it -p 8888:8888 ghcr.io/lisp-stat/cl-jupyter:latest&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;# Entered start.sh with args: jupyter lab&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;# ...&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;#     To access the server, open this file in a browser:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;#         file:///home/jovyan/.local/share/jupyter/runtime/jpserver-7-open.html&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;#     Or copy and paste one of these URLs:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;#         http://eca4aa01751c:8888/lab?token=d4ac9278f5f5388e88097a3a8ebbe9401be206cfa0b83099&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;#         http://127.0.0.1:8888/lab?token=d4ac9278f5f5388e88097a3a8ebbe9401be206cfa0b83099&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command pulls the latest &lt;code&gt;cl-jupyter&lt;/code&gt; image from ghcr.io if it is not already present on the local host. It then starts a container running a Jupyter Server with the JupyterLab frontend and exposes the server on host port 8888. The server logs appear in the terminal and include a URL to the server.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basics</title>
      <link>/docs/tutorials/basics/</link>
      <pubDate>Sat, 20 Feb 2021 00:00:00 +0000</pubDate>
      <guid>/docs/tutorials/basics/</guid>
      <description>&lt;h2 id=&#34;preface&#34; class=&#34;unnumbered&#34;&gt;Preface&lt;/h2&gt;&#xA;&lt;p&gt;This document is intended to be a tutorial introduction to the basics&#xA;of LISP-STAT and is based on the original tutorial for XLISP-STAT&#xA;written by Luke Tierney, updated for Common Lisp and the 2026&#xA;implementation of LISP-STAT.&lt;/p&gt;&#xA;&lt;p&gt;LISP-STAT is a statistical environment built on top of the Common Lisp&#xA;general purpose programming language.  The first three sections&#xA;contain the information you will need to do elementary statistical&#xA;calculations and plotting.  The fourth section introduces some&#xA;additional methods for generating and modifying data.  The fifth&#xA;section describes some features of the user interface that may be&#xA;helpful.  The remaining sections deal with more advanced topics, such&#xA;as interactive plots, regression models, and writing your own&#xA;functions.  All sections are organized around examples, and most&#xA;contain some suggested exercises for the reader.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distributions</title>
      <link>/docs/examples/distributions/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/examples/distributions/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/IPS9/Chapter%201%20Looking%20at%20Data.html&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/IPS9/Chapter%201%20Looking%20at%20Data.html&#34;&gt;https://lisp-stat.github.io/IPS9/Chapter%201%20Looking%20at%20Data.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title>What is Lisp-Stat?</title>
      <link>/docs/overview/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/overview/</guid>
      <description>&lt;p&gt;Lisp-Stat is a domain specific language (DSL) for statistical analysis&#xA;and machine learning.  It is targeted at statistics practitioners with&#xA;little or no experience in programming.&lt;/p&gt;&#xA;&lt;p&gt;Lisp has a history of being deployed for domain experts to use, and&#xA;it&amp;rsquo;s a great language for beginners; the &lt;a href=&#34;https://en.wikipedia.org/wiki/Symbolics#Symbolics_Graphics_Division&#34;&gt;Symbolics Graphics&#xA;Division&lt;/a&gt;&#xA;wrote the software used by graphic artists to develop scenes in&#xA;several films prior the rise of Pixar. One of the first statistical&#xA;systems developed,&#xA;&lt;a href=&#34;https://en.wikipedia.org/wiki/XLispStat&#34;&gt;XLisp-Stat&lt;/a&gt;, was a&#xA;contemporary to R until the primary author joined the &amp;lsquo;R Core&amp;rsquo; group.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Data Frame</title>
      <link>/docs/manuals/data-frame/</link>
      <pubDate>Sun, 08 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/docs/manuals/data-frame/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;A common lisp data frame is a collection of observations of sample&#xA;variables that shares many of the properties of arrays and lists.  By&#xA;design it can be manipulated using the same mechanisms used to&#xA;manipulate lisp arrays.  This allow you to, for example, transform a&#xA;data frame into an array and use&#xA;&lt;a href=&#34;/docs/manuals/array-operations/&#34;&gt;array-operations&lt;/a&gt; to manipulate it, and&#xA;then turn it into a data frame again to use in modeling or plotting.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Data Frame</title>
      <link>/docs/tutorials/data-frame/</link>
      <pubDate>Sat, 18 Jun 2022 00:00:00 +0000</pubDate>
      <guid>/docs/tutorials/data-frame/</guid>
      <description>&lt;h2 id=&#34;load-data-frame&#34;&gt;Load data frame&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;ql:quickload&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;:data-frame&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;load-data&#34;&gt;Load data&lt;/h2&gt;&#xA;&lt;p&gt;We will use one of the &lt;a href=&#34;/docs/manuals/data-frame/#example-datasets&#34;&gt;example data sets from R&lt;/a&gt;,&#xA;&lt;a href=&#34;https://vincentarelbundock.github.io/Rdatasets/doc/datasets/mtcars.html&#34;&gt;mtcars&lt;/a&gt;,&#xA;for these examples.  First, switch into the Lisp-Stat package:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#a2f&#34;&gt;in-package&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;:ls-user&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now load the data:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;:mtcars-example&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;;; WARNING: Missing column name was filled in&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;;; T&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;examine-data&#34;&gt;Examine data&lt;/h2&gt;&#xA;&lt;p&gt;Lisp-Stat&amp;rsquo;s printing system is integrated with the &lt;a href=&#34;https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node253.html&#34;&gt;Common Lisp Pretty&#xA;Printing&lt;/a&gt;&#xA;facility.  To control aspects of printing, you can use the built in&#xA;lisp pretty printing configuration system.  By default Lisp-Stat sets&#xA;&lt;code&gt;*print-pretty*&lt;/code&gt; to &lt;code&gt;nil&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Site Organisation</title>
      <link>/docs/getting-started/site-organisation/</link>
      <pubDate>Sat, 18 Jun 2022 00:00:00 +0000</pubDate>
      <guid>/docs/getting-started/site-organisation/</guid>
      <description>&lt;p&gt;This manual is organised by audience.  The &lt;a href=&#34;/docs/overview/&#34;&gt;overview&lt;/a&gt;&#xA;and &lt;a href=&#34;/docs/getting-started/&#34;&gt;getting started&lt;/a&gt; sections are applicable&#xA;to all users.  Other sections are focused on statistical practitioners,&#xA;developers or users new to Common Lisp.&lt;/p&gt;&#xA;&lt;!--&#xA;### Core tasks&#xA;The sub-sections in [core tasks](/docs/tasks/) describe common tasks&#xA;for a statistical analysis workflow.  After reading these sections,&#xA;you should be able to perform a basic statistical analysis in most&#xA;scenarios.  These are task oriented documents, as opposed to system&#xA;oriented.&#xA;--&gt;&#xA;&lt;h3 id=&#34;examples&#34;&gt;Examples&lt;/h3&gt;&#xA;&lt;p&gt;This part of the documentation contains worked examples of statistical&#xA;analysis and plotting.  It has less explanatory material, and more&#xA;worked examples of code than other sections.  If you have a common&#xA;use-case and want to know how to solve it, look here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Data Relationships</title>
      <link>/docs/examples/data-relationships/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/examples/data-relationships/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/IPS9/Chapter%202%20Data%20Relationships.html&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/IPS9/Chapter%202%20Data%20Relationships.html&#34;&gt;https://lisp-stat.github.io/IPS9/Chapter%202%20Data%20Relationships.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title>Distributions</title>
      <link>/docs/manuals/distributions/</link>
      <pubDate>Sun, 28 Aug 2022 00:00:00 +0000</pubDate>
      <guid>/docs/manuals/distributions/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;Distributions&lt;/code&gt; system provides a collection of probability distributions and related functions such as:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Sampling from distributions&lt;/li&gt;&#xA;&lt;li&gt;Moments (e.g mean, variance, skewness, and kurtosis), entropy, and other properties&lt;/li&gt;&#xA;&lt;li&gt;Probability density/mass functions (pdf) and their logarithm (logpdf)&lt;/li&gt;&#xA;&lt;li&gt;Moment-generating functions and characteristic functions&lt;/li&gt;&#xA;&lt;li&gt;Maximum likelihood estimation&lt;/li&gt;&#xA;&lt;li&gt;Distribution composition and derived distributions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started&lt;/h2&gt;&#xA;&lt;p&gt;Load the distributions system with &lt;code&gt;(asdf:load-system :distributions)&lt;/code&gt; and the plot system with &lt;code&gt;(asdf:load-system :plot/vega)&lt;/code&gt;. Now generate a sequence of 1000 samples drawn from the standard normal distribution:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Getting Help</title>
      <link>/docs/getting-started/getting-help/</link>
      <pubDate>Sat, 18 Jun 2022 00:00:00 +0000</pubDate>
      <guid>/docs/getting-started/getting-help/</guid>
      <description>&lt;p&gt;There are several ways to get help with Lisp-Stat and your statistical&#xA;analysis.  This section describes way to get help with your data&#xA;objects, with Lisp-Stat commands to process them, and with Common&#xA;Lisp.&lt;/p&gt;&#xA;&lt;h2 id=&#34;search&#34;&gt;Search&lt;/h2&gt;&#xA;&lt;p&gt;We use the &lt;a href=&#34;https://www.algolia.com/&#34;&gt;algolia search engine&lt;/a&gt; to index&#xA;the site.  This search engine is specialised to work well with&#xA;documentation websites like this one.  If you&amp;rsquo;re looking for something&#xA;and can&amp;rsquo;t find it in the navigation panes, use the search box:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Plotting</title>
      <link>/docs/tutorials/plotting/</link>
      <pubDate>Sat, 18 Jun 2022 00:00:00 +0000</pubDate>
      <guid>/docs/tutorials/plotting/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;plot&lt;/code&gt; system provides a way to generate specifications for&#xA;plotting applications.  Examples of plotting packages include&#xA;&lt;a href=&#34;http://www.gnuplot.info/&#34;&gt;gnuplot&lt;/a&gt;, &lt;a href=&#34;https://plotly.com/&#34;&gt;plotly&lt;/a&gt; and&#xA;&lt;a href=&#34;https://vega.github.io/vega/&#34;&gt;vega&lt;/a&gt;/&lt;a href=&#34;https://vega.github.io/vega-lite/&#34;&gt;vega-lite&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;Plot&lt;/code&gt; includes a back end for Vega-Lite; this tutorial will teach you&#xA;how to encode Vega-Lite plot specifications using Common Lisp.  For&#xA;help on Vega-Lite, see the &lt;a href=&#34;https://vega.github.io/vega-lite/tutorials/getting_started.html&#34;&gt;Vega-Lite&#xA;tutorials&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;For the most part, you can transcribe a Vega-Lite specification&#xA;directly into Common Lisp and adapt it for your own plots.&lt;/p&gt;&#xA;&lt;h2 id=&#34;preliminaries&#34;&gt;Preliminaries&lt;/h2&gt;&#xA;&lt;h3 id=&#34;load-vega-lite&#34;&gt;Load Vega-Lite&lt;/h3&gt;&#xA;&lt;p&gt;Load Vega-Lite and network libraries:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Common Lisp References</title>
      <link>/docs/resources/language/</link>
      <pubDate>Sun, 07 Mar 2021 00:00:00 +0000</pubDate>
      <guid>/docs/resources/language/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.lispworks.com/documentation/HyperSpec/Front/Contents.htm&#34;&gt;Common Lisp Hyperspec&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://clqr.boundp.org/&#34;&gt;Common Lisp Quick Reference&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.google.com/document/pub?id=1SYSr0KE8iyv61srv6AMm-YRr-O6zM7Oi6CLSJgZc9yc&amp;amp;pli=1&#34;&gt;Common Lisp Type Hierarchy&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.hexstreamsoft.com/articles/common-lisp-format-reference/clhs-summary/&#34;&gt;CLHS &amp;lsquo;format&amp;rsquo; Summary&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Numeric Utilities</title>
      <link>/docs/manuals/numerical-utilities/</link>
      <pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate>
      <guid>/docs/manuals/numerical-utilities/</guid>
      <description>&lt;h2 id=&#34;arithmetic&#34;&gt;Arithmetic&lt;/h2&gt;&#xA;&lt;p&gt;The arithmetic package provides a collection of mathematical and arithmetic functions for Common Lisp. These utilities are designed to simplify common numerical computations while maintaining efficiency through inline declarations where appropriate.&lt;/p&gt;&#xA;&lt;h3 id=&#34;basic-operations&#34;&gt;Basic Operations&lt;/h3&gt;&#xA;&lt;h4 id=&#34;same-sign-p&#34;&gt;same-sign-p&lt;/h4&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;code&gt;(same-sign-p &amp;amp;rest numbers)&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tests whether all arguments have the same sign (i.e., all are positive, negative, or zero).&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;same-sign-p&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;3&lt;/span&gt;)    &lt;span style=&#34;color:#080;font-style:italic&#34;&gt;; ⇒ T&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;same-sign-p&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;-2&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;3&lt;/span&gt;)   &lt;span style=&#34;color:#080;font-style:italic&#34;&gt;; ⇒ NIL&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;same-sign-p&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;-1&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;-2&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;-3&lt;/span&gt;) &lt;span style=&#34;color:#080;font-style:italic&#34;&gt;; ⇒ T&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;square&#34;&gt;square&lt;/h4&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;code&gt;(square x)&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Returns the square of a number. This function is inlined for performance.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linear Algebra</title>
      <link>/docs/manuals/lla/</link>
      <pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate>
      <guid>/docs/manuals/lla/</guid>
      <description>&lt;h2 id=&#34;Overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;LLA (Lisp Linear Algebra) is a high-level Common Lisp library for numerical linear algebra operations. It provides a Lisp-friendly interface to BLAS and LAPACK libraries, allowing you to work with matrices and vectors using Lisp&amp;rsquo;s native array types while leveraging the performance of optimized numerical libraries.&lt;/p&gt;&#xA;&lt;p&gt;The library is designed to work with dense matrices (rank-2 arrays) containing numerical values. While categorical variables can be integer-coded if needed, LLA is primarily intended for continuous numerical data.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vega Plotting</title>
      <link>/docs/cookbooks/plotting/</link>
      <pubDate>Mon, 26 Apr 2021 00:00:00 +0000</pubDate>
      <guid>/docs/cookbooks/plotting/</guid>
      <description>&lt;p&gt;The plots here show equivalents to the &lt;a href=&#34;https://vega.github.io/vega-lite/examples/&#34;&gt;Vega-Lite example&#xA;gallery&lt;/a&gt;.  Before you begin working with these example, be certain to read the &lt;a href=&#34;/docs/tutorials/plotting/&#34;&gt;plotting tutorial&lt;/a&gt; where you will learn the basics of working with plot specifications and data.&lt;/p&gt;&#xA;&lt;h2 id=&#34;preliminaries&#34;&gt;Preliminaries&lt;/h2&gt;&#xA;&lt;h3 id=&#34;load-vega-lite&#34;&gt;Load Vega-Lite&lt;/h3&gt;&#xA;&lt;p&gt;Load Vega-Lite and network libraries:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;asdf:load-system&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;:plot/vega&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and change to the Lisp-Stat user package:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#a2f&#34;&gt;in-package&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;:ls-user&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;load-example-data&#34;&gt;Load example data&lt;/h3&gt;&#xA;&lt;p&gt;The examples in this section use the vega-lite data sets. Load them all now:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;vega:load-vega-examples&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;bar-charts&#34;&gt;Bar charts&lt;/h2&gt;&#xA;&lt;p&gt;Bar charts are used to display information about categorical variables.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Your First Project</title>
      <link>/docs/getting-started/your-first-project/</link>
      <pubDate>Sat, 18 Jun 2022 00:00:00 +0000</pubDate>
      <guid>/docs/getting-started/your-first-project/</guid>
      <description>&lt;p&gt;Lisp-Stat includes a &lt;a href=&#34;https://github.com/Lisp-Stat/project-template/&#34;&gt;project&#xA;template&lt;/a&gt; that you can&#xA;use as a guide for your own projects.&lt;/p&gt;&#xA;&lt;h2 id=&#34;use-the-template&#34;&gt;Use the template&lt;/h2&gt;&#xA;&lt;p&gt;To get started, go to the &lt;a href=&#34;https://github.com/Lisp-Stat/project-template/&#34;&gt;project&#xA;template&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Click &lt;strong&gt;Use this template&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Select a name for your new project and click &lt;strong&gt;Create repository from template&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Make your own local working copy of your new repo using &lt;code&gt;git clone&lt;/code&gt;, replacing &lt;a href=&#34;https://github.com/me/example.git&#34;&gt;https://github.com/me/example.git&lt;/a&gt; with your&#xA;repo&amp;rsquo;s URL:&#xA;&lt;code&gt;git clone --depth 1 https://github.com/me/example.git&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;You can now edit your own versions of the project&amp;rsquo;s source files.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;This will clone the project template into your own github repository&#xA;so you can begin adding your own files to it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Select</title>
      <link>/docs/manuals/select/</link>
      <pubDate>Sun, 07 Mar 2021 00:00:00 +0000</pubDate>
      <guid>/docs/manuals/select/</guid>
      <description>&lt;h2 id=&#34;Overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Select provides:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;An API for taking slices (elements selected by the Cartesian&#xA;product of vectors of subscripts for each axis) of array-like&#xA;objects.  The most important function is &lt;code&gt;select&lt;/code&gt;. Unless you want&#xA;to define additional methods for &lt;code&gt;select&lt;/code&gt;, this is pretty much&#xA;all you need from this library.  See the &lt;a href=&#34;https://lisp-stat.github.io/select/&#34;&gt;API reference&lt;/a&gt; for&#xA;additional details.&lt;/li&gt;&#xA;&lt;li&gt;An extensible DSL for selecting a subset of valid&#xA;subscripts.  This is useful if, for example, you want to resolve&#xA;column names in a data frame in your implementation of select.&lt;/li&gt;&#xA;&lt;li&gt;A set of utility functions for traversing selections in&#xA;array-like objects.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;It combines the functionality of dplyr&amp;rsquo;s &lt;em&gt;slice&lt;/em&gt;, &lt;em&gt;select&lt;/em&gt; and &lt;em&gt;sample&lt;/em&gt; methods.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQLDF</title>
      <link>/docs/manuals/sqldf/</link>
      <pubDate>Sun, 07 Mar 2021 00:00:00 +0000</pubDate>
      <guid>/docs/manuals/sqldf/</guid>
      <description>&lt;h2 id=&#34;Overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;sqldf&lt;/code&gt; is a library for querying data in a &lt;code&gt;data-frame&lt;/code&gt; using&#xA;SQL, optimised for memory consumption.  Any query that can be done in&#xA;SQL can also be done in the API, but since SQL is widely known, many&#xA;developers find it more convenient to use.&lt;/p&gt;&#xA;&lt;p&gt;To use SQL to query a data frame, the developer uses the &lt;code&gt;sqldf&lt;/code&gt;&#xA;function, using the data frame name (converted to SQL identifier&#xA;format) in place of the table name.  &lt;code&gt;sqldf&lt;/code&gt; will automatically create&#xA;an in-memory SQLite database, copy the contents of the data frame to&#xA;it, perform the query, return the results as a new data frame and&#xA;delete the database.  We have tested this with data frames of 350K&#xA;rows and there is no noticeable difference in performance compared to&#xA;API based queries.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Statistics</title>
      <link>/docs/manuals/statistics/</link>
      <pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/docs/manuals/statistics/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;The statistics system is organised in three layers.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;stat-generics&lt;/code&gt; defines the shared generic functions — &lt;code&gt;mean&lt;/code&gt;, &lt;code&gt;variance&lt;/code&gt;,&#xA;&lt;code&gt;standard-deviation&lt;/code&gt;, &lt;code&gt;quantile&lt;/code&gt;, &lt;code&gt;quantiles&lt;/code&gt;, &lt;code&gt;median&lt;/code&gt;, &lt;code&gt;mode&lt;/code&gt;, and &lt;code&gt;modes&lt;/code&gt; —&#xA;together with the weight type hierarchy.  Neither package contains standalone&#xA;implementations; they provide the protocol that other implementation packages&#xA;specialise.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;batch-statistics&lt;/code&gt; provides methods on those generics specialised on fully&#xA;realised Common Lisp sequences, together with additional descriptive functions&#xA;that have no natural streaming equivalent.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Special Functions</title>
      <link>/docs/resources/special-functions/</link>
      <pubDate>Sun, 07 Mar 2021 00:00:00 +0000</pubDate>
      <guid>/docs/resources/special-functions/</guid>
      <description>&lt;p&gt;The library assumes working with 64 bit double-floats. It will&#xA;probably work with single-float as well. Whilst we would prefer to&#xA;implement the complex domain, the majority of the sources do&#xA;not. Tabled below are the special function implementations and their&#xA;source. This library has a focus on high accuracy double-float&#xA;calculations using the latest algorithms.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;function&lt;/th&gt;&#xA;          &lt;th&gt;source&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;erf&lt;/td&gt;&#xA;          &lt;td&gt;libm&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;erfc&lt;/td&gt;&#xA;          &lt;td&gt;libm&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;inverse-erf&lt;/td&gt;&#xA;          &lt;td&gt;Boost&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;inverse-erfc&lt;/td&gt;&#xA;          &lt;td&gt;Boost&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;log-gamma&lt;/td&gt;&#xA;          &lt;td&gt;libm&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;gamma&lt;/td&gt;&#xA;          &lt;td&gt;Cephes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;incomplete-gamma&lt;/td&gt;&#xA;          &lt;td&gt;Boost&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;error-rates&#34;&gt;Error rates&lt;/h2&gt;&#xA;&lt;p&gt;The following table shows the peak and mean errors using Boost test&#xA;data. Tests run on MS Windows 10 with SBCL 2.0.10. Boost results taken&#xA;from the Boost &lt;a href=&#34;https://www.boost.org/doc/libs/1_69_0/libs/math/doc/html/math_toolkit/sf_erf/error_function.html&#34;&gt;error function,&#xA;&lt;/a&gt;&lt;a href=&#34;https://www.boost.org/doc/libs/1_68_0/libs/math/doc/html/math_toolkit/sf_erf/error_inv.html&#34;&gt;inverse&#xA;error&#xA;function&lt;/a&gt;&#xA;and&#xA;&lt;a href=&#34;https://www.boost.org/doc/libs/1_74_0/libs/math/doc/html/math_toolkit/sf_gamma/lgamma.html&#34;&gt;log-gamma&lt;/a&gt;&#xA;pages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Code Repository</title>
      <link>/docs/resources/xlisp/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/resources/xlisp/</guid>
      <description>&lt;p&gt;Below is a partial list of the consolidated XLispStat packages from&#xA;UCLA and CMU repositories.  There is a great deal more XLispStat code&#xA;available that was not submitted to these archives, and a search for&#xA;an algorithm or technique that includes the term &amp;ldquo;xlispstat&amp;rdquo; will&#xA;often turn up interesting results.&lt;/p&gt;&#xA;&lt;h2 id=&#34;artificial-intelligence&#34;&gt;Artificial Intelligence&lt;/h2&gt;&#xA;&lt;h3 id=&#34;genetic-programming&#34;&gt;Genetic Programming&lt;/h3&gt;&#xA;&lt;dl&gt;&#xA;&lt;dt&gt;&lt;a href=&#34;https://github.com/Lisp-Stat/xls-archive/tree/master/ai/genetic/cerebrum/&#34;&gt;Cerebrum&lt;/a&gt;&lt;/dt&gt;&#xA;&lt;dd&gt;A Framework for the Genetic Programming of Neural Networks. Peter&#xA;Dudey. No license specified.&lt;br/&gt;&#xA;[&lt;a href=&#34;https://github.com/Lisp-Stat/xls-archive/tree/master/ai/genetic/cerebrum/cerebrum.doc&#34;&gt;Docs&lt;/a&gt;]&lt;/dd&gt;&#xA;&lt;dt&gt;&lt;a href=&#34;https://github.com/Lisp-Stat/xls-archive/tree/master/ai/genetic/gal/&#34;&gt;GAL&lt;/a&gt;&lt;/dt&gt;&#xA;&lt;dd&gt;Functions useful for experimentation in Genetic Algorithms. It is&#xA;hopefully compatible with Lucid Common Lisp (also known as Sun&#xA;Common Lisp).  The implementation is a &amp;ldquo;standard&amp;rdquo; GA, similar to&#xA;Grefenstette&amp;rsquo;s work.  Baker&amp;rsquo;s SUS selection algorithm is employed, 2&#xA;point crossover is maintained at 60%, and mutation is very low.&#xA;Selection is based on proportional fitness. This GA uses&#xA;generations.  It is also important to note that this GA maximizes.&#xA;William M. Spears. &amp;ldquo;Permission is hereby granted to copy all or any&#xA;part of this program for free distribution, however this header is&#xA;required on all copies.&amp;rdquo;&lt;/dd&gt;&#xA;&lt;dt&gt;&lt;a href=&#34;https://github.com/Lisp-Stat/xls-archive/tree/master/ai/genetic/mGA/&#34;&gt;mGA&lt;/a&gt;&lt;/dt&gt;&#xA;&lt;dd&gt;A Common Lisp Implementation of a Messy Genetic Algorithm. No&#xA;license specified. &lt;br/&gt;&#xA;[&lt;a href=&#34;https://github.com/Lisp-Stat/xls-archive/tree/master/ai/genetic/mGA/messyGA_in_C.pdf&#34;&gt;Docs&lt;/a&gt;,&#xA;&lt;a href=&#34;https://github.com/Lisp-Stat/xls-archive/tree/master/ai/genetic/mGA/errata.pdf&#34;&gt;errata&lt;/a&gt;]&lt;/dd&gt;&#xA;&lt;/dl&gt;&#xA;&lt;h3 id=&#34;machine-learning&#34;&gt;Machine Learning&lt;/h3&gt;&#xA;&lt;dl&gt;&#xA;&lt;dt&gt;&lt;a href=&#34;https://github.com/Lisp-Stat/xls-archive/tree/master/ai/machine-learning/ml-progs/&#34;&gt;Machine Learning&lt;/a&gt;&lt;/dt&gt;&#xA;&lt;dd&gt;Common Lisp files for various standard inductive learning algorithms&#xA;that all use the same basic data format and same interface.  It also&#xA;includes automatic testing software for running learning curves that&#xA;compare multiple systems and utilities for plotting and&#xA;statistically evaluating the results. Included are:&lt;/dd&gt;&#xA;&lt;/dl&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;AQ:&#x9;&#x9;Early DNF learner.&lt;/li&gt;&#xA;&lt;li&gt;Backprop: &#x9;The standard multi-layer neural-net learning method.&lt;/li&gt;&#xA;&lt;li&gt;Bayes Indp:     Simple naive or &amp;ldquo;idiot&amp;rsquo;s&amp;rdquo; Bayesian classifier.&lt;/li&gt;&#xA;&lt;li&gt;Cobweb:   &#x9;A probabilistic clustering system.&lt;/li&gt;&#xA;&lt;li&gt;Foil:           A first-order Horn-clause learner (Prolog and Lisp versions).&lt;/li&gt;&#xA;&lt;li&gt;ID3:            Decision tree learner with a number of features.&lt;/li&gt;&#xA;&lt;li&gt;KNN:   &#x9;&#x9;K nearest neighbor (instance-based) algorithm.&lt;/li&gt;&#xA;&lt;li&gt;Perceptron:&#x9;Early one-layer neural-net algorithm.&lt;/li&gt;&#xA;&lt;li&gt;PFOIL:          Propositional version of FOIL for learning DNF.&lt;/li&gt;&#xA;&lt;li&gt;PFOIL-CNF:      Propositional version of FOIL for learning CNF.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Raymond J. Mooney. &amp;ldquo;This program may be freely copied, used, or&#xA;modified provided that this copyright notice is included in each copy&#xA;of this code and parts thereof.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contributor License Agreement</title>
      <link>/docs/contributing/cla/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contributing/cla/</guid>
      <description>&lt;p&gt;First, if you are contributing on behalf of your employer, ensure you&#xA;have signed a &lt;a href=&#34;/docs/contributing/#contributor-license-agreement&#34;&gt;contributor license&#xA;agreement&lt;/a&gt;. Then&#xA;follow these steps for contributing to Lisp-Stat:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Step 1: &lt;a href=&#34;/docs/contributing/cla/#get-source-code&#34;&gt;Get source code&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Step 2: Get approval and &lt;a href=&#34;/docs/contributing/cla/#modify-the-source&#34;&gt;modify the source code&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Step 3: Get your &lt;a href=&#34;/docs/contributing/cla/#code-review&#34;&gt;code reviewed&lt;/a&gt; and committed to the project.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You may also be interested in the &lt;a href=&#34;/docs/contributing/cla/#additional-info&#34;&gt;additional&#xA;information&lt;/a&gt; at the end of this document.&lt;/p&gt;&#xA;&lt;h2 id=&#34;contributor-license-agreement&#34;&gt;Contributor License Agreement&lt;/h2&gt;&#xA;&lt;p&gt;Contributor License Agreements (CLAs) are common and accepted in open&#xA;source projects.  We all wish for Lisp-Stat to be used and distributed&#xA;as widely as possible, and for its users to be confident about the&#xA;origins and continuing existence of the code.  The CLA help us achieve&#xA;that goal. Although common, many in the Lisp community are unaware of&#xA;CLAs or their importance.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contributing to Documentation</title>
      <link>/docs/contributing/docs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contributing/docs/</guid>
      <description>&lt;p&gt;Creating and updating documentation is a great way to learn. You will&#xA;not only become more familiar with Common Lisp, you have a chance to&#xA;investigate the internals of all parts of a statistical system.&lt;/p&gt;&#xA;&lt;p&gt;We use &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; to format and generate the website,&#xA;the &lt;a href=&#34;https://github.com/google/docsy&#34;&gt;Docsy&lt;/a&gt; theme for styling and&#xA;site structure, and &lt;a href=&#34;https://www.netlify.com/&#34;&gt;Netlify&lt;/a&gt; to manage the&#xA;deployment of the documentation site (what you are reading now).  Hugo&#xA;is an open-source static site generator that provides us with&#xA;templates, content organisation in a standard directory structure, and&#xA;a website generation engine. You write the pages in Markdown (or HTML&#xA;if you want), and Hugo wraps them up into a website.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contribution Ideas</title>
      <link>/docs/contributing/ideas/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contributing/ideas/</guid>
      <description>&lt;h2 id=&#34;special-functions&#34;&gt;Special Functions&lt;/h2&gt;&#xA;&lt;p&gt;The functions underlying the statistical distributions require skills&#xA;in numerical programming. If you like being &amp;lsquo;close to the metal&amp;rsquo;, this&#xA;is a good area for contributions. Suitable for medium-advanced level&#xA;programmers. In particular we need implementations of:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;gamma&lt;/li&gt;&#xA;&lt;li&gt;incomplete gamma (upper &amp;amp; lower)&lt;/li&gt;&#xA;&lt;li&gt;inverse incomplete gamma&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This work is partially complete and makes a good starting point for&#xA;someone who wants to make a substantial contribution.&lt;/p&gt;&#xA;&lt;h2 id=&#34;documentation&#34;&gt;Documentation&lt;/h2&gt;&#xA;&lt;p&gt;Better and more documentation is always welcome, and a great way to&#xA;learn. Suitable for beginners to Common Lisp or statistics.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Environment Setup</title>
      <link>/docs/contributing/setup/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/contributing/setup/</guid>
      <description>&lt;p&gt;The first thing you&amp;rsquo;ll need to decide is what IDE you want to use.  Traditionally Common Lisp developers use emacs and a connection to lisp like slime/swank for an interactive experience.  However emacs, whilst powerful, presents a steep learning curve, so if you prefer a GUI based IDE you should start there.  For detailed instructions, see the following from the &lt;a href=&#34;https://lispcookbook.github.io/cl-cookbook/&#34;&gt;cl-cookbook&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lispcookbook.github.io/cl-cookbook/getting-started.html&#34;&gt;Getting started&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lispcookbook.github.io/cl-cookbook/getting-started.html#install-an-implementation&#34;&gt;How to install a Common Lisp implementation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lispcookbook.github.io/cl-cookbook/getting-started.html#start-a-repl&#34;&gt;How to start a Lisp REPL&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lispcookbook.github.io/cl-cookbook/getting-started.html#libraries&#34;&gt;How to install third-party libraries with Quicklisp&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lispcookbook.github.io/cl-cookbook/getting-started.html#working-with-projects&#34;&gt;How to work with projects&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lispcookbook.github.io/cl-cookbook/editor-support.html&#34;&gt;Editor support&lt;/a&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lispcookbook.github.io/cl-cookbook/emacs-ide.html&#34;&gt;Using Emacs as an IDE&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lispcookbook.github.io/cl-cookbook/editor-support.html#lispworks-proprietary&#34;&gt;The LispWorks IDE&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lispcookbook.github.io/cl-cookbook/vscode-alive.html&#34;&gt;Using VSCode with Alive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/array-operations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/array-operations/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/array-operations&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/array-operations&#34;&gt;https://lisp-stat.github.io/array-operations&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/data-frame/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/data-frame/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/data-frame&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/data-frame&#34;&gt;https://lisp-stat.github.io/data-frame&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/dfio/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/dfio/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/dfio&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/dfio&#34;&gt;https://lisp-stat.github.io/dfio&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/cephes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/cephes/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/cephes.cl/&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/cephes.cl/&#34;&gt;https://lisp-stat.github.io/cephes.cl/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/lla/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/lla/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/lla&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/lla&#34;&gt;https://lisp-stat.github.io/lla&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/linear-algebra/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/linear-algebra/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/linear-algebra/&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/linear-algebra/&#34;&gt;https://lisp-stat.github.io/linear-algebra/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/lisp-stat/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/lisp-stat/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/lisp-stat&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/lisp-stat&#34;&gt;https://lisp-stat.github.io/lisp-stat&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/numerical-utilities/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/numerical-utilities/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/numerical-utilities/&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/numerical-utilities/&#34;&gt;https://lisp-stat.github.io/numerical-utilities/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/select/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/select/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/select&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/select&#34;&gt;https://lisp-stat.github.io/select&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/special-functions/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/special-functions/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/special-functions&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/special-functions&#34;&gt;https://lisp-stat.github.io/special-functions&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title></title>
      <link>/docs/reference/statistics/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/reference/statistics/</guid>
      <description>&lt;script type=&#34;text/javascript&#34;&gt;&#xA;    function resizeIframe(iframe) {&#xA;      iframe.height = iframe.contentWindow.document.body.scrollHeight + &#34;px&#34;;&#xA;    }&#xA;  &lt;/script&gt;  &#xA;&#xA;&lt;iframe id=&#34;iframe-id&#34; src=&#34;https://lisp-stat.github.io/statistics&#34; width=&#34;100%&#34; name=&#34;iframe-name&#34; style=&#34;min-height:98vh; border:none;&#34; onload=&#34;resizeIframe(this)&#34; referrerpolicy=&#34;no-referrer&#34;&gt;&#xA;  &lt;p&gt;Your browser can not display embedded frames. You can access the embedded page via the following link: &lt;a href=&#34;https://lisp-stat.github.io/statistics&#34;&gt;https://lisp-stat.github.io/statistics&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title>Getting Started</title>
      <link>/blog/2026/03/09/getting-started/</link>
      <pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate>
      <guid>/blog/2026/03/09/getting-started/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s never been easy for a developer to get started in Common Lisp. Emacs, though a powerful editor, isn&amp;rsquo;t considered an IDE by modern standards.  Setting up a compiler, quicklisp, slime, swank, and then learning an entirely new programming paradigm has scared off many would-be entrants to the Common Lisp community.&lt;/p&gt;&#xA;&lt;p&gt;Given the size of the Common Lisp community this is understandable. Making the new user experience smooth and frictionless as possible is &lt;em&gt;hard work&lt;/em&gt;.  It&amp;rsquo;s the kind of work that no one volunteers for; it&amp;rsquo;s the kind of work you have to be &lt;em&gt;paid&lt;/em&gt; for.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing Quick Plot: ggplot-Style Plotting for Lisp-Stat</title>
      <link>/blog/2026/02/21/introducing-quick-plot-ggplot-style-plotting-for-lisp-stat/</link>
      <pubDate>Sat, 21 Feb 2026 00:00:00 +0000</pubDate>
      <guid>/blog/2026/02/21/introducing-quick-plot-ggplot-style-plotting-for-lisp-stat/</guid>
      <description>&lt;p&gt;Today we&amp;rsquo;re releasing &lt;code&gt;quick-plot&lt;/code&gt;, a new system for Lisp-Stat that bring ggplot2-style composable plotting to Common Lisp.  &lt;code&gt;plot/vega&lt;/code&gt; is able to render any Vega-Lite specification (&lt;a href=&#34;/docs/cookbooks/plotting/&#34;&gt;here&amp;rsquo;s 50 examples&lt;/a&gt;), but it can at times be a bit wordy constructing the nested plists by hand.&lt;/p&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Instead of specifying each plot in detail, &lt;code&gt;quick-plot&lt;/code&gt; provides a set of helper functions that work similarly to &lt;code&gt;geom&lt;/code&gt; in ggplot. Essentially we borrow ggplot&amp;rsquo;s concept of a plot as a composition of independent layers (which is what Vega-Lite does anyway), each with one concern:&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023 End of Year Summary</title>
      <link>/blog/2023/12/29/2023-end-of-year-summary/</link>
      <pubDate>Fri, 29 Dec 2023 00:00:00 +0000</pubDate>
      <guid>/blog/2023/12/29/2023-end-of-year-summary/</guid>
      <description>&lt;p&gt;We started the year by working through the &lt;a href=&#34;https://github.com/Lisp-Stat/IPS9&#34;&gt;examples from the first chapter of the Introduction to the Practice of Statistics&lt;/a&gt;.  Whilst this is an excellent test for Lisp-Stat, Chapter 2 presented some major challanges to the plotting system, so the highlight for this year is Plot 2.0.  This is a breaking change, however the fix for plots is relatively simple.&lt;/p&gt;&#xA;&lt;p&gt;The updates for 2023 include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/Lisp-Stat/IPS9/blob/master/notebooks/Part%20I/Chapter%201%20Looking%20at%20Data.ipynb&#34;&gt;IPS Chapter 1&lt;/a&gt; complete&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/Lisp-Stat/IPS9/blob/master/notebooks/Part%20I/Chapter%202%20Data%20Relationships.ipynb&#34;&gt;IPS Chapter 2&lt;/a&gt; plotting&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/docs/manuals/data-frame/#sampling&#34;&gt;Sampling&lt;/a&gt; data frames&lt;/li&gt;&#xA;&lt;li&gt;Adopted &lt;a href=&#34;https://github.com/Symbolics/cl-gists&#34;&gt;cl-gists&lt;/a&gt; so we can work with the Vega eco-system on Github&lt;/li&gt;&#xA;&lt;li&gt;Added &lt;a href=&#34;https://github.com/Lisp-Stat/lla&#34;&gt;Lisp Linear Algebra&lt;/a&gt;, CFFI wrappers for BLAS and LAPACK&lt;/li&gt;&#xA;&lt;li&gt;Improved tutorials, examples and documentation&lt;/li&gt;&#xA;&lt;li&gt;Plot 2.0&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/Lisp-Stat/smoothers&#34;&gt;Smoothers&lt;/a&gt; for non-parametric regression&lt;/li&gt;&#xA;&lt;li&gt;Plot helpers for qq-plots and scatterplots&lt;/li&gt;&#xA;&lt;li&gt;New data sources: named data sets, URLs, embedded&lt;/li&gt;&#xA;&lt;li&gt;Publish plots to Github gists&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;/docs/tutorials/plotting/#vega-edit&#34;&gt;Edit plots in Vega Edit online editor&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Fully support multi-layer, multi-data set plotting&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Introduction to the Practice of Statistics</title>
      <link>/blog/2023/02/05/introduction-to-the-practice-of-statistics/</link>
      <pubDate>Sun, 05 Feb 2023 00:00:00 +0000</pubDate>
      <guid>/blog/2023/02/05/introduction-to-the-practice-of-statistics/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://github.com/Lisp-Stat/IPS9&#34;&gt;examples from the first chapter of the book&lt;/a&gt; are now completed.  This chapter focuses mostly on graphics, and the examples here supplement those in the &lt;a href=&#34;/docs/examples/plotting/&#34;&gt;plotting examples&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>2022 Release</title>
      <link>/blog/2022/07/19/2022-release/</link>
      <pubDate>Tue, 19 Jul 2022 00:00:00 +0000</pubDate>
      <guid>/blog/2022/07/19/2022-release/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;This release is the third major refactoring of Lisp-Stat, with&#xA;particular emphasis on plotting.  I have attempted to make plotting as&#xA;easy in Lisp-Stat as it is in&#xA;&lt;a href=&#34;https://vega.github.io/vega-lite/&#34;&gt;Vega-Lite&lt;/a&gt;, upon which it is&#xA;based.  In addition, much clean-up and polishing of sharp edges has&#xA;taken place as a result of using Lisp-Stat on real-world projects.&lt;/p&gt;&#xA;&lt;p&gt;As always, comments and contributions are welcome.&lt;/p&gt;&#xA;&lt;h2 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s New&lt;/h2&gt;&#xA;&lt;h3 id=&#34;lisp-stat&#34;&gt;Lisp-Stat&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Data loading functions akin to R&amp;rsquo;s&#xA;&lt;a href=&#34;https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/data&#34;&gt;data&lt;/a&gt;&#xA;function. You can now load the Lisp-Stat data sets with this&#xA;function, e.g. &lt;code&gt;(data :mtcars)&lt;/code&gt;.  The mechanism is extensible for&#xA;add on packages to use as well.&lt;/li&gt;&#xA;&lt;li&gt;Additional cleansed and annotated data sets included.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;plot&#34;&gt;Plot&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The plotting system has been completely reworked. For example, to&#xA;create a scatter plot of horsepower vs. miles per gallon:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;asdf:load-system&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;:plot/vega&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;data&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;:vgcars&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;plot:plot&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#b8860b&#34;&gt;vega:defplot&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;hp-mpg&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#666&#34;&gt;`&lt;/span&gt;(&lt;span style=&#34;color:#b8860b&#34;&gt;:title&lt;/span&gt; &lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;Horsepower vs. MPG&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#b8860b&#34;&gt;:data&lt;/span&gt; (&lt;span style=&#34;color:#b8860b&#34;&gt;:values&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;,&lt;/span&gt;&lt;span style=&#34;color:#b8860b&#34;&gt;vgcars&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#b8860b&#34;&gt;:mark&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;:point&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#b8860b&#34;&gt;:encoding&lt;/span&gt; (&lt;span style=&#34;color:#b8860b&#34;&gt;:x&lt;/span&gt; (&lt;span style=&#34;color:#b8860b&#34;&gt;:field&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;vgcars:horsepower&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;           &lt;span style=&#34;color:#b8860b&#34;&gt;:y&lt;/span&gt; (&lt;span style=&#34;color:#b8860b&#34;&gt;:field&lt;/span&gt; &lt;span style=&#34;color:#b8860b&#34;&gt;vgcars:miles-per-gallon&lt;/span&gt;)))))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div id=&#39;blog-hp-mpg&#39;&gt;&lt;/div&gt;&#xA;&lt;script type=&#34;text/javascript&#34;&gt;&#xA;  &#xA;  &#xA;  var spec = &#39;\/plots\/hp-mpg.vl.json&#39;;&#xA;  &#xA;  var embedOptions = { };&#xA;  &#xA;  vegaEmbed(&#39;#blog-hp-mpg&#39;, spec, embedOptions).then(function(result) {&#xA;    &#xA;  }).catch(console.error);&#xA;&lt;/script&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;50+ new &lt;a href=&#34;/docs/examples/plotting/&#34;&gt;plotting examples&lt;/a&gt; for&#xA;commonly used statistical plots, along with a &lt;a href=&#34;/docs/tutorials/plotting/&#34;&gt;plotting&#xA;tutorial&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;data-frame&#34;&gt;Data-frame&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Paid technical debt, refactored, made ready for future progress.&lt;/li&gt;&#xA;&lt;li&gt;Added &lt;code&gt;filter-rows&lt;/code&gt;, &lt;code&gt;remove-columns&lt;/code&gt;, &lt;code&gt;remove-columns!&lt;/code&gt; and &lt;code&gt;rename-column!&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Improved unit tests.&lt;/li&gt;&#xA;&lt;li&gt;Added column types: &lt;code&gt;categorical&lt;/code&gt; (factor) and &lt;code&gt;temporal&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Improved error handling, conditions and restarts.&lt;/li&gt;&#xA;&lt;li&gt;Working prototypes for &lt;code&gt;stack&lt;/code&gt;, &lt;code&gt;split-apply-combine&lt;/code&gt;, &lt;code&gt;sort&lt;/code&gt; operations.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;array-operations&#34;&gt;Array Operations&lt;/h3&gt;&#xA;&lt;p&gt;Array operations has been rehomed and now lives in the Lisp-Stat&#xA;github organisation.  Significant improvements to&#xA;&lt;a href=&#34;/docs/manuals/array-operations/&#34;&gt;documentation&lt;/a&gt; over the previous&#xA;repository.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Statistical Analysis with Lisp-Stat</title>
      <link>/blog/2021/05/09/statistical-analysis-with-lisp-stat/</link>
      <pubDate>Sun, 09 May 2021 00:00:00 +0000</pubDate>
      <guid>/blog/2021/05/09/statistical-analysis-with-lisp-stat/</guid>
      <description>&lt;p&gt;Lisp-Stat is the culmination of many months work to pull together the&#xA;best-in-class statistical analysis packages available in Common Lisp,&#xA;under a commercially friendly license, usable ‘out of the box’.  It is&#xA;an environment for statistical computing, conceptually similar to R,&#xA;that is also suitable for front-line production deployments.  It grew&#xA;out of a desire to have an environment for rapidly prototyping&#xA;analytical and A.I. solutions, and move directly to production&#xA;environments with minimal friction.  Typically there is a gap between&#xA;the modeling environment, perhaps R or Python, and the delivery&#xA;environment. Lisp-Stat closes that gap.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Data Protection Notice</title>
      <link>/privacy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/privacy/</guid>
      <description>&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;This Data Protection Notice (“Notice”) sets out the basis which&#xA;Symbolics Pte Ltd (“we”, “us”, or “our”) may collect, use, disclose or&#xA;otherwise process personal data of our customers in accordance with&#xA;the Personal Data Protection Act (“PDPA”). This Notice applies to&#xA;personal data in our possession or under our control, including&#xA;personal data in the possession of organisations which we have engaged&#xA;to collect, use, disclose or process personal data for our purposes.&#xA;&lt;h3 id=&#34;personal-data&#34;&gt;Personal Data&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;As used in this Notice:&#xA;“customer” means an individual who (a) has contacted us through any means to find out more&#xA;about any goods or services we provide, or (b) may, or has, entered into a contract with us for&#xA;the supply of any goods or services by us; and&#xA;“personal data” means data, whether true or not, about a customer who can be identified:&#xA;(a) from that data; or (b) from that data and other information to which we have or are likely&#xA;to have access.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search Results</title>
      <link>/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/search/</guid>
      <description></description>
    </item>
  </channel>
</rss>
