
    !g                     n   d 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
Z
ddlmZ ddlmZmZmZ ddlmZ ddlmZ ddlmZmZmZ ej2                  j5                  ej2                  j7                  e            Z G d	 d
      Z G d de      Z G d de      Z  G d de      Z! G d d      Z" G d de"      Z# G d de"      Z$ G d de"      Z% G d d      Z& G d de&      Z' G d de&      Z( G d d e&      Z) G d! d"      Z* G d# d$e*      Z+ G d% d&e*      Z, G d' d(      Z- G d) d*e-      Z. G d+ d,      Z/ G d- d.e/      Z0 G d/ d0e/      Z1 G d1 d2e/      Z2 G d3 d4e      Z3	 	 dDd6Z4e
jj                  jm                  d7g d8      e
jj                  jm                  d9d5d:g      e
jj                  jm                  d;d5d:g      d<                      Z7e
jj                  jm                  d7g d8      e
jj                  jm                  d9d5d:g      e
jj                  jm                  d;d5d:g      d=                      Z8e
jj                  jm                  d7g d8      e
jj                  jm                  d9d5d:g      e
jj                  jm                  d;d5d:g      d>                      Z9e
jj                  jm                  d7g d8      e
jj                  jm                  d9d5d:g      e
jj                  jm                  d;d5d:g      d?                      Z:d@ Z;e
jj                  jm                  d7g d8      e
jj                  jm                  d9d5d:g      e
jj                  jm                  d;d5d:g      dA                      Z<e
jj                  jm                  d7g d8      e
jj                  jm                  d9d5d:g      e
jj                  jm                  d;d5d:g      dB                      Z=e
jj                  jm                  d7g d8      e
jj                  jm                  d9d5d:g      e
jj                  jm                  d;d5d:g      dC                      Z>y)Ea  
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
    N)assert_allcloseassert_almost_equalassert_equal)datasets)mlemodelsarimaxvarmax)TVSS)FILTER_UNIVARIATE)SMOOTH_CLASSICALSMOOTH_ALTERNATIVESMOOTH_UNIVARIATEc                   `    e Zd 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y)TestStatesAR3c                    t         j                  j                  t        dd      }t	        j
                  |      | _        t	        j                  ddd      | j                  _        t         j                  j                  t        dd      }g d}t	        j
                  |d |	      | _	        t        j                  | j                  d
   g|dddd|| _        |rd| j                  j                  _        t        j                   d   }| j                  j#                  |d      | _        t        j&                  d| j                  j(                  f      | j$                  _        t        j&                  d| j                  j(                  f      | j$                  _        t/        | j                  j(                        D ]  }t        j0                  j3                  | j$                  j4                  j6                  d d d d |f         | j$                  j*                  d|f<   t        j0                  j3                  | j$                  j8                  j:                  d d d d |f         | j$                  j,                  d|f<    | j                  j(                  }| j                  j<                  }	| j                  j                  j>                  }
| j                  jA                  d      | _!        | jB                  jE                  t        j&                  ||	z        t        j&                  ||
z        t        j&                  | j                  jF                               y )Nresultsresults_wpi1_ar3_stata.csv
1960-01-01|   QSstartperiodsfreqzresults_wpi1_ar3_matlab_ssm.csva1a2a3detP	alphahat1	alphahat2	alphahat3detVepsepsvaretaetavarheadernameswpi)      r   T)ordersimple_differencinghamilton_representationg?ghc?g?mT?g_?none)cov_typer-   r   )filter_timing measurement_disturbance_variatesstate_disturbance_variatesinitial_state_variates)$ospathjoincurrent_pathpdread_csvstata
date_rangeindex
matlab_ssmr   SARIMAXmodelssmtiming_init_filterednpr_smoothr   zerosnobsdet_predicted_state_covdet_smoothed_state_covrangelinalgdetfilter_resultspredicted_state_covsmoother_resultssmoothed_state_covk_endogk_posdefsimulation_smoothersimsimulatek_statesclsalternate_timingargskwargsr:   matlab_namesparamsirK   rU   rV   s              l/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pysetup_classzTestStatesAR3.setup_class#   s}    ww||L)8:KK%	--lC-13		 ww||L)=?
 T$lKOOIIe
+/
$-4$(
39
	
 15CIIMM. =>ii&&v&? /1hh399>>7J.K+-/XXq#))..6I-J*syy~~& 	JA8:		**>>q!QwG9ICKK//1579yy}},,??1aH8JCKK..q!t4	J yy~~))##99==))))//a/@-/XXdWn-E')xxx'@#%88CII,>,>#? 	 	
    c                     t        | j                  j                  j                         j                  d   | j
                  j                  dd  d   d       y )Nr   r-   dep1   )r   r   rQ   predict	forecastsr?   ilocselfs    rc   test_predict_obszTestStatesAR3.test_predict_obsU   sD    LL''//1;;A>JJOOAB'	
re   c                     t        | j                  j                  j                  d   | j                  j
                  dd  d   d       y )Nr   r-   sr1rh   )r   r   rQ   standardized_forecasts_errorr?   rk   rl   s    rc   test_standardized_residualsz)TestStatesAR3.test_standardized_residuals[   s;    LL''DDQGJJOOAB&	
re   c                 R   t        | j                  j                  j                  d d d df   j                  | j
                  j                  dd  g d   d       t        | j                  j                  j                  d d d df   j                  | j                  g d   d       y )Nr-   )sp1sp2sp3rh   r   r   r   )r   r   rQ   predicted_stateTr?   rk   rB   rl   s    rc   test_predicted_statesz#TestStatesAR3.test_predicted_statesa   s    LL''773B3?AAJJOOAB 56	
 	LL''773B3?AAOO./	
re   c                 v    t        | j                  j                  j                  | j                  dg   d       y Nr   rh   r   r   rL   rz   rB   rl   s    rc   test_predicted_states_covz'TestStatesAR3.test_predicted_states_covk   -    LL0022OOVH%q	
re   c                     t        | j                  j                  j                  j                  | j
                  j                  dd  g d   d       y )Nr-   )sf1sf2sf3rh   )r   r   rQ   filtered_staterz   r?   rk   rl   s    rc   test_filtered_statesz"TestStatesAR3.test_filtered_statesq   s=    LL''6688JJOOAB 56	
re   c                 .   t        | j                  j                  j                  j                  | j
                  j                  dd  g d   d       t        | j                  j                  j                  j                  | j                  g d   d       y )Nr-   sm1sm2sm3rh   r    r!   r"   r   r   rS   smoothed_staterz   r?   rk   rB   rl   s    rc   test_smoothed_statesz"TestStatesAR3.test_smoothed_statesw   so    LL))88::JJOOAB 56	
 	LL))88::OOCDa	
re   c                 v    t        | j                  j                  j                  | j                  dg   d       y Nr#   rh   r   r   rM   rz   rB   rl   s    rc   test_smoothed_states_covz&TestStatesAR3.test_smoothed_states_cov   -    LL//11OOVH%q	
re   c                     t        | j                  j                  j                  j                  | j
                  dg   d       y Nr$   rh   )r   r   rS    smoothed_measurement_disturbancerz   rB   rl   s    rc   %test_smoothed_measurement_disturbancez3TestStatesAR3.test_smoothed_measurement_disturbance   s3    LL))JJLLOOUG$a	
re   c                     | j                   j                  }t        |j                  d   j                  | j
                  dg   d       y Nr   r%   rh   )r   rS   r   $smoothed_measurement_disturbance_covrz   rB   )rm   ress     rc   )test_smoothed_measurement_disturbance_covz7TestStatesAR3.test_smoothed_measurement_disturbance_cov   s=    ll++44Q799OOXJ'	
re   c                     t        | j                  j                  j                  j                  | j
                  dg   d       y )Nr&   rh   )r   r   rS   smoothed_state_disturbancerz   rB   rl   s    rc   test_smoothed_state_disturbancez-TestStatesAR3.test_smoothed_state_disturbance   s3    LL))DDFFOOUG$a	
re   c                     t        | j                  j                  j                  d   j                  | j
                  dg   d       y )Nr   r'   rh   )r   r   rS   smoothed_state_disturbance_covrz   rB   rl   s    rc   #test_smoothed_state_disturbance_covz1TestStatesAR3.test_smoothed_state_disturbance_cov   s8    LL))HHKMMOOXJ'	
re   NF)__name__
__module____qualname__classmethodrd   rn   rr   r{   r   r   r   r   r   r   r   r    re   rc   r   r   "   sL    /
 /
b










re   r   c                   (     e Zd Ze fd       Z xZS )TestStatesAR3AlternateTimingc                 (    t        |   |ddi| y Nr]   Tsuperrd   r\   r^   r_   	__class__s      rc   rd   z(TestStatesAR3AlternateTiming.setup_class   s#    $(	4!	4,2	4re   r   r   r   r   rd   __classcell__r   s   @rc   r   r      s    4 4re   r   c                   :     e Zd Ze fd       Zd Zd Zd Z xZS )!TestStatesAR3AlternativeSmoothingc                 0    t        |   |dt        i| y Nsmooth_methodr   rd   r   r   s      rc   rd   z-TestStatesAR3AlternativeSmoothing.setup_class   #    /3	?,	?7=	?re   c                 T   t        | j                  j                  j                  j                  dd  | j
                  j                  dd  g d   d       t        | j                  j                  j                  j                  dd  | j                  j                  dd  g d   d       y )N   r,   r   rh   r   r   rl   s    rc   r   z6TestStatesAR3AlternativeSmoothing.test_smoothed_states   s    LL))88::12>JJOOAB 56	
 	LL))88::12>OO  $%LM	
re   c                     t        | j                  j                  j                  dd  | j                  j
                  dd  dg   d       y )Nr-   r#   rh   )r   r   rM   rz   rB   rk   rl   s    rc   r   z:TestStatesAR3AlternativeSmoothing.test_smoothed_states_cov   sA    LL//11!"5OO  $fX.	
re   c                 @   t        | j                  j                  j                  t               t        | j                  j                  j
                  j                  t               t        | j                  j                  j
                  j                  t               y Nr   rD   rE   r   r   _kalman_smoother_smooth_methodrl   s    rc   test_smooth_methodz4TestStatesAR3AlternativeSmoothing.test_smooth_method   ]    TZZ^^113EFTZZ^^44BB'	)TZZ^^44CC'	)re   )	r   r   r   r   rd   r   r   r   r   r   s   @rc   r   r      s$    ? ?


)re   r   c                   .     e Zd Ze fd       Zd Z xZS ) TestStatesAR3UnivariateSmoothingc                 0    t        |   |dt        i| y Nfilter_methodr   rd   r   r   s      rc   rd   z,TestStatesAR3UnivariateSmoothing.setup_class   #    .2	>+	>6<	>re   c                 0   t        | j                  j                  j                  d       t        | j                  j                  j                  j                  d       t        | j                  j                  j                  j
                  t               y Nr   r   rD   rE   r   r   r   r   rl   s    rc   r   z3TestStatesAR3UnivariateSmoothing.test_smooth_method   Y    TZZ^^1115TZZ^^44BBAFTZZ^^44CC&	(re   r   r   r   r   rd   r   r   r   s   @rc   r   r          > >(re   r   c                   N    e Zd Zedd       Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zy
)TestStatesMissingAR3c                 4   t         j                  j                  t        dd      }t	        j
                  |      | _        t	        j                  ddd      | j                  _        t         j                  j                  t        dd      }g d}t	        j
                  |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  df   g|ddd|| _        |rd| j"                  j$                  _        t        j(                  d   }| j"                  j+                  |d      | _        t        j.                  d| j"                  j0                  f      | j,                  _        t        j.                  d| j"                  j0                  f      | j,                  _        t7        | j"                  j0                        D ]  }t        j8                  j;                  | j,                  j<                  d d d d |f         | j,                  j2                  d|f<   t        j8                  j;                  | j,                  j>                  d d d d |f         | j,                  j4                  d|f<    | j"                  j0                  }| j"                  j@                  }	| j"                  j$                  jB                  }
| j"                  jE                         | _#        | jF                  jI                  t        j.                  ||	z        t        j.                  ||
z        t        j.                  | j"                  jJ                               y )Nr   r   r   r   r   r   z'results_wpi1_missing_ar3_matlab_ssm.csvr   r(   zresults_smoothing3_R.csvr+   dwpi
      r-   )r,   r   r   T)r.   r0   r1   
return_ssmr   r5   )&r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   R_ssmdiffrG   nanlocr   rC   rD   rE   rF   rH   rI   r   rJ   rK   rL   rM   rN   rO   rP   rR   rT   rU   rV   rW   rX   rY   rZ   r[   s              rc   rd   z TestStatesMissingAR3.setup_class   s    ww||L)8:KK%	--lC-13		 ww||L)EG
 T$lKww||L)68KK%	  IIe,113		&8:		ciioob,f45OOIIMM#))//!"-v56
+/
>G$(
39
	 15CIIMM. =>ii&&v$&? /1hh399>>7J.K+-/XXq#))..6I-J*syy~~& 	9A8:		//1a89:CKK//1579yy}}..q!Qw789CKK..q!t4	9 yy~~))##99==))))//1-/XXdWn-E')xxx'@#%88CII,>,>#? 	 	
re   c                     t        | j                  j                  d d d df   j                  | j                  g d   d       y )Nrt   rx   rh   )r   r   ry   rz   rB   rl   s    rc   r{   z*TestStatesMissingAR3.test_predicted_states  s9    LL((CRC022OO./	
re   c                 v    t        | j                  j                  j                  | j                  dg   d       y r}   r~   rl   s    rc   r   z.TestStatesMissingAR3.test_predicted_states_cov  r   re   c                 x    t        | j                  j                  j                  | j                  g d   d       y )Nr   rh   )r   r   r   rz   rB   rl   s    rc   r   z)TestStatesMissingAR3.test_smoothed_states  s,    LL''))OOCDa	
re   c                 v    t        | j                  j                  j                  | j                  dg   d       y r   r   rl   s    rc   r   z-TestStatesMissingAR3.test_smoothed_states_cov!  r   re   c                 v    t        | j                  j                  j                  | j                  dg   d       y r   )r   r   r   rz   rB   rl   s    rc   r   z:TestStatesMissingAR3.test_smoothed_measurement_disturbance'  s-    LL99;;OOUG$a	
re   c                 |    t        | j                  j                  d   j                  | j                  dg   d       y r   )r   r   r   rz   rB   rl   s    rc   r   z>TestStatesMissingAR3.test_smoothed_measurement_disturbance_cov-  s2    LL==a@BBOOXJ'	
re   c                 v    t        | j                  j                  j                  | j                  dg   d       y )Netahat	   )r   r   r   rz   r   rl   s    rc   r   z4TestStatesMissingAR3.test_smoothed_state_disturbance7  s/     	LL3355JJz"A	
re   c                 p    t        | j                  j                  ddd d f   | j                  d   d       y )Nr   detVetar   )r   r   r   r   rl   s    rc   r   z8TestStatesMissingAR3.test_smoothed_state_disturbance_covB  s2     	LL771a@JJy!1	
re   Nr   )r   r   r   r   rd   r{   r   r   r   r   r   r   r   r   re   rc   r   r      s=    6
 6
p





	
	
re   r   c                   (     e Zd Ze fd       Z xZS )#TestStatesMissingAR3AlternateTimingc                 (    t        |   |ddi| y r   r   r   s      rc   rd   z/TestStatesMissingAR3AlternateTiming.setup_classO  s    DCTCFCre   r   r   s   @rc   r   r   N  s    D Dre   r   c                   .     e Zd Ze fd       Zd Z xZS )(TestStatesMissingAR3AlternativeSmoothingc                 0    t        |   |dt        i| y r   r   r   s      rc   rd   z4TestStatesMissingAR3AlternativeSmoothing.setup_classU  r   re   c                 @   t        | j                  j                  j                  t               t        | j                  j                  j
                  j                  t               t        | j                  j                  j
                  j                  t               y r   r   rl   s    rc   r   z;TestStatesMissingAR3AlternativeSmoothing.test_smooth_methodZ  r   re   r   r   s   @rc   r   r   T      ? ?)re   r   c                   .     e Zd Ze fd       Zd Z xZS )'TestStatesMissingAR3UnivariateSmoothingc                 0    t        |   |dt        i| y r   r   r   s      rc   rd   z3TestStatesMissingAR3UnivariateSmoothing.setup_classc  r   re   c                 0   t        | j                  j                  j                  d       t        | j                  j                  j                  j                  d       t        | j                  j                  j                  j
                  t               y r   r   rl   s    rc   r   z:TestStatesMissingAR3UnivariateSmoothing.test_smooth_methodh  r   re   r   r   s   @rc   r   r   b  r   re   r   c                   z    e Zd 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y)TestMultivariateMissinga  
    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                    t         j                  j                  t        dd      }t	        j
                  |      | _        t        j                  j                         j                  }t	        j                  ddd      |_        |g d   j                         j                  d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$                  |f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        j0                  d| j*                  j2                  f      | j.                  _        t        j0                  d| j*                  j2                  f      | j.                  _        t        j0                  d| j*                  j2                  f      | j.                  _        t        j0                  d| j*                  j2                  f      | j.                  _        t=        | j*                  j2                        D ]^  }t        j>                  jA                  | j.                  jB                  d d d d |f         | j.                  j4                  d	|f<   t        j>                  jA                  | j.                  jD                  d d d d |dz   f         | j.                  j6                  d	|f<   t        j>                  jA                  | j.                  jF                  d d d d |f         | j.                  j8                  d	|f<   t        j>                  jA                  | j.                  jH                  d d d d |f         | j.                  j:                  d	|f<   a y )Nr   zresults_smoothing_R.csv
1959-01-01	2009-7-01r   r   endr   realgdprealconsrealinvr-   r   2      F   '   Z   r   w      r,   rZ   rV   designobs_cov
transition	selection	state_cov    .ATr   )%r9   r:   r;   r<   r=   r>   desiredr   	macrodataload_pandasdatar@   rA   r   rk   rG   r   r   MLEModeleyeinitialize_approximate_diffuserD   rI   r   rJ   rK   !det_scaled_smoothed_estimator_covrL   rM   "det_smoothed_state_disturbance_covrN   rO   rP   scaled_smoothed_estimator_covrR   rT   r   )r\   r_   r:   dtaobsmodrb   s          rc   rd   z#TestMultivariateMissing.setup_class{  sT    ww||L)5NOkk$'   ,,.33MM+'+-	45::<AA!"EFF2qVVBVVB!vvS!!vvS! Fa!FvFq	HIFF1IL66!9K66!9K**3/	jjj5
 HHa() 	5.0hh399>>7J.K+-/XXq#))..6I-J*HHa() 	6 syy~~& 
	JA		KK==aAgFH KK99!Q$? 9;		//1ac	:9<CKK//1579yy}}..q!Qw789CKK..q!t4 		KK>>q!QwGI KK::1a4@
	Jre   c                 j    t        t        j                  | j                  j                        d       y )NgH	r   rG   sumr   llf_obsrl   s    rc   test_loglikez$TestMultivariateMissing.test_loglike  s    t||334lCre   c                 v    t        | j                  j                  j                  | j                  g d          y )Nr1r2r3r   r   scaled_smoothed_estimatorrz   r  rl   s    rc   test_scaled_smoothed_estimatorz6TestMultivariateMissing.test_scaled_smoothed_estimator  s*    LL2244LL+,	
re   c                 t    t        | j                  j                  j                  | j                  dg          y )NdetN)r   r   r  rz   r  rl   s    rc   "test_scaled_smoothed_estimator_covz:TestMultivariateMissing.test_scaled_smoothed_estimator_cov  s+    LL::<<LL&"	
re   c                 v    t        | j                  j                  j                  | j                  g d          y )Nm1m2m3r   r   rj   rz   r  rl   s    rc   test_forecastsz&TestMultivariateMissing.test_forecasts  s*    LL""$$LL+,	
re   c                 v    t        | j                  j                  j                  | j                  g d          y )Nv1v2v3r   r   forecasts_errorrz   r  rl   s    rc   test_forecasts_errorz,TestMultivariateMissing.test_forecasts_error  s*    LL((**LL+,	
re   c                 ~    t        | j                  j                  j                         | j                  g d          y N)F1F2F3r   r   forecasts_error_covdiagonalr  rl   s    rc   test_forecasts_error_covz0TestMultivariateMissing.test_forecasts_error_cov  -    LL,,557LL+,	
re   c                     t        | j                  j                  d d dd f   j                  | j                  g d          y )Nr-   rx   r   r   ry   rz   r  rl   s    rc   r{   z-TestMultivariateMissing.test_predicted_states  s5    LL((AB/11LL+,	
re   c                 t    t        | j                  j                  j                  | j                  dg          y )Nr   r   r   rL   rz   r  rl   s    rc   r   z1TestMultivariateMissing.test_predicted_states_cov  s+    LL0022LL&"	
re   c                 v    t        | j                  j                  j                  | j                  g d          y )Nr   r   r   r   rz   r  rl   s    rc   r   z,TestMultivariateMissing.test_smoothed_states  s*    LL''))LL@A	
re   c                 t    t        | j                  j                  j                  | j                  dg          y )Nr#   r   r   rM   rz   r  rl   s    rc   r   z0TestMultivariateMissing.test_smoothed_states_cov  s+    LL//11LL&"	
re   c                 v    t        | j                  j                  j                  | j                  g d          y )Nmuhat1muhat2muhat3r   r   smoothed_forecastsrz   r  rl   s    rc   test_smoothed_forecastsz/TestMultivariateMissing.test_smoothed_forecasts  s*    LL++--LL78	
re   c                 v    t        | j                  j                  j                  | j                  g d          y )Netahat1etahat2etahat3r   r   r   rz   r  rl   s    rc   r   z7TestMultivariateMissing.test_smoothed_state_disturbance  s*    LL3355LL:;	
re   c                 t    t        | j                  j                  j                  | j                  dg          y )Nr   r   r   r  rz   r  rl   s    rc   r   z;TestMultivariateMissing.test_smoothed_state_disturbance_cov  s+    LL;;==LL)%	
re   c                 v    t        | j                  j                  j                  | j                  g d          y )Nepshat1epshat2epshat3r   r   r   rz   r  rl   s    rc   r   z=TestMultivariateMissing.test_smoothed_measurement_disturbance  s*    LL99;;LL:;	
re   c                 ~    t        | j                  j                  j                         | j                  g d          y NVeps1Veps2Veps3r   r   r   rB  r  rl   s    rc   r   zATestMultivariateMissing.test_smoothed_measurement_disturbance_cov  -    LL==FFHLL45	
re   Nr   r   r   __doc__r   rd   r   r(  r+  r2  r:  rC  r{   r   r   r   rT  r   r   r   r   r   re   rc   r   r   o  sj    
 .J .J`D













