gpt4 book ai didi

distribution - PyMC:获得零或接近零的分类似然

转载 作者:行者123 更新时间:2023-12-04 04:08:44 26 4
gpt4 key购买 nike

我正在尝试从随机 Petri 网模型中估计速率。我不明白为什么,但我得到了零概率错误,即使在给定我为速率定义的初始值的情况下,将数据数据与预期的观察次数完全对应。

例如,以下比率 [0.01, 2, 10, 1] 对应于 [0.33, 0.66, 0.01] 3 种不同结果的概率。如果我观察到 100 个结果,我希望观察到 [33, 66, 1] 落入每个结果之内。

然而,如果我运行以下模型,我会得到一个 ZeroProbability 错误(我正在简化 prob 函数,它连接到一个更大的代码段):

data=[33,66,1]
rates=pymc.Uniform('rates',0,100,size=4,value=[0.01,2,10,1])

@pymc.deterministic
def prob(rates=rates):
return np.array([0.33,0.66,0.01])

likelihood=pymc.Categorical('likelihood',p=prob,value=data,observed=True)

调用 pymc.categorical_like(data,prob.value) 返回 -1.8 e308 ...

我错过了什么?

最佳答案

我发现问题是分类分布和多项分布之间的区别。我一直在努力寻找两者之间的实际差异,终于找到了 here :

The categorical distribution is equivalent to a multinomial distribution with the number of trials equal to one.



因此,分类似然仅将不同结果的概率作为参数,并以频率作为观察数据。

另一方面,多项式分布将不同结果的概率和试验次数作为参数,并将每个结果的观察次数作为数据。

以下代码按我的预期工作:

data=np.array([33,66,1])
rates=pymc.Uniform('rates',0,100,size=4,value=[0.01,2,10,1])

@pymc.deterministic
def prob(rates=rates):
return np.array([0.33,0.66,0.01])

likelihood=pymc.Multinomial('likelihood',n=sum(data),p=prob,value=data,observed=True)

并且以下两个概率非常相似:

pymc.categorical_like(data/data.sum(),prob.value)
pymc.multinomial_like(data,sum(data),prob.value)

关于distribution - PyMC:获得零或接近零的分类似然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25908845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com