def aic(resid,T,p):
"""
赤池情報量の算出
-------------
input:
resid (ndarray): モデルの残差の列
T (int): サンプルサイズ
p (int): ラグの数
output :
(int) AICの値
"""
return np.log(np.sum(resid**2)/(T-p)) + (p+1)*2/(T-p)
def bic(resid,T,p):
"""
ベイズ情報量の算出
-------------
input:
resid (ndarray): モデルの残差の列
T (int): サンプルサイズ
p (int): ラグの数
output :
(int) BICの値
"""
return np.log(np.sum(resid**2)/(T-p)) + (p+1)*np.log(T-p)/(T-p)
AIC = []
BIC = []
T = len(df)
maxlag = 20
for p in range(1,maxlag):
res = ts.AutoReg(df["GDP_gap"],lags=p).fit(cov_type="HC0")
AIC.append(aic(res.resid.values,T,p))
BIC.append(bic(res.resid.values,T,p))
plt.plot(np.arange(1,maxlag), AIC, label="AIC", marker="o")
plt.plot(np.arange(1,maxlag), BIC, label="BIC", marker="*")
plt.legend()
plt.show()