re   r   c                   .     e Zd Ze fd       Zd Z xZS ))TestMultivariateMissingClassicalSmoothingc                 0    t        |   |dt        i| y r   r   rd   r   r   s      rc   rd   z5TestMultivariateMissingClassicalSmoothing.setup_class  #    -1	=*	=5;	=re   c                 @   t        | j                  j                  j                  t               t        | j                  j                  j
                  j                  t               t        | j                  j                  j
                  j                  t               y r   r   rD   rE   r   r   r   r   rl   s    rc   r   z<TestMultivariateMissingClassicalSmoothing.test_smooth_method
  ]    TZZ^^113CDTZZ^^44BB%	'TZZ^^44CC%	're   r   r   s   @rc   rn  rn        = ='re   rn  c                   .     e Zd Ze fd       Zd Z xZS )+TestMultivariateMissingAlternativeSmoothingc                 0    t        |   |dt        i| y r   r   r   s      rc   rd   z7TestMultivariateMissingAlternativeSmoothing.setup_class  r   re   c                 @   t        | j                  j                  j                  t               t        | j                  j                  j
                  j                  t               t        | j                  j                  j
                  j                  t               y r   r   rl   s    rc   r   z>TestMultivariateMissingAlternativeSmoothing.test_smooth_method  r   re   r   r   s   @rc   rw  rw    r   re   rw  c                   .     e Zd Ze fd       Zd Z xZS )*TestMultivariateMissingUnivariateSmoothingc                 0    t        |   |dt        i| y r   r   r   s      rc   rd   z6TestMultivariateMissingUnivariateSmoothing.setup_class!  r   re   c                 0   t        | j                  j                  j                  d       t        | j                  j                  j                  j                  d       t        | j                  j                  j                  j
                  t               y r   r   rl   s    rc   r   z=TestMultivariateMissingUnivariateSmoothing.test_smooth_method&  r   re   r   r   s   @rc   r{  r{     r   re   r{  c                   z    e Zd 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y)TestMultivariateVAR  
    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                     t         j                  j                  t        dd      }t	        j
                  |      | _        t        j                  j                         j                  }t	        j                  ddd      |_        t        j                  |g d         j                         j                   dd  }t#        j$                  |fd	d	d
|}t        j&                  d	      |d<   t        j(                  g dg dg dg      |d<   t        j(                  g dg dg dg      |d<   t        j&                  d	      |d<   t        j(                  g dg dg dg      |d<   |j+                  d       || _        |j/                  g d      | _        t        j2                  d| j,                  j4                  f      | j0                  _        t        j2                  d| j,                  j4                  f      | j0                  _        t        j2                  d| j,                  j4                  f      | j0                  _        t        j2                  d| j,                  j4                  f      | j0                  _        t?        | j,                  j4                        D ]^  }t        j@                  jC                  | j0                  jD                  d d d d |f         | j0                  j6                  d|f<   t        j@                  jC                  | j0                  jF                  d d d d |dz   f         | j0                  j8                  d|f<   t        j@                  jC                  | j0                  jH                  d d d d |f         | j0                  j:                  d|f<   t        j@                  jC                  | j0                  jJ                  d d d d |f         | j0                  j<                  d|f<   a y )Nr   results_smoothing2_R.csvr   r   r   r   r   r-   r,   r  r	  R?        r  r  ڇ?r  r  r  Sx[?r
  gA+og?g#c
r?g^?g'+?gK~gz\G	g$|J@gA[?r  r  r  yN^?P.*,?r  r  ZȔ>r  r  r  r  r  Tr   r   )&r9   r:   r;   r<   r=   r>   r  r   r  r  r  r@   rA   rG   logr   rk   r   r  r  arrayr  rD   rI   r   rJ   rK   r  rL   rM   r  rN   rO   rP   r  rR   rT   r   r\   r^   r_   r:   r  r  r  rb   s           rc   rd   zTestMultivariateVAR.setup_class9  s    ww||L)68kk$'   ,,.33MM+'+-	ffS;<=BBDII!"M Fa!FvFq	H..8#: ;I HH999&; <L 66!9K88878%: ;K 	**3/	jjj5
 HHa() 	5.0hh399>>7J.K+-/XXq#))..6I-J*HHa() 	6 syy~~& 
	JA		KK==aAgFH KK99!Q$? 9;		//1ac	:9<CKK//1579yy}}..q!Qw789CKK..q!t4 		KK>>q!QwGI KK::1a4@
	Jre   c                 j    t        t        j                  | j                  j                        d       y Nge}@r  rl   s    rc   r   z TestMultivariateVAR.test_loglikeo      t||334jAre   c                 z    t        | j                  j                  j                  | j                  g d   d       y Nr"  -C6?atolr&  rl   s    rc   r(  z2TestMultivariateVAR.test_scaled_smoothed_estimatorr  ,    LL2244LL+,4	
