
    M/Ph                     D	   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j                            ej                            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
j5        6                    d7g d8          e
j5        6                    d9d5d:g          e
j5        6                    d;d5d:g          d<                                     Z7e
j5        6                    d7g d8          e
j5        6                    d9d5d:g          e
j5        6                    d;d5d:g          d=                                     Z8e
j5        6                    d7g d8          e
j5        6                    d9d5d:g          e
j5        6                    d;d5d:g          d>                                     Z9e
j5        6                    d7g d8          e
j5        6                    d9d5d:g          e
j5        6                    d;d5d:g          d?                                     Z:d@ Z;e
j5        6                    d7g d8          e
j5        6                    d9d5d:g          e
j5        6                    d;d5d:g          dA                                     Z<e
j5        6                    d7g d8          e
j5        6                    d9d5d:g          e
j5        6                    d;d5d:g          dB                                     Z=e
j5        6                    d7g d8          e
j5        6                    d9d5d:g          e
j5        6                    d;d5d:g          dC                                     Z>dS )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                   h    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dS )TestStatesAR3Fc                    t           j                            t          dd          }t	          j        |          | _        t	          j        ddd          | j        _        t           j                            t          dd          }g d}t	          j        |d |	          | _	        t          j        | j        d
         g|R dddd|| _        |rd| j        j        _        t          j        d         }| j                            |d          | _        t          j        d| j        j        f          | j        _        t          j        d| j        j        f          | j        _        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<   | j        j        }| j        j        }	| j        j        j        }
| j                             d          | _!        | j!        "                    t          j        ||	z            t          j        ||
z            t          j        | j        j#                             d S )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              o/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/statespace/tests/test_smoothing.pysetup_classzTestStatesAR3.setup_class#   s    w||L)8: :K%%	-lC-13 3 3	 w||L)=? ?
 
 
 T$lKKKOIe
+/
 
$-4$(
 
39
 
	
  	615CIM. =>i&&v&?? /1h39>7J.K.K+-/Xq#).6I-J-J*sy~&& 	J 	JA8:	*>qqq!!!QwG9I 9ICK/1579y}},?111aH8J 8JCK.q!t44 y~)#9=))//a/@@-/XdWn-E-E')xx'@'@#%8CI,>#?#? 	 	
 	
 	
 	
 	
    c                     t          | j        j                                        j        d         | j        j        dd          d         d           d S )Nr   r-   dep1   )r   r   rQ   predict	forecastsr?   ilocselfs    rc   test_predict_obszTestStatesAR3.test_predict_obsU   sQ    L'//11;A>JOABB'	
 	
 	
 	
 	
re   c                     t          | j        j        j        d         | j        j        dd          d         d           d S )Nr   r-   sr1rh   )r   r   rQ   standardized_forecasts_errorr?   rk   rl   s    rc   test_standardized_residualsz)TestStatesAR3.test_standardized_residuals[   sE    L'DQGJOABB&	
 	
 	
 	
 	
re   c                    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           d S )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    L'73B3?AJOABB 5 5 56	
 	
 	
 	L'73B3?AO.../	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        dg         d           d S Nr   rh   r   r   rL   rz   rB   rl   s    rc   test_predicted_states_covz'TestStatesAR3.test_predicted_states_covk   7    L02OVH%q	
 	
 	
 	
 	
re   c                     t          | j        j        j        j        | j        j        dd          g d         d           d S )Nr-   )sf1sf2sf3rh   )r   r   rQ   filtered_staterz   r?   rk   rl   s    rc   test_filtered_statesz"TestStatesAR3.test_filtered_statesq   sJ    L'68JOABB 5 5 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           d S )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   s    L)8:JOABB 5 5 56	
 	
 	
 	L)8:OCCCDa	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        dg         d           d S Nr#   rh   r   r   rM   rz   rB   rl   s    rc   test_smoothed_states_covz&TestStatesAR3.test_smoothed_states_cov   7    L/1OVH%q	
 	
 	
 	
 	
re   c                 h    t          | j        j        j        j        | j        dg         d           d S Nr$   rh   )r   r   rS    smoothed_measurement_disturbancerz   rB   rl   s    rc   %test_smoothed_measurement_disturbancez3TestStatesAR3.test_smoothed_measurement_disturbance   s:    L)JLOUG$a	
 	
 	
 	
 	
re   c                 x    | j         j        }t          |j        d         j        | j        dg         d           d S Nr   r%   rh   )r   rS   r   $smoothed_measurement_disturbance_covrz   rB   )rm   ress     rc   )test_smoothed_measurement_disturbance_covz7TestStatesAR3.test_smoothed_measurement_disturbance_cov   sD    l+4Q79OXJ'	
 	
 	
 	
 	
re   c                 h    t          | j        j        j        j        | j        dg         d           d S )Nr&   rh   )r   r   rS   smoothed_state_disturbancerz   rB   rl   s    rc   test_smoothed_state_disturbancez-TestStatesAR3.test_smoothed_state_disturbance   s:    L)DFOUG$a	
 	
 	
 	
 	
re   c                 t    t          | j        j        j        d         j        | j        dg         d           d S )Nr   r'   rh   )r   r   rS   smoothed_state_disturbance_covrz   rB   rl   s    rc   #test_smoothed_state_disturbance_covz1TestStatesAR3.test_smoothed_state_disturbance_cov   s?    L)HKMOXJ'	
 	
 	
 	
 	
re   NF)__name__
__module____qualname__classmethodrd   rn   rr   r{   r   r   r   r   r   r   r   r    re   rc   r   r   "   s        /
 /
 /
 [/
b
 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 
 
 
re   r   c                   .     e Zd Ze fd            Z xZS )TestStatesAR3AlternateTimingc                 >     t                      j        |ddi| d S Nr]   Tsuperrd   r\   r^   r_   	__class__s      rc   rd   z(TestStatesAR3AlternateTiming.setup_class   s;    $(	4!	4,2	4 	4 	4 	4 	4re   r   r   r   r   rd   __classcell__r   s   @rc   r   r      sB        4 4 4 4 [4 4 4 4 4re   r   c                   @     e Zd Ze fd            Zd Zd Zd Z xZS )!TestStatesAR3AlternativeSmoothingc                 H     t                      j        |dt          i| d S Nsmooth_methodr   rd   r   r   s      rc   rd   z-TestStatesAR3AlternativeSmoothing.setup_class   ;    /3	?,	?7=	? 	? 	? 	? 	?re   c                 "   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           d S )N   r,   r   rh   r   r   rl   s    rc   r   z6TestStatesAR3AlternativeSmoothing.test_smoothed_states   s    L)8:122>JOABB 5 5 56	
 	
 	
 	L)8:122>O $%L%L%LM	
 	
 	
 	
 	
re   c                     t          | j        j        j        dd          | j        j        dd          dg         d           d S )Nr-   r#   rh   )r   r   rM   rz   rB   rk   rl   s    rc   r   z:TestStatesAR3AlternativeSmoothing.test_smoothed_states_cov   sL    L/1!""5O $fX.	
 	
 	
 	
 	
re   c                     t          | j        j        j        t                     t          | j        j        j        j        t                     t          | j        j        j        j        t                     d S Nr   rD   rE   r   r   _kalman_smoother_smooth_methodrl   s    rc   test_smooth_methodz4TestStatesAR3AlternativeSmoothing.test_smooth_method   f    TZ^13EFFFTZ^4B'	) 	) 	)TZ^4C'	) 	) 	) 	) 	)re   )	r   r   r   r   rd   r   r   r   r   r   s   @rc   r   r      so        ? ? ? ? [?

 

 


 
 
) ) ) ) ) ) )re   r   c                   4     e Zd Ze fd            Zd Z xZS ) TestStatesAR3UnivariateSmoothingc                 H     t                      j        |dt          i| d S Nfilter_methodr   rd   r   r   s      rc   rd   z,TestStatesAR3UnivariateSmoothing.setup_class   ;    .2	>+	>6<	> 	> 	> 	> 	>re   c                     t          | j        j        j        d           t          | j        j        j        j        d           t          | j        j        j        j        t                     d S Nr   r   rD   rE   r   r   r   r   rl   s    rc   r   z3TestStatesAR3UnivariateSmoothing.test_smooth_method   ^    TZ^11555TZ^4BAFFFTZ^4C&	( 	( 	( 	( 	(re   r   r   r   r   rd   r   r   r   s   @rc   r   r      Q        > > > > [>( ( ( ( ( ( (re   r   c                   V    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S )TestStatesMissingAR3Fc                    t           j                            t          dd          }t	          j        |          | _        t	          j        ddd          | j        _        t           j                            t          dd          }g d}t	          j        |d |	          | _	        t           j                            t          dd
          }t	          j        |          | _
        | j        d                                         | j        d<   t          j        | j        j        | j        j        dd         df<   t          j        | j        j        | j        j        dd          df         g|R ddd|| _        |rd| j        j        _        t          j        d         }| j                            |d          | _        t          j        d| j        j        f          | j        _        t          j        d| j        j        f          | j        _        t7          | j        j                  D ]}t          j                            | j        j        d d d d |f                   | j        j        d|f<   t          j                            | j        j        d d d d |f                   | j        j        d|f<   | j        j        }| j        j         }	| j        j        j!        }
| j        "                                | _#        | j#        $                    t          j        ||	z            t          j        ||
z            t          j        | j        j%                             d S )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    w||L)8: :K%%	-lC-13 3 3	 w||L)EG G
 
 
 T$lKKKw||L)68 8K%%	  Ie,1133	&8:	ciobe,f45OIM#)/!""-v56
+/
 
>G$(
 
39
 
	  	615CIM. =>i&&v$&?? /1h39>7J.K.K+-/Xq#).6I-J-J*sy~&& 	9 	9A8:	/111a89: 9:CK/1579y}}.qqq!!!Qw789 89CK.q!t44 y~)#9=))//11-/XdWn-E-E')xx'@'@#%8CI,>#?#? 	 	
 	
 	
 	
 	
re   c                 x    t          | j        j        d d d df         j        | j        g d         d           d S )Nrt   rx   rh   )r   r   ry   rz   rB   rl   s    rc   r{   z*TestStatesMissingAR3.test_predicted_states  sM    L(CRC02O.../	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        dg         d           d S r}   r~   rl   s    rc   r   z.TestStatesMissingAR3.test_predicted_states_cov  r   re   c                 `    t          | j        j        j        | j        g d         d           d S )Nr   rh   )r   r   r   rz   rB   rl   s    rc   r   z)TestStatesMissingAR3.test_smoothed_states  s<    L')OCCCDa	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        dg         d           d S r   r   rl   s    rc   r   z-TestStatesMissingAR3.test_smoothed_states_cov!  r   re   c                 ^    t          | j        j        j        | j        dg         d           d S r   )r   r   r   rz   rB   rl   s    rc   r   z:TestStatesMissingAR3.test_smoothed_measurement_disturbance'  s7    L9;OUG$a	
 	
 	
 	
 	
re   c                 j    t          | j        j        d         j        | j        dg         d           d S r   )r   r   r   rz   rB   rl   s    rc   r   z>TestStatesMissingAR3.test_smoothed_measurement_disturbance_cov-  s<    L=a@BOXJ'	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        dg         d           d S )Netahat	   )r   r   r   rz   r   rl   s    rc   r   z4TestStatesMissingAR3.test_smoothed_state_disturbance7  s9     	L35Jz"A	
 	
 	
 	
 	
re   c                 h    t          | j        j        ddd d f         | j        d         d           d S )Nr   detVetar   )r   r   r   r   rl   s    rc   r   z8TestStatesMissingAR3.test_smoothed_state_disturbance_covB  sC     	L71aaa@Jy!1	
 	
 	
 	
 	
re   Nr   )r   r   r   r   rd   r{   r   r   r   r   r   r   r   r   re   rc   r   r      s        6
 6
 6
 [6
p
 
 

 
 

 
 

 
 

 
 

 
 
	
 	
 	
	
 	
 	
 	
 	
re   r   c                   .     e Zd Ze fd            Z xZS )#TestStatesMissingAR3AlternateTimingc                 >     t                      j        |ddi| d S r   r   r   s      rc   rd   z/TestStatesMissingAR3AlternateTiming.setup_classO  s*    DCTCFCCCCCre   r   r   s   @rc   r   r   N  sK        D D D D [D D D D Dre   r   c                   4     e Zd Ze fd            Zd Z xZS )(TestStatesMissingAR3AlternativeSmoothingc                 H     t                      j        |dt          i| d S 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                     d S r   r   rl   s    rc   r   z;TestStatesMissingAR3AlternativeSmoothing.test_smooth_methodZ  r   re   r   r   s   @rc   r   r   T  Q        ? ? ? ? [?) ) ) ) ) ) )re   r   c                   4     e Zd Ze fd            Zd Z xZS )'TestStatesMissingAR3UnivariateSmoothingc                 H     t                      j        |dt          i| d S r   r   r   s      rc   rd   z3TestStatesMissingAR3UnivariateSmoothing.setup_classc  r   re   c                     t          | j        j        j        d           t          | j        j        j        j        d           t          | j        j        j        j        t                     d S r   r   rl   s    rc   r   z:TestStatesMissingAR3UnivariateSmoothing.test_smooth_methodh  r   re   r   r   s   @rc   r   r   b  r   re   r   c                       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dS )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                            t          dd          }t	          j        |          | _        t          j        	                                j
        }t	          j        ddd          |_        |g d                                         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<   |                    d           || _        |                    g d          | _        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        _        t=          | j        j                  D ]}t          j                             | j        j!        d d d d |f                   | j        j        d	|f<   t          j                             | j        j"        d d d d |dz   f                   | j        j        d	|f<   t          j                             | j        j#        d d d d |f                   | j        j        d	|f<   t          j                             | j        j$        d d d d |f                   | j        j        d	|f<   d S )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{  s[    w||L)5NOOk$''  ,,..3M+'+- - -	4445::<<A!""EF2qVBVB!vS!!vS! Fa!FFvFFq		HIF1IIL6!99K6!99K**3///	jjj55
 Ha()) 	5.0h39>7J.K.K+-/Xq#).6I-J-J*Ha()) 	6 sy~&& 
	J 
	JA	K=aaaAgFH H K9!Q$? 9;	/111ac	:9< 9<CK/1579y}}.qqq!!!Qw789 89CK.q!t4 	K>qqq!!!QwGI I K:1a4@@
	J 
	Jre   c                 ^    t          t          j        | j        j                  d           d S )NgH	r   rG   sumr   llf_obsrl   s    rc   test_loglikez$TestMultivariateMissing.test_loglike  s'    t|344lCCCCCre   c                 ^    t          | j        j        j        | j        g d                    d S )Nr1r2r3r   r   scaled_smoothed_estimatorrz   r  rl   s    rc   test_scaled_smoothed_estimatorz6TestMultivariateMissing.test_scaled_smoothed_estimator  s:    L24L+++,	
 	
 	
 	
 	
re   c                 \    t          | j        j        j        | j        dg                    d S )NdetN)r   r   r  rz   r  rl   s    rc   "test_scaled_smoothed_estimator_covz:TestMultivariateMissing.test_scaled_smoothed_estimator_cov  s5    L:<L&"	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        g d                    d S )Nm1m2m3r   r   rj   rz   r  rl   s    rc   test_forecastsz&TestMultivariateMissing.test_forecasts  s:    L"$L+++,	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        g d                    d S )Nv1v2v3r   r   forecasts_errorrz   r  rl   s    rc   test_forecasts_errorz,TestMultivariateMissing.test_forecasts_error  s:    L(*L+++,	
 	
 	
 	
 	
re   c                 x    t          | j        j                                        | j        g d                    d S N)F1F2F3r   r   forecasts_error_covdiagonalr  rl   s    rc   test_forecasts_error_covz0TestMultivariateMissing.test_forecasts_error_cov  C    L,5577L+++,	
 	
 	
 	
 	
re   c                 v    t          | j        j        d d dd f         j        | j        g d                    d S )Nr-   rx   r   r   ry   rz   r  rl   s    rc   r{   z-TestMultivariateMissing.test_predicted_states  sK    L(ABB/1L+++,	
 	
 	
 	
 	
re   c                 \    t          | j        j        j        | j        dg                    d S )Nr   r   r   rL   rz   r  rl   s    rc   r   z1TestMultivariateMissing.test_predicted_states_cov  s5    L02L&"	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        g d                    d S )Nr   r   r   r   rz   r  rl   s    rc   r   z,TestMultivariateMissing.test_smoothed_states  s:    L')L@@@A	
 	
 	
 	
 	
re   c                 \    t          | j        j        j        | j        dg                    d S )Nr#   r   r   rM   rz   r  rl   s    rc   r   z0TestMultivariateMissing.test_smoothed_states_cov  s5    L/1L&"	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        g d                    d S )Nmuhat1muhat2muhat3r   r   smoothed_forecastsrz   r  rl   s    rc   test_smoothed_forecastsz/TestMultivariateMissing.test_smoothed_forecasts  s:    L+-L7778	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        g d                    d S )Netahat1etahat2etahat3r   r   r   rz   r  rl   s    rc   r   z7TestMultivariateMissing.test_smoothed_state_disturbance  s:    L35L:::;	
 	
 	
 	
 	
re   c                 \    t          | j        j        j        | j        dg                    d S )Nr   r   r   r  rz   r  rl   s    rc   r   z;TestMultivariateMissing.test_smoothed_state_disturbance_cov  s5    L;=L)%	
 	
 	
 	
 	
re   c                 ^    t          | j        j        j        | j        g d                    d S )Nepshat1epshat2epshat3r   r   r   rz   r  rl   s    rc   r   z=TestMultivariateMissing.test_smoothed_measurement_disturbance  s:    L9;L:::;	
 	
 	
 	
 	
re   c                 x    t          | j        j                                        | j        g d                    d S NVeps1Veps2Veps3r   r   r   rB  r  rl   s    rc   r   zATestMultivariateMissing.test_smoothed_measurement_disturbance_cov  C    L=FFHHL44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  s!       
 
 .J .J [.J`D D D
 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 
 
 
re   r   c                   4     e Zd Ze fd            Zd Z xZS ))TestMultivariateMissingClassicalSmoothingc                 H     t                      j        |dt          i| d S 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                     d S r   r   rD   rE   r   r   r   r   rl   s    rc   r   z<TestMultivariateMissingClassicalSmoothing.test_smooth_method
  f    TZ^13CDDDTZ^4B%	' 	' 	'TZ^4C%	' 	' 	' 	' 	're   r   r   s   @rc   rn  rn    Q        = = = = [=' ' ' ' ' ' 're   rn  c                   4     e Zd Ze fd            Zd Z xZS )+TestMultivariateMissingAlternativeSmoothingc                 H     t                      j        |dt          i| d S 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                     d S r   r   rl   s    rc   r   z>TestMultivariateMissingAlternativeSmoothing.test_smooth_method  r   re   r   r   s   @rc   rw  rw    r   re   rw  c                   4     e Zd Ze fd            Zd Z xZS )*TestMultivariateMissingUnivariateSmoothingc                 H     t                      j        |dt          i| d S r   r   r   s      rc   rd   z6TestMultivariateMissingUnivariateSmoothing.setup_class!  r   re   c                     t          | j        j        j        d           t          | j        j        j        j        d           t          | j        j        j        j        t                     d S r   r   rl   s    rc   r   z=TestMultivariateMissingUnivariateSmoothing.test_smooth_method&  r   re   r   r   s   @rc   r{  r{     r   re   r{  c                       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dS )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                            t          dd          }t	          j        |          | _        t          j        	                                j
        }t	          j        ddd          |_        t          j        |g d                                                   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<   |                    d           || _        |                    g d          | _        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        _        t?          | j        j                  D ]}t          j         !                    | j        j"        d d d d |f                   | j        j        d|f<   t          j         !                    | j        j#        d d d d |dz   f                   | j        j        d|f<   t          j         !                    | j        j$        d d d d |f                   | j        j        d|f<   t          j         !                    | j        j%        d d d d |f                   | j        j        d|f<   d S )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  sm    w||L)68 8k$''  ,,..3M+'+- - -	fS;;;<==BBDDI!""M Fa!FFvFFq		H......888#: ; ;I H999999999&; < <L 6!99K8888777888%: ; ;K 	**3///	jjj55
 Ha()) 	5.0h39>7J.K.K+-/Xq#).6I-J-J*Ha()) 	6 sy~&& 
	J 
	JA	K=aaaAgFH H K9!Q$? 9;	/111ac	:9< 9<CK/1579y}}.qqq!!!Qw789 89CK.q!t4 	K>qqq!!!QwGI I K:1a4@@
	J 
	Jre   c                 ^    t          t          j        | j        j                  d           d S Nge}@r  rl   s    rc   r   z TestMultivariateVAR.test_loglikeo  '    t|344jAAAAAre   c                 b    t          | j        j        j        | j        g d         d           d S Nr"  -C6?atolr&  rl   s    rc   r(  z2TestMultivariateVAR.test_scaled_smoothed_estimatorr  A    L24L+++,4	
 	
 	
 	
 	
 	
