algorithms.autoregressive¶
Module: algorithms.autoregressive
¶
Autoregressive (AR) processes are processes of the form:
x(n) = a(1)x(n-1) + a(2)x(n-2) + ... + a(P)x(n-P) + e(n)
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
e(n) = x(n) - a(1)x(n-1) - a(2)x(n-2) - ... - a(P)x(n-P)
Due to whiteness, e(n) is also pointwise uncorrelated–ie,
\begin{align*} \text{(i)} && E\{e(n)e^{*}(n-m)\}& = \delta(n-m) &\\ \text{(ii)} && E\{e(n)x^{*}(m)\} & = 0 & m\neq n\\ \text{(iii)} && E\{|e|^{2}\} = E\{e(n)e^{*}(n)\} &= E\{e(n)x^{*}(n)\} & \end{align*}
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