re   c                     t        t        j                  | j                  j                  j
                  d d       t        j                  | j                  dg   d d       d       y )Nrt   r*  ư>r  r   rG   r  r   r  rz   r  rl   s    rc   r+  z6TestMultivariateVAR.test_scaled_smoothed_estimator_covx  sM    FF4<<AACCCRHIFF4<<)#2./d	
re   c                 z    t        | j                  j                  j                  | j                  g d   d       y )Nr-  r  r  r1  rl   s    rc   r2  z"TestMultivariateVAR.test_forecasts  s,    LL""$$LL+,4	
re   c                     t        | j                  j                  j                  d d df   | j                  d   d       y )Nr   r5  r  r  r8  rl   s    rc   r:  z(TestMultivariateVAR.test_forecasts_error  s4    LL((**1a40LLT	
re   c                     t        | j                  j                  j                         d d df   | j                  d   d       y )Nr   r=  r  r  r@  rl   s    rc   rC  z,TestMultivariateVAR.test_forecasts_error_cov  s7    LL,,5571=LLT	
re   c                     t        | j                  j                  d d dd f   j                  | j                  g d   d       y )Nr-   rx   r  r  rF  rl   s    rc   r{   z)TestMultivariateVAR.test_predicted_states  7    LL((AB/11LL+,4	
re   c                 x    t        | j                  j                  j                  | j                  dg   d       y )Nr   缉ؗҜ<r  rH  rl   s    rc   r   z-TestMultivariateVAR.test_predicted_states_cov  -    LL0022LL&"	
re   c                 z    t        | j                  j                  j                  | j                  g d   d       y Nr   r  r  rJ  rl   s    rc   r   z(TestMultivariateVAR.test_smoothed_states  ,    LL''))LL@A	
re   c                 x    t        | j                  j                  j                  | j                  dg   d       y )Nr#   r  r  rL  rl   s    rc   r   z,TestMultivariateVAR.test_smoothed_states_cov  -    LL//11LL&"	
re   c                 z    t        | j                  j                  j                  | j                  g d   d       y NrN  r  r  rR  rl   s    rc   rT  z+TestMultivariateVAR.test_smoothed_forecasts  ,    LL++--LL78t	
re   c                 z    t        | j                  j                  j                  | j                  g d   d       y NrV  r  r  rZ  rl   s    rc   r   z3TestMultivariateVAR.test_smoothed_state_disturbance  ,    LL3355LL:;$	
re   c                 x    t        | j                  j                  j                  | j                  dg   d       y Nr   C]r2<r  r\  rl   s    rc   r   z7TestMultivariateVAR.test_smoothed_state_disturbance_cov  -    LL;;==LL)%E	
re   c                 z    t        | j                  j                  j                  | j                  g d   d       y Nr^  r  r  rb  rl   s    rc   r   z9TestMultivariateVAR.test_smoothed_measurement_disturbance  ,    LL99;;LL:;$	
re   c                     t        | j                  j                  j                         | j                  g d   d       y )Nre  r  r  ri  rl   s    rc   r   z=TestMultivariateVAR.test_smoothed_measurement_disturbance_cov  s/    LL==FFHLL45D	
re   Nrk  r   re   rc   r  r  -  sj    
 3J 3JjB













re   r  c                   .     e Zd Ze fd       Zd Z xZS )'TestMultivariateVARAlternativeSmoothingc                 0    t        |   |dt        i| y r   r   r   s      rc   rd   z3TestMultivariateVARAlternativeSmoothing.setup_class  r   re   c                 @   t        | j                  j                  j                  t               t        | j                  j                  j
                  j                  t               t        | j                  j                  j
                  j                  t               y r   r   rl   s    rc   r   z:TestMultivariateVARAlternativeSmoothing.test_smooth_method  r   re   r   r   s   @rc   r  r    r   re   r  c                   .     e Zd Ze fd       Zd Z xZS )%TestMultivariateVARClassicalSmoothingc                 0    t        |   |dt        i| y r   rp  r   s      rc   rd   z1TestMultivariateVARClassicalSmoothing.setup_class  rq  re   c                 @   t        | j                  j                  j                  t               t        | j                  j                  j
                  j                  t               t        | j                  j                  j
                  j                  t               y r   rs  rl   s    rc   r   z8TestMultivariateVARClassicalSmoothing.test_smooth_method  rt  re   r   r   s   @rc   r  r    ru  re   r  c                   z    e Zd 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y)TestMultivariateVARUnivariater  c                 "   t         j                  j                  t        dd      }t	        j
                  |      | _        t        j                  j                         j                  }t	        j                  ddd      |_        t        j                  |g d         j                         j                   dd  }t#        j$                  |fd	d	d
|}d|j&                  _        t        j*                  d	      |d<   t        j,                  g dg dg dg      |d<   t        j,                  g dg dg dg      |d<   t        j*                  d	      |d<   t        j,                  g dg dg dg      |d<   |j/                  d       || _        |j3                  g d      | _        t        j6                  d| j0                  j8                  f      | j4                  _        t        j6                  d| j0                  j8                  f      | j4                  _        t        j6                  d| j0                  j8                  f      | j4                  _        t        j6                  d| j0                  j8                  f      | j4                  _         tC        | j0                  j8                        D ]^  }t        jD                  jG                  | j4                  jH                  d d d d |f         | j4                  j:                  d|f<   t        jD                  jG                  | j4                  jJ                  d d d d |dz   f         | j4                  j<                  d|f<   t        jD                  jG                  | j4                  jL                  d d d d |f         | j4                  j>                  d|f<   t        jD                  jG                  | j4                  jN                  d d d d |f         | j4                  j@                  d|f<   a y )Nr   r  r   r   r   r   r   r-   r,   r  Tr	  r  r  r  r
  r  r  r  r  r  r  r  r  r  r  r   r   )(r9   r:   r;   r<   r=   r>   r  r   r  r  r  r@   rA   rG   r  r   rk   r   r  rE   filter_univariater  r  r  rD   rI   r   rJ   rK   r  rL   rM   r  rN   rO   rP   r  rR   rT   r   r  s           rc   rd   z)TestMultivariateVARUnivariate.setup_class  s    ww||L)68kk$'   ,,.33MM+'+-	ffS;<=BBDII!"M Fa!FvF$(!q	H..8#: ;I HH999&; <L 66!9K88878%: ;K 	**3/	jjj5
 HHa() 	5.0hh399>>7J.K+-/XXq#))..6I-J*HHa() 	6 syy~~& 
	JA		KK==aAgFH KK99!Q$? 9;		//1ac	:9<CKK//1579yy}}..q!Qw789CKK..q!t4 		KK>>q!QwGI KK::1a4@
	Jre   c                 j    t        t        j                  | j                  j                        d       y r  r  rl   s    rc   r   z*TestMultivariateVARUnivariate.test_loglike'  r  re   c                 z    t        | j                  j                  j                  | j                  g d   d       y r  r&  rl   s    rc   r(  z<TestMultivariateVARUnivariate.test_scaled_smoothed_estimator*  r  re   c                     t        t        j                  | j                  j                  j
                  d d       t        j                  | j                  dg   d d              y )Nrt   r*  r  rl   s    rc   r+  z@TestMultivariateVARUnivariate.test_scaled_smoothed_estimator_cov0  sK    FF4<<AACCCRHIFF4<<)#2./	
re   c                     t        | j                  j                  j                  d d df   | j                  d   d       y )Nr   r.  r  r  r1  rl   s    rc   r2  z,TestMultivariateVARUnivariate.test_forecasts7  s4    LL""$$QT*LLT	
re   c                 z    t        | j                  j                  j                  | j                  g d   d       y )Nr4  r  r  r8  rl   s    rc   r:  z2TestMultivariateVARUnivariate.test_forecasts_error=  s,    LL((**LL+,4	
re   c                 ~    t        | j                  j                  j                         | j                  g d          y r<  r@  rl   s    rc   rC  z6TestMultivariateVARUnivariate.test_forecasts_error_covC  rD  re   c                     t        | j                  j                  d d dd f   j                  | j                  g d   d       y )Nr-   rx   g:0yE>r  rF  rl   s    rc   r{   z3TestMultivariateVARUnivariate.test_predicted_statesI  r  re   c                 x    t        | j                  j                  j                  | j                  dg   d       y )Nr   r  r  rH  rl   s    rc   r   z7TestMultivariateVARUnivariate.test_predicted_states_covO  r  re   c                 z    t        | j                  j                  j                  | j                  g d   d       y r  rJ  rl   s    rc   r   z2TestMultivariateVARUnivariate.test_smoothed_statesU  r  re   c                 x    t        | j                  j                  j                  | j                  dg   d       y )Nr#   r  r  rL  rl   s    rc   r   z6TestMultivariateVARUnivariate.test_smoothed_states_cov[  r  re   c                 z    t        | j                  j                  j                  | j                  g d   d       y r  rR  rl   s    rc   rT  z5TestMultivariateVARUnivariate.test_smoothed_forecastsa  r  re   c                 z    t        | j                  j                  j                  | j                  g d   d       y r  rZ  rl   s    rc   r   z=TestMultivariateVARUnivariate.test_smoothed_state_disturbanceg  r  re   c                 x    t        | j                  j                  j                  | j                  dg   d       y r  r\  rl   s    rc   r   zATestMultivariateVARUnivariate.test_smoothed_state_disturbance_covm  r  re   c                 z    t        | j                  j                  j                  | j                  g d   d       y r  rb  rl   s    rc   r   zCTestMultivariateVARUnivariate.test_smoothed_measurement_disturbances  r  re   c                 ~    t        | j                  j                  j                         | j                  g d          y rd  ri  rl   s    rc   r   zGTestMultivariateVARUnivariate.test_smoothed_measurement_disturbance_covy  rj  re   Nrk  r   re   rc   r  r    sj    
 4J 4JlB













