gpt4 book ai didi

python - 在 pymc3 中创建一个移动和缩放的 Beta

转载 作者:太空宇宙 更新时间:2023-11-04 04:48:53 25 4
gpt4 key购买 nike

我正在尝试创建一个行为类似于 scipy 中的测试版 RV .即,它采用 alphabetalocscale。我关注了关于创建 shifted gamma 的讨论, 并想出了一个看起来像这样的东西:

import pymc3 as pm

class SSBeta(pm.Beta):
def __init__(self, alpha, beta, loc, scale, *args, **kwargs):

# Not sure what this is doing but it won't work without it.
transform = pm.distributions.transforms.lowerbound(loc)

super().__init__(alpha=alpha, beta=beta, *args, **kwargs, transform=transform)

self.scale = scale
self.loc = loc
self.mean += loc

def random(self):
return super().random()*self.scale + self.loc

def logp(self, x):
return super().logp((x - self.loc)/self.scale)

所以我有两个问题:

  • 这个实现是否正确(randomlogp)?
  • 类顶部转换的目的是什么?我在文档中找不到任何有用的东西,代码也没有多大帮助。

最佳答案

另一种方法是使用 pm.Deterministic。这不允许您传递观察到的数据,但无论如何可能是您想要的?

mu, scale = 2, 4
with pm.Model():
b = pm.Beta('b', alpha=3, beta=8)
shifted_b = pm.Deterministic('shifted_b', scale * b + mu)

enter image description here

关于python - 在 pymc3 中创建一个移动和缩放的 Beta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48857941/

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