ó
áp7]c        	   @  s–  d  Z  d d l m Z d d l Z d d l m Z d d l m Z m	 Z	 d d l
 m Z d d l m Z e j d ƒ j d* ƒ j Z e j d ƒ j 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 e j e e d d … d d … d f d d ƒZ e j e e d d … d d … d f d 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	 d d … f Z  e! e e e j ƒ ƒ e e  d d … d f e j" ƒ  ƒ e e  d d … d f e j" ƒ  ƒ d „  Z# e j d- ƒ Z e# e e d d … d d … d f ƒ Z$ e! e$ e d e d  ƒ e# e e d d … d d … d d	 … f ƒ Z% e! e j& e% e d d … d d … f j' d ƒ e d  j' d ƒ d d … d f k ƒ ƒ e e j( e) ƒ d d … d d … d f e ƒ Z* e j+ j, d ƒ Z- e e- e j d d g ƒ ƒ Z. e e j/ e j0 d ƒ e- f e j d d g ƒ ƒ Z1 e j2 d g d d g e- ƒ Z3 e j0 d ƒ Z4 x9 e5 d d ƒ D]( Z6 d e4 e6 d e- e6 d e4 e6 <qâWe j0 d ƒ Z7 x5 e5 d d ƒ D]$ Z6 e- e6 d e- e6 d e7 e6 <q-We! d ƒ e! e j8 e7 d d !e4 d d !e. d  e3 d  e1 d d !f ƒ ƒ d „  Z9 e! e9 e4 d e3 ƒ ƒ e! e9 e4 d e1 d d !ƒ ƒ e j+ j, d d ƒ Z: e j d d d g d d d g g ƒ Z; e j d d d g d d d g g ƒ Z; e j d d d g d d d g g ƒ Z; e j d d d g d d d g g ƒ Z; e j/ e j d. ƒ d e j< d ƒ f Z= e j/ e j d/ ƒ d e j< d ƒ f Z= e e: e; ƒ Z> e j0 d0 ƒ Z? xR e5 d d ƒ D]A Z6 e j' e; d d d … f e? e6 d ƒ e- e6 d e? e6 <qWe j0 d1 ƒ Z@ d e@ d <e j d d d g d d d g g ƒ Z; e e j/ e j0 d2 ƒ e@ f e; ƒ d e j d d d g d d! d g g ƒ Z; e e j/ e j0 d3 ƒ e@ f e; ƒ d e j d d d g d d d g d d d g g d d d g d d d g d d d g g g ƒ ZA e j d d d g d d d g d d d g g d d d g d d d g d d d g g g ƒ ZA e e j/ e j0 d4 ƒ e@ f d d … d d … d f eA j ƒ d ZB eB eB d d d … d d … f ZC e j d d d g d d d g d d d g g d d" d g d d d g d d d g g g ƒ ZA e e j/ e j0 d5 ƒ e@ f d d … d d … d f eA ƒ d ZB eB eB d d d … d d … f ZC e j e jD e@ e@ e@ f ƒ eA ƒ d d d … d d … f d  ZE e j0 eE d f ƒ Z@ d e@ d <e j0 eE d d f ƒ Z? x^ e5 d eE d ƒ D]I Z6 e jF eA d d d … d d … f e? e6 d ƒ e@ e6 d e? e6 <qx	We j0 eE d d d f ƒ ZG eA d eG d d d … d d … f <eA d eG d d d … d d … f <xh e5 d	 eE d ƒ D]S Z6 e jF eA d eG e6 d d d … d d … f ƒ eG e6 d d … d d … f <q<
