U
    Kvf.                     @   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   S/tmp/pip-unpacked-wheel-2v6byqio/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{Gz?g?r#   r   g?)r   r   r    )r   r    r   r   r   r   r   r   gg       @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
|| | rd
|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pytestZ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