问题标签 [multinomial]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1498 浏览

python - PyMC 中的多项分布

我是pymc的新手。我已经在 github 上阅读了所需的东西,并且在我遇到这个问题之前做得很好。我想制作一个多项式随机变量的集合,以后可以使用 mcmc 对其进行采样。但我能做的最好的就是

但这不好,因为我希望能够调用rv.valueand rv.random(),否则我将无法从中采样。

count 是一个非 ve 整数列表,每个整数表示该分布的 n 值,例如。一个可能的计数可以是[26, 39, 20, 10]

p_d 是凹陷概率的列表。例如,一个可能的 p_d 可以是[[0.7, 0.3], [0.5, 0.1, 0.4], [0.4, 0.6], [0.8, 0.2]]

for 循环没有用。他们只是表明组件是多项式随机变量,但我认为我不能将组件与 mcmc 一起使用来获得后验分布。我需要一些方法来将 mcmc 与 rv 一起使用。

如果有人可以告诉我一些函数,比如 pymc 中的 numpy.array() (将列表转换为 numpy 数组),它可以将列表转换为我想要的东西,那将是非常好的。(很抱歉,我无法用科学术语表达,但我已尽量让自己清楚)如果有人需要更多信息,请告诉我。

编辑 1

我有几个游戏的数据,例如[8, 8, 10]。它表示当这个游戏玩了 26 次时,P1(玩家 1)采取了 A1(行动 1)8 次,A2 8 次,A3 10 次。

(在不同的游戏中可以有不同的动作数。在这个结果为 的例子中[8, 8, 10],有 3 个动作)

我有大约 200 个这样的数据(以列表/numpy 数组的形式)

我相信多项分布最能描述数据。

所以我写了一个确定性函数,给定一个均匀分布的随机变量tau,在这些动作上生成概率分布,例如,在这种情况下,说[0.16, 0.28, 0.56]

你看,我有 200 个这样的列表,每一个都表示该游戏中动作的概率分布。我还有一个包含 200 个整数(可能不同)的列表,每个整数表示玩游戏的次数(我通过对数据求和获得,例如,有数据的游戏[8, 8, 10,]玩了 26 次)。

现在给定观察到的数据(例如 200 个列表的列表[[8, 8, 10], [0, 0, 0], ....., [12, 3]]),我想绘制 tau 的后验概率分布(我最初假设它是均匀的)

0 投票
1 回答
985 浏览

scala - 将多项分布与 Scala 和 Breeze 包一起使用

我正在使用带有 Scala 2.10.3 的微风包,我想从多项分布中采样。

即我想对随机变量 Y 的值进行采样,其中

我无法实例化 Multinomial 类的实例,因为我无法从文档中辨别出我应该如何提供参数。

我想这就像

但是当我尝试以这种方式提供参数时,我收到以下错误:

Multinomial 类的文档说分布的参数应该作为类型 T 传递给构造函数,但我找不到关于该类型的太多信息。

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

0 投票
1 回答
144 浏览

python - PyMC 中的 MAP 出现意外错误

我不明白为什么 MAP 在相同场景下 MCMC 工作正常时会出错?我写在代码的相关部分下面。

tau = Uniform('tau', lower=0.01, upper=5, doc='tau') rv = [ Multinomial("rv"+str(i), count[i], prob_distribution[i], value = data[i], observed =True) for i in xrange(0, len(count)) ] M = MAP([rv, tau]) M.fit() tau_hat = M.tau.value()

错误:AttributeError:“MAP”对象没有属性“tau”(对于最后一行 M.tau.value())

另一方面,如果我使用 MCMC 代替 MAP,它可以正常工作:

m = MCMC([tau, rv]) m.sample(iter = 500) print m.trace('tau')

我想要后验概率最大的 tau 点估计,并将其与贝叶斯预测(我使用 MCMC)进行比较

关于变量的一些信息:

prob_distribution 是一个确定性函数,在给定 tau 和其他一些信息的情况下,它会返回每个游戏的预测概率分布列表。我有大约 200 个游戏,所以 prob_distribution 是一个包含 200 个列表的列表(每个列表都包含该游戏的动作概率分布,例如[0.4, 0.4, 0.2])。 同样,count 是一个包含 200 个数字的列表,count[i] 表示我th玩游戏的次数。data[i] 是 ith游戏的观察信息,例如如果 data[i] = [10 10 6],count[i] 将为 26

附加说明

