
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	 Z	 d d l
 Z
 d d l m Z m Z d d l m Z d d l m Z m Z m Z e	 j j e	 j j e   Z d e j f d     YZ d	 e f d
     YZ d e j f d     YZ d   Z d e f d     YZ d S(   sM   
Tests for miscellaneous models

Author: Chad Fulton
License: Simplified-BSD
i    (   t   divisiont   absolute_importt   print_functionN(   t   mlemodelt   sarimax(   t   datasets(   t   assert_equalt   assert_allcloset   assert_raisest
   Interceptsc           B` s>   e  Z d  Z d   Z e d    Z e d    Z d   Z RS(   so   
    Test class for observation and state intercepts (which usually don't
    get tested in other models).
    c         K` s   d } d } t  t |   j | d | d | | t j d  |  d <t j d  |  d <t j d  |  d <t j d  |  d <t j d  |  d <|  j   d  S(	   Ni   t   k_statest   k_posdeft   designt   obs_covt
   transitiont	   selectiont	   state_cov(   t   superR	   t   __init__t   npt   eyet   initialize_approximate_diffuse(   t   selft   endogt   kwargsR
   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR      s    c         C` s   d d d d d d g S(   Ns   d.1s   d.2s   d.3s   c.1s   c.2s   c.3(    (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   param_names'   s    c         C` s   t  j d  S(   Ni   (   R   t   arange(   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   start_params+   s    c         K` s;   t  t |   j | |  } | d  |  d <| d |  d <d  S(   Ni   t   obs_interceptt   state_intercept(   R   R	   t   update(   R   t   paramsR   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR   /   s    (   t   __name__t
   __module__t   __doc__R   t   propertyR   R   R   (    (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR	      s
   	t   TestInterceptsc           B` s   e  Z e d  d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   t   mixedc         K` s  t  t j d } t j |  |  _ t j j   j	 } t j
 d d d d d d  | _ | d d	 d
 g j   } | | j   } | d k r t j | j d  d  d  d   f <t j | j d d  d  d   f <n | d k rt j | j d d  d f <t j | j d d  d f <n | d k rt j | j d d  d f <t j | j d d  d f <t j | j d d  d f <t j | j d d  d f <t j | j d d  d f <n  t | |  } t j d  d |  _ | |  _ | j |  j d t |  _ t j d |  j j f  |  j _ t j d |  j j f  |  j _ t j d |  j j f  |  j _ t j d |  j j f  |  j _ x"t |  j j  D]} t j j  |  j j! d  d   d  d   | f  |  j j d | f <t j j  |  j j" d  d   d  d   | d f  |  j j d | f <t j j  |  j j# d  d   d  d   | f  |  j j d | f <t j j  |  j j$ d  d   d  d   | f  |  j j d | f <qWd  S(   Ns    results/results_intercepts_R.csvt   starts
   1959-01-01t   ends	   2009-7-01t   freqt   QSt   realgdpt   realconst   realinvt   alli2   iw   i   t   partiali    R%   i   iF   i   i'   iZ   i   i   t
   return_ssm(%   t   current_patht   ost   sept   pdt   read_csvt   desiredR   t	   macrodatat   load_pandast   datat
   date_ranget   indext   copyt   stdR   t   nant   ilocR	   R   R   t   modelt   smootht   Truet   resultst   zerost   nobst!   det_scaled_smoothed_estimator_covt   det_predicted_state_covt   det_smoothed_state_covt"   det_smoothed_state_disturbance_covt   ranget   linalgt   dett   scaled_smoothed_estimator_covt   predicted_state_covt   smoothed_state_covt   smoothed_state_disturbance_cov(   t   clst   whichR   t   patht   dtat   obst   modt   i(    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   setup_class7   sH    "%	!!!!	8	<	8	c         C` s    t  t j |  j j  d  d  S(   NgY	(   R   R   t   sumRB   t   llf_obs(   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_loglikem   s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   r1t   r2t   r3(   R   RB   t   scaled_smoothed_estimatort   TR5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_scaled_smoothed_estimatorp   s    c         C` s$   t  |  j j j |  j d g  d  S(   Nt   detN(   R   RB   RE   R_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt"   test_scaled_smoothed_estimator_covv   s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   m1t   m2t   m3(   R   RB   t	   forecastsR_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_forecasts|   s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   v1t   v2t   v3(   R   RB   t   forecasts_errorR_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_forecasts_error   s    c         C` s-   t  |  j j j   |  j d d d g  d  S(   Nt   F1t   F2t   F3(   R   RB   t   forecasts_error_covt   diagonalR5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_forecasts_error_cov   s    c         C` s@   t  |  j j d  d   d d   f j |  j d d d g  d  S(   Ni   t   a1t   a2t   a3(   R   RB   t   predicted_stateR_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_predicted_states   s    "c         C` s$   t  |  j j j |  j d g  d  S(   Nt   detP(   R   RB   RF   R_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_predicted_states_cov   s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt	   alphahat1t	   alphahat2t	   alphahat3(   R   RB   t   smoothed_stateR_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_smoothed_states   s    c         C` s$   t  |  j j j |  j d g  d  S(   Nt   detV(   R   RB   RG   R_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_smoothed_states_cov   s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   muhat1t   muhat2t   muhat3(   R   RB   t   smoothed_forecastsR_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_smoothed_forecasts   s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   etahat1t   etahat2t   etahat3(   R   RB   t   smoothed_state_disturbanceR_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_smoothed_state_disturbance   s    c         C` s$   t  |  j j j |  j d g  d  S(   Nt   detVeta(   R   RB   RH   R_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt#   test_smoothed_state_disturbance_cov   s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   Nt   epshat1t   epshat2t   epshat3t   atolg&.>(   R   RB   t    smoothed_measurement_disturbanceR_   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt%   test_smoothed_measurement_disturbance   s    c         C` s-   t  |  j j j   |  j d d d g  d  S(   Nt   Veps1t   Veps2t   Veps3(   R   RB   t$   smoothed_measurement_disturbance_covRq   R5   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt)   test_smoothed_measurement_disturbance_cov   s    (   R    R!   t   classmethodRW   RZ   R`   Rb   Rg   Rl   Rr   Rw   Ry   R~   R   R   R   R   R   R   (    (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR$   6   s"   5														t   LargeStateCovAR1c           B` s>   e  Z d  Z d   Z e d    Z e d    Z d   Z RS(   s   
    Test class for k_posdef > k_states (which usually don't get tested in
    other models).

    This is just an AR(1) model with an extra unused state innovation
    c         K` s]   d } d } t  t |   j | d | d | | d |  d	 <d |  d
 <d |  d <|  j   d  S(   Ni   i   R
   R   R   i    R   R   (   R   i    i    (   R   i    i    (   R   i   i   (   R   R   R   t   initialize_stationary(   R   R   R   R
   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR      s    


c         C` s
   d d g S(   Nt   phit   sigma2(    (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR      s    c         C` s
   d d g S(   Ng      ?i   (    (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR      s    c         K` s;   t  t |   j | |  } | d |  d <| d |  d <d  S(   Ni    R   i   R   (   R   i    i    (   R   i    i    (   R   R   R   (   R   R   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR      s    (   R    R!   R"   R   R#   R   R   R   (    (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR      s
   	
c           C` s   t  t t t j d   d  S(   Ni
   (   R   t
   ValueErrorR   R   R   (    (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_large_kposdef   s    t   TestLargeStateCovAR1c           B` s   e  Z e d     Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z RS(   c      
   C` s   t  j d  d d d d d d d d d d g
 } d d	 g } t j |  } | j |  |  _ t |  } | j |  |  _ d  S(
   Ns   Not implementedg?g      g333333ӿgg      ?g      ?g?i   (   t   pytestt   skipR   t   SARIMAXR@   t   res_desiredR   t   res(   RP   R   R   t   mod_desiredRU   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyRW      s    $c         C` s   t  |  j j j d  t  |  j j j d  t  |  j j j d  t  |  j j j d  t  |  j j j d  t  |  j j j d  d  S(   Ni   i   i
   (   i   i
   (   i   i
   (   R   R   t   filter_resultsR
   R   R   t   shapeR   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   test_dimensions   s    c         C` s   t  |  j j |  j j  d  S(   N(   R   R   RY   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyRZ   	  s    c         C` s%   t  |  j j d |  j j d  d  S(   Ni    (   R   R   R^   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR`     s    c         C` s%   t  |  j j d |  j j d  d  S(   Ni    (   R   R   RL   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyRb     s    c         C` s   t  |  j j |  j j  d  S(   N(   R   R   Rf   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyRg     s    c         C` s   t  |  j j |  j j  d  S(   N(   R   R   Rk   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyRl     s    c         C` s   t  |  j j |  j j  d  S(   N(   R   R   Rp   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyRr     s    c         C` s%   t  |  j j d |  j j d  d  S(   Ni    (   R   R   Rv   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyRw     s    c         C` s%   t  |  j j d |  j j d  d  S(   Ni    (   i    i    (   i    i    (   R   R   RM   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyRy   #  s    c         C` s%   t  |  j j d |  j j d  d  S(   Ni    (   R   R   R}   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR~   '  s    c         C` s%   t  |  j j d |  j j d  d  S(   Ni    (   i    i    (   i    i    (   R   R   RN   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR   +  s    c         C` s<   t  |  j j d |  j j d  t  |  j j d d  d  S(   Ni    i   (   R   R   R   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR   /  s    c         C` s<   t  |  j j d |  j j d  t  |  j j d d  d  S(   Ni    i   (   i    i    (   i    i    (   i   i   (   R   R   RO   R   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR   4  s    c         C` s   t  |  j j |  j j  d  S(   N(   R   R   R   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR   9  s    c         C` s   t  |  j j |  j j  d  S(   N(   R   R   R   R   (   R   (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR   =  s    (   R    R!   R   RW   R   RZ   R`   Rb   Rg   Rl   Rr   Rw   Ry   R~   R   R   R   R   R   (    (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyR      s    	
													(    R"   t
   __future__R    R   R   t   numpyR   t   pandasR3   R1   R   t   statsmodels.tsa.statespaceR   R   t   statsmodelsR   t   numpy.testingR   R   R   RR   t   dirnamet   abspatht   __file__R0   t   MLEModelR	   t   objectR$   R   R   R   (    (    (    sK   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_models.pyt   <module>   s     	