
    M/Ph#                        d Z ddlZddlmZ ddlmZmZ 	 ddlm	Z
 n# e$ r	 ddlm	Z
 Y nw xY wddlmZ  ej        d                              d          j        Z ej        d	                              d
          j        Z ej        ddgddggddgddggg          Z ej        d          Zej        d         Zedz  Z ej        eedddddf         d          Z ej        eedddddf         d          Z ej        edddddf         e          Zedddddf         Zeee ej        d         dz  ddf         Z e  e
eej                              eedddf         e!                                            eedddf         e!                                           d Z" ej        d          Z e"eedddddf                   Z# e e#edd         edd         z               e"eeddddddf                   Z$ e  ej%        e$eddddf         &                    d          edd         &                    d          z   dddf         k                          ee'                    e(          dddddf         e          Z)ej*        +                    d          Z, ee, ej        ddg                    Z- eej.         ej/        d          e,f          ej        ddg                    Z0 ej1        dgddge,          Z2 ej/        d          Z3 e4dd          D ]Z5de3e5dz
           z  e,e5dz
           z   e3e5<     ej/        d          Z6 e4dd          D ]Z5e,e5         de,e5dz
           z  z
  e6e5<    e d            e  ej7        e6dd         e3dd         e-dd         e2dd         e0dd         f                     d Z8 e  e8e3dd         e2                      e  e8e3dd         e0dd                              ej*        +                    dd          Z9 ej        g dg d g          Z: ej        g dg d!g          Z: ej        g d"g d!g          Z: ej        g d#g d!g          Z:ej.         ej        d$          d ej;        d          z  f         Z<ej.         ej        d$          d ej;        d          z  f         Z< ee9e:          Z= ej/        d%          Z> e4dd          D ]7Z5 ej&        e:dddf         e>e5dz
           z            e,e5dz
           z   e>e5<   8 ej/        d&          Z?de?d<    ej        g d#g d!g          Z: eej.         ej/        d'          e?f         e:          dd           ej        g d#g d(g          Z: eej.         ej/        d'          e?f         e:          dd           ej        g d)g d*g d+gg d!g d,g d-gg          Z@ ej        g d.g d*g d+gg d!g d,g d-gg          Z@ eej.         ej/        d'          e?f         dddddf         e@j                  dd         ZAeAeAdddddf         z  ZB ej        g d/g d*g d+gg d0g d1g d2gg          Z@ eej.         ej/        d'          e?f         dddddf         e@          dd         ZAeAeAdddddf         z  ZB ej         ejC        e?e?e?f          e@          dddddf          d3ZD ej/        eDdf          Z?de?d<    ej/        eDdz   df          Z> e4deDdz             D ]8Z5 ejE        e@dddddf         e>e5dz
                     e?e5dz
           z   e>e5<   9 ej/        eDdz   ddf          ZFe@d         eFdddddf<   e@d          eFdddddf<    e4deDdz             D ]4Z5 ejE        e@d          eFe5dz
  ddddf                   eFe5ddddf<   5 ej        g d/g d*g d+gg d0g d1g d2gg          ZGd3ZD ej        dd4gd4dggdd4gd5dggg          ZH ej/        eDdz   ddf          ZIeHd         eIdddddf<   eHd          eIdddddf<    e4deDdz             D ]4Z5 ejE        eHd          eIe5dz
  ddddf                   eIe5ddddf<   5d3ZD ej/        eDdf          Z?de?d6<    ej        dd4gd4dggdd4gd7dggg          ZJ ej/        eDdz   df          ZK e4deDdz             D ]9Z5 ejE        eJdddddf          eKe5dz
                     e?e5dz
           z   eKe5<   :ej*        +                    d3d          ZL ej/        eDdz   df          ZM e4deDdz             D ]9Z5 ejE        eJdddddf          eMe5dz
                     eLe5dz
           z   eMe5<   : ej/        eDdz   ddf          ZNeJd         eNdddddf<   eJd          eNdddddf<    e4deDdz             D ]4Z5 ejE        eJd          eNe5dz
  ddddf                   eNe5ddddf<   5d8ZO ej/        eO          deOz  z   ZPejQ        R                    eP          ZS e eS            e ejT        U                    eSd9d:d;<                     dS )=a  trying out VAR filtering and multidimensional fft

Note: second half is copy and paste and does not run as script
incomplete definitions of variables, some I created in shell

Created on Thu Jan 07 12:23:40 2010

Author: josef-pktd

update 2010-10-22
2 arrays were not defined, copied from fft_filter.log.py but I did not check
what the results are.
Runs now without raising exception
    N)assert_equal)signalstats)	_centered)fftconvolveinv(   )      <   )   r
         ?      ?)r	   r   r   r	   validmode   c                 6   t          j        |           } t          j        |          }| j        dk    r| dddf         } | j        dk    rt          d          | j        d         }|j        d         }|dz  }|j        dk    r!t          j        | |dddf         d          S |j        dk    rt          |j                  dk    rt          j        | |d          S t          j        | j        d         |z
  dz   |f          }t          |          D ]4}t          j        | dd|f         |dd|f         d          |dd|f<   5|S |j        dk    rBt          j        | dddddf         |          }||| |j        d         dz  ddf         }|S dS )	a0  apply an autoregressive filter to a series x

    x can be 2d, a can be 1d, 2d, or 3d

    Parameters
    ----------
    x : array_like
        data array, 1d or 2d, if 2d then observations in rows
    a : array_like
        autoregressive filter coefficients, ar lag polynomial
        see Notes

    Returns
    -------
    y : ndarray, 2d
        filtered array, number of columns determined by x and a

    Notes
    -----

    In general form this uses the linear filter ::

        y = a(L)x

    where
    x : nobs, nvars
    a : nlags, nvars, npoly

    Depending on the shape and dimension of a this uses different
    Lag polynomial arrays

    case 1 : a is 1d or (nlags,1)
        one lag polynomial is applied to all variables (columns of x)
    case 2 : a is 2d, (nlags, nvars)
        each series is independently filtered with its own
        lag polynomial, uses loop over nvar
    case 3 : a is 3d, (nlags, nvars, npoly)
        the ith column of the output array is given by the linear filter
        defined by the 2d array a[:,:,i], i.e. ::

            y[:,i] = a(.,.,i)(L) * x
            y[t,i] = sum_p sum_j a(p,j,i)*x(t-p,j)
                     for p = 0,...nlags-1, j = 0,...nvars-1,
                     for all t >= nlags


    Note: maybe convert to axis=1, Not

    TODO: initial conditions

    r   Nr	   zx array has to be 1d or 2dr   r   r   r   )
