繁体   English   中英

在Scala和Breeze软件包中使用多项式分布

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM