
    M/Phj                     D   d Z ddlZddlZddlZddlmZmZmZm	Z	 ddl
ZddlZddlmZ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 ej                            ej                            e                    Zej                            d
d          Z  ej!        ej                            ee                     Z" G d d          Z# G d de#          Z$ G d de#          Z%ej&        '                    d           G d de#                      Z( G d de#          Z) G d de#          Z* G d de#          Z+ G d de+          Z, G d de+          Z- G d d e+          Z. G d! d"e#          Z/ G d# d$          Z0 G d% d&e0          Z1 G d' d(e0          Z2 G d) d*e0          Z3 G d+ d,e3          Z4 G d- d.e3          Z5 G d/ d0e3          Z6 G d1 d2e0          Z7 G d3 d4e0          Z8d5 Z9d6 Z:d7 Z;d8 Z<d9 Z=d: Z>d; Z?d< Z@d= ZAd> ZBd? ZCd@ ZDdA ZEdB ZFdC ZGdS )Da?  
Tests for python wrapper of state space representation and filtering

Author: Chad Fulton
License: Simplified-BSD

References
----------

Kim, Chang-Jin, and Charles R. Nelson. 1999.
"State-Space Models with Regime Switching:
Classical and Gibbs-Sampling Approaches with Applications".
MIT Press Books. The MIT Press.
    N)assert_allcloseassert_almost_equalassert_equalassert_raises)sarimaxtools)FilterResultsKalmanFilterPredictionResultsRepresentation)SimulationSmoother   )results_kalman_filterresultszresults_clark1989_R.csvc                   N    e Zd ZdZeefd            Zed             Zd Zd Z	dS )	Clark1987a>  
    Clark's (1987) univariate unobserved components model of real GDP (as
    presented in Kim and Nelson, 1999)

    Test data produced using GAUSS code described in Kim and Nelson (1999) and
    found at http://econ.korea.ac.kr/~cjkim/SSMARKOV.htm

    See `results.results_kalman_filter` for more information.
    c                    t           j        | _        t          j        | j        d                   | _        t          j        | j        d         t          j        ddd          dg          }t          j        |d                   |d	<   d
}t          dd|d|| _
        | j
                            |d	         j                   g d| j
        j        d d d d df<   g d| j
        j        g dg dg df<   t          j        | j
        j                  | j
        _        t          j        | j        d                   \  }}}}}	||	g| j
        j        ddgddgddgf<   |dz  |dz  d|dz  g| j
        j        t          j        |          t          j        |t,                    fz   <   t          j        |f          }
t          j        |          dz  }t          j        t          j        | j
        j        d d d d df         |          | j
        j        d d d d df         j                  }| j
                            |
|           d S )Nstatesdata
1947-01-01
1995-07-01QSfreqGDPindexcolumnslgdp   r   k_endogk_states)r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r         )r   r&   r   r%   r   r&   )r   r   r   r   r   r   
parametersr%   dtyped    )r   uc_unitruepd	DataFrametrue_states
date_rangenplogr
   modelbindvaluesdesign
transitioneyer$   	selectionarray	state_covdiag_indiceszerosintdotTinitialize_known)clsr)   kwargsr   r$   sigma_vsigma_esigma_wphi_1phi_2initial_stateinitial_state_covs               t/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/statespace/tests/test_representation.pysetup_classzClark1987.setup_class8   sr   (/,sx'9:: |HV-lFFFG
 
 

 vd5k**V  HXHHHH		tF|*+++$0LL	AAAq! 6H5G5G 		0000000002 	3 !fSY%788	 57HH\"5
 5
1'7E5 ;@	q!fq!fq!f56 QJ
AwzK
 		OH%%rx'D'D'D&FF	H (--F8,,S0 FF39'111a02CDDI AAAq)+
 
 		""=2CDDDDD    c                 4    | j                                         S Nr4   filterrC   s    rL   
run_filterzClark1987.run_filtere        y!!!rN   c                     t          | j        j        | j        d         d                                          | j        d         d           d S )Nstartloglike   )r   r   llf_obsr-   sumselfs    rL   test_loglikezClark1987.test_loglikej   sP    L 7!3!4!4599;;Ii !	
 	
 	
 	
 	
rN   c                    t          | j        j        d         | j        d         d          | j        j        d d df         d           t          | j        j        d         | j        d         d          | j        j        d d df         d           t          | j        j        d         | j        d         d          | j        j        d d df         d           d S Nr   rW   r!   r   r&   r%   r   r   filtered_stater-   r0   ilocr\   s    rL   test_filtered_statezClark1987.test_filtered_statep   s    L'*49W+=+>+>?!!!!Q$'	
 	
 	
 	L'*49W+=+>+>?!!!!Q$'	
 	
 	
 	L'*49W+=+>+>?!!!!Q$'	
 	
 	
 	
 	
rN   N
__name__
__module____qualname____doc__classmethodfloatrM   rT   r^   rd   r+   rN   rL   r   r   .   s          $ *E *E *E [*EX " " ["
 
 

 
 
 
 
rN   r   c                   2     e Zd ZdZe fd            Z xZS )TestClark1987SinglezP
    Basic single precision test for the loglikelihood and filtered states.
    c                     t          j        d           t                                          t          j        d           |                                 | _        d S )NNot implementedr   r)   conserve_memory)pytestskipsuperrM   r2   float32rT   r   rC   	__class__s    rL   rM   zTestClark1987Single.setup_class   sS    %&&&*a 	 	
 	
 	
 nn&&rN   rf   rg   rh   ri   rj   rM   __classcell__rw   s   @rL   rm   rm      sN          ' ' ' ' [' ' ' ' 'rN   rm   c                   2     e Zd ZdZe fd            Z xZS )TestClark1987DoublezP
    Basic double precision test for the loglikelihood and filtered states.
    c                     t                                          t          d           |                                 | _        d S Nr   rp   rt   rM   rk   rT   r   rv   s    rL   rM   zTestClark1987Double.setup_class   s@     	 	
 	
 	
 nn&&rN   rx   rz   s   @rL   r|   r|      N          ' ' ' ' [' ' ' ' 'rN   r|   ro   c                   2     e Zd ZdZe fd            Z xZS )TestClark1987SingleComplexz\
    Basic single precision complex test for the loglikelihood and filtered
    states.
    c                     t                                          t          j        d           |                                 | _        d S r~   )rt   rM   r2   	complex64rT   r   rv   s    rL   rM   z&TestClark1987SingleComplex.setup_class   sB    , 	 	
 	
 	
 nn&&rN   rx   rz   s   @rL   r   r      sN          ' ' ' ' [' ' ' ' 'rN   r   c                   2     e Zd ZdZe fd            Z xZS )TestClark1987DoubleComplexz\
    Basic double precision complex test for the loglikelihood and filtered
    states.
    c                     t                                          t          d           |                                 | _        d S r~   rt   rM   complexrT   r   rv   s    rL   rM   z&TestClark1987DoubleComplex.setup_class   s@    1 	 	
 	
 	
 nn&&rN   rx   rz   s   @rL   r   r      N          ' ' ' ' [' ' ' ' 'rN   r   c                   2     e Zd ZdZe fd            Z xZS )TestClark1987ConservezM
    Memory conservation test for the loglikelihood and filtered states.
    c                     t                                          t          d           |                                 | _        d S Nr&   rp   r   rv   s    rL   rM   z!TestClark1987Conserve.setup_class   @     	 	
 	
 	
 nn&&rN   rx   rz   s   @rL   r   r      r   rN   r   c                   @     e Zd ZdZeeddf fd	            Zd Z xZS )Clark1987ForecastzE
    Forecasting test for the loglikelihood and filtered states.
    r*   r   c                 J   t                                          ||           || _        t          j        t          j        | j        j        dd d f         t          j        g|z  f         d|d          | j        _        | j        j        j	        d         | j        _
        d S )Nrp   r   r%   Fndminr)   orderr   )rt   rM   	nforecastr2   r;   r_r4   endognanshapenobsrC   r)   r   rq   rw   s       rL   rM   zClark1987Forecast.setup_class   s     	 	
 	
 	
 " (E#)/!QQQ$'"&));;<5
 
 
	 .q1	rN   c                    t          | j        j        d         | j        d         | j                  | j        j        d d df         d           t          | j        j        d         | j        d         | j                  | j        j        d d df         d           t          | j        j        d         | j        d         | j                  | j        j        d d df         d           d S r`   r   r   rb   r-   r   r0   rc   r\   s    rL   rd   z%Clark1987Forecast.test_filtered_state   s    L'*49W+=t~o+MN!!!!Q$'	
 	
 	
 	L'*49W+=t~o+MN!!!!Q$'	
 	
 	
 	L'*49W+=t~o+MN!!!!Q$'	
 	
 	
 	
 	
rN   	rf   rg   rh   ri   rj   rk   rM   rd   ry   rz   s   @rL   r   r      si          $Q 2 2 2 2 2 [2
 
 
 
 
 
 
rN   r   c                   2     e Zd ZdZe fd            Z xZS )TestClark1987ForecastDoubleR
    Basic double forecasting test for the loglikelihood and filtered states.
    c                 z    t                                                       |                                 | _        d S rP   rt   rM   rT   r   rv   s    rL   rM   z'TestClark1987ForecastDouble.setup_class   .    nn&&rN   rx   rz   s   @rL   r   r      N          ' ' ' ' [' ' ' ' 'rN   r   c                   2     e Zd ZdZe fd            Z xZS )"TestClark1987ForecastDoubleComplex^
    Basic double complex forecasting test for the loglikelihood and filtered
    states.
    c                     t                                          t                     |                                 | _        d S Nr(   r   rv   s    rL   rM   z.TestClark1987ForecastDoubleComplex.setup_class   >     	 	
 	
 	
 nn&&rN   rx   rz   s   @rL   r   r      r   rN   r   c                   2     e Zd ZdZe fd            Z xZS )TestClark1987ForecastConserve]
    Memory conservation forecasting test for the loglikelihood and filtered
    states.
    c                     t                                          t          d           |                                 | _        d S r   r   rv   s    rL   rM   z)TestClark1987ForecastConserve.setup_class   r   rN   rx   rz   s   @rL   r   r      r   rN   r   c                   >     e Zd ZdZe fd            Zd Zd Z xZS )TestClark1987ConserveAllr   c                     t                                          t          d           | j        d         | j        _        |                                 | _        d S )N   rp   rW   )rt   rM   rk   r-   r4   loglikelihood_burnrT   r   rv   s    rL   rM   z$TestClark1987ConserveAll.setup_class	  sR    )B 	 	
 	
 	
 (+x'8	$nn&&rN   c                 R    t          | j        j        | j        d         d           d S )NrX   rY   r   r   llfr-   r\   s    rL   r^   z%TestClark1987ConserveAll.test_loglike  1    Ldi	2A	
 	
 	
 	
 	
rN   c                    | j         j        d         }t          | j        j        d         d         | j         j        |dz
  df         d           t          | j        j        d         d         | j         j        |dz
  df         d           d S )Nr   r   r!   r0   r   r   r   rb   rc   r]   ends     rL   rd   z,TestClark1987ConserveAll.test_filtered_state  s    $Q'L'*2.!#a%(+Q	
 	
 	
 	L'*2.!#a%(+Q	
 	
 	
 	
 	
rN   	rf   rg   rh   ri   rj   rM   r^   rd   ry   rz   s   @rL   r   r     sl          ' ' ' ' ['
 
 

	
 	
 	
 	
 	
 	
 	
rN   r   c                   N    e Zd ZdZeefd            Zed             Zd Zd Z	dS )	Clark1989aj  
    Clark's (1989) bivariate unobserved components model of real GDP (as
    presented in Kim and Nelson, 1999)

    Tests two-dimensional observation data.

    Test data produced using GAUSS code described in Kim and Nelson (1999) and
    found at http://econ.korea.ac.kr/~cjkim/SSMARKOV.htm

    See `results.results_kalman_filter` for more information.
    c           
      X   t           j        | _        t          j        | j        d                   | _        t          j        | j        d         t          j        ddd          ddg	          d
d          }t          j        |d                   |d<   |d         dz  |d<   d}t          dd|d|| _
        | j
                            t          j        |j                             g dg dg| j
        j        d d d d df<   g d| j
        j        g dg dg df<   t          j        | j
        j                  | j
        _        t          j        | j        d                   \
  }}}}}	}
}}}}|||g| j
        j        g dg dg df<   |
|g| j
        j        ddgddgddgf<   |	dz  | j
        j        d<   |dz  |dz  dd|dz  |dz  g| j
        j        t          j        |          t          j        |t0                    fz   <   t          j        |f          }t          j        |          dz  }t          j        t          j        | j
        j        d d d d df         |          | j
        j        d d d d df         j                  }| j
                            ||           d S )Nr   r   r   r   r   r   r   UNEMPr   r!   r*      r%   r"   )r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r%   r&   r!   rY   )r   r!   r   r%   r   r%   r!   rY   )r   r   r   r   r   r   r   r   r'   r   r   r   )r   r%   r&   r   r   r   r   r   r   r   r(   r+   )r   uc_bir-   r.   r/   r0   r1   r2   r3   r
   r4   r5   ascontiguousarrayr6   r7   r8   r9   r$   r:   r;   obs_covr<   r=   r>   r?   r@   rA   rB   )rC   r)   rD   r   r$   rE   rF   rG   sigma_vlsigma_ecrH   rI   alpha_1alpha_2alpha_3rJ   rK   s                    rL   rM   zClark1989.setup_class.  s   (.,sx'9:: |HV-lFFFG$
 
 
 ""	
 fT%[))Ugs*W HXHHHH		r+DK88999 &8%7%79K9K9K$L	AAAq!
 %$$	 		%%%%%%%%%'	

 !fSY%788	 57HH\"5
 5
	2'7Hh	w Wg?
	)))YYY			:; ;@	q!fq!fq!f56%-q[	'" QJ
Aq'1*hkK
 		OH%%rx'D'D'D&FF	H (--F8,,S0 FF39'111a02CDDI AAAq)+
 
 		""=2CDDDDDrN   c                 4    | j                                         S rP   rQ   rS   s    rL   rT   zClark1989.run_filterc  rU   rN   c                     t          | j        j        dd                                          | j        d         d           d S )Nr   rX   r%   )r   r   rZ   r[   r-   r\   s    rL   r^   zClark1989.test_loglikeh  sG    L $((**Ii !	
 	
 	
 	
 	
rN   c                 F   t          | j        j        d         | j        d         d          | j        j        d d df         d           t          | j        j        d         | j        d         d          | j        j        d d df         d           t          | j        j        d         | j        d         d          | j        j        d d df         d           t          | j        j        d         | j        d         d          | j        j        d d df         d           d S Nr   rW   r!   r   r%   rY   r&   ra   r\   s    rL   rd   zClark1989.test_filtered_stateo  s6   L'*49W+=+>+>?!!!!Q$'	
 	
 	
 	L'*49W+=+>+>?!!!!Q$'	
 	
 	
 	L'*49W+=+>+>?!!!!Q$'	
 	
 	
 	L'*49W+=+>+>?!!!!Q$'	
 	
 	
 	
 	
rN   Nre   r+   rN   rL   r   r   "  s        
 
 $ 2E 2E 2E [2Eh " " ["
 
 

 
 
 
 
rN   r   c                   8     e Zd ZdZe fd            Zd Z xZS )TestClark1989z|
    Basic double precision test for the loglikelihood and filtered
    states with two-dimensional observation vector.
    c                     t                                          t          d           |                                 | _        d S r~   r   rv   s    rL   rM   zTestClark1989.setup_class  s5    %;;;nn&&rN   c                     t          | j        j                            d                              d          t          d         d           d S )Nr   )axisr   V1g-C6?atol)r   r   kalman_gainr[   clark1989_resultsr\   s    rL   test_kalman_gainzTestClark1989.test_kalman_gain  sV    044!4<<@@a@HH)$/d	< 	< 	< 	< 	< 	<rN   )rf   rg   rh   ri   rj   rM   r   ry   rz   s   @rL   r   r     s]          ' ' ' ' ['< < < < < < <rN   r   c                   2     e Zd ZdZe fd            Z xZS )TestClark1989Conservey
    Memory conservation test for the loglikelihood and filtered states with
    two-dimensional observation vector.
    c                     t                                          t          d           |                                 | _        d S r   r   rv   s    rL   rM   z!TestClark1989Conserve.setup_class  r   rN   rx   rz   s   @rL   r   r     r   rN   r   c                   @     e Zd ZdZeeddf fd	            Zd Z xZS )Clark1989Forecastr   r*   r   c                    t                                          ||           || _        t          j        t          j        | j        j        t          j        t          j	        t          j	        g|z           
                    d|          f         d|d          | j        _        | j        j        j        d         | j        _        |                                 | _        d S )Nrp   r%   r   r   r   )rt   rM   r   r2   r;   c_r4   r   r   r   reshaper   r   rT   r   r   s       rL   rM   zClark1989Forecast.setup_class  s     	 	
 	
 	
 " (E	rvrv&y0199!YGGH 5
 
 
	 .q1	nn&&rN   c                 v   t          | j        j        d         | j        d         | j                  | j        j        d d df         d           t          | j        j        d         | j        d         | j                  | j        j        d d df         d           t          | j        j        d         | j        d         | j                  | j        j        d d df         d           t          | j        j        d         | j        d         | j                  | j        j        d d df         d           d S r   r   r\   s    rL   rd   z%Clark1989Forecast.test_filtered_state  sB   L'*49W+=t~o+MN!!!!Q$'	
 	
 	
 	L'*49W+=t~o+MN!!!!Q$'	
 	
 	
 	L'*49W+=t~o+MN!!!!Q$'	
 	
 	
 	L'*49W+=t~o+MN!!!!Q$'	
 	
 	
 	
 	
rN   r   rz   s   @rL   r   r     si          $Q ' ' ' ' ' ['$
 
 
 
 
 
 
rN   r   c                   2     e Zd ZdZe fd            Z xZS )TestClark1989ForecastDoubler   c                 z    t                                                       |                                 | _        d S rP   r   rv   s    rL   rM   z'TestClark1989ForecastDouble.setup_class  r   rN   rx   rz   s   @rL   r   r     r   rN   r   c                   2     e Zd ZdZe fd            Z xZS )"TestClark1989ForecastDoubleComplexr   c                     t                                          t                     |                                 | _        d S r   r   rv   s    rL   rM   z.TestClark1989ForecastDoubleComplex.setup_class  r   rN   rx   rz   s   @rL   r   r     r   rN   r   c                   2     e Zd ZdZe fd            Z xZS )TestClark1989ForecastConserver   c                     t                                          t          d           |                                 | _        d S r   r   rv   s    rL   rM   z)TestClark1989ForecastConserve.setup_class  r   rN   rx   rz   s   @rL   r   r     r   rN   r   c                   >     e Zd ZdZe fd            Zd Zd Z xZS )TestClark1989ConserveAllr   c                     t                                          t          d           d| j        _        |                                 | _        d S )Nr   rp   r   )rt   rM   rk   r4   r   rT   r   rv   s    rL   rM   z$TestClark1989ConserveAll.setup_class  sK    )B 	 	
 	
 	
 ()	$nn&&rN   c                 R    t          | j        j        | j        d         d           d S )NrX   r%   r   r\   s    rL   r^   z%TestClark1989ConserveAll.test_loglike  r   rN   c                 
   | j         j        d         }t          | j        j        d         d         | j         j        |dz
  df         d           t          | j        j        d         d         | j         j        |dz
  df         d           t          | j        j        d         d         | j         j        |dz
  df         d           t          | j        j        d         d         | j         j        |dz
  df         d           d S )Nr   r   r   r!   r%   rY   r&   r   r   s     rL   rd   z,TestClark1989ConserveAll.test_filtered_state   s   $Q'L'*2.!#a%(+Q	
 	
 	
 	L'*2.!#a%(+Q	
 	
 	
 	L'*2.!#a%(+Q	
 	
 	
 	L'*2.!#a%(+Q	
 	
 	
 	
 	
rN   r   rz   s   @rL   r   r     sl          ' ' ' ' ['
 
 


 
 
 
 
 
 
rN   r   c                   @     e Zd Ze fd            Zd Zd Zd Z xZS )TestClark1989PartialMissingc                     t                                                       | j        j        }t          j        |ddd f<   | j                            |           |                                 | _        d S )Nr   i)	rt   rM   r4   r   r2   r   r5   rT   r   )rC   r   rw   s     rL   rM   z'TestClark1989PartialMissing.setup_class  s^    	ag	unn&&rN   c                 n    t          | j        j        dd                                          d           d S )Nr   g$F-t@@)r   r   rZ   r[   r\   s    rL   r^   z(TestClark1989PartialMissing.test_loglike  s2    ,QRR04466DDDDDrN   c                     d S rP   r+   r\   s    rL   rd   z/TestClark1989PartialMissing.test_filtered_state!  s    rN   c                     t          | j        j        j        dd          t          j        d d dd f         d           d S )Nr   g:0yE>r   )r   r   predicted_staterA   r   rc   r\   s    rL   test_predicted_statez0TestClark1989PartialMissing.test_predicted_state%  sQ    L(*122.0A0Fqqq!""u0M	
 	
 	
 	
 	
 	
rN   )	rf   rg   rh   rj   rM   r^   rd   r   ry   rz   s   @rL   r   r     sr        ' ' ' ' ['E E E  
 
 
 
 
 
 
rN   r   c                     t          j        d          dz  } t          dd                              |            fd}fd}fd}t	          t
          |           t	          t
          |           t	          t
          |           t	          t
          fd	           t	          t
          fd
           t	          t
          fd           t          j        d         d           dd<   t          d                                         d           t          j        d         d           t          d         d           t          j	        d         j
                  d<   t          j        d         d           dd<   t          j        d         d           t          d         d           d S )N
         ?r   r%   r"   c                      d d<   d S )Nr   designsr+   mods   rL   set_designsz(test_slice_notation.<locals>.set_designs6  s    IrN   c                      d d<   d S )Nr   )r  r   r   r+   r  s   rL   set_designs2z)test_slice_notation.<locals>.set_designs29  s     OrN   c                      d d<   d S Nr   r   r+   r  s   rL   set_designs3z)test_slice_notation.<locals>.set_designs3<  s    ArN   c                       d         S )Nr  r+   r  s   rL   <lambda>z%test_slice_notation.<locals>.<lambda>D  s    c)n rN   c                       d         S )N)r  r   r   r   r+   r  s   rL   r  z%test_slice_notation.<locals>.<lambda>E  s    c*<&= rN   c                       d         S )Nr   r+   r  s   rL   r  z%test_slice_notation.<locals>.<lambda>F  s    c!f rN   r   r   )r7   r   r   r   r7   r   r   r7   r   r   )r2   aranger
   r5   r   
IndexErrorr   r7   r[   r>   r   )r   r  r	  r  r  s       @rL   test_slice_notationr  -  s    IbMM#E
q1
-
-
-CHHUOOO    ! ! ! ! !     *k****l+++*l+++ *4444555*====>>>*nnnn--- G$a(((CX""$$a(((G$a(((&'+++ HS]011CMD!1%%%CD!1%%%^$a(((((rN   c                     d } t          t          |            d }t          t          |           d}d}t          j        ||z                                ||          dz  }t          j        |          }t          |d          }t          |j        |           t          |j	        |           d}d}t          j        ||z                                ||          dz  }t          |d          }t          |j        |           t          |j	        |           t          |j
        d            |                                 t          |j
        d ud           d S )Nc                  &    t          dd           d S r  r   r+   rN   rL   zero_kstatesz)test_representation.<locals>.zero_kstates[  s    q!rN   c                  P    t          j        d          } t          | d           d S )Nr  r%   r$   )r2   r>   r   )r   s    rL   empty_endogz(test_representation.<locals>.empty_endog`  s*      uq))))))rN   r  r%   r  r  T)r   