re   r  c                   4     e Zd Ze fd       Zd Zd Z xZS )&TestMultivariateVARUnivariateSmoothingc                 0    t        |   |dt        i| y r   r   r   s      rc   rd   z2TestMultivariateVARUnivariateSmoothing.setup_class  r   re   c                     t        | j                  j                  j                  t               t        | j                  j                  j
                  j                  t               y r   r   rD   rE   r   r   r   rl   s    rc   test_filter_methodz9TestMultivariateVARUnivariateSmoothing.test_filter_method  <    TZZ^^113DETZZ^^44BB&	(re   c                 0   t        | j                  j                  j                  d       t        | j                  j                  j                  j                  d       t        | j                  j                  j                  j
                  t               y r   r   rl   s    rc   r   z9TestMultivariateVARUnivariateSmoothing.test_smooth_method  r   re   r   r   r   r   rd   r  r   r   r   s   @rc   r  r        > >(
(re   r  c                   $    e Zd Zedd       Zd Zy)TestVARAutocovariancesc                 p   t         j                  j                         j                  }t	        j
                  ddd      |_        t        j                  |g d         j                         j                  dd  }|dk(  rGt        j                  |j                  d dd d f<   t        j                  |j                  d	d
d d f<   n|dk(  rCt        j                  |j                  dddf<   t        j                  |j                  d	d
df<   n|dk(  rt        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                  |fddd|}t        j                  d      |d<   t        j                  g dg dg dg      |d<   t        j                  g dg dg dg      |d<   t        j                  d      |d<   t        j                  g dg d g d!g      |d"<   |j!                  d#       || _        |j%                  g d$%      | _        |j)                  d&d        t        j                  |fd'dd|}t        j                  d      |dd dd df<   t        j                  g dg dg dg      |d<   t        j                  g dg dg d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                  g dg d g d!g      |d"<   |j!                  d#       || _        |j%                  g d$%      | _        y )(Nr   r   r   r   r   r-   allr  r  r  partialr   mixedr  r  r  r  r   r,   r  r	  )g@r  r  )r  g=z4
?r  )r  r  g%'Q+_@r
  )g^g
G?g
{vX?)gίE.gXOE@gƹ?)gja?g4CϿg8ur  r  )g1=NC@̿Q%@T|l@)r  g+=}@pqQ@)r  r  g0Z$@r  r  Tr   filter_collapsed   )r   r  r  r  r=   r@   rA   rG   r  r   rk   r   r   r  r  r  r  rD   rI   r   popaugmented_modelaugmented_results)r\   whichr^   r_   r  r  r  s          rc   rd   z"TestVARAutocovariances.setup_class  sh      ,,.33MM+'+-	ffS;<=BBDII!"ME>!vvCHHSbS!V#%66CHHSWaZ i "CHHQrT1W#%66CHHSWaZ g "CHHQrT1W!#CHHRUAX!#CHHRUAX#%66CHHSWaZ #%66CHHSWaZ  Fa!FvFq	H22<#> ?I HH999&; <L 66!9K88A@A%C DK 	**3/	jjj5 	

%t,Fa!FvF "q	Hbqb"1"44>#@ AI %'HH999.; %<L"1"bqb ! %'FF1IL!"bqb !#%66!9K!RaR 88@?@%B CK
 	**3/! #

2$
 ?re   c                 <   t        | j                  j                  d d d d ddf   | j                  j                  d ddd ddf   d       t        | j                  j                  d d d d ddf   | j                  j                  d ddd dd f   d	       y )
Nr      r,   r-   r  r  r  rt   gHz>)r   r   smoothed_state_autocovr  rT   rl   s    rc   test_smoothed_state_autocovz2TestVARAutocovariances.test_smoothed_state_autocov  s     	;;Aq!A#IF..AA"1"ab!A#+N!	# 	;;Aq!B$JG..AA"1"ab!"*M!	#re   N)r  )r   r   r   r   rd   r  r   re   rc   r  r    s    =@ =@~	#re   r  c                   .     e Zd Ze fd       Zd Z xZS )*TestVARAutocovariancesAlternativeSmoothingc                 0    t        |   |dt        i| y r   r   r   s      rc   rd   z6TestVARAutocovariancesAlternativeSmoothing.setup_class  r   re   c                 @   t        | j                  j                  j                  t               t        | j                  j                  j
                  j                  t               t        | j                  j                  j
                  j                  t               y r   r   rl   s    rc   r   z=TestVARAutocovariancesAlternativeSmoothing.test_smooth_method  r   re   r   r   s   @rc   r  r    r   re   r  c                   .     e Zd Ze fd       Zd Z xZS )(TestVARAutocovariancesClassicalSmoothingc                 0    t        |   |dt        i| y r   rp  r   s      rc   rd   z4TestVARAutocovariancesClassicalSmoothing.setup_class  rq  re   c                 @   t        | j                  j                  j                  t               t        | j                  j                  j
                  j                  t               t        | j                  j                  j
                  j                  t               y r   rs  rl   s    rc   r   z;TestVARAutocovariancesClassicalSmoothing.test_smooth_method  rt  re   r   r   s   @rc   r  r    ru  re   r  c                   4     e Zd Ze fd       Zd Zd Z xZS ))TestVARAutocovariancesUnivariateSmoothingc                 0    t        |   |dt        i| y r   r   r   s      rc   rd   z5TestVARAutocovariancesUnivariateSmoothing.setup_class  r   re   c                     t        | j                  j                  j                  t               t        | j                  j                  j
                  j                  t               y r   r  rl   s    rc   r  z<TestVARAutocovariancesUnivariateSmoothing.test_filter_method  r  re   c                 0   t        | j                  j                  j                  d       t        | j                  j                  j                  j                  d       t        | j                  j                  j                  j
                  t               y r   r   rl   s    rc   r   z<TestVARAutocovariancesUnivariateSmoothing.test_smooth_method  r   re   r  r   s   @rc   r  r    r  re   r  c                        e Zd Z fdZ xZS )TVSSWithLagsc                     t         |   |d       t        j                  d      d   | ddd d df<   | j                  j                  d       y )N   )	_k_statesr  ).Nr  r   r  )r   __init__rG   r  rE   r  )rm   endogr   s     rc   r  zTVSSWithLags.__init__  sK    !,%'VVAYy%9\12rr!"//5re   )r   r   r   r  r   r   s   @rc   r  r    s    6 6re   r  Tc                 ~   t         j                  j                         j                  }t	        j
                  ddd      |_        t        j                  |ddg         j                         j                  dd  }| dk(  rGt        j                  |j                  d d	d d f<   t        j                  |j                  d
dd d f<   n| dk(  rCt        j                  |j                  dd	df<   t        j                  |j                  d
ddf<   nh| dk(  rct        j                  |j                  dd	df<   t        j                  |j                  dddf<   t        j                  |j                  d
ddf<   |Bt	        j
                  |j                  d   t        |      |z   d      }|j                  |      }|sOt        j                  |ddd      }	||	j                   _        ||	j$                  }|	j'                  ||      }
|	|
fS t)        |      }	||	j                   _        |	j'                  g |      }
|	|
fS )Nr   r   r   r   r   r   r-   r  r        r  r   r     r   )rh   r   r   T)r.   measurement_error	tolerancer   )r   r  r  r  r=   r@   rA   rG   r  r   rk   r   lenreindexr	   VARMAXrE   r  start_paramsrI   r  )missingr  tvpoosra   r   r  r  new_ixr  r   s              rc   get_acov_modelr    s   



(
(
*
/
/CLk#')CIFF3	:./0557<<QR@E%FF

2A2q5!vv

2b5!8	I	VV

1Q36!vv

2b5!8	G	VV

1Q36VV

1Q36!vv

2b5!8
U[[^'*5zC'7dDf%mmEd&')$5!>%%FjjJj7 8O	 5!$5!jj
j38Ore   r  )r  r  r  Nr  Fr  c                    t        | ||      \  }}|j                  j                  ddd      }|ddddddf   }|ddddddf   }|ddddddf   }|j                  d      j                  ddd      }	t	        |	ddddddf   |dd dd	       t        |	dd t        j                         |j                  d      j                  ddd      }
t	        |
ddddddf   |dd dd	       t        |
dd t        j                         |j                  d
      j                  ddd      }t	        |d
