2014-10-27 709 views
2

我想在python中实现多维格兰杰因果关系。对于这个问题,我使用Statsmodels的Vector Autoregression,但是当我试图从系统中获取系数时,它会返回一个空矩阵。有人能告诉我什么是错的吗?向量与Python的自回归Statsmodels

import numpy as np 
from statsmodels.tsa.vector_ar import var_model 
def multi_dim_granger(X_ts,Y_ts,order=5,test='F-test'): 
    """Multivariate Granger cusality. 
    input: 
     X_ts: the first vector time series. 
       TxK matrix with T being the time instance and K is the dimension 
     Y_ts: the second vector time series. 
       TxK matrix with T being the time instance and K is the dimension 

     order: the maximum number of lags for fitting a VAR process 
     test: the statistical test to check for the residual covariance matrix 
    """ 
    ts=np.hstack((X,Y)) 
    print ts.shape 
    VAR_model=var_model.VAR(ts) 
    ts=VAR_model.fit(ic='aic',maxlags=order) 
    return ts.coefs 
X=np.random.randn(1000,2) 
Y=(np.arange(4000)*np.random.randn(4000)).reshape((1000,4)) 
multi_dim_granger(X,Y) 

回答

1

可以使用VARResults实例的test_causality方法测试的Granger因果关系。请参阅文档here和示例here