npasarrayndim
ValueErrorshaper   convolveminzerosrange)	xanvarnlagsntrimresultiyfyvalids	            h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/sandbox/tsa/try_var_convolve.pyarfilterr'   6   s   h 	
1A

1Av{{aaafIvzz566671:DGAJE1HE 	v{{q!AAAdF)':::: 
1qw<<1?1ag6666 171:e+A-t455t 	H 	HA /!AAAaC&!AAAaC&wGGGF111Q3KK	
1
 _Qqqq4x[!,,E5&L"(1+q.23 
    i  皙d     皙?z<
 compare: 
errloop - arloop - fft - lfilter - fftp (padded)         c                 T    t          j        t          j        | |z
                      S )N)r   maxabs)r   ys     r&   maxabsr5      s    6"&1++r(   r   )r   r   r   )r*   r   皙?)r*           r7   )r   r)   r)   )r   r   r   )r   r   )r,   r   )
   r   )r+   r   )r*   g      r7   )r   r7   r7   )r7   r   r7   )r7   r7   r   )r7   r*   r7   )r7   r7   r*   )r   r   r7   )r   r   r7   )r*   g?r7   )r   r7   r7   )r7   r7   r-   r8   r7   g)r   r   r6      gBi?g?gףp=
C@)locscale)V__doc__numpyr   numpy.testingr   scipyr   r   scipy.signal._signaltoolsr   trim_centeredImportErrorscipy.signal.signaltools#statsmodels.tsa.filters.filtertoolsr   fftconvolvearangereshapeTr   arraya3fonesr   r    r!   r   y0y1r$   r4   r%   printravelr'   y0aryresallsumastypefloatyffrandomrandnrvsar1fftr_r   ar1fftplfilterar1lfar1r   r#   errar1column_stackr5   rvs3a3neyea3near13fftar13impa3n3tttgfttdstacknobsdota3n3inva3n3syr   a2n3inva2ar12uar12ra2invnbinsbinProbadd
accumulate
binSumProbgammappf r(   r&   <module>r      s        & & & & & &        DDDDDDDD D D D DCCCCCCCD
 N M M M M M BIbMM&!!#BIbMM&!!#bh#b3Z(r
R#J') * *bgg 		!qV_Qs111QQQq5z000V_Qs111QQQq5z000V_Qqqq4x[%%qqq111uI	E5&L!a)	* mmAqw       VAAAaC["((** % % % VAAAaC["((** % % %X X Xt bggx#aaa!e* dAabbEAcrcFN   x#aaa"1"f+ fbfTa111gkk!nnq"vzz!}}4aaaf==>> ? ? ? k!((5//!!!AAAd(+C00iooc	S1T(++	,	,
+beHBHSMM#-.xrx4/A/A
B
BsQtHc**bhsmm	q % %AQqS\C!H$CFF 
#	q & &AAS1X%F1II F G G G obovad|S2Yvcrc{E#2#Js3w') * * + + +   ffSWe    ffSWgc"fo&& ' ' '	ys1bh'((bh'((bh			...)**bh'((	uWRWU^^DN*+	uWRWU^^DN*+
+d3

rx	q 4 4AbfS111Xd1Q3i'((3qs83DGG bhvAbh'(( BE("(7##C'( - -cdd 3 3bh((()** BE("(7##C'( - -cdd 3 3rx$$$######% $########%	& ' ' rx%%%$$$$$$& %$$$$$$$$&	' ( ( k"%))#-.qqq4x8@@F
3q111u:~rx###$$$$$$& &%%######%	& ' ' k"%))#-.qqq4x8>>sttD
3q111u:~  929c#c]++D 1 1!AAAaaa% 8 8	bhQx	Arxa
	qa 7 7AbfT!AAAaaa%[ac++c!A#h6DGG
"(DF1Q<
 
 a!!!AAAq'!!!AAA	qa 7 7ARVT!WHWQqS111W%566GAaaaENN 
%%%$$$$$$& &%%######%	& 
' 
' 
BHr|
 

   "(DF1Q<
 
 1!!!AAAA$!!!AAA	qa 4 4ARVQqTE'!A#aaa'"233GAaaaENN	bhQxC RX"
 
	d   rxa
	qa 6 6Abfb111QQQiZQqS	**S1X5DGGIOOBq$q&	qa 6 6Arvr!AAAaaa%yjqs,,q1v5E!HH$q&1!ua!!!e1va!!!e	qa 1 1A262a5&qs111QQQw00E!AAAaaa%LL

"(5//CI
%Vw''
 j    ekoojCfo== > > > > >s    ++