Skip to content

Instantly share code, notes, and snippets.

@ahane
Created December 26, 2013 21:23
Show Gist options
  • Select an option

  • Save ahane/8138882 to your computer and use it in GitHub Desktop.

Select an option

Save ahane/8138882 to your computer and use it in GitHub Desktop.
object GaussianDemo {
def main(args: Array[String]): Unit = {
implicit val model = DirectedModel()
implicit val random = new scala.util.Random(0)
val mean = new DoubleVariable(10)
val variance = new DoubleVariable(1.0)
val data = for (i <- 1 to 1000) yield new DoubleVariable :~ Gaussian(mean, variance)
// data.take(50).foreach(println(_))
val origMean = mean.value
val origVariance = variance.value
// println("Original mean=" + origMean)
// println("Original variance=" + origVariance)
Maximize(mean)
Maximize(variance)
// Or alternatively:
//MaximizeGaussianMean(mean, model)
//MaximizeGaussianVariance(variance, model)
//println("Estimated mean=" + mean.value)
//println("Estimated variance=" + variance.value)
assert(math.abs((mean.value / origMean) - 1.0) < .05, "Mean estimate failed")
assert(math.abs((variance.value / origVariance) - 1.0) < .05, "Variance estimate failed")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment