ó
áp7]c           @` sÏ   d  Z  d d l m Z m Z 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 m Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   sG   
Tests for initialization

Author: Chad Fulton
License: Simplified-BSD
i    (   t   divisiont   absolute_importt   print_functionN(   t   solve_discrete_lyapunov(   t   sarimaxt   varmax(   t   Initialization(   t   assert_allcloset   assert_raisesc   	      C` sÊ   | d |  ƒ \ } } } t  | | ƒ t  | | ƒ t  | | ƒ |  j j ƒ  | j d |  j j ƒ |  j j } | j | ƒ t  t j | j	 ƒ | ƒ t  t j | j
 ƒ | ƒ t  t j | j ƒ | ƒ d  S(   Nt   modelt   prefix(   R   t   ssmt   _initialize_representationt   _initialize_initializationR
   t   _statespacet
   initializet   npt   arrayt   initial_statet   initial_diffuse_state_covt   initial_state_cov(	   t   modt   initt   a_truet	   Pinf_truet
   Pstar_truet   at   Pinft   PstarR   (    (    sS   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyt   check_initialization   s    c       	   C` sq  t  j d ƒ }  t j |  d d ƒ} t | j d d d g ƒ} t | | d g t  j d g ƒ t  j d g ƒ ƒ t | j d d t  j d g ƒ ƒ} t | | d g t  j d g ƒ t  j d g ƒ ƒ t | j d d d g d t  j d g ƒ ƒ} t | | d g t  j d g ƒ t  j d g ƒ ƒ t  j d ƒ }  t j |  d d ƒ} t | j d d d d
 g ƒ} t | | d d
 g t  j d d g ƒ t  j d d g ƒ ƒ t | j d d t  j d d g ƒ ƒ} t | | d d g t  j d d g ƒ t  j d d g ƒ ƒ t | j d d d d
 g d t  j d d g ƒ ƒ} t | | d d
 g t  j d d g ƒ t  j d d g ƒ ƒ d  S(   Ni
   t   orderi   i    t   knownt   constantg      ø?t   stationary_covi   gš™™™™™É¿gÍÌÌÌÌÌ@(   i   i    i    (   i   i    i    (   R   t   zerosR   t   SARIMAXR   t   k_statesR   t   diag(   t   endogR   R   (    (    sS   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyt   test_global_known#   s,    1$11$$$c          C` sÒ   t  j d ƒ }  t j |  d d ƒ} t | j d ƒ } t | | d g t  j d ƒ t  j d g ƒ ƒ t  j d ƒ }  t j |  d d ƒ} t | j d ƒ } t | | d d g t  j d ƒ t  j d d g ƒ ƒ d  S(	   Ni
   R   i   i    t   diffusei   (   i   i    i    (   i   i    i    (	   R   R"   R   R#   R   R$   R   t   eyeR%   (   R&   R   R   (    (    sS   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyt   test_global_diffuseM   s    .c          C` s  t  j d ƒ }  t j |  d d ƒ} t | j d ƒ } t | | d g t  j d g ƒ t  j d ƒ d ƒ t | j d d d g ƒ} t | | d g t  j d g ƒ t  j d ƒ d ƒ t | j d d	 d
 ƒ} t | | d g t  j d g ƒ t  j d ƒ d
 ƒ t  j d ƒ }  t j |  d d ƒ} t | j d ƒ } t | | d d g t  j d d g ƒ t  j d ƒ d ƒ t | j d d d d g ƒ} t | | d d g t  j d d g ƒ t  j d ƒ d ƒ t | j d d	 d
 ƒ} t | | d d g t  j d d g ƒ t  j d ƒ d
 ƒ d  S(   Ni
   R   i   i    t   approximate_diffuseg    €„.AR    g333333ó?t   approximate_diffuse_varianceg    _ Bi   gš™™™™™É¿(   i   i    i    (   i   i    i    (	   R   R"   R   R#   R   R$   R   R%   R)   (   R&   R   R   (    (    sS   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyt   test_global_approximate_diffuse_   s(    22	28$	c    
   	   C` s¯  t  j d ƒ }  t j |  d d d d ƒ} d } d } d } | j t  j | | | f ƒ t | j d	 ƒ } t | | d g t  j	 d g ƒ t  j
 d ƒ | d | d
 ƒ d } d } d } | j t  j | | | f ƒ t | j d	 ƒ } t | | | d | g t  j	 d g ƒ t  j
 d ƒ | d | d
 ƒ t  j d ƒ }  t j |  d d d d ƒ} d } d d g } d } | j t  j | | | f ƒ t | j d	 ƒ } t  j d d g d d g g ƒ } t  j	 | d g ƒ } t | | ƒ } t | | d d g t  j	 d d g ƒ | ƒ d } d d g } d } | j t  j | | | f ƒ t | j d	 ƒ } t  j j t  j
 d
 ƒ | ƒ j | d g ƒ }	 t | | |	 t  j	 d d g ƒ | ƒ d  S(   Ni
   R   i   i    t   trendt   cg      à?g       @t
   stationaryi   g333333ó?gš™™™™™É¿(   i   i    i    (   i   i    i    (   R   R"   R   R#   t   updatet   r_R   R$   R   R%   R)   R   R   t   linalgt   invt   dot(
   R&   R   t	   interceptt   phit   sigma2R   t   Tt   Qt   desired_covt   desired_intercept(    (    sS   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyt   test_global_stationary   sH     & +.c       	   C` s  t  j d ƒ }  t j |  d d ƒ} d d g } d } | j t  j | | f ƒ t | j ƒ } | j d d d	 d
 g ƒ| j d d d	 d g ƒt	 | | d
 d g t  j
 d d g ƒ t  j
 d d g ƒ ƒ | j d ƒ | j d d ƒ t	 | | d
 d g t  j
 d d g ƒ t  j
 d d g ƒ ƒ | j d ƒ | j d d ƒ t	 | | d
 d g t  j
 d d g ƒ t  j
 d d g ƒ ƒ | j d ƒ | j d d ƒ t	 | | d
 d g t  j
 d d g ƒ t  j
 d d g ƒ ƒ t | j ƒ } | j d d d t  j
 d g ƒ ƒ| j d d ƒ t	 | | d d g t  j
 d d g ƒ t  j
 d d g ƒ ƒ t | j ƒ } | j d d d	 d
 g d t  j
 d g ƒ ƒ| j d d ƒ t	 | | d
 d g t  j
 d d g ƒ t  j
 d d g ƒ ƒ t  j d ƒ }  t j |  d d ƒ} t | j ƒ } | j d d d	 d
 d g ƒ| j d d ƒ t	 | | d
 d d g t  j
 d d d g ƒ t  j
 d d d g ƒ ƒ t | j ƒ } | j d d d t  j
 d d g ƒ ƒ| j d d ƒ t	 | | d d d g t  j
 d d d g ƒ t  j
 d d d g ƒ ƒ t | j ƒ } | j d d d	 d
 d g d t  j
 d d g ƒ ƒ| j d d ƒ t	 | | d
 d d g t  j
 d d d g ƒ t  j
 d d d g ƒ ƒ d  S(   Ni
   R   i   i    g      à?gš™™™™™É¿g       @R   R    g333333ó?i   R(   R+   g    €„.AR0   R!   i   gÍÌÌÌÌÌ@(   i   i    i    (   i   i    i    (   i    i   (   i    i   (   i    i   (   R   R"   R   R#   R1   R2   R   R$   t   setR   R%   t   unset(   R&   R   R7   R8   R   (    (    sS   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyt   test_mixed_basicµ   s\    $:$:":+:*%**c          C` sˆ  t  j d ƒ }  t j |  d d ƒ} d d g } d } | j t  j | | f ƒ t | j ƒ } | j d d	 ƒ | j d d ƒ t  j d ƒ } t  j	 d d g d d g g ƒ } t  j
 | d g ƒ } t | | ƒ | d d  … d d  … f <t | | d d d g t  j
 d d d g ƒ | ƒ | j ƒ  | j d d	 ƒ | j d d ƒ | j d d ƒ t  j	 d g g ƒ } t  j
 | g ƒ } t  j
 d t  j t | | ƒ ƒ d g ƒ } t | | d d d g t  j
 d d d g ƒ | ƒ | j ƒ  | j d d	 ƒ | j d d ƒ | j d d ƒ d | d <t | | d d d g t  j
 d d d g ƒ | ƒ t  j d ƒ }  t j |  d d ƒ} d d g } t  j	 d d g d d g g ƒ }	 t  j	 d d g d d g g ƒ }
 t  j d ƒ } t  j | |	 j ƒ  t  j j |
 ƒ | f } | j | ƒ t | j d ƒ } t  j j t  j d ƒ |	 | ƒ } t |	 |
 ƒ } t | | | t  j
 d d g ƒ | ƒ | j d  d	 ƒ t | | d d g t  j d ƒ t  j
 d d g ƒ ƒ | j d  ƒ | j d d ƒ | j d d ƒ | d | ƒ \ } } } | d d |	 d | d d |	 d g } t  j
 |
 d d |	 d d |
 d  d |	 d! d g ƒ } t | | | t  j
 d d g ƒ | ƒ d  S("   Ni
   R   i   i   i    g      à?gš™™™™™É¿g       @R(   i   R0   R+   g    €„.Ag      ø?gš™™™™™¹¿gš™™™™™¹?gš™™™™™é?g333333ó?gš™™™™™Ù¿gš™™™™™Ù?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   (   R   R"   R   R#   R1   R2   R   R$   R>   R   R%   R   R   t   cleart   squeezeR   t   VARMAXt   tril_indicest   ravelR3   t   choleskyt   solveR)   t   NoneR?   (   R&   R   R7   R8   R   R;   R9   R:   R6   t
   transitiont   covt   trilt   paramsR<   R   R   R   (    (    sS   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyt   test_mixed_stationary   sp    %1
*1

1"4 c          C` s1  t  j d ƒ }  t j |  d d ƒ} d d d d d d g } d	 } | j t  j | | f ƒ t d
 ƒ } t d d ƒ } t d d d d ƒ} | j d | ƒ | j d | ƒ t d
 ƒ } t d d d d g d d	 g g ƒ} | j d | ƒ t d d ƒ }	 | j d |	 ƒ t d d ƒ }
 | j d |
 ƒ t d ƒ } | j d | ƒ | j d | ƒ t  j d ƒ } t  j d d g d d g g ƒ } t  j | d g d d g g ƒ } t	 | | ƒ | d  d … d  d … f <d | d <d	 | d <d | d <t
 | | d d d d d d g t  j d d d d d d g ƒ | ƒ d  S(   Ni
   R   i   i    g      à?gš™™™™™É¿gš™™™™™¹?g        g       @i   i   R0   i   R+   R,   g    eÍÍAR   R    R!   R(   g    €„.Ai   (   i   i    i    (   i    i   (   i    i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R"   R   R#   R1   R2   R   R>   R   R   R   R%   (   R&   R   R7   R8   t   init1_1t	   init1_1_1t	   init1_1_2t   init1_2t	   init1_2_1t	   init1_2_2t	   init1_2_3R   R;   R9   R:   (    (    sS   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyt   test_nestedG  sB    	$%


c          C` så  t  t t d d ƒ t  t t d d d d d g ƒt  t t d d d d d g ƒt  t t d d ƒ t  t t d d d d g ƒt  t t d d d d	 g ƒt d ƒ }  t  t |  j d
 d ƒ t  t |  j d
 ƒ t  t |  j d d ƒ t  t |  j d d ƒ t  t |  j d ƒ t  t |  j d d ƒ t  t |  j d ƒ |  j d  d ƒ t  t |  j d d ƒ |  j ƒ  |  j d d ƒ t  t |  j d  d ƒ |  j ƒ  t  t |  j d ƒ t d ƒ }  t  t |  ƒ t d d ƒ }  t  t |  ƒ d  S(   Ni   t    R0   R    i   i   R!   R   i    iÿÿÿÿR(   t   xi   (   i   i   i   (   i   i   i   (   R   t
   ValueErrorR   R>   R?   RH   RA   (   R   (    (    sS   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyt   test_invalidq  s4    

(   t   __doc__t
   __future__R    R   R   t   numpyR   t   scipy.linalgR   t   statsmodels.tsa.statespaceR   R   t)   statsmodels.tsa.statespace.initializationR   t   numpy.testingR   R   R   R'   R*   R-   R=   R@   RM   RU   RY   (    (    (    sS   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyt   <module>   s   		*		"	4	K	G	*