1

I am currently working to find Multivariate Granger Causality F value and p value via this code.

def demean(x, axis=0):
"Return x minus its mean along the specified axis"
x = np.asarray(x)
if axis == 0 or axis is None or x.ndim <= 1:
    return x - x.mean(axis)
ind = [slice(None)] * x.ndim
ind[axis] = np.newaxis
return x - x.mean(axis)[ind]

#------------------------------

def tsdata_to_autocov(X, q):

import numpy as np
from matplotlib import pylab

if len(X.shape) == 2:
    X = np.expand_dims(X, axis=2)
    [n, m, N] = np.shape(X)
else:
    [n, m, N] = np.shape(X)
X = demean(X, axis=1)
G = np.zeros((n, n, (q+1)))

for k in range(q+1):
    M = N * (m-k)
    G[:,:,k] = np.dot(np.reshape(X[:,k:m,:], (n, M)), np.reshape(X[:,0:m-k,:], (n, M)).conj().T) / M-1
return G

#-------------------------

def autocov_to_mvgc(G, x, y):

import numpy as np
from mvgc import autocov_to_var

n = G.shape[0]

z = np.arange(n)
z = np.delete(z,[np.array(np.hstack((x, y)))])
# indices of other variables (to condition out)
xz = np.array(np.hstack((x, z)))
xzy = np.array(np.hstack((xz, y)))
F = 0

# full regression
ixgrid1 = np.ix_(xzy,xzy)
[AF,SIG] = autocov_to_var(G[ixgrid1])

# reduced regression
ixgrid2 = np.ix_(xz,xz)
[AF,SIGR] = autocov_to_var(G[ixgrid2])


ixgrid3 = np.ix_(x,x)
F = np.log(np.linalg.det(SIGR[ixgrid3]))-np.log(np.linalg.det(SIG[ixgrid3]))
return F

Can anyone show me an example for how they got to solving for F and p? It would also help a lot to see what your timeseries data looks like.

0 Answers0