LoginSignup
0
0

More than 5 years have passed since last update.

ド素人の統計勉強メモ with Scala ~ 累積分布関数(CDF)編

Last updated at Posted at 2015-06-02

累積分布関数(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, '+')
  }

}

グラフ(累積分布関数)

cdf.png

分布の累積を表したものとなる。

参考資料

Think Stats ―プログラマのための統計入門

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0