U
    Ãmœdö  ã                   @   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   úe/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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   )ÚorderéÿÿÿÿTZ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¡ƒ q–d 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dtypeéd   Ústart)r	   r   r   Úbindr&   ÚdesignZ
transitionr   Úeyer:   Z	selectionÚarrayZ	state_covZdiag_indicesZ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   Ú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