如果我包括以下行:

model = Model([rv, tau])

然后不知道我是否使用

M = MAP(model)或者m = MCMC(model)

这会产生如下错误:

TypeError: hasattr(): 属性名必须是字符串

有人可以解释发生了什么吗?

0 投票
1 回答
581 浏览

python - 在 PyMC 中打印跟踪时出现 KeyError

我读过默认情况下某些名称被分配给随机变量。我正在下面写我的代码的相关部分。

最后一行引发错误KeyError: 'parameters_0'有人可以解释为什么会这样。

但如果我使用Matplot.plot(m),我会得到图(我附在下面)。我的印象是键是parameters_0,parameters_1,parameters_2。

有什么方法可以让我知道所有存在痕迹的键吗?

在此处输入图像描述)

0 投票
2 回答
9137 浏览

python - ValueError:无法处理未知和二进制的混合

我最近使用 scikit-learn 进行情绪分析,所以在我训练了我的标记数据然后尝试在未标记的数据集上测试它们之后,出现了这个错误“ValueError:无法处理连续多输出和二进制的混合”

我认为我做错的是我给(y_pred)错误的假设。

错误来自:accuracy = classifier.score(test_matrix,ALL_test)

但是当我将 ALL_test 更改为 ALL_train(经过训练和标记的数据)时,它会带来 0.971251409245 的准确度;这是绝对错误的

我应该怎么办?

0 投票
4 回答
27173 浏览

python - 处理 sklearn MultinomialNB 中的负值

在 sklearn 中运行 MultinomialNB 之前,我正在对文本输入进行规范化,如下所示:

不幸的是,MultinomialNB 不接受在 LSA 阶段创建的非负值。有什么想法可以解决这个问题吗?

0 投票
1 回答
4178 浏览

bayesian - 狄利克雷多项式 WinBUGS 代码

我正在尝试使用 BUGS 编写狄利克雷多项式模型。基本上我有 18 个地区和每个地区 3 个类别。例如,区域 1:0.50 属于 Low,0.30 属于 Middle,0.20 属于 High。该列表当然以不同的比例继续到第 18 区。我得到的唯一代码是这个

例如,我首先将其缩短为 3 个区域。单击“gen inits”后,它会显示“Dirichlet36”。请帮我编写代码。

0 投票
1 回答
1051 浏览

scala - 使用 Scala 和 Breeze 进行无替换采样

是否支持从多项分布中抽样而不进行替换?我在想象某种代码,例如:

,其中最相关的位是传递给 mult.sample() 的“replacement = false”参数。我想确保我对唯一索引进行采样,并且我想这样做而不为每次抽签定义一个新的多项分布。

或者,如果有更好的方法来实现相同的结果,我也很高兴听到这个消息。

0 投票
0 回答
533 浏览

sas - 如何在 SAS 中手动对多项回归数据进行评分?

假设我在 SAS 中运行了多项逻辑回归……因变量有 3 个级别……假设我有一个模型,其中包含一些重要变量的估计值……

如何在 SAS 中手动评分?

有没有一种简单的方法可以做到这一点?

在线性回归中,如果我知道 var1 的估计值为 -0.925,var2 的估计值为 1.23,误差为 -.0543,截距为 2.543,则方程为 Ypred= 2.543+(-0.925)*var1+(1.23)*var2 ; 通过这种方式,我可以对具有 var1 和 var2 的新数据集进行评分并创建 YPred .. 我知道我可以使用 proc 分数并从 proclogistic 输入参数估计值,但是如何手动定义模型方程?

请在这里帮我...

0 投票
0 回答
428 浏览

r - R包multgee——初始值

我正在估计 R 中的广义估计方程。我有一个多项式(序数)结果,所以我一直在尝试使用这个包multgee,因为据我所知,包喜欢geepackgee不允许估计多项式结果。

但是,我遇到了一些问题。文档看起来不错,但特别是,它似乎需要模型中的初始(起始)值。如果我尝试在没有它的情况下运行模型,我会得到一条请求起始值的行。这是模型:

我只是为那里的起始值添加了一些 1 和 0。但是,当我输入起始值(甚至是合理的值)时,它声称:

起始值和参数向量的长度不同

我认为有五个预测变量,我需要五个起始值。我找不到有关此特定矩阵的更多信息。有人对此有任何想法吗?这里的结果有五个级别(序数),重复分量有 20 个级别。任何建议,将不胜感激。