U
    Kvf                     @   s   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	 d
d Zdd Zdd Zdd Zd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                  C   s>   t j} tj| d tjdddddgd}t|d |d< |S )	Ndataz
1947-01-01z
1995-07-01QS)freqZGDP)indexcolumnslgdp)r	   uc_unipd	DataFrame
date_rangenplog)trueZdata_ r   P/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tsa/statespace/tests/test_pickle.pyr
      s    r
   c                 C   s   t j| d dd}tt|}|jdddd}|j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   )orderTZnewton)dispZfull_outputmethod
   )r   ZSARIMAXpickleloadsdumpsfitr   llf_obstvaluessmoothed_stateresidvaluesimpulse_responses)r
   modpkl_modrespkl_resr   r   r   test_pickle_fit_sarimax)   s    r,   c                  C   s$  d} d}t jd t jj| |fd}t j|d ddf< t jj| dfd}tjdd	| d
}tj||d}tj||d}t|d|dt|d|dg}|D ]}t	
t	|}	t|j|	j |jdd}
|	jdd}t|
j|j t|
j|j t|
j|j t|
j|j t|
d|
d qd S )N   r   i  )size   r      z
1970-01-01r   )r   Zperiods)r   Zllevel)ZexogF)r   r   )r   randomseednormalnanr   r   r   r   r   r   r    r   Zstart_paramsr!   r   r"   r#   r$   r%   r'   )nobsk_endogendogZexog2r   Zendog_pdZexog2_pdmodelsr(   r)   r*   r+   r   r   r   !test_unobserved_components_pickle8   s,    r9   c              
   C   s@  t j}d}td|d}|| d j ddddg|jd d d d df< ddddddg|jddddddgddddddgddddddgf< t|j	|_
t|d \}}}}}||g|jddgddgddgf< |d |d d|d g|jt|tj|td	f < t|f}	t|d
 }
tt|jd d d d df |
|jd d d d df j}
||	|
 tt|}| }| }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 )Nr/   r   )r6   k_statesr   r   r0      
parameters)Zdtyped   start)r	   r   r   bindr&   designZ
transitionr   Zeyer:   Z	selectionarrayZ	state_covZdiag_indiceszerosintdotTZinitialize_knownr   r   r    filterr   r"   sumZfiltered_state)r
   r   r:   modelZsigma_vZsigma_eZsigma_wZphi_1Zphi_2Zinitial_stateZinitial_state_covr)   resultsZpkl_resultsr   r   r   test_kalman_filter_pickleX   sZ         rJ   c                  C   s   d} d}t | | || d }t |}t|dd}tt|}t|j	|j	 t|j
|j
 |  |  t|j|j t|j|j t|j|j d S )Nr   r0   g      ?)r:   )r   ZarangeZreshapeZasfortranarrayr   r   r   r    r   r5   r6   Z_initialize_representationr@   Zobs_interceptZinitial_variance)r5   r6   Zarrr7   r(   r)   r   r   r   test_representation_pickle   s    
rK   )__doc__r   Znumpyr   Zpandasr   Znumpy.testingr   r   ZpytestZstatsmodels.tsa.statespacer   Z(statsmodels.tsa.statespace.kalman_filterr   Z)statsmodels.tsa.statespace.representationr   Z%statsmodels.tsa.statespace.structuralr   rI   r	   Zfixturer
   r,   r9   rJ   rK   r   r   r   r   <module>   s    
 0