We j d d d g d d d g d d d g g d d" d g d d d g d d d g g g ƒ ZH d  ZE e j d d g d d g g d d g d# d g g g ƒ ZI e j0 eE d d	 d	 f ƒ ZJ eI d eJ d d d … d d … f <eI d eJ d d d … d d … f <xh e5 d	 eE d ƒ D]S Z6 e jF eI d eJ e6 d d d … d d … f ƒ eJ e6 d d … d d … f <q¦Wd  ZE e j0 eE d	 f ƒ Z@ d e@ d6 <e j d d g d d g g d d g d d g g g ƒ ZK e j0 eE d d	 f ƒ ZL x_ e5 d eE d ƒ D]J Z6 e jF eK d d d … d d … f eL e6 d ƒ e@ e6 d eL e6 <qˆWe j+ j, d  d	 ƒ ZM e j0 eE d d	 f ƒ ZN x_ e5 d eE d ƒ D]J Z6 e jF eK d d d … d d … f eN e6 d ƒ eM e6 d eN e6 <qWe j0 eE d d	 d	 f ƒ ZO eK d eO d d d … d d … f <eK d eO d d d … d d … f <xh e5 d	 eE d ƒ D]S Z6 e jF eK d eO e6 d d d … d d … f ƒ eO e6 d d … d d … f <qÝWd$ ZP e j0 eP ƒ d eP ZQ e jR jS eQ ƒ ZT e! eT ƒ e! e	 jU jV eT d% d& d' d( d) ƒƒ d S(7   s  trying out VAR filtering and multidimensional fft

Note: second half is copy and paste and doesn't 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 didn't check
what the results are.
Runs now without raising exception
iÿÿÿÿ(   t   print_functionN(   t   assert_equal(   t   signalt   stats(   t	   _centered(   t   fftconvolveinvi(   i   i   i<   i   g      à?g      ð?i    t   modet   validi   c   	      C  së  t  j |  ƒ }  t  j | ƒ } |  j d k rF |  d d … d f }  n  |  j d k rd t d ƒ ‚ n  |  j d } | j d } | d } | j d k r½ t j |  | d d … d f d d ƒS| j d k r~t | j ƒ d k r÷ t j |  | d d ƒSt  j	 |  j d | d | f ƒ } x\ t
 | ƒ D]N } t j |  d d … | f | d d … | f d d ƒ| d d … | f <q(W| S| j d k rçt j |  d d … d d … d f | ƒ } | | | … | j d d d d … f } | Sd S(	   s0  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

    i   Ni   s   x array has to be 1d or 2di    R   R   i   (   t   npt   asarrayt   ndimt   Nonet
   ValueErrort   shapeR   t   convolvet   mint   zerost   range(	   t   xt   at   nvart   nlagst   ntrimt   resultt   it   yft   yvalid(    (    sG   lib/python2.7/site-packages/statsmodels/sandbox/tsa/try_var_convolve.pyt   arfilter2   s,    4
&$L++iô  gš™™™™™é¿id   iõ  gš™™™™™é?s<   
 compare: 
errloop - arloop - fft - lfilter - fftp (padded)i   i   i‚   c         C  s   t  j t  j |  | ƒ ƒ S(   N(   R   t   maxt   abs(   R   t   y(    (    sG   lib/python2.7/site-packages/statsmodels/sandbox/tsa/try_var_convolve.pyt   maxabsº   s    gš™™™™™¹?g        i
   g      à¿gš™™™™™É?gš™™™™™¹¿i   gïÉÃB­iä?t   locgš™™™™™ù?t   scaleg×£p=
ÇC@(   i   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   (   i   i   (   iõ  i   (   i
   i   (   id   i   (   id   i   (   id   i   (   id   i   (   i    i    (W   t   __doc__t
   __future__R    t   numpyR   t   numpy.testingR   t   scipyR   R   t   scipy.signal.signaltoolsR   t   trim_centeredt#   statsmodels.tsa.filters.filtertoolsR   t   fftconvolvet   aranget   reshapet   TR   t   arrayt   a3ft   onesR   R   R   R   t   y0t   y1R   R   R   R   t   printt   ravelR   t   y0art   yrest   allt   sumt   astypet   floatt   yfft   randomt   randnt   rvst   ar1fftt   r_R   t   ar1fftpt   lfiltert   ar1lft   ar1R   R   t   errar1t   column_stackR   t   rvs3t   a3nt   eyet   a3net   ar13fftt   ar13t   impt   a3n3t   tttt   gfttt   dstackt   nobst   dott   a3n3invt   a3n3syR   t   a2n3invt   a2t   ar12t   ut   ar12rt   a2invt   nbinst   binProbt   addt
   accumulatet
   binSumProbt   gammat   ppf(    (    (    sG   lib/python2.7/site-packages/statsmodels/sandbox/tsa/try_var_convolve.pyt   <module>   s  
11++##	Z(.Y14&	"
+	''''))?
''''E#B#;
G#$Q	#$Q
	HH#$Q
