
    M/Ph                        d Z ddlZddlmZ ddZddZedk    rdZdZ	d	Z
 ej         ej        e          ge	z            Z ej        e
e	e	f          Zddgddgdd
ggeddddd
f<    eee          Z e ej        ee
ddf          ej        edddf          ej        e
                    dz  k                         dZdZ	dZd	Z
d
Z ej         ej        e          ge	z            Z ej        e
e	e	f          Zddgddgdd
ggeddddd
f<    ej        ee	e	f          Z eeee          Z eeeee          \  ZZ e ej        eek                          e ej        ee
ddf          ej        edddf          ej        e
                    dz  ez   k                         ded<    eeee          \  ZZej         ej        e
e	f          ef         Z eeee          \  ZZd
ed<   ddgddgdd
ggeddddd
f<    eeee          \  Z Z! ej         ej        e          d ej        e          z  g          Z" ej        e
e	f          edddddf<    ej        e
e	f          eddddd
f<   ded<    ee"e          Z# ej        e"edddddf                   Z$ ej        e"eddddd
f                   Z% e ej         ej        e"edddddf         d          dddf         e#e
ddf         k                          e ej         ej        e"eddddd
f         d          dddf         e#e
dd
f         k                         ddl&m'Z'm(Z(  e'edddf                   Z) ee)d          ej*        edddf                   k                e(edddf                   Z+dS dS )aJ  VAR and VARMA process

this does not actually do much, trying out a version for a time loop

alternative representation:
* textbook, different blocks in matrices
* Kalman filter
* VAR, VARX and ARX could be calculated with signal.lfilter
  only tried some examples, not implemented

TODO: try minimizing sum of squares of (Y-Yhat)

Note: filter has smallest lag at end of array and largest lag at beginning,
    be careful for asymmetric lags coefficients
    check this again if it is consistently used


changes
2009-09-08 : separated from movstat.py

Author : josefpkt
License : BSD
    N)signalc                 4   |j         d         }| j         d         }t          j        | j                   }t          ||          D ]S}|| ||z
  |ddt          j        f         |z                      d                              d          z   ||ddf<   T|S )a   multivariate linear filter

    Parameters
    ----------
    x: (TxK) array
        columns are variables, rows are observations for time period
    B: (PxKxK) array
        b_t-1 is bottom "row", b_t-P is top "row" when printing
        B(:,:,0) is lag polynomial matrix for variable 1
        B(:,:,k) is lag polynomial matrix for variable k
        B(p,:,k) is pth lag for variable k
        B[p,:,:].T corresponds to A_p in Wikipedia
    const : float or array (not tested)
        constant added to autoregression

    Returns
    -------
    xhat: (TxK) array
        filtered, predicted values of x array

    Notes
    -----
    xhat(t,i) = sum{_p}sum{_k} { x(t-P:t,:) .* B(:,:,i) }  for all i = 0,K-1, for all t=p..T

    xhat does not include the forecasting observation, xhat(T+1),
    xhat is 1 row shorter than signal.correlate

    References
    ----------
    https://en.wikipedia.org/wiki/Vector_Autoregression
    https://en.wikipedia.org/wiki/General_matrix_notation_of_a_VAR(p)
    r   N   axis)shapenpzerosrangenewaxissum)xBconstpTxhatts          ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/sandbox/tsa/varma.pyVARr       s    B 	

A	
A8AGD1QZZ N N
 Qqs1uQQQrz121499q9AAEE1EMMMQqqqS		K    c                 t   |j         d         }|j         d         }| j         d         }t          j        | j                   }t          j        | j                   }t          ||          }	t	          |	|          D ]}
|| |
|z
  |
ddt          j        f         |z                      d                              d          z   ||
|z
  |
ddt          j        f         |z                      d                              d          z   ||
ddf<   | |
ddf         ||
ddf         z
  ||
ddf<   ||fS )z multivariate linear filter

    x (TxK)
    B (PxKxK)

    xhat(t,i) = sum{_p}sum{_k} { x(t-P:t,:) .* B(:,:,i) } +
                sum{_q}sum{_k} { e(t-Q:t,:) .* C(:,:,i) }for all i = 0,K-1

    r   Nr   r   )r   r	   r
   maxr   r   r   )r   r   Cr   PQr   r   estartr   s              r   VARMAr   M   sG    	

A	
A	
A8AGD
A!HHE5^^ $ $
 a!Aaaa
 23A5:::BBFFAFNNN!Aaaa
*+A-222::>>A>FFGQqqqS	1QQQ3$qs)#!AAA#7Nr   __main__         r   )r   g      ?)r   r   r   valid)acovfacf)r   ),__doc__numpyr	   scipyr   r   r   __name__r   Kr   column_stackaranger   onesr   r   printall	correlater   r   r
   r   xhat1xhat2err2xhat3err3r_xhat4err4xhat5err5x0xhat0xcorr00xcorr01statsmodels.tsa.stattoolsr&   r'   aavvaraac r   r   <module>rF      s<   0          * * * *Z   6 z 	A	A	A1q())A1QA1qeQqE"Aaaa!eH3q88D	E&"&abbd\R\!CRCE(7271::>>q@@
A
ABBB 	A	A	A	AE1q())A1QA1qeQqE"Aaaa!eH!AaAC!5!!!E%!AU+++KE4	E&"&%
 
 !!!	E&"&qrr!tQss1uXgbgajj A A! CE II
J
JKKKAeH%!A,,KE4
hbh!uooa A%!A,,KE4AeH1qeQqE"Aaaa!eH%!A,,KE4 
)")A,,)")A,,7	8	8Brw!u~~Aaaa!eHrw!u~~Aaaa!eHAeHC1IIEfr!AAAaaaE(++Gfr!AAAaaaE(++G	E&"&!!"Qqqq1uXg66ss1u=uQRRT{J
K
KLLL	E&"&!!"Qqqq1uXg66ss1u=uQRRT{J
K
KLLL 54444444
%!!!A#--C	E#a&FBF1QQQqS6NN
"###
#a!f++CCCI r   