LaTeXだけで様々な分布関数の値を求める・グラフを描くには

LaTeX では,graphicx パッケージで関数のグラフの画像を貼ることができる.しかし,外部で*1画像ファイルを用意しておくのでなく,LaTeX内だけでグラフを描けないか?次のようなパッケージで,初等関数・三角関数・指数関数・対数関数くらいなら描ける.

グラフが描けるくらいだから,これらの関数の値を求めて,文字列としてタイプセットすることもることもできる.

統計学に現れる正規分布ガウス分布関数は四則演算と指数関数の組合せなのでこの方法で書けるが,その累積分布関数(誤差関数)やその逆関数(分位数関数)は明示的な形では書けないし,専用の関数は用意されていない.さらに,カイ二乗分布,t分布,F分布なども用意されていない*2

では,LuaTeXの一部である lulalatex から呼び出せるスクリプト言語Lua*3ではこれらの関数があるのではと期待するが,実はない.そこで,多くの方がこれを補うLuaの非公式のパッケージを開発している.これらを LuaLaTeX から使うことができる.

Lua-Stats の LuaLaTeX での使用例

\begin{luacode}
  stats = require("stats")
  local result = stats.dChisq(0.5,5)
  --  tex.print(result)
\end{luacode}test

The quantile at $p=0.5$ of the chi-square distribution with df$=5$ 
is \directlua{tex.print(stats.qChisq(0.5,5))}.

https://github.com/hig3r/Lua-Stats/tree/lualatex

https://github.com/hig3r/Lua-Stats/blob/lualatex/lualatex-stats-sample.pdf

tikzpicture 環境ではグラフが描けたが,pgfplots の高レベルの axis 環境では描けていない.

LuaSF の LuaLaTeX での使用例

gist.github.com

Notes

  • Lua-Stats と LuaSF の混在も問題ない.
  • LuaでないLaTeXで,PSTrickを使う方法もある*4

*1:gnuplotMathematicaやLLMで

*2:もちろん特定の母数に対して多項式近似をして値を求めたりグラフを描いたりすることはできる.例 https://tex.stackexchange.com/questions/40908/plotting-the-chi-square-distribution-with-tikz

*3:ゲームや組み込み用途で使われている.ヤマハのルータなど https://www.rtpro.yamaha.co.jp/RT/docs/lua/

*4:pst-func https://tex.stackexchange.com/questions/40908/plotting-the-chi-square-distribution-with-tikz