re   c                     t          t          j        | j        j        j        d d                   t          j        | j        dg         d d                   d           d S )Nrt   r*  ư>r  r   rG   r  r   r  rz   r  rl   s    rc   r+  z6TestMultivariateVAR.test_scaled_smoothed_estimator_covx  sb    F4<ACCRCHIIF4<)#2#.//d	
 	
 	
 	
 	
 	
re   c                 b    t          | j        j        j        | j        g d         d           d S )Nr-  r  r  r1  rl   s    rc   r2  z"TestMultivariateVAR.test_forecasts  sA    L"$L+++,4	
 	
 	
 	
 	
 	
re   c                 r    t          | j        j        j        d d df         | j        d         d           d S )Nr   r5  r  r  r8  rl   s    rc   r:  z(TestMultivariateVAR.test_forecasts_error  sG    L(*111a40LT	
 	
 	
 	
 	
 	
re   c                     t          | j        j                                        d d df         | j        d         d           d S )Nr   r=  r  r  r@  rl   s    rc   rC  z,TestMultivariateVAR.test_forecasts_error_cov  sP    L,55771=LT	
 	
 	
 	
 	
 	
re   c                 z    t          | j        j        d d dd f         j        | j        g d         d           d S )Nr-   rx   r  r  rF  rl   s    rc   r{   z)TestMultivariateVAR.test_predicted_states  R    L(ABB/1L+++,4	
 	
 	
 	
 	
 	
re   c                 `    t          | j        j        j        | j        dg         d           d S )Nr   缉ؗҜ<r  rH  rl   s    rc   r   z-TestMultivariateVAR.test_predicted_states_cov  <    L02L&"	
 	
 	
 	
 	
 	
re   c                 b    t          | j        j        j        | j        g d         d           d S Nr   r  r  rJ  rl   s    rc   r   z(TestMultivariateVAR.test_smoothed_states  A    L')L@@@A	
 	
 	
 	
 	
 	
re   c                 `    t          | j        j        j        | j        dg         d           d S )Nr#   r  r  rL  rl   s    rc   r   z,TestMultivariateVAR.test_smoothed_states_cov  <    L/1L&"	
 	
 	
 	
 	
 	
