2

我正在使用带有 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 传递给构造函数,但我找不到关于该类型的太多信息。

有人知道如何在微风中实例化多项式吗?

4

1 回答 1

4

您必须将其包装在 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)

我应该添加对您尝试使用它的方式的支持。

于 2014-05-27T23:31:51.550 回答