ValueErrorr2   r  r   asfortranarrayr   r   r   r#   _statespace_initialize_representation)r  r  r   r#   arrr   r  s          rL   test_representationr!  W  si     *l+++* * * *k*** DG
)DL
!
!
)
)'4
8
8
;Cc""E

+
+
+C4   g&&& DGId7l##++D'::2=E

+
+
+C4   g&&& $'''""$$$,d33333rN   c            	          t          dd           t          t           fd                                t	          j        d                              d          dz             t           j        d                                t	          j	        dt          j
        	                     t          j        t                    5                       t	          j        d
                              ddd          dz             d d d            n# 1 swxY w Y                        t	          j        t	          j        d                              dd                               t           j        d                                t	          j        d                              dd                     t           j        d           t          j        t                    5                       t	          j        t	          j        d                              dd                               d d d            n# 1 swxY w Y   t          t           fd           d S )Nr%   r  c                  2                          g d          S )N)r   r%   r&   r!   )r5   r  s   rL   r  ztest_bind.<locals>.<lambda>  s    chh|||&<&< rN   r  )rY   r%   r  rY   )r   r%   r(      r&   c                  z                          t          j        d                              dd                    S )Nr  r%   rY   )r5   r2   r  r   r  s   rL   r  ztest_bind.<locals>.<lambda>  s+    chhry}}/D/DQ/J/J&K&K rN   )r   r   r  r5   r2   r  r   r   r   r>   float64rr   raisesr  r  s   @rL   	test_bindr(  ~  s    Q
'
'
'C *<<<<=== HHRYr]]""6**2-...1 HHRXfBJ///000 
z	"	" 4 42&&q!Q//23334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 HHRry}}44Q::;;<<<1 HHRYr]]""1a(()))1 
z	"	" A A"29R==#8#8A#>#>??@@@A A A A A A A A A A A A A A A *KKKKLLLLLs&   	A DDD+AII	I	c                  `   t          dd          } t          j        t                    5  |                                  d d d            n# 1 swxY w Y   t          j        d          dz   }t          j        d          dz  }|                     ||           t          | j
        j                                        d           t          | j
        j                                                                        d           t          j        d          }t          j        t                    5  |                     ||           d d d            n# 1 swxY w Y   t          j        d	          }t          j        t                    5  |                     ||           d d d            n# 1 swxY w Y   t          j        d          dz   }t          j        d          }t          j        t                    5  |                     ||           d d d            d S # 1 swxY w Y   d S )
Nr   r%   r  g      ?g      @r&   r   r  )r  r  )r   rr   r'  RuntimeError_initialize_stater2   r>   r9   rB   r   initializationconstantr[   stationary_covdiagonalr  )r  rJ   rK   s      rL   test_initializationr0    s    Q
'
'
'C 
|	$	$                                  HQLL3&Mq		B(9:::#,0022A666#2;;==AACCQGGG HRMMM	z	"	" ? ?],=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HX&&M	z	"	" ? ?],=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HQLL3&Mq			z	"	" ? ?],=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sG   AAA2EEEF00F47F4?H##H'*H'c                     d} d}d}t          j        d          }t          j        |           dz  }t          j        t          j        | |z            dz  | |f          }t          j        t          j        | dz            dz  | | f          }t          j        |          dz  }t          j        t          j        |dz            dz  ||f          }t          j        t          j        ||z            dz  ||f          }	t          j        t          j        |dz            dz  ||f          }
t	          |||||||||	|

  
        }t          |d         |           t          |d         |           t          |d	         |           t          |d
         |           t          |d         |           t          |d         |	           t          |d         |
           d S )Nr%   r&   r   r  r%   r  	r$   k_posdefobs_interceptr7   r   state_interceptr8   r:   r<   r5  r7   r   r6  r8   r:   r<   )r2   r>   r  r   r   r   )r#   r$   r4  r   r5  r7   r   r6  r8   r:   r<   r  s               rL   !test_init_matrices_time_invariantr7    s    GHHHWEIg&&,MZ
	'H$%%+gx-@B BFj7A:..4w6HIIGi))C/OBIhk22S88X:NOOJ

	(X%&&,x.BD DI
29Xq[11C7(H9MNNI
H'4V!(/$.)#,	. . .C C(-888CM6***C	NG,,,C)*O<<<C%z222C$i000C$i00000rN   c                  ^   d} d}d}d}t          j        d          }t          j        t          j        || z            dz  || f          }t          j        t          j        ||z  | z            dz  ||| f          }t          j        t          j        |dz  | z            dz  ||| f          }t          j        t          j        || z            dz  || f          }t          j        t          j        |dz  | z            dz  ||| f          }	t          j        t          j        ||z  | z            dz  ||| f          }
t          j        t          j        |dz  | z            dz  ||| f          }t	          ||||||||	|
|
  
        }t          |d         |           t          |d	         |           t          |d
         |           t          |d         |           t          |d         |	           t          |d         |
           t          |d         |           d S )Nr  r%   r&   r   r2  r  r3  r5  r7   r   r6  r8   r:   r<   )r2   r>   r   r  r   r   )r   r#   r$   r4  r   r5  r7   r   r6  r8   r:   r<   r  s                rL   test_init_matrices_time_varyingr9    s`    DGHHHWEJry4883> '0 0MZ
	'H$t+,,s2Wh4MO OFj
	'1*t#$$s*Wgt,DF FGj
	(T/""S(8T*:< <O
	(A+$%%+h$-GI IJ

	(X%,--3	8T"$ $I 

	(A+$%%+h$-GI II H'4V!(/$.)#,	. . .C C(-888CM6***C	NG,,,C)*O<<<C%z222C$i000C$i00000rN   c                      t          dd          } t          t          | j                   |                                  t          t          | j                   d S )Nr   r"   )r
   r   r*  _initialize_filterinitialize_approximate_diffuserR   r  s    rL   test_no_endogr=  	  sU     q1
-
-
-C , 6777&&(((,
+++++rN   c                  j   t           j                                        D ]\  } }t          j        dd|          }t          dd|          }|                    |           |                                 t          |j	        |            t          |j
        |           t          | |j        v d           |j        |          }t          |t           j        |                    sJ t          |j        |           t          dd          }t          |j	        d           t          |j
        t          j                   t          |j        d            t          j        t          j        dd	gt          j        
                    }|                    |           |                                 |j        d         }|                    |           |                                 t          |j        |           t          j        d          |_        |                                 t          |j        |k    d           |j        d         }t          j        t          j        dd	gt          j        
                    }|                    |           t          |j        |k    d           d S )Nr  r%   )r   r)   r   )r#   r$   r)   Tr"   d       @r(   r   r   r%   F)r   prefix_dtype_mapitemsr2   r;   r
   r5   r;  r   prefixr)   _kalman_filters
isinstanceprefix_kalman_filter_map_kalman_filterr&  r   r>   r7   
complex128)rD  r)   r   r  kfs        rL   test_cythonrK    sp    /5577 - -1E2221q>>> 	    	SZ(((SY&&& 	Vs22D999 ("e<VDEEEEE 	S',,,, q1
-
-
-C S!!!BJ''' #T***  2r("*!E!E!EFFEHHUOOO		S	!B HHUOOO#R((( )$$CJ#r)5111		S	!B  2r("-!H!H!HIIEHHUOOO#r)511111rN   c                      t          j        d          } t          | dd          }d|dd d f<   d|dd d f<   d|dd d f<   |                                }t	          t          |t                    d           d S 	Nr  r   r   approximate_diffuser$   r,  r7   r:   r<   T)r2   onesr
   rR   r   rF  r	   )r   r  ress      rL   test_filterrS  Q  s     GGE
uq9N
O
O
OCC!!!CQQQCQQQ **,,CC//66666rN   c                      t          j        d          } t          | dd          }d|dd d f<   d|dd d f<   d|dd d f<   d|_        t	          t
          |j                   d S rM  )r2   rQ  r
   memory_no_likelihoodr   r*  
loglikeobs)r   r  s     rL   r^   r^   _  s     GGE
uq9N
O
O
OCC!!!CQQQCQQQ  $C,/////rN   c                     t          j        d           t          j        d          } t	          | dd          }d|dd d f<   t          j        d          |d<   d|d	d d f<   d|d
d d f<   d|_        |                                }t          t          |j
                   d|_        d|_        |                                }t          t          |j
        d           d|_        |                                }t          t          |j
        d           t          t          |j
        dd           t          t          |j
        d           t          j        d          5 }|
                    dd           d}t          t          |d         j                  |           d d d            n# 1 swxY w Y   t          j        d          5 }|
                    ddt          j        d                     d}t          t          |d         j                  |           d d d            n# 1 swxY w Y   t!          j        t                    5  |
                    |j        dz   dt          j        d                     d d d            n# 1 swxY w Y   t          t          |j
        |j        dz              t          t          |j
        |j        dz   t          j        d                     t          |
                                j        j        d|j        f           |
                    d           |
                    dd          }t          t+          |t,                    d           t          |j        j        d           t          |j        j        d           t          |j        j        d           t          |j        j        d           t          |j        j        d            t          |j        j        d           t          |j        j        d           t          |j        j        d           t          |j        j        d           t          |j        j        d           t          |j        j        d           t          |j         j        d           t          |j!        j        d           t          |j"        j        d!           t          |j#        j        d!           t          |j$        j        d!           t          tJ          tL          |d"           t	          | dd          }d|dd d f<   t          j        d#          |d$<   d|d	d d f<   d|d
d d f<   |                                }t          t          |j
        |j        dz   t          j        d          %           t          t          |j
        |j        dz   t          j        d&          %           d S )'NalwaysrN  r   rO  rP  r7   r   r  r5  r:   r<   TF)dynamicr   )rW   r%   )rW   r   )record)r   rZ  zXDynamic prediction specified to begin after the end of prediction, and so has no effect.r      )r   r   )r   rZ  r5  zdDynamic prediction specified to begin during out-of-sample forecasting period, and so has no effect.)r   r7   r5  )r   )r   r5  r&   rY   )r   r%   )r   rA  test)r   r   r  r   )r   r   r   )'warningssimplefilterr2   rQ  r
   r>   memory_no_forecastrR   r   r  predictmemory_no_predictedcatch_warningsr   strmessagerr   r'  r   	forecastsr   rF  r   r   r5  r7   r   r6  r8   r:   r<   forecasts_errorrb   r   forecasts_error_covfiltered_state_covpredicted_state_covAttributeErrorgetattr)r   r  rR  wre  prediction_resultss         rL   test_predictro  m  sX    (###GGE
uq9N
O
O
OCC!!!8G,,CCQQQCQQQ "C
**,,C*ck***"C"C
**,,C*ck48888#C **,,C *ck4444 *ck:::: *ck26666 
	 	-	-	- 11%%%8S1&&000	1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
	 	-	-	- 1Bbhv6F6FGGG 	S1&&0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
