
    !g                         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y)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     i/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tests/test_pickle.pyr   r      sT     ''DLLVmmL,TBE
 FF5<(E&ML    c                 T   t        j                  | d   d      }t        j                  t        j                  |            }|j                  ddd      }|j                  ddd      }t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         t        |j                  j                  |j                  j                         t        |j                  d      |j                  d             y )	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
8Cll6<<,-G
''rtH'
=CkkrtHkEGCKK1CKK1C&&(>(>?CII$$gmm&:&:;C))"-s/D/DR/HIr   c                     d} d}t         j                  j                  d       t         j                  j                  | |f      }t         j                  |d ddf<   t         j                  j                  | df      }t        j                  dd	| 
      }t        j                  ||      }t        j                  ||      }t        |d|      t        |d|      g}|D ]  }t        j                  t        j                  |            }	t        |j                  |	j                         |j                  d      }
|	j                  d      }t        |
j                   |j                          t        |
j"                  |j"                         t        |
j$                  |j$                         t        |
j&                  |j&                         t        |
j)                  d      |
j)                  d              y )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IINN4II4/2E66E"1"a%LII4),EMM,T4@E||E/H||E/H 	UH59Xxh?F
  N,,v||C01S%%w';';<gg5g!++5+)W__5W__5**G,B,BC		7==1--b133H3H3LMNr   c                    t         j                  }d}t        d|      }|j                  | 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"                        }
|j%                  |	|
       t'        j(                  t'        j*                  |            }|j-                         }|j-                         }t/        |j0                  |d   d  j3                         |j0                  |d   d  j3                                t/        |j4                  d   |d   d  |j4                  d   |d   d         t/        |j4                  d   |d   d  |j4                  d   |d   d         t/        |j4                  d   |d   d  |j4                  d   |d   d         y )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   s    ''DHX6E	JJtF|""#(ELLAq .@ 
(((* + ffU^^,EO 13\1-Wgwu 38Eq!fq!fq!f-. 	1glAw!|I 
OO
!RXXhc%B$DDF HHh[)Mx(3. 
u1a(*;<Aq!## 
=*;<ll6<<./GllnG.."KGOODMN3779''W7;;=?G**1-d7mn=..q1$w-.ACG**1-d7mn=..q1$w-.ACG**1-d7mn=..q1$w-.ACr   c                  v   d} d}t        j                  | |z        j                  ||       dz  }t        j                  |      }t	        |d      }t        j                  t        j                  |            }t        |j                  |j                         t        |j                  |j                         |j                          |j                          t        |j                  |j                         t        |j                  |j                         t        |j                  |j                         y )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ll6<<,-G7<<(goo.""$&&(W^^,""G$9$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      sa       7  . A D F *  JN@-C`Ar   