ó
áp7]c           @` så   d  Z  d d l m Z m Z m Z d d l m Z d d l 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 m Z m Z m Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   sR   
Tests for simulation of time series

Author: Chad Fulton
License: Simplified-BSD
i    (   t   divisiont   absolute_importt   print_function(   t   PY3N(   t   assert_allclose(   t   lfilter(   t   SpecificationWarningt   EstimationWarning(   t   sarimaxt
   structuralt   varmaxt   dynamic_factorc          C` sÄ  t  j j d ƒ d }  t  j j d |  ƒ } t j d g d d ƒ} | j d d g |  d d	 t  j | d f d
 t  j | j	 ƒ ƒ} t
 d g d d g | ƒ } t | d | ƒ t j d g d d ƒ} | j d d g |  d d	 t  j | d f d
 t  j | j	 ƒ ƒ} t
 d d g d g | ƒ } t | d | ƒ t j d g d d ƒ} | j d d d g |  d d	 t  j | d f d
 t  j | j	 ƒ ƒ} t
 d d g d d g | ƒ } t | d | ƒ d  S(   Niÿ'  id   t   sizei    t   orderi   g      à?g      ð?t   state_shockst   initial_stateg      à¿gš™™™™™É?(   i   i    i    (   i    i    i   (   i   i    i   (   t   npt   randomt   seedt   normalR   t   SARIMAXt   simulatet   r_t   zerost   k_statesR   R   (   t   nobst   epst   modt   actualt   desired(    (    sM   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_simulate.pyt   test_arma_lfilter   s$    ,,/c          C` sí  t  j j d ƒ d }  t  j j d |  ƒ } t  j j d |  ƒ } t j d g d d ƒ} | j d d g |  d d	 t  j | d f d
 t  j | j	 ƒ ƒ} t  j |  ƒ } xO t
 |  ƒ D]A } | d k rØ | | | | <qµ d | | d | | | | <qµ Wt | d | ƒ t j d g d d ƒ} | j d d g |  d d	 t  j | d f d
 t  j | j	 ƒ ƒ} t  j |  ƒ } xO t
 |  ƒ D]A } | d k r£| | | | <q€d | | d | | | | <q€Wt | d | ƒ t j d g d d ƒ} | j d d d g |  d d	 t  j | d f d
 t  j | j	 ƒ ƒ} t  j |  ƒ } x_ t
 |  ƒ D]Q } | d k rq| | | | <qNd | | d d | | d | | | | <qNWt | d | ƒ t j d g d d d d ƒ} | j d d d d g |  d d	 t  j | d f d
 t  j | j	 ƒ ƒ} t  j |  ƒ } xm t
 |  ƒ D]_ } d } | d k rb| | | | | <q5| d | | d d | | d | | | | <q5Wt | d | ƒ t j t  j |  d ƒ d d d d ƒ} | j d d d d d g |  d d	 t  j | d f d
 t  j | j	 ƒ ƒ} t  j |  ƒ } xy t
 |  ƒ D]k } d d | d } | d k rp| | | | | <q7| d | | d d | | d | | | | <q7Wt | d | ƒ t j t  j |  d ƒ d t  j d | f d d d d ƒ} | j d d d d d d g |  d d	 t  j | d f d
 t  j | j	 ƒ ƒ} t  j |  ƒ } xy t
 |  ƒ D]k } d d | d } | d k r”| | | | | <q[| d | | d d | | d | | | | <q[W| d | } t | d | ƒ d  S(   Niÿ'  id   R   i    R   i   g      à?g      ð?R   R   gš™™™™™É?t   trendt   cgÍÌÌÌÌÌô?t   ctt   exogg      à¿(   i   i    i    (   i    i    i   (   i   i    i   (   i   i    i   (   i   i    i   (   i   i    i   (   R   R   R   R   R   R   R   R   R   R   t   rangeR   (   R   R   R"   R   R   R   t   iR   (    (    sM   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_simulate.pyt   test_arma_direct4   s„    ,","/26("6,%6c          C` sY  t  j j d ƒ d }  t  j j d |  ƒ } t  j j d |  ƒ } t  j |  ƒ } t  j |  ƒ } d | d <t  j |  ƒ } d | d )t j d g d d ƒ} t j d g d	 d+ ƒ} | j	 d d
 g |  d | d t  j | j
 ƒ ƒ} | j	 d
 d g |  d | d t  j | j
 ƒ ƒ}	 t | |	 ƒ t j t  j |  ƒ d | d d ƒ} t j t  j |  ƒ d | d	 d, ƒ} | j	 d d
 d g |  d | d t  j | j
 ƒ ƒ} | j	 d d
 d g |  d | d t  j | j
 ƒ ƒ}	 t | |	 ƒ t j d g d ƒ }
 |
 j	 d g |  d | d t  j |
 j
 ƒ ƒ} t | | ƒ t r4t n d  } t rFd n d  } t j | d | ƒ t j d g d ƒ }
 Wd  QX|
 j	 d g |  d | d d g ƒ} t | d | ƒ t j d g d ƒ }
 |
 j	 d g |  d | d d g ƒ} t | d | ƒ t j d g d ƒ }
 |
 j	 d d g |  d | d | d t  j |
 j
 ƒ ƒ} t | | | ƒ t j d g d ƒ }
 |
 j	 d g |  d | d | d t  j |
 j
 ƒ ƒ} t | | | ƒ t r½t n d  } t rÏd n d  } t j | d | ƒ t j d g d ƒ }
 Wd  QX|
 j	 d d g |  d | d | d d d g ƒ} t | | t  j d ƒ ƒ t j d g d ƒ }
 |
 j	 d g |  d | d | d d d g ƒ} t | | t  j d ƒ ƒ t j d g d ƒ }
 |
 j	 d d g |  d | d | d d d g ƒ} | t  j t  j d ƒ d t  j d d ƒ f }	 t | |	 ƒ t j d g d ƒ }
 |
 j	 d g |  d | d d d g ƒ} t  j t  j d ƒ d t  j d d ƒ f }	 t | |	 ƒ t j d g d ƒ }
 |
 j	 d d d g |  d | d t  j | | f d d d g ƒ} | t  j t  j d ƒ d t  j d d ƒ f }	 t | |	 ƒ |
 j	 d d d g |  d | d t  j | | f d d d g ƒ} | t  j t  j d ƒ t  j d d d ƒ f }	 t | |	 ƒ t j d g d  ƒ }
 |
 j	 d d g |  d | d | d d d g ƒ} | t  j t  j d ƒ }	 t | |	 ƒ |
 j	 d d g |  d | d | d d d g ƒ} | t  j t  j d ƒ t  j d d d ƒ f }	 t | |	 ƒ t j d g d! ƒ }
 |
 j	 d d g |  d | d d d g ƒ} t  j t  j d ƒ }	 t | |	 ƒ |
 j	 d d g |  d | d d d g ƒ} t  j t  j d ƒ t  j d d d ƒ f }	 t | |	 ƒ t j d g d d" d d# t ƒ}
 |
 j	 d g |  d | d d g ƒ} | t  j d d$ g d ƒ }	 t | |	 ƒ t j d g d d" d ƒ}
 |
 j	 d d g |  d | d | d d g ƒ} | t  j t  j d d$ g d% ƒ t  j d& d' g d% ƒ f }	 t | |	 ƒ t j d g d d( t ƒ}
 |
 j	 d d) g |  d | d d d g ƒ} t  j d) ƒ t  j d) ƒ g } t  j d) ƒ t  j d) ƒ g } t  j | | g ƒ } | }	 d d g } x: t |  ƒ D], } |	 | c | d 7<t  j | | ƒ } q