z	"	" 4 4
4"$(6"2"2 	 	4 	4 	44 4 4 4 4 4 4 4 4 4 4 4 4 4 4 *cksxz:::: *cksxz "- - - - (.CH>>> KKK 1!44.0ABBDIII #)/888#17@@@#*0&999#+16:::#394@@@#17@@@#.4f===#-3V<<<#-3V<<< #-3V<<<#396BBB#28&AAA#396BBB#7=yIII#6<iHHH#7=yIII .'+=vFFF uq9N
O
O
OCC!!!Xj))C	NCQQQCQQQ
**,,C*cksx!|(6**, , , ,*cksx!|(9--/ / / / / /s8   %AF33F7:F7AH44H8;H83JJJc                  ,   t           j        } t          j        | d         t          j        ddd          dg          }t          j        |d                   |d<   t          j        |d         d	d
          }|	                    d          }t          j
        |j        |j                  }|j        j        d         t          j        |j        j        d                   z  }t#          |j        j        d|d f         |d|d f                    d S )Nr   r   r   r   r   r   r   r    r   T)r   use_exact_diffuser   )dispr   r  .)r   r,   r.   r/   r1   r2   r3   r   SARIMAXfitmaximumr   nobs_diffusefilter_resultsrg  sqrtrh  r   standardized_forecasts_error)r-   r   r  rR  r?  ry  s         rL   !test_standardized_forecasts_errorrz    s    !'D<VmL,TBBB  D
 6$u+&&DL /$v,i,02 2 2C
''r'

C

3)3+;<<A 	*1-
"6t<==	> !
 7122>$S!""W-    rN   c            	      f
   ddl m}  d}d}t          j        |          }t          j                            |dz  |          }t          t          j        d         dd	          }d
|d<   d
|d<   d
|d<   |                    |||          d         	                                }t          j        dt          j
        |          d d         f         }t          ||           t          t          j        d         dd	          }d
|d<   d
|d<   d
|d<   |                    |t          j        |          |          d         	                                }t          j        dt          j
        |          d d         dz   f         }t          ||           t          t          j        d          dd	          }d|d<   d
|d<   d|d<   d
|d<   d
|d<   |                    |t          j        |          |          d         	                                }t          j        dt          j
        |dz
            d d         dz   dz   f         }t          ||           t          t          j        d          ddd          }t          j        d          d
z                      dd          |d<   d
|d<   d
|d<   d
|d<   |                    |||          d         	                                }t          j        dt          j
        |          d d         t          j        dd          z   f         }t          ||           t          t          j        d          ddd          }t          j        d          d
z                      dd          |d<   d
|d<   d
|d<   d
|d<   t          t           |j        |dz   ||           d}d}	t#          j        dgd          }|                    t          j        ||	|f                    |j                            |||t          j        |j                            d         	                                } | d|	gd| gt          j        d|d d         f                   }t          ||           t#          j        g ddd          }|                    g d           }
|
                    |||t          j        |j                            } | |
j        |
j        t          j        d|d d         f                   }t          ||           d S )!Nr   )lfilterr  r%         ?)scalesizer   diffuserP  r  r  r8   r   r   r:   r   r   )measurement_shocksstate_shocksr   rY  g      @)r5  r   r   g       )r6  r   r   r   rY   )r$   r   r,  r5  皙?)r   r   r   r   )r  r  rJ   r  r}  gɿ)r   r   r   r!   )r   seasonal_order)r  r}  g?g333333ӿr   )scipy.signalr|  r2   r>   randomnormalr   r   simulatesqueezecumsumr   rQ  r  r   r   r  r   rs  updatessmr$   rR   polynomial_reduced_mapolynomial_reduced_ar)r|  nsimulationssigma2r  r  r  actualdesiredphithetarR  s              rL   test_simulater    s   $$$$$$ LF,//9##&#+L#IIL RU1X)
L
L
LCC CC\\);!  # ##$&&-gii  eAry..ss334GFG$$$ RU1X)
L
L
LCC CC\\)>)>!  # ##$&&-gii  eAry..ss3a778GFG$$$
 RXg..,57 7 7C!#CC#&C  CC\\)>)>!  # ##$&&-gii  eE29\A%566ss;a?!CCDGFG$$$ RXg..,57 7 7CIbMM",55a<<CC CC\\);!  # ##$&&-gii  eAry..ss3bi26F6FFFGGFG$$$ RXg..,57 7 7CIbMM",55a<<CC CC*clLN<N      CE
/1#Y
/
/
/CJJruS%'()))W);!hs|,,  . . /01 29  gq%j1sd)RU1l3B36G3G-HIIGFG$$$ /***))57 7 7C
**---
.
.C\\);!#,1G1G  I IF g!3#<
acrc""#% %G FG$$$$$rN   c                  P   t          ddd          } d| d<   d| d<   d| d<   d| d	<   |                     d
          }t          j        d          }t	          ||           t          ddd          } d| d<   d| d<   d| d<   d| d	<   |                     d
dg          }t          j        d          dz  }t	          ||           t          ddd          } d| d<   d| d<   d| d<   d| d	<   |                     d
d          }t          j        d          dz  }t	          ||           t          ddd          } d| d<   d| d<   d| d<   d| d	<   |                     d
dd          }t          j        t          j        d          dz            d d t          j        f         }|                     d
dgdd          }t          j        t          j        d          dz            d d t          j        f         }t	          ||           t          ddd          } d| d<   d| d<   d| d<   d| d<   d| d<   d| d	<   |                     d
          }t          j        d          }t	          ||           t          ddd          } t          t          | j        d           t          t          | j        ddg           t          t          | j        g            t          ddd          } d| ddddf<   t          j	        d          | dd d d d f<   t          j	        d          | dd d d d f<   t          j	        d          | dd d d d f<   t          j        d          }|                     d
d          }t	          ||           |                     d
ddg          }t	          ||           |                     d
d          }t	          ||           |                     d
ddg          }t	          ||           |                     d
dd          }t	          ||           |                     d
ddgd          }t	          ||           |                     d
ddgd          }t	          ||           t          ddd          } d| ddddf<   t          j	        d          | dd d d d f<   t          j	        d          | dd d d d f<   t          j
        ddgdd gg          | dd d d d f<   t          j        d          }|                     d
d          }t	          ||           |                     d
d          }t	          ||           |                     d
dd          }t	          |||dz  z              |                     d
dd          }t	          ||           t          ddd          } t          j	        d          | dd d d d f<   t          j	        d          | dd d d d f<   t          j	        d          | dd d d d f<   t          j
        ddgdd gg          | dd d d d f<   t          j        d          }t          j        d          }|                     d
d          }t	          |t          j        ||f                    |                     d
d          }t	          |t          j        ||f                    |                     d
dd          }t	          |t          j        ||dz  f                    |                     d
dd          }t	          |t          j        ||f                    t          j        g d!d"#          } d}|                     |dg           t          j        t          j        d|gd
z  f                   }| j                            d
          }t	          |d d df         |           |                     |dg          }|                    d
          }t	          ||           d S )$Nr   r  )r#   r$   r,  r  r  r  r  r@  )r<   r   r   r  )steps)r\  r   r%   )r  impulseT)r  orthogonalizedg;f?)r  r  
