У меня есть дистрибутив с несколькими горбами. Я хотел бы попробовать подобрать несколько различных типов распределений для каждого горба, гауссовского, экспоненциального, распределения Вейбуйля и т. д. Однако в нынешнем виде кажется, что мне нужно вручную определить стохастический класс для каждой комбинации. То, что я хотел бы сделать, это что-то вроде
@stochastic(model_a, model_b, observed=True)
def mixture(value=observed_time_series, model_a_parameters, model_b_parameters, p):
def logp(value, model_a_parameters, model_b_parameters):
return p*model_a.logp(value, *model_a_parameters) + (1-p)*model_b.logp(value, *model_b_parameters)
def random(model_a_parameters, model_b_paramters, ratio):
if(random() < ratio):
return model_a.random()
return model_b.random()
Возможно ли такое делегирование? Есть ли стандартный способ сделать это? Главное, что остановило бы что-то вроде вышеизложенного, это то, что я не могу придумать никакого способа сгруппировать наборы переменных вместе.