U
    ÃmœdÚ.  ã                   @   s  d Z ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZ ddlmZ e	j ¡ jZejddd	d
�e_ej dddg¡ej ddddg¡ej dddg¡ej dddg¡dd„ ƒƒƒƒZej dddg¡ej ddddg¡dd„ ƒƒZdd„ Zej dddg¡dd„ ƒZdS )zg
Tests for decomposition of objects in state space models

Author: Chad Fulton
License: Simplified-BSD
é    N)Úassert_allclose)Údatasets)ÚsarimaxÚvarmaxÚdynamic_factor_mq)ÚTVSSZ1959Q1Z2009Q3ÚQ)ÚstartÚendÚfreqÚuse_exogFTÚtrendÚnÚcÚtÚconcentrate_scaleÚmeasurement_errorc                 C   s:  t  dt jdddgg¡j}| r2t  ddddd	g¡nd }d
g}dg}dg}dg}	dg}
g }|dkrh||7 }| rt||7 }||7 }|rˆ||	7 }|s”||
7 }tj|d|| r¦|nd ||d�}t  dg¡}t  d¡d }|j ||¡ | 	|¡}|j
dd�\}}}}|| jdd�|jdd� |jdd� }|jdd�j}t  |jj¡}t||dd� |j|d d d …d d …d f  jdd�|d  j}|jddd�}|jddd�}t|d d …d f |ƒ |j
d!d�\}}}}|| jdd�|jdd� |jdd� }|jd"d�j}t|d d …d f |dd� ||d j }t|d d …d f |ƒ d S )#Nçš™™™™™É?ç333333ó?ç333333Ó¿g      ø¿é   ç333333@éÿÿÿÿç333333@ç        çš™™™™™¹?ç      à?çffffffö?çš™™™™™é?©r   r   )é   r   r   )Úorderr   Úexogr   r   çš™™™™™Ù¿r    Úsmoothed_state©Zdecomposition_of©ZaxisÚstate_to©Úlevelçê-�™—q=©ZatolÚdesignÚobs_interceptÚsmoothedT©Zinformation_setZsignal_onlyFr   Úsmoothed_signalÚvariable_to)ÚnpÚarrayÚnanÚTr   ZSARIMAXÚeyeÚssmÚinitialize_knownÚsmoothÚget_smoothed_decompositionÚsumÚunstackÚvaluesÚstatesr.   r   Úpredict)r   r   r   r   Úendogr"   Útrend_paramsZ	ar_paramsÚexog_paramsZmeas_err_paramsÚ
cov_paramsÚparamsÚmodÚ
prior_meanÚ	prior_covÚresÚcdÚcoiÚcsiÚcpÚcssÚssÚcsfÚs_sigÚsfÚcs_sig© rS   úh/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tsa/statespace/tests/test_decompose.pyÚ#test_smoothed_decomposition_sarimax   s^    

ý
ÿ(&ÿÿ(rU   c                 C   sD  t  ddgddgddgddgdd	gg¡}t j|d
< t j|dd d …f< t j|d< | rft  dddddg¡nd }ddg}ddddg}ddg}dddg}g }|dkr¤||7 }||7 }| r¸||7 }||7 }tj|d|| rÒ|nd d�}	t  ddg¡}
t  ddgddgg¡}|	j |
|¡ |	 |¡}|jdd�\}}}}|| j	dd�|j	dd� |j	dd� }|j
dd �j}t  |jj¡}t||d!d"� |j|	d# d d …d d …d f  j	dd�j}|jd$d%d&�}|jd$d'd&�}t||d!d"� |jd(d�\}}}}|| j	dd�|j	dd� |j	dd� }|j
d)d �j}t||d!d"� ||	d* j }t||ƒ d S )+Nr   ç      ð?r   g      à¿g{®Gáz„?gš™™™™™Ù?r#   r   gš™™™™™©?)r   r   r    )r   r    r   r   r   r   r   r   gš™™™™™¹¿g       @r   )r    r   )r!   r   r"   çÍÌÌÌÌÌì?r   ç333333Ó?gÍÌÌÌÌÌ@r$   r%   r&   r'   r(   r*   r+   r,   r.   Tr/   Fr0   r1   r-   )r2   r3   r4   r   ZVARMAXr7   r8   r9   r:   r;   r<   r=   r>   r.   r   r5   r?   )r   r   r@   r"   rA   Z
var_paramsrB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rS   rT   Ú"test_smoothed_decomposition_varmaxm   sb    
ü




