多项式分布的dmultinom函数R.

时间:2017-02-03 21:40:45

标签: r probability multinomial

函数dmultinom (x, size = NULL, prob, log = FALSE)估计多项分布的概率。但是,它不会以size = 1运行。

理论上,当设置size = 1时,Multinomial分布应该等同于分类分布。

有人知道错误消息的原因吗?

仅供参考,分类分布可以通过dist.Categorical {LaplacesDemon}建模。

示例:

dmultinom(c(1,2,1),size = 1,prob = c(0.3,0.5,0.4))

dmultinom中的错误(c(1,2,1),size = 1,prob = c(0.3,0.5,0.4)):   size!= sum(x)

dcat(c(1,2,1),p = c(0.3,0.5,0.4))

[1] 0.3 0.5 0.3

由于

1 个答案:

答案 0 :(得分:2)

LaplacesDemon::dcatstats::dmultinom执行两项不同的操作。如果您有多个观察dcat采用类别值向量,而dmultinom采用单向量响应,那么您必须构建一个响应矩阵并使用{{1 (或其他)。

apply

(我修改了您的示例,因为您的原始概率library(LaplacesDemon) probs <- c(0.3,0.5,0.2) dcat(c(1,2,1), p = probs) ## ans: 0.3 0.5 0.3 x=matrix(c(1,0,0, 0,1,0, 1,0,0), nrow=3,byrow=TRUE) apply(x,1,dmultinom,size=1, prob=probs) 不等于1 - 函数都没有给出警告,但c(0.3,0.5,0.4)会自动重新调整总和为1)的概率

如果我尝试dmultinom,我会

  

尺寸!= sum(x)

也就是说,dmultinom(c(1,2,1),p=probs, size=1)dmultinom解释为“来自第1组的一个样本,来自第2组的两个样本,来自第3组的1个”,这与总样本数量1不一致...