我想编写一个EGARCH模型。但是我得到了除以零的错误。这是因为有时sigma_2变为零。
sigma_2的公式是:
def garch_filter(omega, alpha, g, beta, eps):
iT = len(eps)
sigma_2 = np.zeros(iT, dtype=np.float64)
for i in range(iT):
if i==0:
sigma_2[i] = np.exp(np.var(eps))
else:
sigma_2[i] = np.exp(omega + alpha*(np.abs(eps[i-1])/sigma_2[i-1] - math.sqrt(2/math.pi)) + g*eps[i-1]/sigma_2[i-1] + beta*np.log(sigma_2[i-1]))
return sigma_2
def garch_loglike(vP, eps):
iT = len(eps)
omega = vP[0]
alpha = vP[1]
g = vP[2]
beta = vP[3]
sigma_2 = garch_filter(omega, alpha, g, beta, eps)
logL = -(-len(eps)/2 * np.log(2*math.pi) -0.5 *np.sum(np.log(sigma_2) + eps**2/sigma_2))
return logL
因此,我得到的错误除以零,因为sigma_2有时为零。我认为这是因为np.exp(...)之间的值变得非常负。但是我该如何解决这个问题呢?