All Downloads are FREE. Search and download functionalities are using the official Maven repository.

thinkbayes.Pdf.scala Maven / Gradle / Ivy

The newest version!
package thinkbayes

trait Pdf {

  def density(x: Double): Double

  def bounded(lower: Double, upper: Double) = new BoundedPdf {
    def density(x: Double) = Pdf.this.density(x)
    def lowerBound = lower
    def upperBound = upper
  }

  def toPmf(values: TraversableOnce[Double]): Pmf[Double] =
    Pmf(values.map { k => (k, density(k)) }.toMap).normalized
}

trait BoundedPdf extends Pdf {
  def lowerBound: Double
  def upperBound: Double

  def toPmf(step: Double = (upperBound - lowerBound) / 2000): Pmf[Double] =
    toPmf(lowerBound to upperBound by step)
}

object Pdf {

  def apply(densityFunc: Double => Double): Pdf = new Pdf {
    def density(x: Double) = densityFunc(x)
  }

  def apply(lower: Double, upper: Double)(densityFunc: Double => Double) = new BoundedPdf {
    def density(x: Double) = densityFunc(x)
    val lowerBound = lower
    val upperBound = upper
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy