我想估计一个带学生t分布的EGARCH模型。当我这样做时,我得到除以零的错误。
sigma ^ 2的公式为: $$ log(\ sigma ^ 2_t)= w + \ sum_ {i = 1} ^ a \ alpha_i g(z_ {ti})+ \ sum_ {i = 1} ^ p \ beta_i log(\ sigma ^ 2_ {ti })$$。 因此,得出sigma,我采用了指数函数。
def garch_filter(omega, alpha, g, beta, eps):
iT = len(eps)
sigma_2 = np.zeros(iT)
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]
v = vP[4]
sigma_2 = garch_filter(omega, alpha, g, beta, eps)
logL = -(len(eps)*np.log((gamma((v+1)/2))/(math.sqrt(3.14*(v-2)) *gamma(v/2)))-0.5*np.sum(np.log(sigma_2)) - ((v+1)/2) * np.sum(np.log(1+eps**2/(sigma_2*(v-2)))))
return logL
我想最大化对数似然,这就是为什么我将logL最小化。 我在sigma_2的公式中除以零的原因是什么。 sigma_2总是大于零,对吧?
提前谢谢!