[英]Using Multinomial Distribution with Scala and Breeze package
我在带有Scala 2.10.3的微风包中使用,我想从多项分布中进行采样。
即我想对随机变量Y的值进行采样,其中
Y ~ Multinomial(Y1 = 0, Y2 = 1, Y3 = 3; p1 = 0.2, p2 = 0.5, p3 = 0.3)
我在实例化Multinomial类的实例时遇到了麻烦,因为我无法从文档中辨别应该如何提供参数。
我以为是这样的
import breeze.stats.distributions._
var x = new Multinomial(0.2,0.5,0.3)
x.draw()
但是,当我尝试以这种方式提供参数时,出现以下错误:
scala> var x = new Multinomial(0.2,0.5,0.3)
<console>:10: error: No implicit view available from (Double, Double, Double) => breeze.linalg.QuasiTensor[I,Double].
Multinomial类的文档说,分布的参数应该作为类型T传递给构造函数,但是我找不到关于该类型的太多信息。
有人知道如何在微风中实例化多项式吗?
您必须将其包装在DenseVector中。
scala> import breeze.linalg._
import breeze.linalg._
scala> val mult = Multinomial(DenseVector(0.2,0.5,0.3))
mult: breeze.stats.distributions.Multinomial[breeze.linalg.DenseVector[Double],Int] = Multinomial{(0,0.2),(1,0.5),(2,0.3)}
scala> mult.sample(100)
res1: IndexedSeq[Int] = Vector(0, 1, 1, 2, 1, 1, 1, 1, 0, 2, 0, 0, 0, 2, 2, 1, 2, 2, 0, 1, 2, 1, 0, 1, 1, 2, 1, 1, 1, 2, 2, 2, 0, 0, 2, 1, 1, 1, 0, 1, 1, 2, 0, 0, 1, 1, 1, 1, 1, 1, 2, 0, 2, 2, 0, 2, 0, 1, 0, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 0, 1, 1, 1, 2, 0, 2, 1, 0, 1, 1, 1, 0, 0, 0, 2, 1, 2, 0, 0, 1, 2, 2, 0, 2, 1, 1, 0, 1, 2, 2)
我应该增加对您尝试使用它的方式的支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.