У меня возникли небольшие проблемы с переключением пользовательской переменной @stochasitc на переменную @observed в PyMC. У меня есть стохастическая переменная, настроенная следующим образом:
def age_logp(age):
if age < 0 or age > 110:
return -np.inf
elif 0 <= age < 20:
prob = age_dist['0-20']
elif 20 <= age < 40:
prob = age_dist['20-40']
elif 40 <= age < 60:
prob = age_dist['40-60']
elif 60 <= age < 80:
prob = age_dist['60-80']
elif age >= 80:
prob = age_dist['80-inf']
return np.log(prob)
@pymc.stochastic
def age(value=0):
def logp(value):
return age_logp(value)
Как мне переключить это на наблюдаемую переменную? Я пробовал это до сих пор:
@pymc.observed
def age(value=np.array([12, 43, 28, 39, 87, 26])):
return map(age_logp, value)
Но я получаю TypeError: age: computed log-probability [-1.639897119918809, -1.3394107752210402, -1.0876723486297752, -1.0876723486297752, -3.1235656450638758, -1.0876723486297752] cannot be cast to float
Как расширить age
, чтобы получить массив наблюдаемых значений?