我的代码有问题。我不知道如何在函数内部更新变量error
的值。值仅在函数外部更新。
有人可以帮我解决这个问题吗?
代码的目的是使模型适合我的数据(x,y) = (mes1,pasajeros1)
。该模型是一个多项式函数,再加上一个由指数函数调制的正弦。
Error
是一个向量,它是数据(y
向量)与拟合(多项式函数加前一次迭代的指数调制的正弦值)之间的差,每次迭代每个分量error
的向量必须较小。
这是代码:
def base_pol(x,N):
M=np.ones(x.size)
for i in range(1,N+1):
M=np.vstack([M ,x**i])
return M.T
def pol(x,theta):
N=theta.size
pol=base_pol(x,N-1)@theta
return pol
def bestpolsin(theta, theta2, m):
fpol = pol(mes1,theta)
fsinexp = 0
best_aic = 10000000
best_bic = 10000000
best_parametros = []
def Fsinexp(x):
Fsinexp = x[0]*(np.sin(x[1]*mes1+x[2]))*np.exp(x[3]*mes1)
return Fsinexp
def Jpolsin(x):
j = 0.5*(error@error) - error@Fsinexp(x) + 0.5*(Fsinexp(x)@Fsinexp(x))
return j
for i in range(m):
error = pasajeros1 - fpol - fsinexp
parametros = fmin(Jpolsin, theta2, args=(error,))
fsinexp = Fsinexp(parametros)
aic = AIC(4*(i+1), Jpolsin(parametros))
bic = BIC(4*(i+1), Jpolsin(parametros))
best_parametros.append(parametros)
if best_aic>aic:
best_aic=aic
r_1=i+1
if best_bic>bic:
best_bic=bic
r_2=i+1
p=r_1==r_2
return aic, bic, r_1, best_parametros, p