ÿ
ÿ
ÿ(*ÿ(rY   c                  C   s(  t jdddd�} t jdddd�}t jt d¡| dd	gd
�}t jt d¡|ddgd
�}d|jd< d|jd< || ¡ 8 }|| ¡ 8 }tj||dddd�}ddddddddddddddg}| 	|¡}|j
dd �\}}}	}
|| jdd!�|	jdd!� |
jdd!� }|jd"d#�|j j}t |jj¡}t||d$d%� |j|d& d d …d d …d f  jdd!�j}|j|jjd d …d f  |jjd d …d f  j}|jd'dd(�}|jd'd)d(�}t||d$d%� |j
d*d �\}}}	}
|| jdd!�|	jdd!� |
jdd!� }|jd+d#�|j j}t||d$d%� ||d, j }t||ƒ d S )-NÚ2000é   ÚM)r	   Zperiodsr   é   r   )r[   r   ZM0ZM1)ÚindexÚcolumns)r]   r   ZQ0ZQ1rV   r   r    T)Zendog_quarterlyZfactorsZfactor_ordersZidiosyncratic_ar1r   r#   r   rX   gffffffî?r   gš™™™™™á?g333333ã?gÍÌÌÌÌÌä?gš™™™™™ñ?r   rW   r$   r%   r&   r'   r(   r*   r+   r,   r.   r/   Fr0   r1   r-   )ÚpdÚperiod_rangeZ	DataFramer2   ÚzerosZilocZmeanr   ZDynamicFactorMQr9   r:   r;   r<   Ústate_namesr=   r3   r>   r.   r   r5   Z
_endog_stdZ_endog_meanr?   Úendog_names)Zindex_MZindex_QZdta_MZdta_QrE   rD   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rS   rT   Ú"test_smoothed_decomposition_dfm_mqÀ   sn    ÿ

   þ          ü
ÿ(*ÿÿ(re   Ú
univariatec                 C   sÒ  t  d¡}t j|d< t j|dd d …f< t j|d< t|ƒ}t jj|j|jfd�|d< t  ddg¡}t  	d	¡}|j
 ||¡ | r„d
|j
_| g ¡}|jdd�\}}}	}
|| jdd�|	jdd� |
jdd� }|jdd�|j j}t  |jj¡}t||dd� |j|d  jdd�j}||d j }|jdd
d�}|jddd�}t||dd� t||dd� |jdd�\}}}	}
|| jdd�|	jdd� |
jdd� }|jdd�|j j}t||dd� ||d j }t||ƒ d S )N)é
   é   )é   r   é   )é   r    )ÚsizeZstate_interceptr   r   r   Tr$   r%   r    r&   r'   r(   r*   r+   r,   r-   r.   r/   Fr0   r1   )r2   rb   r4   r   ÚrandomÚnormalZk_statesZnobsr3   r6   r7   r8   Zfilter_univariater9   r:   r;   r<   rc   r=   r>   r.   r   r5   r?   rd   )rf   Zreset_randomstater@   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rR   rO   rP   rQ   rS   rS   rT   Ú test_smoothed_decomposition_TVSS  sB    




ÿ(ÿ(ro   )Ú__doc__ZpytestÚnumpyr2   Zpandasr`   Znumpy.testingr   Zstatsmodelsr   Zstatsmodels.tsa.statespacer   r   r   Z7statsmodels.tsa.statespace.tests.test_impulse_responsesr   Z	macrodataZload_pandasÚdataZdtara   r^   ÚmarkZparametrizerU   rY   re   ro   rS   rS   rS   rT   Ú<module>   s(   QQN