cumulative)r  r  r  r  g      Y@)r6  r   g     @)r5  r   )r  r7   r   r8   r:   r<   )r  r  r  r}  g      ?r  )r   r   r   r  )r   impulse_responsesr2   rQ  r   r  newaxisr   r  r9   r;   r>   r   r   rs  r  cumprodr   r  rR   )r  r  r  rQ  r>   r  rR  s          rL   test_impulse_responsesr  |  s   
 Q9
M
M
MCC CCC""",,FggGFG$$$ Q9
M
M
MCC CCC""aS"99Fgg"GFG$$$ Q9
M
M
MCC CCC""D"AAFgg'GFG$$$ Q9
M
M
MCC CCC""D.2 # 4 4Fi((6122111bj=AG""aS.2 # 4 4Fi((6122111bj=AGFG$$$ Q9
M
M
MC $CC$C CCC""",,FggGFG$$$ Q9
M
M
MC*c3Q????*c3aVDDDD*c3R@@@@ Q9
M
M
MCC!QqS fQiiCaaaVAYYCQQQVAYYCQQQggG""Q"77FFG$$$""aV"<<FFG$$$""Q"77FFG$$$""aV"<<FFG$$$ ""Qt"LLFFG$$$""1a& # 7 7FFG$$$""1a& # 7 7FFG$$$ Q9
M
M
MCC!QqS fQiiCaaaVAYYCQQQX3x#t&=>>CQQQggG ""Q"77FFG$$$""Q"77FFG$$$ ""Qt"LLFFGgm3444""Qt"LLFFG$$$ Q9
M
M
MC&))C!!!QQQ fQiiCaaaVAYYCQQQX3x#t&=>>CQQQ77DHWE ""Q"77FFBE$+.///""Q"77FFBE%+./// ""Qt"LLFFBE$s
"23444""Qt"LLFFBE%+./// /***)
<
<
<C
CJJQxjq3%({+,,G W&&R&00FF111a4L'*** **c2Y

C""",,FFG$$$$$rN   c                  B   t          j        d                              dd          } t          j        t           j        |                                 t           j        z  |                                 t           j        z  | | f                   }t          j        t           j        | | |                                 t           j        z  |                                 t           j        z  f                   }t          j        t           j        | |                                 t           j        z  | |                                 t           j        z  f                   }t          t          j        t           j        | | f                   dd          }d|dd d d d f<   t          j        |j	                  dz  |dd d d d f<   d|dd d d d f<   d|d	d d d d f<   d|d
d d d d f<   |
                                }t          |dd          }d|dd d d d f<   t          j        |j	                  dz  |dd d d d f<   d|dd d d d f<   d|d	d d d d f<   d|d
d d d d f<   |
                                }t          ||           t          |dd          }d|dd d d d f<   t          j        |j	                  dz  |dd d d d f<   d|dd d d d f<   d|d	d d d d f<   d|d
d d d d f<   |
                                }t          ||           t          |dd          }d|dd d d d f<   t          j        |j	                  dz  |dd d d d f<   d|dd d d d f<   d|d	d d d d f<   d|d
d d d d f<   |
                                }t          ||           d S )Nr  r   rO  rP  r7   r}  r   r8   r:   r<   )r2   r  r   r   r   copyr   r
   r9   r#   rV  r   )	r   endog_pre_naendog_post_naendog_inject_nar  r   
llf_pre_nallf_post_nallf_inject_nas	            rL   test_missingr  1  s#   IbMM!!"a((E'

rvuzz||bf4eUB)D E EL(uejjllRV+UZZ\\BF-BB*D E EM*25uzz||bf$eUZZ\\BF-BB,D E EO r+BE%,,?@@1&;= = =CC!!!QQQ6#+..s2C	111aaa!CaaaCQQQ CQQQ
..

C |a&;= = =CC!!!QQQ6#+..s2C	111aaa!CaaaCQQQ CQQQ!!JJ$$$ }q&;= = =CC!!!QQQ6#+..s2C	111aaa!CaaaCQQQ CQQQ..""KK%%% &;= = =CC!!!QQQ6#+..s2C	111aaa!CaaaCQQQ CQQQNN$$MM3'''''rN   )Hri   osr^  numpyr2   numpy.testingr   r   r   r   pandasr.   rr   statsmodels.tsa.statespacer   r   (statsmodels.tsa.statespace.kalman_filterr	   r
   r   )statsmodels.tsa.statespace.representationr   .statsmodels.tsa.statespace.simulation_smootherr   r   r   pathdirnameabspath__file__current_pathjoinclark1989_pathread_csvr   r   rm   r|   markrs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r!  r(  r0  r7  r9  r=  rK  rS  r^   ro  rz  r  r  r  r+   rN   rL   <module>r     s    
			                      5 5 5 5 5 5 5 5         
 E D D D D D M M M M M M * * * * * *wrwx8899i)BCCBK\> J JKK N
 N
 N
 N
 N
 N
 N
 N
b
' 
' 
' 
' 
') 
' 
' 
'	' 	' 	' 	' 	') 	' 	' 	' #$$
' 
' 
' 
' 
' 
' 
' %$
'
' 
' 
' 
' 
' 
' 
' 
'	' 	' 	' 	' 	'I 	' 	' 	'
 
 
 
 
	 
 
 
B' ' ' ' '"3 ' ' '
' 
' 
' 
' 
'): 
' 
' 
'
' 
' 
' 
' 
'$5 
' 
' 
'
 
 
 
 
y 
 
 
<]
 ]
 ]
 ]
 ]
 ]
 ]
 ]
@< < < < <I < < <
' 
' 
' 
' 
'I 
' 
' 
'(
 (
 (
 (
 (
	 (
 (
 (
V' ' ' ' '"3 ' ' '
' 
' 
' 
' 
'): 
' 
' 
'
' 
' 
' 
' 
'$5 
' 
' 
'$
 $
 $
 $
 $
y $
 $
 $
N
 
 
 
 
) 
 
 
2') ') ')T$4 $4 $4N M  M  MF? ? ?>1 1 1B%1 %1 %1P
, 
, 
,82 82 82v7 7 70 0 0~/ ~/ ~/B  >l% l% l%^r% r% r%j6( 6( 6( 6( 6(rN   