Я не могу понять, почему следующий код не может восстановить параметры модели. Этот же метод смог довольно хорошо восстановить параметры в квадратичном c полиноме. Пожалуйста, помогите.
def sin(a,b,c,d,x):
return a + b*np.sin(c*x+d)
x = np.linspace(0,10,1000)
y = sin(0,0.5,0.5,4,x) + np.random.normal(0, 0.05, len(x))
with pm.Model() as model_sin:
a = pm.Uniform('a',-10,10)
b = pm.Uniform('b',-10,10)
c = pm.Uniform('c',-10,10)
d = pm.Uniform('d',-10,10)
epsilon = pm.Exponential('epsilon', 1/30)
mu = sin(a,b,c,d,x)
y_pred = pm.beta('y_pred', mu ,observed=y)
trace_sin = pm.sample(1000, step = pm.NUTS())
plt.scatter(x,y,c='r')
plt.plot(x,sin(trace_sin['a'].mean(),trace_sin['b'].mean(),trace_sin['c'].mean(),trace_sin['d'].mean(),x), c='b')