dddddf   |d
d dd	       t        |dd
 t        j                         |j                  dd      }	t	        |	t        j                         |j                  dd      }	t	        |	ddddf   |d   dd	       |j                  ddd      j                  ddd      }	t	        |	ddddddf   |dd dd	       |j                  dd      }
t	        |
t        j                         |j                  dd      }
t	        |
t        j                         |j                  dd      }
t	        |
ddddf   |d   dd	       |j                  ddd      j                  ddd      }
t	        |
ddddddf   |dd dd	       y)z"
    Test for Cov(t, t - lag)
    r   r   r-   Nrh   r  r  r  )rtolr  r,   tr   r   r   )r  rT   	transposesmoothed_state_autocovariancer   r   rG   r   )r  r  r  _r   covdesired_acov1desired_acov2desired_acov3acov1acov2acov3s               rc   -test_smoothed_state_autocovariances_backwardsr'  <  s    G%6<FAs

 
 
*
*1a
3C2A2qs
OM2A2qs
OM2A2qs
OM --a0::1aCEE!"bqb"1"*%}QR'8t$OrBFF#--a0::1aCEE!"bqb"1"*%}QR'8t$OrBFF#--a0::1aCEE!"bqb"1"*%}QR'8t$OrBFF# --a1-5EE266"--a1-5EE"1"bqb&M=#3$TJ--	 . $9Q1- 
E!RaR!)$mAa&8t$O--a1-5EE266"--a1-5EE266"--a1-5EE"1"bqb&M=#3$TJ--	 . $9Q1- 
E!RaR!)$mAa&8t$Ore   c                    t        | ||d      \  }}g d}|st        | |||j                        \  }}n>t        | ||      \  }}|D ]  }	||	dddf   ||	<    |j                  j                         }i }
i }|r%g d}|D ]  }||dddf   |
|<   ||ddd	f   ||<    t	        |j
                  |j
                         |j                  j                  d
dd      }|ddd
ddd
f   }|dddddd
f   }|dddddd
f   }t        j                  |j                  |j                  dd	df   fd
      j                  d
dd      }|j                  d	      j                  d
dd      }t	        |dd	dd
dd
f   |dd        t	        |dddd
dd
f   |ddd
ddd
f          |j                  d|
      j                  d
dd      }t	        |dddd
dd
f   |d
d        t	        |dddd
dd
f   |dddddd
f          |j                  d|      j                  d
dd      }t	        |dddd
dd
f   |dd        t	        |dddd
dd
f   |dd	dddd
f          |j                  d	|j                  |
      }t	        |dd
dd
f   |dd
ddd
f          |j                  d	d      }t	        |dd
dd
f   |d          |j                  d	dd      j                  d
dd      }t	        |dddd
dd
f   |dd        |j                  d|j                  |      }t	        |dd
dd
f   |ddddd
f          |j                  d|j                  dz
  |
      }t	        |dd
dd
f   |ddddd
f          |j                  dd      }t	        |dd
dd
f   |d
          |j                  ddd      j                  d
dd      }t	        |dddd
dd
f   |dd        y)z"
    Test for Cov(t, t + lag)
    r,   r  obs_interceptr	  r
  r  r  r  ra   .Nrt   r   r   r-   rh   r  r  axis)extend_kwargs)r  r2  r  r   r  r   r
  )r  r  rE   rI   r   llfrT   r  rG   concatenaterR   r  rK   )r  r  r  mod_oosres_oosr*   r  r   r  nameextend_kwargs1extend_kwargs2keyskeyr   r!  r"  r#  oos_covr$  r%  r&  s                         rc   ,test_smoothed_state_autocovariances_forwardsr>  l  s    &g/@#1MGWE!'+<c)0)=)=?S  ):C@Q 	0Dc3B3/CI	0ggnnNN
* 	;C")#sBrE/":N3")#sBrE/":N3	; GKK)

 
 
*
*1a
3C1Q3
OM1Q3
OM1Q3
OMnn		#	#W%@%@bc%JK	!Q"  --b1;;Aq!DEE#2#rr2A2+&ab(9:E"#rr2A2+&2qsBQB(?@--
. . **3)Aq!*< 
E#2#rr2A2+&ab(9:E"#rr2A2+&2qsBQB(?@--
. . **3)Aq!*< 
E#2#rr2A2+&ab(9:E"#rr2A2+&2qsBQB(?@ --
chhn . 6EE"1"bqb&M72qsBQB;#78--bA-6EE"1"bqb&M=#78--
! . %IaA. 
E!RaR!)$mE%&@A--
chhn . 6EE"1"bqb&M72qsBQB;#78--
chhl. . :EE"1"bqb&M72qsBQB;#78--bA-6EE"1"bqb&M=#78--
! . %IaA. 
E!RaR!)$mE%&@Are   c           
         t        | ||d      \  }}g d}|st        | |||j                        \  }}n>t        | ||      \  }}|D ]  }	||	dd df   ||	<    |j                  j                         }t	        |j
                  |j
                         t        j                  |j                  |j                  ddd f   fd	      j                  dd
d      }
|
d d ddd df   }|
d d ddd df   }|
d d ddd df   }i }|r9|dddd f   |dddd f   |dddd f   |dddd f   |dddd f   |dddd f   d}|j                  d|j                  |      j                  dd
d      }t        |j                  |j                  |j                  |j                  f       t	        |d d d dd df   |dd         |j                  d|j                  dz
  |      j                  dd
d      }t        |j                  |j                  dz
  |j                  |j                  f       t	        |d d d dd df   |dd         |j                  d|j                  dz
  |      j                  dd
d      }t        |j                  |j                  dz
  |j                  |j                  f       t	        |d d d dd df   |dd         y )Nr  r)  r*  r,  .r1  rt   r   r/  r   r-   rh   r  r  r+  r	  r
  r  r  r  r   r2  r.  r-  r,   )r  r  rE   rI   r   r4  rG   r5  rT   rR   r  r  rK   r   shaperZ   )r  r  r  r6  r7  r*   r  r   r  r8  r   r!  r"  r#  r2  r$  r%  r&  s                     rc   0test_smoothed_state_autocovariances_forwards_oosrB    s!    &g/@#1MGWE!'+<c)0)=)=?S  ):C@Q 	0Dc3B3/CI	0ggnnGKK)
..		#	#W%@%@bc%JK	!Q"  1Q3
OM1Q3
OM1Q3
OM M
$_c23%>?hRS01y#rs23!,RS"89 c23!67 c23!679 --
M . ;;D9Q1;M 
w||S\\3<<HIE!RaR!)$mAB&78 --
q # . %%.Yq!Q%7 
 w||a/s||LME!RaR!)$mAB&78
 --
q # . %%.Yq!Q%7 
 w||a/s||LME!RaR!)$mAB&78re   c           
      B   t        | ||d      \  }}g d}|st        | |||j                        \  }}n>t        | ||      \  }}|D ]  }	||	dd df   ||	<    |j                  j                         }t	        |j
                  |j
                         t        j                  |j                  |j                  ddd f   fd	      j                  dd
