
    !gj                        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j4                  j7                  ej4                  j9                  e            Zej4                  j?                  d
d      Z  ejB                  ej4                  j?                  ee             Z" G d d      Z# G d de#      Z$ G d de#      Z%ejL                  jO                  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 ZGy)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                   @    e Zd ZdZeefd       Zed        Zd Zd Z	y)	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                 X   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                  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   j0                        }| j                  j3                  |
|       y )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               q/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tests/test_representation.pysetup_classzClark1987.setup_class8   sA   (//,,sxx'9: ||HHV--lFG

 vvd5k*V  HXHH			tF|**+$0		Aq! 6H 			0002 	3 !ffSYY%7%78		 57HHHH\"5
1'7E5 ;@		q!fq!fq!f56 QJ
AwzK
 			OOH%rxx'D&FF	H (-FF8,S0 FFFF399''1a02CDII  Aq)++
 			""=2CD    c                 6    | j                   j                         S Nr4   filterrC   s    rL   
run_filterzClark1987.run_filtere        yy!!rN   c                     t        | j                  j                  | j                  d   d  j	                         | j                  d   d       y )Nstartloglike   )r   r   llf_obsr-   sumselfs    rL   test_loglikezClark1987.test_loglikej   s?    LL  7!3!4599;IIi !	
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       y Nr   rW   r!   r   r&   r%   r   r   filtered_stater-   r0   ilocr\   s    rL   test_filtered_statezClark1987.test_filtered_statep   s    LL''*499W+=+>?!!!Q$'	
 	LL''*499W+=+>?!!!Q$'	
 	LL''*499W+=+>?!!!Q$'	
rN   N
__name__
__module____qualname____doc__classmethodfloatrM   rT   r^   rd   r+   rN   rL   r   r   .   s?     $ *E *EX " "

rN   r   c                   ,     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       | j                         | _        y )NNot implementedr   r)   conserve_memory)pytestskipsuperrM   r2   float32rT   r   rC   	__class__s    rL   rM   zTestClark1987Single.setup_class   s;    %&**a 	 	
 nn&rN   rf   rg   rh   ri   rj   rM   __classcell__rw   s   @rL   rm   rm      s     ' 'rN   rm   c                   ,     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                 Z    t         |   t        d       | j                         | _        y Nr   rp   rt   rM   rk   rT   r   rv   s    rL   rM   zTestClark1987Double.setup_class   s*     	 	
 nn&rN   rx   rz   s   @rL   r|   r|           ' 'rN   r|   ro   c                   ,     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                 n    t         |   t        j                  d       | j	                         | _        y r~   )rt   rM   r2   	complex64rT   r   rv   s    rL   rM   z&TestClark1987SingleComplex.setup_class   s.    ,, 	 	
 nn&rN   rx   rz   s   @rL   r   r      s     ' 'rN   r   c                   ,     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                 Z    t         |   t        d       | j                         | _        y r~   rt   rM   complexrT   r   rv   s    rL   rM   z&TestClark1987DoubleComplex.setup_class   s*    1 	 	
 nn&rN   rx   rz   s   @rL   r   r           ' 'rN   r   c                   ,     e Zd ZdZe fd       Z xZS )TestClark1987ConservezM
    Memory conservation test for the loglikelihood and filtered states.
    c                 Z    t         |   t        d       | j                         | _        y 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                  _
        y )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     	 	
 " ((EE#))//!Q$'"&&));;<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       y r`   r   r   rb   r-   r   r0   rc   r\   s    rL   rd   z%Clark1987Forecast.test_filtered_state   s    LL''*499W+=t~~oN!!!Q$'	
 	LL''*499W+=t~~oN!!!Q$'	
 	LL''*499W+=t~~oN!!!Q$'	
rN   	rf   rg   rh   ri   rj   rk   rM   rd   ry   rz   s   @rL   r   r      s(     $Q 2 2
rN   r   c                   ,     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                 L    t         |           | j                         | _        y rP   rt   rM   rT   r   rv   s    rL   rM   z'TestClark1987ForecastDouble.setup_class       nn&rN   rx   rz   s   @rL   r   r           ' 'rN   r   c                   ,     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                 X    t         |   t               | j                         | _        y Nr(   r   rv   s    rL   rM   z.TestClark1987ForecastDoubleComplex.setup_class   (     	 	
 nn&rN   rx   rz   s   @rL   r   r      r   rN   r   c                   ,     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                 Z    t         |   t        d       | j                         | _        y r   r   rv   s    rL   rM   z)TestClark1987ForecastConserve.setup_class   r   rN   rx   rz   s   @rL   r   r      r   rN   r   c                   8     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                  _        | j                         | _        y )N   rp   rW   )rt   rM   rk   r-   r4   loglikelihood_burnrT   r   rv   s    rL   rM   z$TestClark1987ConserveAll.setup_class	  s@    )B 	 	
 (+xx'8		$nn&rN   c                 `    t        | j                  j                  | j                  d   d       y )NrX   rY   r   r   llfr-   r\   s    rL   r^   z%TestClark1987ConserveAll.test_loglike  $    LLdii	2A	
rN   c                 B   | 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       y )Nr   r   r!   r0   r   r   r   rb   rc   r]   ends     rL   rd   z,TestClark1987ConserveAll.test_filtered_state  s    $$Q'LL''*2.!!#a%(+Q	
 	LL''*2.!!#a%(+Q	
rN   	rf   rg   rh   ri   rj   rM   r^   rd   ry   rz   s   @rL   r   r     s&     ' '

	
rN   r   c                   @    e Zd ZdZeefd       Zed        Zd Zd Z	y)	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           
      4   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                  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        j2                  t        j2                  | j                  j                  d d d d df   |      | j                  j                  d d d d df   j4                        }| j                  j7                  ||       y )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   (..,,sxx'9: ||HHV--lFG$
 "	
 ffT%[)Ugs*W HXHH			r++DKK89 &89K$L		Aq!
 %	 			%%%'	

 !ffSYY%7%78		 57HHHH\"5
	2'7Hh	w Wg?
		)Y	:; ;@		q!fq!fq!f56%-q[		'" QJ
Aq'1*hkK
 			OOH%rxx'D&FF	H (-FF8,S0 FFFF399''1a02CDII  Aq)++
 			""=2CDrN   c                 6    | j                   j                         S rP   rQ   rS   s    rL   rT   zClark1989.run_filterc  rU   rN   c                     t        | j                  j                  dd  j                         | j                  d   d       y )Nr   rX   r%   )r   r   rZ   r[   r-   r\   s    rL   r^   zClark1989.test_loglikeh  s5    LL  $((*IIi !	
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       t        | j                  j                  d   | j                  d   d  | j                  j
                  d d df   d       y Nr   rW   r!   r   r%   rY   r&   ra   r\   s    rL   rd   zClark1989.test_filtered_stateo  s   LL''*499W+=+>?!!!Q$'	
 	LL''*499W+=+>?!!!Q$'	
 	LL''*499W+=+>?!!!Q$'	
 	LL''*499W+=+>?!!!Q$'	
rN   Nre   r+   rN   rL   r   r   "  s?    
 $ 2E 2Eh " "

rN   r   c                   2     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                 Z    t         |   t        d       | j                         | _        y r~   r   rv   s    rL   rM   zTestClark1989.setup_class  s#    %;nn&rN   c                     t        | j                  j                  j                  d      j                  d      t        d   d       y )Nr   )axisr   V1g-C6?atol)r   r   kalman_gainr[   clark1989_resultsr\   s    rL   test_kalman_gainzTestClark1989.test_kalman_gain  s<    0044!4<@@a@H)$/d	<rN   )rf   rg   rh   ri   rj   rM   r   ry   rz   s   @rL   r   r     s!     ' '<rN   r   c                   ,     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                 Z    t         |   t        d       | j                         | _        y 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     j                  d|      f   d|d      | j                  _        | j                  j                  j                  d   | j                  _        | j                         | _        y )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     	 	
 " ((EE		rvvrvv&y0199!YGH 5
		 ..q1		nn&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       t        | j                  j                  d   | j                  d   | j                    | j
                  j                  d d df   d       y r   r   r\   s    rL   rd   z%Clark1989Forecast.test_filtered_state  s0   LL''*499W+=t~~oN!!!Q$'	
 	LL''*499W+=t~~oN!!!Q$'	
 	LL''*499W+=t~~oN!!!Q$'	
 	LL''*499W+=t~~oN!!!Q$'	
rN   r   rz   s   @rL   r   r     s(     $Q ' '$
rN   r   c                   ,     e Zd ZdZe fd       Z xZS )TestClark1989ForecastDoubler   c                 L    t         |           | j                         | _        y rP   r   rv   s    rL   rM   z'TestClark1989ForecastDouble.setup_class  r   rN   rx   rz   s   @rL   r   r     r   rN   r   c                   ,     e Zd ZdZe fd       Z xZS )"TestClark1989ForecastDoubleComplexr   c                 X    t         |   t               | j                         | _        y r   r   rv   s    rL   rM   z.TestClark1989ForecastDoubleComplex.setup_class  r   rN   rx   rz   s   @rL   r   r     r   rN   r   c                   ,     e Zd ZdZe fd       Z xZS )TestClark1989ForecastConserver   c                 Z    t         |   t        d       | j                         | _        y r   r   rv   s    rL   rM   z)TestClark1989ForecastConserve.setup_class  r   rN   rx   rz   s   @rL   r   r     r   rN   r   c                   8     e Zd ZdZe fd       Zd Zd Z xZS )TestClark1989ConserveAllr   c                 |    t         |   t        d       d| j                  _        | j                         | _        y )Nr   rp   r   )rt   rM   rk   r4   r   rT   r   rv   s    rL   rM   z$TestClark1989ConserveAll.setup_class  s7    )B 	 	
 ()		$nn&rN   c                 `    t        | j                  j                  | j                  d   d       y )NrX   r%   r   r\   s    rL   r^   z%TestClark1989ConserveAll.test_loglike  r   rN   c                 N   | 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       y )Nr   r   r   r!   r%   rY   r&   r   r   s     rL   rd   z,TestClark1989ConserveAll.test_filtered_state   s   $$Q'LL''*2.!!#a%(+Q	
 	LL''*2.!!#a%(+Q	
 	LL''*2.!!#a%(+Q	
 	LL''*2.!!#a%(+Q	
rN   r   rz   s   @rL   r   r     s&     ' '


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                  j                  |       | j                         | _        y )Nr   i)	rt   rM   r4   r   r2   r   r5   rT   r   )rC   r   rw   s     rL   rM   z'TestClark1989PartialMissing.setup_class  sL    		ag		unn&rN   c                 f    t        | j                  j                  dd  j                         d       y )Nr   g$F-t@@)r   r   rZ   r[   r\   s    rL   r^   z(TestClark1989PartialMissing.test_loglike  s&    ,,QR0446DrN   c                      y 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       y )Nr   g:0yE>r   )r   r   predicted_staterA   r   rc   r\   s    rL   test_predicted_statez0TestClark1989PartialMissing.test_predicted_state%  s;    LL((**12.0A0F0Fq!"u0M	
rN   )	rf   rg   rh   rj   rM   r^   rd   r   ry   rz   s   @rL   r   r     s%    ' 'E
rN   r   c                     t        j                  d      dz  } t        dd      j                  |        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   j                         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       y )N
         ?r   r%   r"   c                      d d<   y )Nr   designsr+   mods   rL   set_designsz(test_slice_notation.<locals>.set_designs6  s    IrN   c                      d d<   y )Nr   )r  r   r   r+   r  s   rL   set_designs2z)test_slice_notation.<locals>.set_designs29  s     OrN   c                      d d<   y 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  -  s6    IIbM#E
q1
-CHHUO! *k**l+*l+ *45*=>*n- G$a(CX""$a(G$a(&'+ HHS]001CMD!1%CD!1%^$a(rN   c                     d } t        t        |        d }t        t        |       d}d}t        j                  ||z        j	                  ||      dz  }t        j
                  |      }t        |d      }t        |j                  |       t        |j                  |       d}d}t        j                  ||z        j	                  ||      dz  }t        |d      }t        |j                  |       t        |j                  |       t        |j                  d        |j                          t        |j                  d ud       y )Nc                      t        dd       y r  r   r+   rN   rL   zero_kstatesz)test_representation.<locals>.zero_kstates[  s    q!rN   c                  H    t        j                  d      } t        | d       y )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  s   *l+* *k* DG
))DL
!
)
)'4
8
;Cc"E

+C4 g& DGIId7l#++D':2=E

+C4 g& $'""$,d3rN   c            	      r    t        dd       t        t         fd        j                  t	        j
                  d      j                  d      dz         t         j                  d        j                  t	        j                  dt        j                  	             t        j                  t              5   j                  t	        j
                  d
      j                  ddd      dz         d d d         j                  t	        j                  t	        j
                  d      j                  dd                   t         j                  d        j                  t	        j
                  d      j                  dd             t         j                  d       t        j                  t              5   j                  t	        j                  t	        j
                  d      j                  dd                   d d d        t        t         fd       y # 1 sw Y   .xY w# 1 sw Y   *xY w)Nr%   r  c                  *     j                  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                  l     j                  t        j                  d      j                  dd            S )Nr  r%   rY   )r5   r2   r  r   r  s   rL   r  ztest_bind.<locals>.<lambda>  s%    chhryy}/D/DQ/J&K rN   )r   r   r  r5   r2   r  r   r   r   r>   float64rr   raisesr  r  s   @rL   	test_bindr(  ~  s    Q
'C *<= HHRYYr]""6*2-.1 HHRXXfBJJ/0 
z	" 42&&q!Q/234 HHRryy}44Q:;<1 HHRYYr]""1a()1 
z	" A""299R=#8#8A#>?@A *KL!4 4A As   ;9H <AH- H*-H6c                  "   t        dd      } t        j                  t              5  | j	                          d d d        t        j                  d      dz   }t        j                  d      dz  }| j                  ||       t        | j                  j                  j                         d       t        | j                  j                  j                         j                         d       t        j                  d      }t        j                  t              5  | j                  ||       d d d        t        j                  d	      }t        j                  t              5  | j                  ||       d d d        t        j                  d      dz   }t        j                  d      }t        j                  t              5  | j                  ||       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
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 
|	$    HHQL3&Mq	B(9:##,,002A6##22;;=AACQG HHRMM	z	" ?],=>?HHX&M	z	" ?],=>? HHQL3&Mq		z	" ?],=>? ?+   ? ?? ?? ?s/   G G-#G9H G*-G69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   |
       y )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HHWEIIg&,MZZ
		'H$%+gx-@BFjj7A:.4w6HIGii)C/OBIIhk2S88X:NOJ


		(X%&,x.BDI

299Xq[1C7(H9MNI
H'4V!(/$.)#,	.C C(-8CM6*C	NG,C)*O<C%z2C$i0C$i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   |       y )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HHWEJJryy483> '0MZZ
		'H$t+,s2Wh4MOFjj
		'1*t#$s*Wgt,DFGjj
		(T/"S(8T*:<O
		(A+$%+h$-GIJ


		(X%,-3	8T"$I 


		(A+$%+h$-GII H'4V!(/$.)#,	.C C(-8CM6*C	NG,C)*O<C%z2C$i0C$i0rN   c                      t        dd      } t        t        | j                         | j	                          t        t        | j
                         y )Nr   r"   )r
   r   r*  _initialize_filterinitialize_approximate_diffuserR   r  s    rL   test_no_endogr=  	  s<     q1
-C , 6 67&&(,

+rN   c                  V   t         j                  j                         D ]  \  } }t        j                  dd|      }t        dd|      }|j                  |       |j                          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                  |       |j                          |j                  d   }|j                  |       |j                          t        |j                  |       t        j"                  d      |_        |j                          t        |j                  |k(  d       |j                  d   }t        j                   t        j                  dd	gt        j&                  
            }|j                  |       t        |j                  |k(  d       y )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    s    //557 -1E21q> 	  	SZZ(SYY& 	Vs222D9  ("e<<VDEEE 	S'',%-* q1
-C S!BJJ' ##T*   2r("**!EFEHHUO			S	!B HHUO##R( )$CJ##r)51			S	!B   2r("--!HIEHHUO##r)51rN   c                      t        j                  d      } t        | dd      }d|dd d f<   d|dd d f<   d|dd d f<   |j                         }t	        t        |t              d       y 	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  si     GGGE
uq9N
OCC!CQCQ **,CC/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                         y rM  )r2   rQ  r
   memory_no_likelihoodr   r*  
loglikeobs)r   r  s     rL   r^   r^   _  sc     GGGE
uq9N
OCC!CQCQ  $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|_        |j                         }t        t        |j                         d|_        d|_        |j                         }t        t        |j                  d       d|_        |j                         }t        t        |j                  d       t        t        |j                  dd       t        t        |j                  d       t        j                  d      5 }|j                  dd       d}t        t        |d   j                        |       d d d        t        j                  d      5 }|j                  ddt        j
                  d             d}t        t        |d   j                        |       d d d        t!        j"                  t              5  |j                  |j$                  dz   dt        j
                  d             d d d        t        t        |j                  |j$                  dz          t        t        |j                  |j$                  dz   t        j
                  d             t        |j                         j&                  j(                  d|j$                  f       |j                  d       |j                  dd      }t        t+        |t,              d       t        |j.                  j(                  d       t        |j0                  j(                  d       t        |j2                  j(                  d       t        |j4                  j(                  d       t        |j6                  j(                  d        t        |j0                  j(                  d       t        |j8                  j(                  d       t        |j:                  j(                  d       t        |j<                  j(                  d       t        |j&                  j(                  d       t        |j>                  j(                  d       t        |j@                  j(                  d       t        |jB                  j(                  d       t        |jD                  j(                  d!       t        |jF                  j(                  d!       t        |jH                  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<   |j                         }t        t        |j                  |j$                  dz   t        j
                  d      %       t        t        |j                  |j$                  dz   t        j
                  d&      %       y # 1 sw Y   xY w# 1 sw Y   .xY w# 1 sw Y   xY w)'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  s    (#GGGE
uq9N
OCC!88G,CCQCQ "C
**,C*ckk*"C"C
**,C*ckk48#C **,C *ckk4 *ckk: *ckk26 
	 	 	- 11%8S1&0	1 
	 	 	- 1Bbhhv6FG 	S1&01 
z	" 4
4"$((6"2 	 	44 *ckksxxz: *ckksxxz "- ((..CHH> KKK 1!4.0ABDI #))//8#1177@#**00&9#++116:#33994@#1177@#..44f=#--33V<#--33V< #--33V<#33996B#2288&A#33996B#77==yI#66<<iH#77==yI .'+=vF uq9N
OCC!XXj)C	NCQCQ
**,C*ckksxx!|((6*,*ckksxx!|((9-/q1 11 14 4s%   8X/AX'5X4X$'X14X>c                  T   t         j                  } t        j                  | d   t        j                  ddd      dg      }t        j                  |d         |d<   t        j                  |d   d	d
      }|j                  d      }t        j                  |j                  |j                        }|j                  j                  d   t        j                  |j                  j                   d         z  }t#        |j                  j$                  d|d f   |d|d f          y )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mmL,TBD
 66$u+&DL //$v,i,02C
''r'
C


3))3+;+;<A 	**1-
""66t<=	> !
 7712>$S!"W-rN   c            	      	   ddl m}  d}d}t        j                  |      }t        j                  j                  |dz  |      }t        t        j                  d   dd	      }d
|d<   d
|d<   d
|d<   |j                  |||      d   j                         }t        j                  dt        j                  |      d d f   }t        ||       t        t        j                  d   dd	      }d
|d<   d
|d<   d
|d<   |j                  |t        j                  |      |      d   j                         }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<   |j                  |t        j                  |      |      d   j                         }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  j                  dd      |d<   d
|d<   d
|d<   d
|d<   |j                  |||      d   j                         }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  j                  dd      |d<   d
|d<   d
|d<   d
|d<   t        t         |j                  |dz   ||       d}d}	t#        j$                  dgd      }|j'                  t        j                  ||	|f          |j(                  j                  |||t        j                  |j*                              d   j                         } | d|	gd| gt        j                  d|d d f         }t        ||       t#        j$                  g ddd      }|j-                  g d       }
|
j                  |||t        j                  |j*                              } | |
j.                  |
j0                  t        j                  d|d d f         }t        ||       y )!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,/99##&#+L#IL RUU1X)
LCC CC\\);!  ##$&&-gi  eeAryy.s334GFG$ RUU1X)
LCC CC\\)>!  ##$&&-gi  eeAryy.s3a778GFG$
 RXXg.,57C!#CC#&C  CC\\)>!  ##$&&-gi  eeE299\A%56s;a?!CCDGFG$ RXXg.,57CIIbM",55a<CC CC\\);!  ##$&&-gi  eeAryy.s3bii26FFFGGFG$ RXXg.,57CIIbM",55a<CC CC*cllLN<N  CE
//1#Y
/CJJruuS%'()WW);!hhs||,  . /01 29  q%j1sd)RUU1l3B6G3G-HIGFG$ //*))57C
**-
.C\\);!#,,1G  IF !!3#<#<
acr""#%G FG$rN   c                     t        ddd      } d| d<   d| d<   d| d<   d| d	<   | j                  d
      }t        j                  d      }t	        ||       t        ddd      } d| d<   d| d<   d| d<   d| d	<   | j                  d
dg      }t        j                  d      dz  }t	        ||       t        ddd      } d| d<   d| d<   d| d<   d| d	<   | j                  d
d      }t        j                  d      dz  }t	        ||       t        ddd      } d| d<   d| d<   d| d<   d| d	<   | j                  d
dd      }t        j
                  t        j                  d      dz        d d t        j                  f   }| j                  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	<   | j                  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      }| j                  d
d      }t	        ||       | j                  d
ddg      }t	        ||       | j                  d
d      }t	        ||       | j                  d
ddg      }t	        ||       | j                  d
dd      }t	        ||       | j                  d
ddgd      }t	        ||       | j                  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      }| j                  d
d      }t	        ||       | j                  d
d      }t	        ||       | j                  d
dd      }t	        |||dz  z          | j                  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      }| j                  d
d      }t	        |t        j                  ||f          | j                  d
d      }t	        |t        j                  ||f          | j                  d
dd      }t	        |t        j                  ||dz  f          | j                  d
dd      }t	        |t        j                  ||f          t        j                  g d!d"#      } d}| j                  |dg       t        j                   t        j"                  d|gd
z  f         }| j$                  j                  d
      }t	        |d d df   |       | j'                  |dg      }|j                  d
      }t	        ||       y )$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  |  sn   
 Q9
MCC CCC""",FgggGFG$ Q9
MCC CCC""aS"9Fggg"GFG$ Q9
MCC CCC""D"AFggg'GFG$ Q9
MCC CCC""D.2 # 4Fii(6121bjj=AG""aS.2 # 4Fii(6121bjj=AGFG$ Q9
MC $CC$C CCC""",FgggGFG$ Q9
MC*c33Q?*c33aVD*c33R@ Q9
MCC!QqS ffQiCaVVAYCQVVAYCQgggG""Q"7FFG$""aV"<FFG$""Q"7FFG$""aV"<FFG$ ""Qt"LFFG$""1a& # 7FFG$""1a& # 7FFG$ Q9
MCC!QqS ffQiCaVVAYCQXX3x#t&=>CQgggG ""Q"7FFG$""Q"7FFG$ ""Qt"LFFGgm34""Qt"LFFG$ Q9
MC&&)C!Q ffQiCaVVAYCQXX3x#t&=>CQ777DHHWE ""Q"7FFBEE$+./""Q"7FFBEE%+./ ""Qt"LFFBEE$s
"234""Qt"LFFBEE%+./ //*)
<C
CJJQxjjq3%({+,G WW&&R&0FF1a4L'* **c2Y
C""",FFG$rN   c                  "   t        j                  d      j                  dd      } t        j                  t         j                  | j                         t         j                  z  | j                         t         j                  z  | | f         }t        j                  t         j                  | | | j                         t         j                  z  | j                         t         j                  z  f         }t        j                  t         j                  | | j                         t         j                  z  | | j                         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<   |j                         }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<   |j                         }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<   |j                         }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<   |j                         }t        ||       y )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  s7   IIbM!!"a(E''

rvvuzz|bff4eUB)D EL((uejjlRVV+UZZ\BFF-BB*D EM**255uzz|bff$eUZZ\BFF-BB,D EO r++BEE%,,?@1&;=CC!Q66#++.s2C	1a!CaCQ CQ
..
C |a&;=CC!Q66#++.s2C	1a!CaCQ CQ!JJ$ }q&;=CC!Q66#++.s2C	1a!CaCQ CQ.."KK% &;=CC!Q66#++.s2C	1a!CaCQ CQ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 
 E M *wwrwwx89i)BCBKK\> JK N
 N
b
') 
'	') 	' #$
' 
' %
'
' 
'	'I 	'
	 
B'"3 '
'): 
'
'$5 
'
y 
<]
 ]
@<I <
'I 
'(
	 (
V'"3 '
'): 
'
'$5 
'$
y $
N
) 
2')T$4N MF?>1B%1P
,82v70~/B>l%^r%j6(rN   