Statsmodelsを用いてGranger Testを実施すると、Value Errorが発生する
statsmodelsを使用して、
2つの時系列データのグレンジャー因果テストを実施しているのですが、
4つのデータのうち、1つだけValue Errorが発生してしまいます。
基本的に4つのデータの作り方は同じで、他のデータとの違いは調査期間が異なるのみです。
全データ欠損値がないことを確認しています。
エラーの原因としてはVARモデルの値を使って、
グレンジャー因果を計算する過程で、逆行列を求めており、
その部分で何故かエラーが発生する模様です。
何が原因かお分かりになる方いらっしゃいますでしょうか?
def GrangerTest(data):
var=[]
for i in range(11):
var.append(VAR(data).fit(maxlags=i,ic='aic'))
aic=[]
for i in range(11):
aic.append(var[i].aic)
AIC = pd.Series(aic,index=range(11),name='AIC')
for i in range(2):
for j in range(2):
if i!=j:
test=var[AIC.idxmin()].test_causality(i,j,kind='f',signif=0.05)
print(test.causing, ' --> ', test.caused )
print('pvalue:',test.pvalue)
else:
pass
ValueError Traceback (most recent call last)
<ipython-input-33-8b724294cb0a> in <module>
12 for j in range(2):
13 if i!=j:
---> 14 test=var[0].test_causality(i,j,kind='wald',signif=0.05)
15 print(test.causing, ' --> ', test.caused )
16 print('pvalue:',test.pvalue)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\statsmodels\tsa\vector_ar\var_model.py in test_causality(self, caused, causing, kind, signif)
1831 # Lütkepohl 3.6.5
1832 Cb = np.dot(C, vec(self.params.T))
-> 1833 middle = scipy.linalg.inv(chain_dot(C, self._cov_params(), C.T))
1834
1835 # wald statistic
~\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\linalg\basic.py in inv(a, overwrite_a, check_finite)
976 if info < 0:
977 raise ValueError('illegal value in %d-th argument of internal '
--> 978 'getrf|getri' % -info)
979 return inv_a
980
ValueError: illegal value in 4-th argument of internal getrf|getri