re   c                 b    t          | j        j        j        | j        g d         d           d S NrN  r  r  rR  rl   s    rc   rT  z+TestMultivariateVAR.test_smoothed_forecasts  A    L+-L7778t	
 	
 	
 	
 	
 	
re   c                 b    t          | j        j        j        | j        g d         d           d S NrV  r  r  rZ  rl   s    rc   r   z3TestMultivariateVAR.test_smoothed_state_disturbance  A    L35L:::;$	
 	
 	
 	
 	
 	
re   c                 `    t          | j        j        j        | j        dg         d           d S Nr   C]r2<r  r\  rl   s    rc   r   z7TestMultivariateVAR.test_smoothed_state_disturbance_cov  <    L;=L)%E	
 	
 	
 	
 	
 	
re   c                 b    t          | j        j        j        | j        g d         d           d S Nr^  r  r  rb  rl   s    rc   r   z9TestMultivariateVAR.test_smoothed_measurement_disturbance  A    L9;L:::;$	
 	
 	
 	
 	
 	
re   c                 |    t          | j        j                                        | j        g d         d           d S )Nre  r  r  ri  rl   s    rc   r   z=TestMultivariateVAR.test_smoothed_measurement_disturbance_cov  sJ    L=FFHHL4445D	
 	
 	
 	
 	
 	
re   Nrk  r   re   rc   r  r  -  s!       
 
 3J 3J [3JjB B B
 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 
 
 
re   r  c                   4     e Zd Ze fd            Zd Z xZS )'TestMultivariateVARAlternativeSmoothingc                 H     t                      j        |dt          i| d S 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                     d S r   r   rl   s    rc   r   z:TestMultivariateVARAlternativeSmoothing.test_smooth_method  r   re   r   r   s   @rc   r  r    r   re   r  c                   4     e Zd Ze fd            Zd Z xZS )%TestMultivariateVARClassicalSmoothingc                 H     t                      j        |dt          i| d S 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                     d S r   rs  rl   s    rc   r   z8TestMultivariateVARClassicalSmoothing.test_smooth_method  rt  re   r   r   s   @rc   r  r    ru  re   r  c                       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dS )TestMultivariateVARUnivariater  c                     t           j                            t          dd          }t	          j        |          | _        t          j        	                                j
        }t	          j        ddd          |_        t          j        |g d                                                   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<   |                    d           || _        |                    g d          | _        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        _         tC          | j        j                  D ]}t          j"        #                    | j        j$        d d d d |f                   | j        j        d|f<   t          j"        #                    | j        j%        d d d d |dz   f                   | j        j        d|f<   t          j"        #                    | j        j&        d d d d |f                   | j        j        d|f<   t          j"        #                    | j        j'        d d d d |f                   | j        j         d|f<   d S )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  sw    w||L)68 8k$''  ,,..3M+'+- - -	fS;;;<==BBDDI!""M Fa!FFvFF$(!q		H......888#: ; ;I H999999999&; < <L 6!99K8888777888%: ; ;K 	**3///	jjj55
 Ha()) 	5.0h39>7J.K.K+-/Xq#).6I-J-J*Ha()) 	6 sy~&& 
	J 
	JA	K=aaaAgFH H K9!Q$? 9;	/111ac	:9< 9<CK/1579y}}.qqq!!!Qw789 89CK.q!t4 	K>qqq!!!QwGI I K:1a4@@
	J 
	Jre   c                 ^    t          t          j        | j        j                  d           d S r  r  rl   s    rc   r   z*TestMultivariateVARUnivariate.test_loglike'  r  re   c                 b    t          | j        j        j        | j        g d         d           d S 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                              d S )Nrt   r*  r  rl   s    rc   r+  z@TestMultivariateVARUnivariate.test_scaled_smoothed_estimator_cov0  s[    F4<ACCRCHIIF4<)#2#.//	
 	
 	
 	
 	
re   c                 r    t          | j        j        j        d d df         | j        d         d           d S )Nr   r.  r  r  r1  rl   s    rc   r2  z,TestMultivariateVARUnivariate.test_forecasts7  sG    L"$QQQT*LT	
 	
 	
 	
 	
 	
re   c                 b    t          | j        j        j        | j        g d         d           d S )Nr4  r  r  r8  rl   s    rc   r:  z2TestMultivariateVARUnivariate.test_forecasts_error=  sA    L(*L+++,4	
 	
 	
 	
 	
 	
re   c                 x    t          | j        j                                        | j        g d                    d S r<  r@  rl   s    rc   rC  z6TestMultivariateVARUnivariate.test_forecasts_error_covC  rD  re   c                 z    t          | j        j        d d dd f         j        | j        g d         d           d S )Nr-   rx   g:0yE>r  rF  rl   s    rc   r{   z3TestMultivariateVARUnivariate.test_predicted_statesI  r  re   c                 `    t          | j        j        j        | j        dg         d           d S )Nr   r  r  rH  rl   s    rc   r   z7TestMultivariateVARUnivariate.test_predicted_states_covO  r  re   c                 b    t          | j        j        j        | j        g d         d           d S r  rJ  rl   s    rc   r   z2TestMultivariateVARUnivariate.test_smoothed_statesU  r  re   c                 `    t          | j        j        j        | j        dg         d           d S )Nr#   r  r  rL  rl   s    rc   r   z6TestMultivariateVARUnivariate.test_smoothed_states_cov[  r  re   c                 b    t          | j        j        j        | j        g d         d           d S r  rR  rl   s    rc   rT  z5TestMultivariateVARUnivariate.test_smoothed_forecastsa  r  re   c                 b    t          | j        j        j        | j        g d         d           d S r  rZ  rl   s    rc   r   z=TestMultivariateVARUnivariate.test_smoothed_state_disturbanceg  r  re   c                 `    t          | j        j        j        | j        dg         d           d S r  r\  rl   s    rc   r   zATestMultivariateVARUnivariate.test_smoothed_state_disturbance_covm  r  re   c                 b    t          | j        j        j        | j        g d         d           d S r  rb  rl   s    rc   r   zCTestMultivariateVARUnivariate.test_smoothed_measurement_disturbances  r  re   c                 x    t          | j        j                                        | j        g d                    d S rd  ri  rl   s    rc   r   zGTestMultivariateVARUnivariate.test_smoothed_measurement_disturbance_covy  rj  re   Nrk  r   re   rc   r  r    s!       
 
 4J 4J [4JlB B B
 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 
 
 
re   r  c                   :     e Zd Ze fd            Zd Zd Z xZS )&TestMultivariateVARUnivariateSmoothingc                 H     t                      j        |dt          i| d S r   r   r   s      rc   rd   z2TestMultivariateVARUnivariateSmoothing.setup_class  r   re   c                     t          | j        j        j        t                     t          | j        j        j        j        t                     d S r   r   rD   rE   r   r   r   rl   s    rc   test_filter_methodz9TestMultivariateVARUnivariateSmoothing.test_filter_method  E    TZ^13DEEETZ^4B&	( 	( 	( 	( 	(re   c                     t          | j        j        j        d           t          | j        j        j        j        d           t          | j        j        j        j        t                     d S 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dS )TestVARAutocovariancesmixedc                    t           j                                        j        }t	          j        ddd          |_        t          j        |g d                   	                                j
        dd          }|dk    r5t          j        |j
        d dd d f<   t          j        |j
        d	d
d d f<   n|dk    r1t          j        |j
        dddf<   t          j        |j
        d	d
df<   n~|dk    rxt          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"<   |                    d#           || _        |                    g d$%          | _        |                    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"<   |                    d#           || _        |                    g d$%          | _        d S )(Nr   r   r   r   r   r-   allr  r  r  partialr   r  r  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  s     ,,..3M+'+- - -	fS;;;<==BBDDI!""ME>>!vCHSbS!!!V#%6CHSWaaaZ  i "CHQrT1W#%6CHSWaZ  g "CHQrT1W!#CHRUAX!#CHRUAX#%6CHSWaZ #%6CHSWaZ  Fa!FFvFFq		H222222<<<#> ? ?I H999999999&; < <L 6!99K8AAA@@@AAA%C D DK 	**3///	jjj55 	

%t,,,Fa!FFvFF "q		Hbqb"1"444444>>>#@ A AI %'H999999999.; %< %<L"1"bqb ! %'F1IIL!""bqb !#%6!99K!RaR 8@@@???@@@%B C 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	           d S )
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     	;AAAqqq!A#IF.A"1"abb!A#+N!	# 	# 	# 	# 	;AAAqqq!B$JG.A"1"abb!""*M!	# 	# 	# 	# 	# 	#re   N)r  )r   r   r   r   rd   r  r   re   rc   r  r    sF        =@ =@ =@ [=@~	# 	# 	# 	# 	#re   r  c                   4     e Zd Ze fd            Zd Z xZS )*TestVARAutocovariancesAlternativeSmoothingc                 H     t                      j        |dt          i| d S 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                     d S r   r   rl   s    rc   r   z=TestVARAutocovariancesAlternativeSmoothing.test_smooth_method  r   re   r   r   s   @rc   r  r    r   re   r  c                   4     e Zd Ze fd            Zd Z xZS )(TestVARAutocovariancesClassicalSmoothingc                 H     t                      j        |dt          i| d S 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                     d S r   rs  rl   s    rc   r   z;TestVARAutocovariancesClassicalSmoothing.test_smooth_method  rt  re   r   r   s   @rc   r  r    ru  re   r  c                   :     e Zd Ze fd            Zd Zd Z xZS ))TestVARAutocovariancesUnivariateSmoothingc                 H     t                      j        |dt          i| d S r   r   r   s      rc   rd   z5TestVARAutocovariancesUnivariateSmoothing.setup_class  r   re   c                     t          | j        j        j        t                     t          | j        j        j        j        t                     d S r   r  rl   s    rc   r  z<TestVARAutocovariancesUnivariateSmoothing.test_filter_method  r  re   c                     t          | j        j        j        d           t          | j        j        j        j        d           t          | j        j        j        j        t                     d S 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                            d           d S )N   )	_k_statesr  ).Nr  r   r  )r   __init__rG   r  rE   r  )rm   endogr   s     rc   r  zTVSSWithLags.__init__  sb    !,,,%'VAYYy%9\122rr!"//55555re   )r   r   r   r  r   r   s   @rc   r  r    s8        6 6 6 6 6 6 6 6 6re   r  Tc                    t           j                                        j        }t	          j        ddd          |_        t          j        |ddg                   	                                j
        dd          }| dk    r5t          j        |j
        d d	d d f<   t          j        |j
        d
dd d f<   n| dk    r1t          j        |j
        dd	df<   t          j        |j
        d
ddf<   nN| dk    rHt          j        |j
        dd	df<   t          j        |j
        dddf<   t          j        |j
        d
ddf<   |Gt	          j        |j        d         t          |          |z   d          }|                    |          }|sEt          j        |ddd          }	||	j        _        ||	j        }|	                    ||          }
n2t)          |          }	||	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F3	:./005577<QRR@E%F
2A2qqq5!v
2b5!!!8	I		V
1Q36!v
2b5!8	G		V
1Q36V
1Q36!v
2b5!8
U[^'*5zzC'7dD D Df%% 
4mEd&') ) )$5!>%FjjJj775!!$5!jj
j338Ore   r  )r  r  r  Nr  Fr  c                    t          | ||          \  }}|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         }|                    d                              ddd          }	t	          |	ddddddf         |dd         dd	           t          |	dd         t          j                   |                    d                              ddd          }
t	          |
ddddddf         |dd         dd	           t          |
dd         t          j                   |                    d
                              ddd          }t	          |d
