2015-12-17 (Thu) [長年日記]
_ 累積分布関数
Rubyで累積分布関数を扱う方法を調べてみた。 ぐぐったところSciRubyのstatsampleライブラリを使えばいいらしい。
ドキュメントがあまり見当たらないけど、サンプルのhistogram.rbとかを見るとこんな感じで使えばよいようだ。
require "statsample" # テスト用に平均値40、標準偏差10のデータを1000個生成 v = Statsample::Shorthand::rnorm(1000, 40, 10) # 最小値から最大値まで0.5ずつループ v.min.step(v.max, 0.5) do |x| # 値xと、xにおける累積分布値をカンマ区切りで出力 puts [x, Distribution::Normal.cdf((x - v.mean) / v.sd)].join(",") end
Normalのところを変えると正規分布以外も扱えるらしい。
LibreOfficeのNORMDIST()関数の結果と比べると一致したのでたぶん合ってると思うけど、使い方が間違ってたら教えてください。