累積分布関数(Cummulative Distribution Function)
PMF(Probability Mass Function: 確率質量関数: 正規化されたヒストグラム)ではランダムノイズの影響が大きくなってしまうらしい。(?)
ググってもあんまりパッとわかる説明が見当たらない。
描いてみれば分かるかも。
基本は前回参照
Main.scala
/**
* Created by FScoward on 15/06/01.
*/
import breeze.linalg.{sum, DenseVector}
import breeze.numerics.{sqrt, pow}
import breeze.plot.Figure
import breeze.stats.distributions.Gaussian
import breeze.plot._
object Main {
def main(args: Array[String]): Unit = {
// 例えば10人の生徒がテストでそれぞれ以下の点数を取ったとする。
val dv = DenseVector(61, 74, 55, 85, 68, 72, 64, 80, 82, 59)
// μ: 分布の平均
val mu = sum(dv) / dv.length
// σ: 標準偏差
val sigma = sqrt(sum(dv.map(x => pow(mu - x, 2))) / dv.length)
val figure = Figure()
val gaussian = Gaussian(mu, sigma)
// subplot(m,n,p) は、現在の Figure を m 行 n 列のグリッドに分割し、p で指定された位置のサブプロットに座標軸を作成します
// つまりグラフをどこに配置するかという話。
val p = figure.subplot(0)
// 100点満点
val maxScore = 100
// 100までの増分1のリスト
val counts = 0.0 to maxScore by 1.0
// cdf を出して リストにする
val list = counts.map(gaussian.cdf(_)).toList
p += plot(counts, list, '+')
}
}
グラフ(累積分布関数)
分布の累積を表したものとなる。