
    M/Ph                         d Z ddlZddlZddlZddlmZmZ ddl	Z	ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ  e	j                    d
             Zd Zd Zd Zd ZdS )a?  
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_equalassert_allclose)sarimax)KalmanFilter)Representation)UnobservedComponents   )results_kalman_filterc                      t           j        } t          j        | d         t          j        ddd          dg          }t          j        |d                   |d<   |S )	Ndataz
1947-01-01z
1995-07-01QS)freqGDP)indexcolumnslgdp)r
   uc_unipd	DataFrame
date_rangenplog)truedata_s     l/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/statespace/tests/test_pickle.pyr   r      s^     'DLVmL,TBBB  E
 F5<((E&ML    c                 :   t          j        | d         d          }t          j        t          j        |                    }|                    ddd          }|                    ddd          }t          |j        |j                   t          |j        |j                   t          |j	        |j	                   t          |j
        j        |j
        j                   t          |                    d          |                    d                     d S )	Nr   )r	   r	   r   )orderTnewton)dispfull_outputmethod
   )r   SARIMAXpickleloadsdumpsfitr   llf_obstvaluessmoothed_stateresidvaluesimpulse_responses)r   modpkl_modrespkl_ress        r   test_pickle_fit_sarimaxr4   )   s    
/$v,i
8
8
8Cl6<,,--G
''rtH'
=
=CkkrtHkEEGCK111CK111C&(>???CI$gm&:;;;C))"--s/D/DR/H/HIIIIIr   c                     d} d}t           j                            d           t           j                            | |f          }t           j        |d ddf<   t           j                            | df          }t          j        dd	| 
          }t          j        ||          }t          j        ||          }t          |d|          t          |d|          g}|D ]}t          j
        t          j        |                    }	t          |j        |	j                   |                    d          }
|	                    d          }t          |
j        |j                   t          |
j        |j                   t          |
j        |j                   t          |
j        |j                   t          |
                    d          |
                    d                     d S )N   r	   i  )size   r      z
1970-01-01r   )r   periods)r   llevel)exogF)r!   r$   )r   randomseednormalnanr   r   r   r   r&   r'   r(   r   start_paramsr)   r   r*   r+   r,   r-   r/   )nobsk_endogendogexog2r   endog_pdexog2_pdmodelsr0   r1   r2   r3   s               r   !test_unobserved_components_picklerI   8   s   DGINN4I4/22E6E"1"a%LI4),,EM,T4@@@E|E///H|E///H 	UH5999Xxh???F
  N N,v|C0011S%w';<<<gg5g!!++5+))W_555W_555*G,BCCC	7=111--b1133H3H3L3LMMMMN Nr   c                    t           j        }d}t          d|          }|                    | d         j                   g d|j        d d d d df<   g d|j        g dg d	g d
f<   t          j        |j	                  |_
        t          j        |d                   \  }}}}}||g|j        ddgddgddgf<   |dz  |dz  d|dz  g|j        t          j        |          t          j        |t                    fz   <   t          j        |f          }	t          j        |          dz  }
t          j        t          j        |j        d d d d df         |
          |j        d d d d df         j                  }
|                    |	|
           t'          j        t'          j        |                    }|                                }|                                }t/          |j        |d         d                                          |j        |d         d                                                     t/          |j        d         |d         d          |j        d         |d         d                     t/          |j        d         |d         d          |j        d         |d         d                     t/          |j        d         |d         d          |j        d         |d         d                     d S )Nr8   r	   )rC   k_statesr   )r	   r	   r   r   r   )r	   r	   r   r   r	   r	   )r   r   r	   r	   r9      )r   rL   r	   r9   r	   rL   )r   r   r   r   r   r   
parametersr9   )dtyped   startrL   )r
   r   r   bindr.   design
transitionr   eyerK   	selectionarray	state_covdiag_indiceszerosintdotTinitialize_knownr&   r'   r(   filterr   r*   sumfiltered_state)r   r   rK   modelsigma_vsigma_esigma_wphi_1phi_2initial_stateinitial_state_covr1   resultspkl_resultss                 r   test_kalman_filter_picklerk   X   s2    'DHX666E	JJtF|"###(LLELAAAq .@-?-? 
(((((((((* + fU^,,EO 13\1 1-Wgwu 38Eq!fq!fq!f-. 	1glAw!|I 
O
!!RXhc%B%B%B$DDF Hh[))Mx((3. 
u111a(*;<<AAAq!#  
=*;<<<l6<..//GllnnG..""KGODMNN37799'W7;;==? ? ?G*1-d7mnn=.q1$w-..AC C CG*1-d7mnn=.q1$w-..AC C CG*1-d7mnn=.q1$w-..AC C C C Cr   c                  T   d} d}t          j        | |z                                ||           dz  }t          j        |          }t	          |d          }t          j        t          j        |                    }t          |j	        |j	                   t          |j
        |j
                   |                                 |                                 t          |j        |j                   t          |j        |j                   t          |j        |j                   d S )Nr$   r9   g      ?)rK   )r   arangereshapeasfortranarrayr   r&   r'   r(   r   rB   rC   _initialize_representationrR   obs_interceptinitial_variance)rB   rC   arrrD   r0   r1   s         r   test_representation_picklert      s   DG
)D7N
#
#
+
+GT
:
:R
?Cc""E

+
+
+Cl6<,,--G7<(((go...""$$$&&(((W^,,,"G$9:::%w'?@@@@@r   )__doc__r&   numpyr   pandasr   numpy.testingr   r   pyteststatsmodels.tsa.statespacer   (statsmodels.tsa.statespace.kalman_filterr   )statsmodels.tsa.statespace.representationr   %statsmodels.tsa.statespace.structuralr   ri   r
   fixturer   r4   rI   rk   rt    r   r   <module>r      s)             7 7 7 7 7 7 7 7  . . . . . . A A A A A A D D D D D D F F F F F F * * * * * *   J J JN N N@-C -C -C`A A A A Ar   