algorithms.autoregressive¶
Module: algorithms.autoregressive
¶
Autoregressive (AR) processes are processes of the form:
where e(n) is a white noise process. The usage of ‘e’ suggests interpreting the linear combination of P past values of x(n) as the minimum mean square error linear predictor of x(n) Thus
Due to whiteness, e(n) is also pointwise uncorrelated–ie,
These principles form the basis of the methods in this module for estimating the AR coefficients and the error/innovations power.
Functions¶
-
nitime.algorithms.autoregressive.
AR_est_LD
(x, order, rxx=None)¶ Levinson-Durbin algorithm for solving the Hermitian Toeplitz system of Yule-Walker equations in the AR estimation problem
\[T^{(p)}a^{(p)} = \gamma^{(p+1)}\]where
\begin{align*} T^{(p)} &= \begin{pmatrix} R_{0} & R_{1}^{*} & \cdots & R_{p-1}^{*}\\ R_{1} & R_{0} & \cdots & R_{p-2}^{*}\\ \vdots & \vdots & \ddots & \vdots\\ R_{p-1}^{*} & R_{p-2}^{*} & \cdots & R_{0} \end{pmatrix}\\ a^{(p)} &=\begin{pmatrix} a_1 & a_2 & \cdots a_p \end{pmatrix}^{T}\\ \gamma^{(p+1)}&=\begin{pmatrix}R_1 & R_2 & \cdots & R_p \end{pmatrix}^{T} \end{align*}and \(R_k\) is the autocorrelation of the kth lag
Parameters: x : ndarray
the zero-mean stochastic process
order : int
the AR model order–IE the rank of the system.
rxx : ndarray, optional
(at least) order+1 samples of the autocorrelation sequence
Returns: ak, sig_sq :
The AR coefficients for 1 <= k <= p, and the variance of the driving white noise process
-
nitime.algorithms.autoregressive.
AR_est_YW
(x, order, rxx=None)¶ Determine the autoregressive (AR) model of a random process x using the Yule Walker equations. The AR model takes this convention:
\[x(n) = a(1)x(n-1) + a(2)x(n-2) + \dots + a(p)x(n-p) + e(n)\]where e(n) is a zero-mean white noise process with variance sig_sq, and p is the order of the AR model. This method returns the a_i and sigma
The orthogonality property of minimum mean square error estimates states that
\[E\{e(n)x^{*}(n-k)\} = 0 \quad 1\leq k\leq p\]Inserting the definition of the error signal into the equations above yields the Yule Walker system of equations:
\[R_{xx}(k) = \sum_{i=1}^{p}a(i)R_{xx}(k-i) \quad1\leq k\leq p\]Similarly, the variance of the error process is
\[E\{e(n)e^{*}(n)\} = E\{e(n)x^{*}(n)\} = R_{xx}(0)-\sum_{i=1}^{p}a(i)R^{*}(i)\]Parameters: x : ndarray
The sampled autoregressive random process
order : int
The order p of the AR system
rxx : ndarray (optional)
An optional, possibly unbiased estimate of the autocorrelation of x
Returns: ak, sig_sq : The estimated AR coefficients and innovations variance
-
nitime.algorithms.autoregressive.
AR_psd
(ak, sigma_v, n_freqs=1024, sides='onesided')¶ Compute the PSD of an AR process, based on the process coefficients and covariance
- n_freqs : int
- The number of spacings on the frequency grid from [-PI,PI). If sides==’onesided’, n_freqs/2+1 frequencies are computed from [0,PI]
- sides : str (optional)
- Indicates whether to return a one-sided or two-sided PSD
Returns: (w, ar_psd) :
w : Array of normalized frequences from [-.5, .5) or [0,.5]
ar_psd : A PSD estimate computed by sigma_v / |1-a(f)|**2 , where
a(f) = DTFT(ak)
-
nitime.algorithms.autoregressive.
MAR_est_LWR
(x, order, rxx=None)¶ MAR estimation, using the LWR algorithm, as in Morf et al.
Parameters: x : ndarray
The sampled autoregressive random process
order : int
The order P of the AR system
rxx : ndarray (optional)
An optional, possibly unbiased estimate of the autocovariance of x
Returns: a, ecov : The system coefficients and the estimated covariance
-
nitime.algorithms.autoregressive.
coherence_from_spectral
(Sw)¶ Compute the spectral coherence between processes X and Y, given their spectral matrix S(w)
Parameters: Sw : ndarray
spectral matrix
-
nitime.algorithms.autoregressive.
granger_causality_xy
(a, cov, n_freqs=1024)¶ Compute the Granger causality between processes X and Y, which are linked in a multivariate autoregressive (mAR) model parameterized by coefficient matrices a(i) and the innovations covariance matrix
X[t] + sum_{k=1}^P a[k]X[t-k] = Err[t]
Parameters: a : ndarray, (P,2,2)
coefficient matrices characterizing the autoregressive mixing
cov : ndarray, (2,2)
covariance matrix characterizing the innovations vector
n_freqs: int :
number of frequencies to compute in the fourier transform
Returns: w, f_x_on_y, f_y_on_x, f_xy, Sw :
- vector of frequencies
- function of the Granger causality of X on Y
- function of the Granger causality of Y on X
- function of the ‘instantaneous causality’ between X and Y
- spectral density matrix
-
nitime.algorithms.autoregressive.
interdependence_xy
(Sw)¶ Compute the ‘total interdependence’ between processes X and Y, given their spectral matrix S(w)
Parameters: Sw : ndarray
spectral matrix
Returns: fxy(w) :
interdependence function of frequency
-
nitime.algorithms.autoregressive.
lwr_recursion
(r)¶ Perform a Levinson-Wiggins[Whittle]-Robinson recursion to find the coefficients a(i) that satisfy the matrix version of the Yule-Walker system of P + 1 equations:
sum_{i=0}^{P} a(i)r(k-i) = 0, for k = {1,2,…,P}
with the additional equation
sum_{i=0}^{P} a(i)r(-k) = V
where V is the covariance matrix of the innovations process, and a(0) is fixed at the identity matrix
Also note that r is defined as:
r(k) = E{ X(t)X*(t-k) } ( * = conjugate transpose ) r(-k) = r*(k)
This routine adapts the algorithm found in eqs (1)-(11) in Morf, Vieira, Kailath 1978
Parameters: r : ndarray, shape (P + 1, nc, nc)
Returns: a : ndarray (P,nc,nc)
coefficient sequence of order P
sigma : ndarray (nc,nc)
covariance estimate
-
nitime.algorithms.autoregressive.
spectral_matrix_xy
(Hw, cov)¶ Compute the spectral matrix S(w), from the convention:
X[t] + sum_{k=1}^P a[k]X[t-k] = Err[t]
The formulation follows from Ding, Chen, Bressler 2008, pg 6 eqs (11) to (15)
The transfer function H(w) should be computed first from transfer_function_xy()
Parameters: Hw : ndarray (2, 2, n_freqs)
Pre-computed transfer function from transfer_function_xy()
cov : ndarray (2, 2)
The covariance between innovations processes in Err[t]
Returns: Sw : ndarrays
matrix of spectral density functions
-
nitime.algorithms.autoregressive.
transfer_function_xy
(a, n_freqs=1024)¶ Helper routine to compute the transfer function H(w) based on sequence of coefficient matrices A(i). The z transforms follow from this definition:
X[t] + sum_{k=1}^P a[k]X[t-k] = Err[t]
Parameters: a : ndarray, shape (P, 2, 2)
sequence of coef matrices describing an mAR process
n_freqs : int, optional
number of frequencies to compute in range [0,PI]
Returns: Hw : ndarray
The transfer function from innovations process vector to mAR process X