simple-statistics

作成日:2024-12-05
最終更新日:

simple-statistics とは

simple-statistics とは統計量を計算する JavaScript のライブラリである。統計計算や統計処理の JavaScript ライブラリとしては、 この simple-statistics のほかに jStat が広く知られている。

simple-statistics を使うには

simple-statistics(simple-statistics.github.io) のホームページを見ると、 CDN が https://unpkg.com/simple-statistics@7.8.6/dist/simple-statistics.min.js であると書かれている(2024-12-05 現在)。したがって、 HTML の head 部に
<script src='https://unpkg.com/simple-statistics@7.8.6/dist/simple-statistics.min.js'></script> と記述すれば、統計処理の関数群が JavaScript で使えるはずである。しかし、CDN には 7.8.6 は存在しない。現在あるのは 7.8.7 である。 では、上記の 7.8.6 を 7.8.7 に置き換えたらできるだろうか。普通の人はできるだろうが、私にはなぜかできなかった。 ローカルにダウンロードして、そちらを読むようにしたらできた。通信環境のせいだろう。

統計量は、JavaScript の配列を主な対象として算出できる。たとえば、合計を求める ss.sum()、(算術)平均を求める ss.mean() などがある。 頭に ss がついているのは、他のライブラリの関数とバッティングしないようにするためである。

<head>
<script src='https://unpkg.com/simple-statistics@7.8.6/dist/simple-statistics.min.js'></script>
</head>
<body>
...
<script>
console.log(`[1,2,3] の最小値は ${ss.min([1,2,3])} である。`)
</script> ...
</body>

これを画面上に表示させてみた。

以上の方法は、JavaScript が解釈できるすべてのブラウザで可能である。もう一つ、新しいブラウザであれば、 ECMAScript モジュールシステムが使える。これは、次のように使う。

<script type='module'>
import { min } from "https://unpkg.com/simple-statistics@7.8.7/index.js?module"
console.log(`[1,2,3] の最小値は ${min([1,2,3])} である。`)
</script>

<script type='module'> ... </script> で囲まれている中では、ss.min ではなく、min が使える。つまり ss の文字を付ける必要はない。 simple-statistics import された min 関数が優先して使われるのでバッティングしないからだ。

これも画面上に表示させてみた。

数値表を与える関数

simple-statistics で、表で数値が与えられている例は、chiSquaredDistributionTable と standardNormalTable のみである。 前者は表を JavaScript のオブジェクトの初期値で与えているが、後者は表を計算で作っている。

chiSquaredDistributionTable
カイ2乗分布の表。自由度 df と上側確率 α を与えると chiSquaredDistributionTable[df][α] が上側 100 α % 点を与える。
standardNormalTable
標準正規分布(正規分布、Z 分布)の表。z (0 以上 309 以下 の整数)を与えると standardNormalTable[z/100] が `P` を与える。 standardNormalTable[0] = 0.0000, standardNormalTable[309] = 0.499 である。

検定する関数

simple-statistics で、tTest という関数がある。これは `t` の実現値を求める関数だが、`t` 分布を与える関数は simple-statistics では用意されていない。 すなわち、自由度 `nu` の `t` 分布に従う確率変数 `T` の確率密度関数 `f(nu, t)` に関する数値計算の関数は、残念ながら用意されていない。

tTest
`t` 検定(母平均との差の検定)`P` 値 = tTest(データの配列、推定母平均値) で計算する。 配列から計算される標本平均が推定母平均値であるとしてよいかの検定である。 `P` の絶対値が小ならば帰無仮説が棄却されない。大なら帰無仮説が棄却され、不一致となる。 なお、生データがデータの配列の形で与えられず、標本データ数 `n` と標本平均 `sampleMean`、標準偏差 `sd` のみが与えられている場合はこの tTest 関数は使えない。 そのときは、 推定母平均値を expectedValue として、
(sampleMean - expectedValue) / (sd / Math.sqrt(n)) をもって `t` 値とする。

simple-statistics を使ってみたページ

参考

まりんきょ学問所JavaScript 手習い > simple-statistics


MARUYAMA Satosi