ó
áp7]c           @` sö   d  Z  d d l m Z m Z m Z d d l Z d d l Z d d l	 m
 Z
 m Z d d l Z d d l m Z d d l m Z d d l m Z d d l m Z d d	 l m Z d
 d l m Z e j d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d S(   s?  
Tests for python wrapper of state space representation and filtering

Author: Chad Fulton
License: Simplified-BSD

References
----------

Kim, Chang-Jin, and Charles R. Nelson. 1999.
"State-Space Models with Regime Switching:
Classical and Gibbs-Sampling Approaches with Applications".
MIT Press Books. The MIT Press.
i    (   t   divisiont   absolute_importt   print_functionN(   t   assert_equalt   assert_allclose(   t   cPickle(   t   sarimax(   t   KalmanFilter(   t   Representation(   t   UnobservedComponentsi   (   t   results_kalman_filterc          C` sX   t  j }  t j |  d d t j d d d d ƒd d g ƒ} t j | d ƒ | d	 <| S(
   Nt   datat   indexs
   1947-01-01s
   1995-07-01t   freqt   QSt   columnst   GDPt   lgdp(   R
   t   uc_unit   pdt	   DataFramet
   date_ranget   npt   log(   t   truet   data_(    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_pickle.pyR      s    	
c         C` sâ   t  j |  d d d ƒ} t j t j | ƒ ƒ } | j d d d t d d	 ƒ } | j d d d t d d	 ƒ } t | j | j ƒ t | j	 | j	 ƒ t | j
 | j
 ƒ t | j j | j j ƒ t | j d
 ƒ | j d
 ƒ ƒ d  S(   NR   t   orderi   i    t   dispiÿÿÿÿt   full_outputt   methodt   newtoni
   (   i   i   i    (   R   t   SARIMAXR   t   loadst   dumpst   fitt   TrueR   t   llf_obst   tvaluest   smoothed_statet   residt   valuest   impulse_responses(   R   t   modt   pkl_modt   rest   pkl_res(    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_pickle.pyt   test_pickle_fit_sarimax*   s    c          C` s©  d }  d } t  j j d ƒ t  j j d |  | f ƒ } t  j | d  d … d f <t  j j d |  d f ƒ } t j d d	 d
 d |  ƒ} t j | d | ƒ} t j | d | ƒ} t | d d | ƒt | d d | ƒg } xÈ | D]À } t	 j
 t	 j | ƒ ƒ }	 t | j |	 j ƒ | j d t ƒ }
 |	 j d t ƒ } t |
 j | j ƒ t |
 j | j ƒ t |
 j | j ƒ t |
 j | j ƒ t |
 j d ƒ |
 j d ƒ ƒ qá Wd  S(   Ni   i   i¸  t   sizei   i    i   s
   1970-01-01R   R   t   periodsR   t   llevelt   exogR   i
   (   R   t   randomt   seedt   normalt   nanR   R   R   R	   R   R    R!   R   t   start_paramsR"   t   FalseR   R$   R%   R&   R'   R)   (   t   nobst   k_endogt   endogt   exog2R   t   endog_pdt   exog2_pdt   modelsR*   R+   R,   R-   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_pickle.pyt!   test_unobserved_components_pickle9   s*    c      
   C` sß  t  j } d } t d d d | ƒ } | j |  d j ƒ d d d d g | j d  d  … d  d  … d f <d d d d d d g | j d d d d d d g d d d d d d g d d d d d d g f <t j | j	 ƒ | _
 t j | d	 ƒ \ } } } } } | | g | j d d g d d g d d g f <| d | d d | d g | j t j | ƒ t j | d
 t ƒf <t j | f ƒ }	 t j | ƒ d }
 t j t j | j d  d  … d  d  … d f |
 ƒ | j d  d  … d  d  … d f j ƒ }
 | j |	 |
 ƒ t j t j | ƒ ƒ } | j ƒ  } | j ƒ  } t | j | d j ƒ  | j | d j ƒ  ƒ t | j d | d | j d | d ƒ t | j d | d | j d | d ƒ t | j d | d | j d | d ƒ d  S(   Ni   R:   i   t   k_statesR   i    i   i   t
   parameterst   dtypeid   t   start(   R
   R   R   t   bindR(   t   designt
   transitionR   t   eyeRA   t	   selectiont   arrayt	   state_covt   diag_indicest   zerost   intt   dott   Tt   initialize_knownR   R    R!   t   filterR   R$   t   sumt   filtered_state(   R   R   RA   t   modelt   sigma_vt   sigma_et   sigma_wt   phi_1t   phi_2t   initial_statet   initial_state_covR+   t   resultst   pkl_results(    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_pickle.pyt   test_kalman_filter_pickleY   s8    	.^.D+(c          C` sß   d }  d } t  j |  | ƒ j | |  ƒ d } t  j | ƒ } t | d d ƒ} t j t j | ƒ ƒ } t | j	 | j	 ƒ t | j
 | j
 ƒ | j ƒ  | j ƒ  t | j | j ƒ t | j | j ƒ t | j | j ƒ d  S(   Ni
   i   g      ð?RA   (   R   t   aranget   reshapet   asfortranarrayR   R   R    R!   R   R9   R:   t   _initialize_representationRF   t   obs_interceptt   initial_variance(   R9   R:   t   arrR;   R*   R+   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_pickle.pyt   test_representation_pickle‰   s    #

(   t   __doc__t
   __future__R    R   R   t   numpyR   t   pandasR   t   numpy.testingR   R   t   pytestt   statsmodels.compatR   t   statsmodels.tsa.statespaceR   t(   statsmodels.tsa.statespace.kalman_filterR   t)   statsmodels.tsa.statespace.representationR   t%   statsmodels.tsa.statespace.structuralR	   R]   R
   t   fixtureR   R.   R@   R_   Rg   (    (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_pickle.pyt   <module>   s    		 	0