
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
 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 m Z e j j e j j e   Z d	 e f d
     YZ d e f d     YZ  d e f d     YZ! d e f d     YZ" d e f d     YZ# d e# f d     YZ$ d e# f d     YZ% d e# f d     YZ& d e f d     YZ' d e' f d     YZ( d e' f d     YZ) d e' f d      YZ* d! e f d"     YZ+ d# e+ f d$     YZ, d% e+ f d&     YZ- d' e f d(     YZ. d) e. f d*     YZ/ d+ e f d,     YZ0 d- e0 f d.     YZ1 d/ e0 f d0     YZ2 d1 e0 f d2     YZ3 d S(3   s  
Tests for smoothing and estimation of unobserved states and disturbances

- Predicted states: :math:`E(\alpha_t | Y_{t-1})`
- Filtered states: :math:`E(\alpha_t | Y_t)`
- Smoothed states: :math:`E(\alpha_t | Y_n)`
- Smoothed disturbances :math:`E(\varepsilon_t | Y_n), E(\eta_t | Y_n)`

Tested against R (FKF, KalmanRun / KalmanSmooth), Stata (sspace), and
MATLAB (ssm toolbox)

Author: Chad Fulton
License: Simplified-BSD
i    (   t   divisiont   absolute_importt   print_functionN(   t   assert_allcloset   assert_almost_equalt   assert_equal(   t   datasets(   t   mlemodelt   sarimax(   t   FILTER_UNIVARIATE(   t   SMOOTH_CLASSICALt   SMOOTH_ALTERNATIVEt   SMOOTH_UNIVARIATEt   TestStatesAR3c           B` s}   e  Z e 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 RS(   c   	      O` sv  t  j j t d d  } t j |  |  _ t j d d d d d d  |  j _ t  j j t d d	  } d
 d d d d d d d d d d d g } t j | d d  d | |  _
 t j |  j d d d( d t d t | | |  _ | r t |  j j _ n  t j d) } |  j j | d# d$ |  _ t j d |  j j f  |  j _ t j d |  j j f  |  j _ x t |  j j  D] } t j j |  j j j d  d   d  d   | f  |  j j d | f <t j j |  j j j d  d   d  d   | f  |  j j d | f <qtW|  j j  |  j j j! |  j j } |  j j" d% d  |  _# |  j# j$ d& t j |  d' t j |  j j%   d  S(*   Nt   resultss   results_wpi1_ar3_stata.csvt   starts
   1960-01-01t   periodsi|   t   freqt   QSs   results_wpi1_ar3_matlab_ssm.csvt   a1t   a2t   a3t   detPt	   alphahat1t	   alphahat2t	   alphahat3t   detVt   epst   epsvart   etat   etavart   headert   namest   wpit   orderi   i   i    t   simple_differencingt   hamilton_representationg?ghc?g?mT?g_?t   cov_typet   nonet   filter_timingt   disturbance_variatest   initial_state_variates(   i   i   i    (   g?ghc?g?mT?g_?(&   t   ost   patht   joint   current_patht   pdt   read_csvt   statat
   date_ranget   indext   Nonet
   matlab_ssmR   t   SARIMAXt   Truet   modelt   ssmt   timing_init_filteredt   npt   r_t   smoothR   t   zerost   nobst   det_predicted_state_covt   det_smoothed_state_covt   ranget   linalgt   dett   filter_resultst   predicted_state_covt   smoother_resultst   smoothed_state_covt   k_endogt   k_posdeft   simulation_smoothert   simt   simulatet   k_states(	   t   clst   alternate_timingt   argst   kwargsR+   t   matlab_namest   paramst   it   n_disturbance_variates(    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   setup_class!   s:    		!!	;	?#c         C` s5   t  |  j j j   j d |  j j d d d  d  S(   Ni    i   t   dep1i   (   R   R   RD   t   predictt	   forecastsR0   t   iloc(   t   self(    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_predict_obsR   s    c         C` s/   t  |  j j j d |  j j d d d  d  S(   Ni    i   t   sr1i   (   R   R   RD   t   standardized_forecasts_errorR0   RZ   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_standardized_residualsX   s    c         C` s   t  |  j j j d  d   d  d  f j |  j j d d d d g d  t  |  j j j d  d   d  d  f j |  j d d d	 g d  d  S(
   Nii   t   sp1t   sp2t   sp3i   R   R   R   (   R   R   RD   t   predicted_statet   TR0   RZ   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_predicted_states^   s    %!%c         C` s'   t  |  j j j |  j d g d  d  S(   NR   i   (   R   R   R?   Rd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_predicted_states_covh   s    c         C` s7   t  |  j j j j |  j j d d d d g d  d  S(   Ni   t   sf1t   sf2t   sf3i   (   R   R   RD   t   filtered_stateRd   R0   RZ   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_filtered_statesn   s    c         C` sc   t  |  j j j j |  j j d d d d g d  t  |  j j j j |  j d d d g d  d  S(	   Ni   t   sm1t   sm2t   sm3i   R   R   R   (   R   R   RF   t   smoothed_stateRd   R0   RZ   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_smoothed_statest   s    !c         C` s'   t  |  j j j |  j d g d  d  S(   NR   i   (   R   R   R@   Rd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_smoothed_states_cov~   s    c         C` s*   t  |  j j j j |  j d g d  d  S(   NR   i   (   R   R   RF   t    smoothed_measurement_disturbanceRd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt%   test_smoothed_measurement_disturbance   s    c         C` s4   |  j  j } t | j d j |  j d g d  d  S(   Ni    R   i   (   R   RF   R   t$   smoothed_measurement_disturbance_covRd   R4   (   R[   t   res(    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt)   test_smoothed_measurement_disturbance_cov   s    c         C` s*   t  |  j j j j |  j d g d  d  S(   NR   i   (   R   R   RF   t   smoothed_state_disturbanceRd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_smoothed_state_disturbance   s    c         C` s.   t  |  j j j d j |  j d g d  d  S(   Ni    R   i   (   R   R   RF   t   smoothed_state_disturbance_covRd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt#   test_smoothed_state_disturbance_cov   s    (   t   __name__t
   __module__t   classmethodt   FalseRV   R\   R_   Re   Rf   Rk   Rp   Rq   Rs   Rv   Rx   Rz   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR       s   0			
			
				t   TestStatesAR3AlternateTimingc           B` s   e  Z e d     Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NRO   (   t   superR   RV   R6   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV      s    (   R{   R|   R}   RV   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR      s   t!   TestStatesAR3AlternativeSmoothingc           B` s2   e  Z e d     Z d   Z d   Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   Nt   smooth_method(   R   R   RV   R   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV      s    c         C` sr   t  |  j j j j d |  j j d d d d g d  t  |  j j j j d |  j j d d d d	 g d  d  S(
   Ni   i   Rl   Rm   Rn   i   R   R   R   (   R   R   RF   Ro   Rd   R0   RZ   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRp      s    !c         C` s2   t  |  j j j d |  j j d d g d  d  S(   Ni   R   i   (   R   R   R@   Rd   R4   RZ   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRq      s    c         C` sL   t  |  j j j t  t  |  j j j j t  t  |  j j j j t  d  S(   N(   R   R7   R8   R   R   t   _kalman_smoothert   _smooth_method(   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_smooth_method   s
    (   R{   R|   R}   RV   Rp   Rq   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR      s   		t    TestStatesAR3UnivariateSmoothingc           B` s    e  Z e d     Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   Nt   filter_method(   R   R   RV   R	   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV      s    c         C` sL   t  |  j j j d  t  |  j j j j d  t  |  j j j j t  d  S(   Ni    (   R   R7   R8   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR      s    (   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR      s   t   TestStatesMissingAR3c           B` sb   e  Z e e d    Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d   Z RS(	   c   	      O` s  t  j j t d d  } t j |  |  _ t j d d d d d d  |  j _ t  j j t d d	  } d
 d d d d d d d d d d d g } t j | d d  d | |  _
 t  j j t d d  } t j |  |  _ |  j d j   |  j d <t j |  j j |  j j d d !d f <t j |  j j |  j j d d f d d) d! t | | |  _ | rnt |  j j _ n  t j d* } |  j j | d& t |  _ 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   | f  |  j j d  | f <qW|  j j" |  j j# |  j j } |  j j$   |  _% |  j% j& d' t j |  d( t j |  j j'   d  S(+   NR   s   results_wpi1_ar3_stata.csvR   s
   1960-01-01R   i|   R   R   s'   results_wpi1_missing_ar3_matlab_ssm.csvR   R   R   R   R   R   R   R   R   R   R   R   R   R    s   results_smoothing3_R.csvR!   t   dwpii
   i   i   R"   i   i    R$   g?ghc?g?mT?g_?t
   return_ssmR(   R)   (   i   i    i    (   g?ghc?g?mT?g_?((   R*   R+   R,   R-   R.   R/   R0   R1   R2   R3   R4   t   R_ssmt   diffR:   t   nant   locR   R5   R6   R7   R8   R9   R;   R<   R   R=   R>   R?   R@   RA   RB   RC   RE   RG   RH   RI   RJ   RK   RL   RM   (	   RN   RO   RP   RQ   R+   RR   RS   RT   RU   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV      sD    			&&!!	8	< c         C` sC   t  |  j j d  d   d  d  f j |  j d d d g d  d  S(   NiR   R   R   i   (   R   R   Rc   Rd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRe     s    "c         C` s'   t  |  j j j |  j d g d  d  S(   NR   i   (   R   R   R?   Rd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRf     s    c         C` s-   t  |  j j j |  j d d d g d  d  S(   NR   R   R   i   (   R   R   Ro   Rd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRp     s    c         C` s'   t  |  j j j |  j d g d  d  S(   NR   i   (   R   R   R@   Rd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRq     s    c         C` s'   t  |  j j j |  j d g d  d  S(   NR   i   (   R   R   Rr   Rd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRs   #  s    c         C` s+   t  |  j j d j |  j d g d  d  S(   Ni    R   i   (   R   R   Rt   Rd   R4   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRv   )  s    c         C` s'   t  |  j j j |  j d g d  d  S(   Nt   etahati	   (   R   R   Rw   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRx   3  s    c         C` s4   t  |  j j d d d  d   f |  j d d  d  S(   Ni    t   detVetai	   (   R   R   Ry   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRz   >  s    (   R{   R|   R}   R~   RV   Re   Rf   Rp   Rq   Rs   Rv   Rx   Rz   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR      s   7						
	t#   TestStatesMissingAR3AlternateTimingc           B` s   e  Z e d     Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NRO   (   R   R   RV   R6   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV   K  s    (   R{   R|   R}   RV   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   J  s   t(   TestStatesMissingAR3AlternativeSmoothingc           B` s    e  Z e d     Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV   R  s    c         C` sL   t  |  j j j t  t  |  j j j j t  t  |  j j j j t  d  S(   N(   R   R7   R8   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   W  s
    (   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   Q  s   t'   TestStatesMissingAR3UnivariateSmoothingc           B` s    e  Z e d     Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R	   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV   `  s    c         C` sL   t  |  j j j d  t  |  j j j j d  t  |  j j j j t  d  S(   Ni    (   R   R7   R8   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   e  s    (   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   _  s   t   TestMultivariateMissingc           B` s   e  Z d  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(   s  
    Tests for most filtering and smoothing variables against output from the
    R library KFAS.

    Note that KFAS uses the univariate approach which generally will result in
    different predicted values and covariance matrices associated with the
    measurement equation (e.g. forecasts, etc.). In this case, although the
    model is multivariate, each of the series is truly independent so the
    values will be the same regardless of whether the univariate approach
    is used or not.
    c         K` sa  t  j j t d d  } t j |  |  _ t j j	   j
 } t j d d d d d d  | _ | d	 d
 d g j   j d } 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 <t j | d d d d | } t j d  | d <t j d  | d <t j d  | d <t j d  | d <t j d  | d <| j d  | |  _ | j g  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 <qKWd  S(    NR   s   results_smoothing_R.csvR   s
   1959-01-01t   ends	   2009-7-01R   R   t   realgdpt   realconst   realinvi   i    i2   i   iF   i'   iZ   i   iw   i   RM   i   RI   t   designt   obs_covt
   transitiont	   selectiont	   state_covg    .AR   (&   R*   R+   R,   R-   R.   R/   t   desiredR   t	   macrodatat   load_pandast   dataR1   R2   R   RZ   R:   R   R   t   MLEModelt   eyet   initialize_approximate_diffuseR7   R<   R6   R   R=   R>   t!   det_scaled_smoothed_estimator_covR?   R@   t"   det_smoothed_state_disturbance_covRA   RB   RC   t   scaled_smoothed_estimator_covRE   RG   Ry   (   RN   RQ   R+   t   dtat   obst   modRT   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV   x  sB     	!!!!	8	<	8	c         C` s    t  t j |  j j  d  d  S(   NgH	(   R   R:   t   sumR   t   llf_obs(   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_loglike  s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   r1t   r2t   r3(   R   R   t   scaled_smoothed_estimatorRd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_scaled_smoothed_estimator  s    c         C` s$   t  |  j j j |  j d g  d  S(   Nt   detN(   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt"   test_scaled_smoothed_estimator_cov  s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   m1t   m2t   m3(   R   R   RY   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_forecasts  s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   v1t   v2t   v3(   R   R   t   forecasts_errorRd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_forecasts_error  s    c         C` s-   t  |  j j j   |  j d d d g  d  S(   Nt   F1t   F2t   F3(   R   R   t   forecasts_error_covt   diagonalR   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.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   R   R   R   (   R   R   Rc   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRe     s    "c         C` s$   t  |  j j j |  j d g  d  S(   NR   (   R   R   R?   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRf     s    c         C` s*   t  |  j j j |  j d d d g  d  S(   NR   R   R   (   R   R   Ro   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRp     s    c         C` s$   t  |  j j j |  j d g  d  S(   NR   (   R   R   R@   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRq     s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   muhat1t   muhat2t   muhat3(   R   R   t   smoothed_forecastsRd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_smoothed_forecasts  s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   etahat1t   etahat2t   etahat3(   R   R   Rw   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRx     s    c         C` s$   t  |  j j j |  j d g  d  S(   NR   (   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRz     s    c         C` s*   t  |  j j j |  j d d d g  d  S(   Nt   epshat1t   epshat2t   epshat3(   R   R   Rr   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRs     s    c         C` s-   t  |  j j j   |  j d d d g  d  S(   Nt   Veps1t   Veps2t   Veps3(   R   R   Rt   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRv     s    (   R{   R|   t   __doc__R}   RV   R   R   R   R   R   R   Re   Rf   Rp   Rq   R   Rx   Rz   Rs   Rv   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   l  s"   1														t)   TestMultivariateMissingClassicalSmoothingc           B` s    e  Z e d     Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R
   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV     s    c         C` sL   t  |  j j j t  t  |  j j j j t  t  |  j j j j t  d  S(   N(   R   R7   R8   R   R
   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s
    (   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s   t+   TestMultivariateMissingAlternativeSmoothingc           B` s    e  Z e d     Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV     s    c         C` sL   t  |  j j j t  t  |  j j j j t  t  |  j j j j t  d  S(   N(   R   R7   R8   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s
    (   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s   t*   TestMultivariateMissingUnivariateSmoothingc           B` s    e  Z e d     Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R	   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV     s    c         C` sL   t  |  j j j d  t  |  j j j j d  t  |  j j j j t  d  S(   Ni    (   R   R7   R8   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   #  s    (   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s   t   TestMultivariateVARc           B` s   e  Z d  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(   s  
    Tests for most filtering and smoothing variables against output from the
    R library KFAS.

    Note that KFAS uses the univariate approach which generally will result in
    different predicted values and covariance matrices associated with the
    measurement equation (e.g. forecasts, etc.). In this case, although the
    model is multivariate, each of the series is truly independent so the
    values will be the same regardless of whether the univariate approach is
    used or not.
    c         O` sJ  t  j j t d d  } t j |  |  _ t j j	   j
 } t j d d d d d d  | _ t j | d	 d
 d g  j   j d } t j | d d d d | } t j d  | d <t j d d d g d d d g d d d g g  | d <t j d d d g d d d g d d d g g  | d <t j d  | d  <t j d d! d" g d! d d# g d" d# d g g  | d$ <| j d%  | |  _ | j g  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 <q4Wd  S((   NR   s   results_smoothing2_R.csvR   s
   1959-01-01R   s	   2009-7-01R   R   R   R   R   i   RM   i   RI   R   gR?g        gڇ?gSx[?R   gA+og?g#c
r?g^?g'+?gK~gz\G	g$|J@gA[?R   R   gyN^?gP.*,?gZȔ>R   g    .AR   i    ('   R*   R+   R,   R-   R.   R/   R   R   R   R   R   R1   R2   R:   t   logR   RZ   R   R   R   t   arrayR   R7   R<   R6   R   R=   R>   R   R?   R@   R   RA   RB   RC   R   RE   RG   Ry   (   RN   RP   RQ   R+   R   R   R   RT   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV   6  sL    	)	!!!!	8	<	8	c         C` s    t  t j |  j j  d  d  S(   Nge}@(   R   R:   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   l  s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   t   atolg-C6?(   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   o  s    c         C` sD   t  t j |  j j j d   t j |  j d g d   d d d  S(   NiR   R   gư>(   R   R:   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   u  s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   RY   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   |  s    c         C` s7   t  |  j j j d  d   d f |  j d d d d  S(   Ni    R   R   gư>(   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s    c         C` s:   t  |  j j j   d  d   d f |  j d d d d  S(   Ni    R   R   gư>(   R   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s    c         C` sF   t  |  j j d  d   d d   f j |  j d d d g d d d  S(   Ni   R   R   R   R   gư>(   R   R   Rc   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRe     s    "c         C` s*   t  |  j j j |  j d g d d d  S(   NR   R   gؗҜ<(   R   R   R?   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRf     s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   Ro   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRp     s    c         C` s*   t  |  j j j |  j d g d d d  S(   NR   R   gؗҜ<(   R   R   R@   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRq     s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   Rw   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRx     s    c         C` s*   t  |  j j j |  j d g d d d  S(   NR   R   gC]r2<(   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRz     s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   Rr   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRs     s    c         C` s3   t  |  j j j   |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   Rt   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRv     s    (   R{   R|   R   R}   RV   R   R   R   R   R   R   Re   Rf   Rp   Rq   R   Rx   Rz   Rs   Rv   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   *  s"   6														t'   TestMultivariateVARAlternativeSmoothingc           B` s    e  Z e d     Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV     s    c         C` sL   t  |  j j j t  t  |  j j j j t  t  |  j j j j t  d  S(   N(   R   R7   R8   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s
    (   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s   t%   TestMultivariateVARClassicalSmoothingc           B` s    e  Z e d     Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R
   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV     s    c         C` sL   t  |  j j j t  t  |  j j j j t  t  |  j j j j t  d  S(   N(   R   R7   R8   R   R
   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s
    (   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s   t   TestMultivariateVARUnivariatec           B` s   e  Z d  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(   s  
    Tests for most filtering and smoothing variables against output from the
    R library KFAS.

    Note that KFAS uses the univariate approach which generally will result in
    different predicted values and covariance matrices associated with the
    measurement equation (e.g. forecasts, etc.). In this case, although the
    model is multivariate, each of the series is truly independent so the
    values will be the same regardless of whether the univariate approach is
    used or not.
    c         O` sV  t  j j t d d  } t j |  |  _ t j j	   j
 } t j d d d d d d  | _ t j | d	 d
 d g  j   j d } t j | d d d d | } t | j _ t j d  | d <t j d d d g d d d g d d d g g  | d <t j d d d g d d d g d d d g g  | d <t j d  | d  <t j d d! d" g d! d d# g d" d# d g g  | d$ <| j d%  | |  _ | j g  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((   NR   s   results_smoothing2_R.csvR   s
   1959-01-01R   s	   2009-7-01R   R   R   R   R   i   RM   i   RI   R   gR?g        gڇ?gSx[?R   gA+og?g#c
r?g^?g'+?gK~gz\G	g$|J@gA[?R   R   gyN^?gP.*,?gZȔ>R   g    .AR   i    ()   R*   R+   R,   R-   R.   R/   R   R   R   R   R   R1   R2   R:   R   R   RZ   R   R   R6   R8   t   filter_univariateR   R   R   R7   R<   R   R=   R>   R   R?   R@   R   RA   RB   RC   R   RE   RG   Ry   (   RN   RP   RQ   R+   R   R   R   RT   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV     sN    	)	!!!!	8	<	8	c         C` s    t  t j |  j j  d  d  S(   Nge}@(   R   R:   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   $  s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   g-C6?(   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   '  s    c         C` s>   t  t j |  j j j d   t j |  j d g d    d  S(   NiR   (   R   R:   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   -  s    c         C` s7   t  |  j j j d  d   d f |  j d d d d  S(   Ni    R   R   gư>(   R   R   RY   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   4  s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   :  s    c         C` s-   t  |  j j j   |  j d d d g  d  S(   NR   R   R   (   R   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   @  s    c         C` sF   t  |  j j d  d   d d   f j |  j d d d g d d d  S(   Ni   R   R   R   R   g:0yE>(   R   R   Rc   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRe   F  s    "c         C` s*   t  |  j j j |  j d g d d d  S(   NR   R   gC]r2<(   R   R   R?   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRf   L  s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   Ro   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRp   R  s    c         C` s*   t  |  j j j |  j d g d d d  S(   NR   R   gC]r2<(   R   R   R@   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRq   X  s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   ^  s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   Rw   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRx   d  s    c         C` s*   t  |  j j j |  j d g d d d  S(   NR   R   gC]r2<(   R   R   R   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRz   j  s    c         C` s0   t  |  j j j |  j d d d g d d d  S(   NR   R   R   R   gư>(   R   R   Rr   Rd   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRs   p  s    c         C` s-   t  |  j j j   |  j d d d g  d  S(   NR   R   R   (   R   R   Rt   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRv   v  s    (   R{   R|   R   R}   RV   R   R   R   R   R   R   Re   Rf   Rp   Rq   R   Rx   Rz   Rs   Rv   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s"   7														t&   TestMultivariateVARUnivariateSmoothingc           B` s)   e  Z e d     Z d   Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R	   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV   ~  s    c         C` s3   t  |  j j j t  t  |  j j j j t  d  S(   N(   R   R7   R8   R   R	   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_filter_method  s    c         C` sL   t  |  j j j d  t  |  j j j j d  t  |  j j j j t  d  S(   Ni    (   R   R7   R8   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s    (   R{   R|   R}   RV   R   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR   }  s   	t   TestVARAutocovariancesc           B` s#   e  Z e d  d   Z d   Z RS(   t   mixedc         O` s:  t  j j   j } t j d d d d d d  | _ t j | d d d	 g  j	   j
 d
 } | 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 j | d d d d | } t j d  | d <t j d d d g d d d g d d d g g  | d <t j d  d! d" g d# d$ d% g d& d' d( g g  | d) <t j d  | d* <t j d+ d, d- g d, d. d/ g d- d/ d0 g g  | d1 <| j d2  | |  _ | j g  d3 t |  _ | j d4 d   t j | d d5 d d | } t j d  | d d  d  d  d  f <t j d d d g d d d g d d d g g  | d <t j d  d! d" g d# d$ d% g d& d' d( g g  | d) d  d  d  d  f <t j d  | d) d d   d  d  f <t j d  | d* d  d  d  d  f <t j d+ d, d- g d, d. d/ g d- d/ d0 g g  | d1 <| j d2  | |  _ | j g  d3 t |  _ d  S(6   NR   s
   1959-01-01R   s	   2009-7-01R   R   R   R   R   i   t   alli2   iw   i   t   partiali    R   i   iF   i'   iZ   i   RM   i   RI   R   g@g        g=z4
?g%'Q+_@R   g^g
G?g
{vX?gίE.gXOE@gƹ?gja?g4CϿg8uR   R   g1=NC@g̿Q%@gT|l@g+=}@gpqQ@g0Z$@R   g    .AR   t   filter_collapsedi   (   R   R   R   R   R.   R1   R2   R:   R   R   RZ   R   R   R   R   R   R   R7   R<   R6   R   t   popR3   t   augmented_modelt   augmented_results(   RN   t   whichRP   RQ   R   R   R   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV     sl    )"%	(.((	c         C` s   t  |  j j d  d   d  d   d d  f |  j j d  d  d d   d d  f d d t  |  j j d  d   d  d   d d  f |  j j d  d  d d   d d   f d d	 d  S(
   Ni    i   i   i   i   R   g-C6?igHz>(   R   R   t   smoothed_state_autocovR   RG   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   test_smoothed_state_autocov  s    ++++(   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s   ?t*   TestVARAutocovariancesAlternativeSmoothingc           B` s    e  Z e d     Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV     s    c         C` sL   t  |  j j j t  t  |  j j j j t  t  |  j j j j t  d  S(   N(   R   R7   R8   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s
    (   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s   t(   TestVARAutocovariancesClassicalSmoothingc           B` s    e  Z e d     Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R
   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV     s    c         C` sL   t  |  j j j t  t  |  j j j j t  t  |  j j j j t  d  S(   N(   R   R7   R8   R   R
   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s
    (   R{   R|   R}   RV   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s   t)   TestVARAutocovariancesUnivariateSmoothingc           B` s)   e  Z e d     Z d   Z d   Z RS(   c         O` s#   t  t |   j d t | |  d  S(   NR   (   R   R   RV   R	   (   RN   RP   RQ   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyRV     s    c         C` s3   t  |  j j j t  t  |  j j j j t  d  S(   N(   R   R7   R8   R   R	   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s    c         C` sL   t  |  j j j d  t  |  j j j j d  t  |  j j j j t  d  S(   Ni    (   R   R7   R8   R   R   R   R   (   R[   (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s    (   R{   R|   R}   RV   R   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyR     s   	(4   R   t
   __future__R    R   R   R*   t   numpyR:   t   numpy.testingR   R   R   t   pandasR.   t   statsmodelsR   t   statsmodels.tsa.statespaceR   R   t(   statsmodels.tsa.statespace.kalman_filterR	   t*   statsmodels.tsa.statespace.kalman_smootherR
   R   R   R+   t   dirnamet   abspatht   __file__R-   t   objectR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    sN   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pyt   <module>   s>   ~ xM