d      }
|
d d d dddf   }|
d d d dddf   }|
d d d dddf   }|j                  dz   }i }|r9|dddd f   |dddd f   |dddd f   |dddd f   |dddd f   |dddd f   d}|j                  d||      j                  dd
d      }t        |j                  |j                  dz   |j                  |j                  f       t	        |dd d dd df   |dd         t        |d d t        j                          |j                  d||      j                  dd
d      }t	        |dd d dd df   |dd         t        |d d t        j                          |j                  d||      j                  dd
d      }t	        |dd d dd df   |dd         t        |d d t        j                          y )Nr  r)  r*  r,  .r1  rt   r   r/  r   r-   rh   r  r  r+  r	  r
  r  r  r  r@  r,   )r  r  rE   rI   r   r4  rG   r5  rT   rR   r  rK   r  r   rA  rZ   r   )r  r  r  r6  r7  r*   r  r   r  r8  r   r!  r"  r#  r   r2  r$  r%  r&  s                      rc   1test_smoothed_state_autocovariances_backwards_oosrD    s    &g/@#1MGWE!'+<c)0)=)=?S  ):C@Q 	0Dc3B3/CI	0ggnnGKK)
..		#	#W%@%@bc%JK	!Q"  2A2qs
OM2A2qs
OM2A2qs
OM ,,
CM
$_c23%>?hRS01y#rs23!,RS"89 c23!67 c23!679 --	s- . 11:1a1C 
w||a/s||LME!"bqb"1"*%}QR'89rBFF#
 --	s- . 11:1a1C 
E!"bqb"1"*%}QR'89rBFF# --	s- . 11:1a1C 
E!"bqb"1"*%}QR'89 rBFF#re   c                     t        ddd      \  } }t        j                  t        d      5  |j	                  ddd       d d d        t        j                  t        d      5  |j	                  dd	       d d d        t        j                  t        d      5  |j	                  dd
       d d d        t        j                  t        d      5  |j	                  dd       d d d        t        j                  t        d      5  |j	                  ddd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   y xY w)NF)r  r  r  zCannot specify both `t`matchr-   )r  r   zNegative `t`rt   r  )r   )r   z`end` must be after `start`r  rh   r  )r  pytestraises
ValueErrorr  )r  r   s     rc   +test_smoothed_state_autocovariances_invalidrK  ]  s5   EUNFAs	z)B	C ;))!q):; 
z	8 3))!r)23 
z	8 7))!2)67 
z	8 5))!)45 
z)F	G =))!1!)<= =; ;3 37 75 5= =s;   D(%D4E E
E(D14D= E	EE!c                 d   t        | ||      \  }}|rg n|j                  }t        j                  d      t        j                  z  }ddg|d<   t        j
                  |j                  |fd      }|j                  |      }|j                  |d      }	|j                         }
t        j                  |
dd  |j                  |
      }|j                  |d      }dd	d
|j                  d	z
  |j                  |j                  d	z   |j                  dz   fD ]  }|	j                  ||      }|	j                  d|f   |j                  d|f   z
  }t        |j                  |d       t        |j                   d        |	j                  |||d	z         }t        |j                  |d   d        y )N)r   r   g?gɿr   r/  Tr   r-      r   r  .g+=r  r  )N.)r  r  rG   rJ   r   r5  r  clonerI   copyrK   newsrS  r   update_impactsr   revision_impacts)r  r  r  r  r   ra   appendendog2mod2res2endog3mod3res3r  outr  s                   rc   test_news_basicr\  q  s    g'8#>HCRC,,F
 XXg'FdF1I^^SYY/a8F99VD;;v$;/D [[]F66F34L::fD;;v$;/D CAsxxAsxx!|L Liiqi!**362**3623 	**G%@S))40 ii1!a%i0**GI,>UKLre   c                 f   t        | ||d      \  }}|rg n|j                  }|j                  j                         }ddg|d<   ddg|d<   |j	                  |      }|j                  |d	      }|j                  dz
  }	d
dd|	dz
  |	|	dz   |	dz   fD ]  }
|j                  ||
      }|j                  d|
f   |j                  j                  d|
f   z
  }t        |j                  |d       |j                  j                  d|
f   |j                  d|
f   z
  }t        |j                  |d        y )Nr   r)  r  ig333333ӿgٿrM  Tr   r   r-   rN  r   r  .g|=r  )r  r  r  rP  rO  rI   rK   rQ  rS  revision_resultsr   rR  rS  )r  r  r  r  r   ra   rU  rV  rW  rK   r  r[  r  s                rc   test_news_revisionsr_    sN    g'8#2FHCRC,,FYY^^F*F3K,F3K99VD;;v$;/D 88b=DC44!8< Ciiqi! **362''::36BC 	**G%@ ''::36B))#q&12 	,,gEBCre   c                     d}t        | ||d      \  }}|rg n|j                  }|j                  j                         }ddg|d<   |j	                  |      }|j                  |d      }	|j                  |d      }
|
j                  ||j                  dz
  	       d
}t        j                  t        |      5  |	j                  ||j                  dz
  	       d d d        |rFd}t        j                  t        |      5  |
j                  ||j                  dz   	       d d d        t        | ||      \  }}|rg n|j                  }|j                  j                         d |j                  dz
   }|j	                  |      }|j                  |d      }|dz  }t        j                  t        |      5  |j                  ||j                  dz
  	       d d d        t        j                  t        j                   |j                              }|j                  ddgd      }|dz  }t        j                  t        |      5  |j                  ||j                  dz
  	       d d d        t        | || d      \  }}|rd}nd}t        j                  t        |      5  |j                  ||j                  dz
  	       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NzThis results object has %s and so it does not appear to by an extension of `previous`. Can only compute the news by comparing this results set to previous results objects.r-   r)  g?g      ?rt   Tr   r  zECannot compute news without having applied the Kalman smoother first.rF  z[Cannot compute the impacts of news on periods outside of the sample in time-varying models.r   z"fewer observations than `previous`g      ?z0different state space dimensions than `previous`z/time-invariant design while `previous` does notz-time-varying design while `previous` does not)r  r  r  rP  rO  filterrI   rQ  rK   rH  rI  rJ  RuntimeErrorr   rC   rG   rJ   )r  r  r  error_ssr  r   ra   rU  rV  res2_filteredres2_smoothedmsgrW  s                rc   test_news_invalidrg    s   H g'8#1EHCRC,,FYY^^FsF2J99VDKK4K8MKK4K8M schhl+1C	z	- 03#((Q,/0
 1]]<s3 	4schhl3	4 g'8#>HCRC,,FYY^^msxx!|,F99VD;;v$;/D
9
9C	z	- '		#A	&' ??288CHH-.D;;RyT;2D
G
GC	z	- '		#A	&'
  ):GKJD$
?=	z	- '		#A	&' 'I0 0	4 	4' '' '' 's<   :!K!K9!K+	!K8'!LKK(+K58LL)NNT)?rl  r9   numpyrG   numpy.testingr   r   r   pandasr=   rH  statsmodelsr   statsmodels.tsa.statespacer   r   r	   7statsmodels.tsa.statespace.tests.test_impulse_responsesr
   (statsmodels.tsa.statespace.kalman_filterr   *statsmodels.tsa.statespace.kalman_smootherr   r   r   r:   dirnameabspath__file__r<   r   r   r   r   r   r   r   r   r   rn  rw  r{  r  r  r  r  r  r  r  r  r  r  r  markparametrizer'  r>  rB  rD  rK  r\  r_  rg  r   re   rc   <module>ru     sL   
  L L     @ @ H F  wwrwwx89|
 |
~4= 4) )@
(} 
(v
 v
rD*> D)/C )
(.B 
(R
 R
j'0G ')2I )
(1H 
(X
 X
v).A )',? 'Y
 Y
x(-J ($J# J#Z)1G )'/E '(0F ($64 6 FJ"#L $EF,tUm<u.*P / = G*PZ $EF,tUm<u.QB / = GQBh $EF,tUm<u.G9 / = GG9T $EF,tUm<u.G$ / = GG$T=( $EF,tUm<u.'L / = G'LT $EF,tUm<u.C / = GCD $EF,tUm<u.<' / = G<'re   