dddddf         |d
d         dd	           t          |dd
         t          j                   |                    dd          }	t	          |	t          j                   |                    dd          }	t	          |	ddddf         |d         dd	           |                    ddd                              ddd          }	t	          |	ddddddf         |dd         dd	           |                    dd          }
t	          |
t          j                   |                    dd          }
t	          |
t          j                   |                    dd          }
t	          |
ddddf         |d         dd	           |                    ddd                              ddd          }
t	          |
ddddddf         |dd         dd	           dS )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
3
3C2A2qs
OM2A2qs
OM2A2qs
OM --a00::1aCCEE!""bqb"1"*%}QRR'8t$OOOOrrBF###--a00::1aCCEE!""bqb"1"*%}QRR'8t$OOOOrrBF###--a00::1aCCEE!""bqb"1"*%}QRR'8t$OOOOrrBF### --a1-55EE26"""--a1-55EE"1"bqb&M=#3$TJJJJ--	 .  $9Q1-- 
E!!!RaR!)$mAaC&8t$OOOO--a1-55EE26"""--a1-55EE26"""--a1-55EE"1"bqb&M=#3$TJJJJ--	 .  $9Q1-- 
E!!!RaR!)$mAaC&8t$OOOOOOre   c                 	   t          | ||d          \  }}g d}|st          | |||j                  \  }}nBt          | ||          \  }}|D ]}	||	dddf         ||	<   |j                                        }i }
i }|r)g d}|D ]"}||dddf         |
|<   ||ddd	f         ||<   #t	          |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
                              d
dd          }|                    d	                              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                    |                    d|
                              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                    |                    d|                              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                    |                    d	|j        |
          }t	          |dd
dd
f         |dd
ddd
f                    |                    d	d          }t	          |dd
dd
f         |d                    |                    d	dd                              d
dd          }t	          |dddd
dd
f         |dd                    |                    d|j        |          }t	          |dd
dd
f         |ddddd
f                    |                    d|j        dz
  |
          }t	          |dd
dd
f         |ddddd
f                    |                    dd          }t	          |dd
dd
f         |d
                    |                    ddd                              d
dd          }t	          |dddd
dd
f         |dd                    dS )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MMGW  E !'+<c)0)=? ? ?SS  ):C@@Q 	0 	0Dc3B3/CIIgnnNN
 ;* * * 	; 	;C")#sBrE/":N3")#sBrE/":N3GK)))

 
*
*1a
3
3C1Q3
OM1Q3
OM1Q3
OMn		#W%@bcc%JK  	!Q""  --b11;;Aq!DDEE#2#rr2A2+&abb(9:::E"##rr2A2+&2qsBQB(?@@@--
. . * **3)Aq!*<*< 
E#2#rr2A2+&abb(9:::E"##rr2A2+&2qsBQB(?@@@--
. . * **3)Aq!*<*< 
E#2#rr2A2+&abb(9:::E"##rr2A2+&2qsBQB(?@@@ --
chn . 6 6EE"1"bqb&M72qsBQB;#7888--bA-66EE"1"bqb&M=#7888--
! .  %IaA.. 
E!!!RaR!)$mE%K&@AAA--
chn . 6 6EE"1"bqb&M72qsBQB;#7888--
chl. . : :EE"1"bqb&M72qsBQB;#7888--bA-66EE"1"bqb&M=#7888--
! .  %IaA.. 
E!!!RaR!)$mE%K&@AAAAAre   c           
         t          | ||d          \  }}g d}|st          | |||j                  \  }}nBt          | ||          \  }}|D ]}	||	dd df         ||	<   |j                                        }t	          |j        |j                   t          j        |j        |j	        ddd f         fd	          
                    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 }|rK|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}|                    d|j        |          
                    dd
d          }t          |j        |j        |j        |j        f           t	          |d d d dd df         |dd                     |                    d|j        dz
  |          
                    dd
d          }t          |j        |j        dz
  |j        |j        f           t	          |d d d dd df         |dd                     |                    d|j        dz
  |          
                    dd
d          }t          |j        |j        dz
  |j        |j        f           t	          |d d d dd df         |dd                     d S )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MMGW  E !'+<c)0)=? ? ?SS  ):C@@Q 	0 	0Dc3B3/CIIgnnGK)))
.		#W%@bcc%JK  	!Q""  1Q3
OM1Q3
OM1Q3
OM M
 9$_c233%>?hRSS01y#rss23!,RSS"89 c233!67 c233!679 9 --
M . ; ;;D9Q1;M;M 
w|S\3<HIIIE!!!RaR!)$mABB&7888 --
q # . % %%.Yq!Q%7%7 
 w|a/s|LMMME!!!RaR!)$mABB&7888
 --
q # . % %%.Yq!Q%7%7 
 w|a/s|LMMME!!!RaR!)$mABB&788888re   c           
         t          | ||d          \  }}g d}|st          | |||j                  \  }}nBt          | ||          \  }}|D ]}	||	dd df         ||	<   |j                                        }t	          |j        |j                   t          j        |j        |j	        ddd f         fd	          
                    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 }|rK|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}|                    d||          
                    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                   |                    d||          
                    dd
d          }t	          |dd d dd df         |dd                     t          |d d         t          j                   |                    d||          
                    dd
d          }t	          |dd d dd df         |dd                     t          |d d         t          j                   d S )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MMGW  E !'+<c)0)=? ? ?SS  ):C@@Q 	0 	0Dc3B3/CIIgnnGK)))
.		#W%@bcc%JK  	!Q""  2A2qs
OM2A2qs
OM2A2qs
OM ,
CM
 9$_c233%>?hRSS01y#rss23!,RSS"89 c233!67 c233!679 9 --	s- . 1 11:1a1C1C 