Wt | |	 ƒ t j d g d d( t d* t ƒ}
 |
 j	 d d d) g |  d | d t  j | | f d d d g ƒ} t  j d) ƒ t  j d) ƒ g } t  j d) ƒ t  j d) ƒ g } t  j | | g ƒ } | }	 d d g } xB t |  ƒ D]4 } |	 | c | d 7<t  j | | ƒ | | } qWt | |	 ƒ d  S(-   Ni#˜  id   R   i   i1   i2   i    t   autoregressiveR   g      à?R   R   R"   gš™™™™™É?t	   irregularg      ð?t   measurement_shockss   irregular component addedt   matchs   fixed intercepti
   s   deterministic constants   local levels   random walks   fixed slopes   deterministic trends    local linear deterministic trends   random walk with drifts   local linear trendi–   i   s   smooth trends   random trendt   seasonalt   stochastic_seasonaliöÿÿÿi   i   iõÿÿÿt   cycleg333333ó?t   stochastic_cycle(   i   i    i    (   i   i    i    (   R   R   R   R   R   R	   t   UnobservedComponentsR   R   R   R   R   R   R   t   Nonet   pytestt   warnst   arangeR   t   c_t   Falset   tilet   Truet   cost   sint   arrayR#   t   dot(   R   R   R"   t   eps1t   eps2t   eps3t   mod1t   mod2R   R   R   t   warningR)   t   x1t   x2t   Tt   statesR$   (    (    sM   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_simulate.pyt   test_structural˜   s   

	$0,"0"//+	;	"c          C` s±  t  j j d ƒ d }  t  j j d |  ƒ } t  j j d |  d f ƒ } t  j |  ƒ } t  j |  ƒ } d | d <t  j |  ƒ } d | d )t j d g g d d d
 d ƒ} t j d g d d ƒ} | j	 d d d g |  d | d t  j | j
 ƒ ƒ} | j	 d d d g |  d | d t  j | j
 ƒ ƒ}	 t | |	 ƒ t j d g g d d d
 d ƒ} t j d g d d  ƒ} | j	 d d d g |  d | d t  j | j
 ƒ ƒ} | j	 d d d g |  d | d t  j | j
 ƒ ƒ}	 t | |	 ƒ t rët n d  }
 t rýd n d  } t j |
 d | ƒ& t j d g g d d! d
 d ƒ} Wd  QXt j d g d d" ƒ} | j	 d d d d d g |  d | d t  j | j
 ƒ ƒ} | j	 d d d d d g |  d | d t  j | j
 ƒ ƒ}	 t | |	 ƒ t rãt n d  }
 t rõd n d  } t j |
 d | ƒ& t j d g g d d# d
 d ƒ} Wd  QXt j d g d d$ d
 d ƒ} | j	 d d d d d d g |  d | d t  j | j
 ƒ ƒ} | j	 d d d d d d g |  d | d t  j | j
 ƒ ƒ}	 t | |	 ƒ t  j d d g d d g g ƒ } t j d d g g d d% d
 d ƒ} | j	 t  j | j ƒ  d d d f |  d t  j | | f d t  j | j
 ƒ ƒ} t | d ƒ | j	 t  j | j ƒ  d d d f |  d t  j | | f d d d g ƒ} t  j |  d	 f ƒ }	 t  j d& } x0 t |  ƒ D]" } | |	 | <t  j | | ƒ } qöWt | |	 ƒ t j d d g g d d' d
 d d t ƒ} | j	 t  j | j ƒ  d d d d d f |  d t  j | | f d t  j | | f d t  j | j
 ƒ ƒ} t | t  j | | f ƒ t j t  j |  d	 f ƒ d d( d
 d d | ƒ} | j	 t  j | j ƒ  d d d d d f |  d t  j | | f d d d g ƒ} t  j |  d	 f ƒ }	 t  j d) } xY t |  ƒ D]K } | |	 | <| |  d k  r…| | d d d g t  j | | ƒ } q…q…Wt | |	 ƒ t j t  j j d |  d	 f ƒ d d* d
 d ƒ} | j	 | j |  ƒ t r0t n d  }
 t rBd n d  } t j |
 d | ƒ; t j t  j j d |  d	 f ƒ d d+ d
 d d | ƒ} Wd  QX| j	 | j |  ƒ d  S(,   NiÞ¬ id   R   i   i1   i2   i    R   i   R   t   ng      à?gš™™™™™É?R   R   s   VARMA\(p,q\) models is notR)   gš™™™™™¹?gš™™™™™É¿R    i
   gš™™™™™¹¿g      ð?t   measurement_errorR(   R"   i   iþÿÿÿ(   i   i    (   i   i    i    (   i    i   (   i    i    i   (   i   i   (   i   i    i   (   i   i   (   i   i    i   (   i   i    (   i   i   (   i   i    (   i   i    (   i   i   (   i    i   (   i   i   (   R   R   R   R   R   R
   t   VARMAXR   R   R   R   R   R   R   R/   R0   R1   R9   R   t   ravelR3   R#   R:   R6   t   start_params(   R   R   R"   R;   R<   R=   R>   R?   R   R   R@   R)   t
   transitionR   t   stateR$   (    (    sM   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_simulate.pyt   test_varmaxM  s°    

!!'$$'!!$(("
!	.'	."
/*'c          C` s"  t  j j d ƒ d }  t  j j d |  ƒ } t  j j d |  d f ƒ } t  j |  ƒ } t  j |  ƒ } d | d <t  j |  ƒ } d | d )t j d d g g d d d	 d
 ƒ} t j d g d d ƒ} | j	 d d d d d d g |  d t  j
 | | f d | d t  j | j ƒ ƒ} | j	 d d d g |  d | d t  j | j ƒ ƒ}	 t | d  d  … d f d |	 ƒ t | d  d  … d f d |	 ƒ t j t  j |  d
 f ƒ d d d	 d
 d | ƒ} t j d g d d ƒ} | j	 d d d d d d d d g |  d t  j
 | | f d | d t  j | j ƒ ƒ} | j	 d d d g |  d | d t  j | j ƒ ƒ}	 t | d  d  … d f d |	 d | d  d  … d f ƒ t | d  d  … d f d |	 d
 | d  d  … d f ƒ t j t  j j d |  d f ƒ d d
 d	 d
 d | d d
 d t ƒ}
 |
 j	 |
 j |  ƒ d  S(   Ni+n id   R   i   i1   i2   i    t	   k_factorst   factor_orderi   R   gÍÌÌÌÌÌì¿gš™™™™™é?g      ð?g      à?gš™™™™™É?R(   R   R   R"   i   iþÿÿÿi   t   error_ordert	   error_var(   i   i    i    (   i   i    i    (   R   R   R   R   R   R   t   DynamicFactorR   R   R   R3   R   R   R6   RJ   (   R   R   R"   R;   R<   R=   R>   R?   R   R   R   (    (    sM   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_simulate.pyt   test_dynamic_factor¿  sD    

$!!!!'99!c    	   	   C` så  t  j j d ƒ d }  t  j j d |  ƒ } t  j |  ƒ } t  j |  ƒ } d | d <t  j |  ƒ } d | d )t j d g d d ƒ} | j j d g d g g ƒ | j	 d	 d
 g |  d | ƒ} t
 | d d	 t  j |  ƒ ƒ t j d g d ƒ } | j j d g d g g ƒ | j	 d
 d
 g |  d | d | ƒ} t
 | d | | ƒ t  j d	 d g ƒ } t j d d g g d d d d ƒ} | j d d g t  j d d g ƒ ƒ | j	 t  j | j ƒ  d
 d d
 f |  d t  j | | f d t  j | | f ƒ} t
 | t  j d d	 t  j |  ƒ d d t  j |  ƒ f ƒ t j d d g g d d d d ƒ} | j d g d g g ƒ | j	 d d d
 d
 d	 g |  d t  j | | f d | ƒ} d d	 t  j |  ƒ } t
 | t  j d | d | f ƒ d  S(   Ni#˜  id   R   i   i1   i2   i    R   g      à?g      ð?R   s   local levelR(   gš™™™™™É?R   RF   RN   RO   gš™™™™™é?(   i   i    i    (   i   i    (   R   R   R   R   R   R   R   t   ssmt   initialize_knownR   R   R2   R	   R.   t   diagR
   RH   R   RI   R3   R   RR   (	   R   R   R;   R<   R=   R   R   RK   t   tmp(    (    sM   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_simulate.pyt   test_known_initializationì  s@    

	$%( $	c          C` sˆ   d }  t  j d g d d d d ƒ} | j d d g |  ƒ } t | t j |  ƒ ƒ | j d d g |  ƒ } t | t j |  ƒ d ƒ d  S(	   Nid   i   R   i    R   R    i
   (   i    i    i    (   R   R   R   R   R   t   ones(   t   n_simulationsR   R   (    (    sM   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_simulate.pyt   test_sequential_simulate#  s    (   t   __doc__t
   __future__R    R   R   t   statsmodels.compatR   t   numpyR   t   numpy.testingR   R0   t   scipy.signalR   t   statsmodels.tools.sm_exceptionsR   R   t   statsmodels.tsa.statespaceR   R	   R
   R   R   R%   RE   RM   RS   RX   R[   (    (    (    sM   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_simulate.pyt   <module>   s   "		d	µ	r	-	7