函数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
由于
答案 0 :(得分:2)
LaplacesDemon::dcat
和stats::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不一致...