w|a/s|LMMME!""bqb"1"*%}QRR'8999rrBF###
 --	s- . 1 11:1a1C1C 
E!""bqb"1"*%}QRR'8999rrBF### --	s- . 1 11:1a1C1C 
E!""bqb"1"*%}QRR'8999 rrBF#####re   c                     t          ddd          \  } }t          j        t          d          5  |                    ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    dd	           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    dd
           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    ddd           d d d            d S # 1 swxY w Y   d S )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  ]  s   EUNNNFAs	z)B	C	C	C ; ;))!q):::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 
z	8	8	8 3 3))!r)2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
z	8	8	8 7 7))!2)6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 
z	8	8	8 5 5))!)4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
z)F	G	G	G = =))!1!)<<<= = = = = = = = = = = = = = = = = =sY   AAA<B  B$'B$C**C.1C.D44D8;D8F  FFc                 N   t          | ||          \  }}|rg n|j        }t          j        d          t          j        z  }ddg|d<   t          j        |j        |fd          }|                    |          }|                    |d          }	|	                                }
t          j        |
dd <   |                    |
          }|                    |d          }dd	d
|j
        d	z
  |j
        |j
        d	z   |j
        dz   fD ]}|	                    ||          }|	j        d|f         |j        d|f         z
  }t          |j        |d           t          |j        d            |	                    |||d	z             }t          |j        |d         d           d S )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,RRC,F
 Xg'FdF1I^SY/a888F99VD;;v$;//D [[]]F6F344L::fD;;v$;//D CAsxAsx!|L L Liiqi!!*362*3623 	*G%@@@@S)4000 ii1!a%i00*GI,>UKKKKKL Lre   c                 F   t          | ||d          \  }}|rg n|j        }|j                                        }ddg|d<   ddg|d<   |                    |          }|                    |d	          }|j        dz
  }	d
dd|	dz
  |	|	dz   |	dz   fD ]}
|                    ||
          }|j        d|
f         |j	        j        d|
f         z
  }t          |j        |d           |j	        j        d|
f         |j        d|
f         z
  }t          |j        |d           d S )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_    sg    g'8#2FFFHC,RRC,FY^^F*F3K,F3K99VD;;v$;//D 8b=DC44!8< C Ciiqi!! *362':36BC 	*G%@@@@ ':36B)#q&12 	,gEBBBBBC Cre   c                 R   d}t          | ||d          \  }}|rg n|j        }|j                                        }ddg|d<   |                    |          }|                    |d          }	|                    |d          }
|
                    ||j        dz
  	           d
}t          j
        t          |          5  |	                    ||j        dz
  	           d d d            n# 1 swxY w Y   |rTd}t          j
        t          |          5  |
                    ||j        dz   	           d d d            n# 1 swxY w Y   t          | ||          \  }}|rg n|j        }|j                                        d |j        dz
           }|                    |          }|                    |d          }|dz  }t          j
        t          |          5  |                    ||j        dz
  	           d d d            n# 1 swxY w Y   t          j        t          j        |j                            }|                    ddgd          }|dz  }t          j
        t          |          5  |                    ||j        dz
  	           d d d            n# 1 swxY w Y   t          | || d          \  }}|rd}nd}t          j
        t          |          5  |                    ||j        dz
  	           d d d            d S # 1 swxY w Y   d S )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    sj   H g'8#1EEEHC,RRC,FY^^FsF2J99VDKK4K88MKK4K88M schl+++1C	z	-	-	- 0 03#(Q,///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  41]<s333 	4 	4schl333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 g'8#>>HC,RRC,FY^^msx!|m,F99VD;;v$;//D
9
9C	z	-	-	- ' '		#A	&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ?28CH--..D;;RyT;22D
G
GC	z	-	-	- ' '		#A	&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '
  ):GKKKJD$
 >?=	z	-	-	- ' '		#A	&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'sZ    C//C36C3 EE	E	$ HHH? J++J/2J// L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     s    
			     L L L L L L L L L L                  @ @ @ @ @ @ @ @ @ @ H H H H H H F F F F F F          wrwx8899|
 |
 |
 |
 |
 |
 |
 |
~4 4 4 4 4= 4 4 4) ) ) ) ) ) ) )@
( 
( 
( 
( 
(} 
( 
( 
(v
 v
 v
 v
 v
 v
 v
 v
rD D D D D*> D D D) ) ) ) )/C ) ) )
( 
( 
( 
( 
(.B 
( 
( 
(R
 R
 R
 R
 R
 R
 R
 R
j' ' ' ' '0G ' ' ') ) ) ) )2I ) ) )
( 
( 
( 
( 
(1H 
( 
( 
(X
 X
 X
 X
 X
 X
 X
 X
v) ) ) ) ).A ) ) )' ' ' ' ',? ' ' 'Y
 Y
 Y
 Y
 Y
 Y
 Y
 Y
x( ( ( ( (-J ( ( ($J# J# J# J# J# J# J# J#Z) ) ) ) )1G ) ) )' ' ' ' '/E ' ' '( ( ( ( (0F ( ( ($6 6 6 6 64 6 6 6 FJ"# # # #L $E$E$EFF,tUm<<u..*P *P /. =< GF*PZ $E$E$EFF,tUm<<u..QB QB /. =< GFQBh $E$E$EFF,tUm<<u..G9 G9 /. =< GFG9T $E$E$EFF,tUm<<u..G$ G$ /. =< GFG$T= = =( $E$E$EFF,tUm<<u..'L 'L /. =< GF'LT $E$E$EFF,tUm<<u..C C /. =< GFCD $E$E$EFF,tUm<<u..<' <' /. =< GF<' <' <'re   