我尝试创建一个与scipy中的行为类似的测试版RV。即,它需要alpha
,beta
,loc
和scale
。我跟着关于创建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)
所以我有两个问题:
random
,logp
)?