U
    Ãmœdåm  ã                   @   sÀ  d Z ddl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 ddlmZ ddlmZmZmZ ddlmZ dd	lmZmZ ej ej e¡¡ZG d
d„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZ G dd„ de ƒZ!G dd„ deƒZ"G dd„ de"ƒZ#G dd„ deƒZ$G dd„ de$ƒZ%G dd„ deƒZ&G dd„ de&ƒZ'G d d!„ d!eƒZ(G d"d#„ d#e(ƒZ)G d$d%„ d%ƒZ*G d&d'„ d'e*ƒZ+G d(d)„ d)e*ƒZ,G d*d+„ d+e*ƒZ-G d,d-„ d-e*ƒZ.d.d/„ Z/dS )0zÛ
Tests for collapsed observation vector

These tests cannot be run for the Clark 1989 model since the dimension of
observations (2) is smaller than the number of states (6).

Author: Chad Fulton
License: Simplified-BSD
é    N)Údatasets)Údynamic_factor)ÚMLEModel)ÚFILTER_UNIVARIATE)ÚSMOOTH_CLASSICALÚSMOOTH_ALTERNATIVEÚSMOOTH_UNIVARIATE)Úresults_kalman_filter)Úassert_equalÚassert_allclosec                   @   sÊ   e Zd ZdZeedfdd„ƒZdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zejjdd„ ƒZejjdd „ ƒZd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+S ),Ú
TrivariatezP
    Tests collapsing three-dimensional observation data to two-dimensional
    Fc                 K   s,  t j| _tj| jd tjdddd�ddgd�d	d … }t |d ¡|d< |d d
 |d< t |d ¡|d  |d< d}t	|fd|i|—Ž| _
| j
j| _|r¢d| j_t | jj¡| jd< t ddgddgddgg¡| jd< t ddgddgg¡| jd< t dddg¡| jd< t ddg¡| jd< | j ¡  d S )NÚdataz
1947-01-01z
1995-07-01ÚQS)ÚfreqZGDPZUNEMP)ÚindexÚcolumnsé   éd   ÚXé   Úk_statesTÚ	selectiong      à?gš™™™™™É?r   gš™™™™™é?é   g      à¿Údesigngš™™™™™Ù?Ú
transitionçš™™™™™ñ?Úobs_covg       @Ú	state_cov)r	   Zuc_biÚresultsÚpdZ	DataFrameÚ
date_rangeÚnpÚlogÚexpr   ZmlemodelÚssmÚmodelZtiming_init_filteredÚeyer   ÚarrayÚdiagÚinitialize_approximate_diffuse)ÚclsÚdtypeÚalternate_timingÚkwargsr   r   © r.   úh/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tsa/statespace/tests/test_collapsed.pyÚsetup_class"   s6    ýü

þ
ÿzTrivariate.setup_classc                 C   sd   | j jrt‚| jjst‚| j jd ks(t‚| jjd k	s8t‚t| j jjd dƒ t| jjjd dƒ d S ©Nr   é   r   ©Ú	results_aÚfilter_collapsedÚAssertionErrorÚ	results_bZcollapsed_forecastsr
   Ú	forecastsÚshape©Úselfr.   r.   r/   Útest_using_collapsedE   s    zTrivariate.test_using_collapsedc                 C   s.   t | jjdd d …f | jjdd d …f ƒ d S ©Nr   ©r   r4   r8   r7   r:   r.   r.   r/   Útest_forecastsS   s    þzTrivariate.test_forecastsc                 C   s.   t | jjdd d …f | jjdd d …f ƒ d S r=   ©r   r4   Zforecasts_errorr7   r:   r.   r.   r/   Útest_forecasts_errorY   s    þzTrivariate.test_forecasts_errorc                 C   s2   t | jjddd d …f | jjddd d …f ƒ d S r=   ©r   r4   Zforecasts_error_covr7   r:   r.   r.   r/   Útest_forecasts_error_cov_   s    þz#Trivariate.test_forecasts_error_covc                 C   s   t | jj| jjƒ d S ©N©r   r4   Zfiltered_stater7   r:   r.   r.   r/   Útest_filtered_statee   s    þzTrivariate.test_filtered_statec                 C   s   t | jj| jjƒ d S rD   ©r   r4   Zfiltered_state_covr7   r:   r.   r.   r/   Útest_filtered_state_covk   s    þz"Trivariate.test_filtered_state_covc                 C   s   t | jj| jjƒ d S rD   ©r   r4   Zpredicted_stater7   r:   r.   r.   r/   Útest_predicted_stateq   s    þzTrivariate.test_predicted_statec                 C   s   t | jj| jjƒ d S rD   ©r   r4   Zpredicted_state_covr7   r:   r.   r.   r/   Útest_predicted_state_covw   s    þz#Trivariate.test_predicted_state_covc                 C   s   t | jj| jjƒ d S rD   ©r   r4   Zllf_obsr7   r:   r.   r.   r/   Útest_loglike}   s    þzTrivariate.test_loglikec                 C   s   t | jj| jjƒ d S rD   ©r   r4   Zsmoothed_stater7   r:   r.   r.   r/   Útest_smoothed_statesƒ   s    þzTrivariate.test_smoothed_statesc                 C   s   t | jj| jjdd� d S ©Nç-Cëâ6?©Zatol©r   r4   Úsmoothed_state_covr7   r:   r.   r.   r/   Útest_smoothed_states_cov‰   s
    ýz#Trivariate.test_smoothed_states_covc                 C   s   t | jj| jjƒ d S rD   )r   r4   Úsmoothed_state_autocovr7   r:   r.   r.   r/   Útest_smoothed_states_autocov�   s    þz'Trivariate.test_smoothed_states_autocovc                 C   s   t | jj| jjƒ d S rD   ©r   r4   Ú smoothed_measurement_disturbancer7   r:   r.   r.   r/   Ú%test_smoothed_measurement_disturbance˜   s    þz0Trivariate.test_smoothed_measurement_disturbancec                 C   s   t | jj| jjƒ d S rD   ©r   r4   Z$smoothed_measurement_disturbance_covr7   r:   r.   r.   r/   Ú)test_smoothed_measurement_disturbance_cov¡   s    þz4Trivariate.test_smoothed_measurement_disturbance_covc                 C   s   t | jj| jjƒ d S rD   ©r   r4   Zsmoothed_state_disturbancer7   r:   r.   r.   r/   Útest_smoothed_state_disturbance¨   s    þz*Trivariate.test_smoothed_state_disturbancec                 C   s   t | jj| jjƒ d S rD   ©r   r4   Zsmoothed_state_disturbance_covr7   r:   r.   r.   r/   Ú#test_smoothed_state_disturbance_cov®   s    þz.Trivariate.test_smoothed_state_disturbance_covc                 C   s   t | jj| jjƒ d S rD   )r   Úsim_aÚsimulated_stater:   r.   r.   r/   Útest_simulation_smoothed_state´   s    þz)Trivariate.test_simulation_smoothed_statec                 C   s   t | jj| jjƒ d S rD   )r   rb   Ú!simulated_measurement_disturbancer:   r.   r.   r/   Ú0test_simulation_smoothed_measurement_disturbanceº   s    þz;Trivariate.test_simulation_smoothed_measurement_disturbancec                 C   s   t | jj| jjƒ d S rD   )r   rb   Úsimulated_state_disturbancer:   r.   r.   r/   Ú*test_simulation_smoothed_state_disturbanceÀ   s    þz5Trivariate.test_simulation_smoothed_state_disturbanceN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚfloatr0   r<   r?   rA   rC   rF   rH   rJ   rL   rN   rP   rV   rX   ÚpytestÚmarkÚskipr[   r]   r_   ra   rd   rf   rh   r.   r.   r.   r/   r      s0   "

r   c                       s$   e Zd Zeef‡ fdd„	ƒZ‡  ZS )ÚTestTrivariateConventionalc                    sÄ   t t| ƒj|f|Ž | jj}| jj}| jj}d| j_d| j_| j 	¡ | _
| jjt || ¡t || ¡t | jj¡d�| _d| j_| j 	¡ | _| jjt || ¡t || ¡t | jj¡d�| _d S ©NT©Z measurement_disturbance_variatesZstate_disturbance_variatesZinitial_state_variatesF)Úsuperrr   r0   r%   ÚnobsÚk_endogÚk_posdefÚfilter_conventionalr5   Úsmoothr7   Úsimulation_smootherr!   Úzerosr   Úsim_br4   rb   ©r*   r+   r-   rv   rw   rx   ©Ú	__class__r.   r/   r0   É   s&    ýýz&TestTrivariateConventional.setup_class©ri   rj   rk   rm   rn   r0   Ú__classcell__r.   r.   r   r/   rr   Ç   s   rr   c                       s(   e Zd Ze‡ fdd„ƒZdd„ Z‡  ZS )Ú#TestTrivariateConventionalAlternatec                    s   t t| ƒj|ddi|—Ž d S ©Nr,   T)ru   rƒ   r0   ©r*   Úargsr-   r   r.   r/   r0   æ   s    
ÿÿÿz/TestTrivariateConventionalAlternate.setup_classc                 C   s   | j jjdkst‚d S ©Nr   ©r%   Z_kalman_filterZfilter_timingr6   r:   r.   r.   r/   Útest_using_alterateë   s    z7TestTrivariateConventionalAlternate.test_using_alterate©ri   rj   rk   rm   r0   r‰   r‚   r.   r.   r   r/   rƒ   å   s   rƒ   c                       s$   e Zd Zeef‡ fdd„	ƒZ‡  ZS )Ú(TestTrivariateConventionalPartialMissingc                    sÞ   t t| ƒj|f|Ž | jj}| jj}| jj}tj| jj	d d…dd…f< d| j_
d| j_| j ¡ | _| jjt || ¡t || ¡t | jj¡d�| _d| j_| j ¡ | _| jjt || ¡t || ¡t | jj¡d�| _d S ©Nr   é
   é´   Trt   F)ru   r‹   r0   r%   rv   rw   rx   r!   ÚnanÚendogry   r5   rz   r7   r{   r|   r   r}   r4   rb   r~   r   r.   r/   r0   ð   s0    
ÿÿýýz4TestTrivariateConventionalPartialMissing.setup_classr�   r.   r.   r   r/   r‹   ï   s   r‹   c                       s(   e Zd Ze‡ fdd„ƒZdd„ Z‡  ZS )Ú1TestTrivariateConventionalPartialMissingAlternatec                    s   t t| ƒj|ddi|—Ž d S r„   )ru   r‘   r0   r…   r   r.   r/   r0     s    ÿÿÿÿz=TestTrivariateConventionalPartialMissingAlternate.setup_classc                 C   s   | j jjdkst‚d S r‡   rˆ   r:   r.   r.   r/   r‰     s    zETestTrivariateConventionalPartialMissingAlternate.test_using_alteraterŠ   r.   r.   r   r/   r‘     s   r‘   c                       s$   e Zd Zeef‡ fdd„	ƒZ‡  ZS )Ú$TestTrivariateConventionalAllMissingc                    sÞ   t t| ƒj|f|Ž | jj}| jj}| jj}tj| jj	d d …dd…f< d| j_
d| j_| j ¡ | _| jjt || ¡t || ¡t | jj¡d�| _d| j_| j ¡ | _| jjt || ¡t || ¡t | jj¡d�| _d S ©Nr�   rŽ   Trt   F)ru   r’   r0   r%   rv   rw   rx   r!   r�   r�   ry   r5   rz   r7   r{   r|   r   r}   r4   rb   r~   r   r.   r/   r0     s0    
ÿÿýýz0TestTrivariateConventionalAllMissing.setup_classr�   r.   r.   r   r/   r’     s   r’   c                       s(   e Zd Ze‡ fdd„ƒZdd„ Z‡  ZS )Ú-TestTrivariateConventionalAllMissingAlternatec                    s   t t| ƒj|ddi|—Ž d S r„   )ru   r”   r0   r…   r   r.   r/   r0   <  s    
ÿÿÿz9TestTrivariateConventionalAllMissingAlternate.setup_classc                 C   s   | j jjdkst‚d S r‡   rˆ   r:   r.   r.   r/   r‰   A  s    zATestTrivariateConventionalAllMissingAlternate.test_using_alteraterŠ   r.   r.   r   r/   r”   :  s   r”   c                       s$   e Zd Zeef‡ fdd„	ƒZ‡  ZS )ÚTestTrivariateUnivariatec                    sÄ   t t| ƒj|f|Ž | jj}| jj}| jj}d| j_d| j_| j 	¡ | _
| jjt || ¡t || ¡t | jj¡d�| _d| j_| j 	¡ | _| jjt || ¡t || ¡t | jj¡d�| _d S rs   )ru   r•   r0   r%   rv   rw   rx   Úfilter_univariater5   rz   r7   r{   r!   r|   r   r}   r4   rb   r~   r   r.   r/   r0   F  s&    ýýz$TestTrivariateUnivariate.setup_classr�   r.   r.   r   r/   r•   E  s   r•   c                       s(   e Zd Ze‡ fdd„ƒZdd„ Z‡  ZS )Ú!TestTrivariateUnivariateAlternatec                    s   t t| ƒj|ddi|—Ž d S r„   )ru   r—   r0   r…   r   r.   r/   r0   b  s    
ÿÿÿz-TestTrivariateUnivariateAlternate.setup_classc                 C   s   | j jjdkst‚d S r‡   rˆ   r:   r.   r.   r/   r‰   g  s    z5TestTrivariateUnivariateAlternate.test_using_alteraterŠ   r.   r.   r   r/   r—   a  s   r—   c                       s$   e Zd Zeef‡ fdd„	ƒZ‡  ZS )Ú&TestTrivariateUnivariatePartialMissingc                    sÞ   t t| ƒj|f|Ž | jj}| jj}| jj}tj| jj	d d…dd…f< d| j_
d| j_| j ¡ | _| jjt || ¡t || ¡t | jj¡d�| _d| j_| j ¡ | _| jjt || ¡t || ¡t | jj¡d�| _d S rŒ   )ru   r˜   r0   r%   rv   rw   rx   r!   r�   r�   r–   r5   rz   r7   r{   r|   r   r}   r4   rb   r~   r   r.   r/   r0   l  s0    
ÿÿýýz2TestTrivariateUnivariatePartialMissing.setup_classr�   r.   r.   r   r/   r˜   k  s   r˜   c                       s(   e Zd Ze‡ fdd„ƒZdd„ Z‡  ZS )Ú/TestTrivariateUnivariatePartialMissingAlternatec                    s   t t| ƒj|ddi|—Ž d S r„   )ru   r™   r0   r…   r   r.   r/   r0   �  s    ÿÿÿÿz;TestTrivariateUnivariatePartialMissingAlternate.setup_classc                 C   s   | j jjdkst‚d S r‡   rˆ   r:   r.   r.   r/   r‰   ’  s    zCTestTrivariateUnivariatePartialMissingAlternate.test_using_alteraterŠ   r.   r.   r   r/   r™   ‹  s   r™   c                       s$   e Zd Zeef‡ fdd„	ƒZ‡  ZS )Ú"TestTrivariateUnivariateAllMissingc                    sÞ   t t| ƒj|f|Ž | jj}| jj}| jj}tj| jj	d d …dd…f< d| j_
d| j_| j ¡ | _| jjt || ¡t || ¡t | jj¡d�| _d| j_| j ¡ | _| jjt || ¡t || ¡t | jj¡d�| _d S r“   )ru   rš   r0   r%   rv   rw   rx   r!   r�   r�   r–   r5   rz   r7   r{   r|   r   r}   r4   rb   r~   r   r.   r/   r0   —  s0    
ÿÿýýz.TestTrivariateUnivariateAllMissing.setup_classr�   r.   r.   r   r/   rš   –  s   rš   c                       s(   e Zd Ze‡ fdd„ƒZdd„ Z‡  ZS )Ú+TestTrivariateUnivariateAllMissingAlternatec                    s   t t| ƒj|ddi|—Ž d S r„   )ru   r›   r0   r…   r   r.   r/   r0   ¸  s    
ÿÿÿz7TestTrivariateUnivariateAllMissingAlternate.setup_classc                 C   s   | j jjdkst‚d S r‡   rˆ   r:   r.   r.   r/   r‰   ½  s    z?TestTrivariateUnivariateAllMissingAlternate.test_using_alteraterŠ   r.   r.   r   r/   r›   ¶  s   r›   c                   @   sâ   e Zd Zedd„ ƒZedd„ ƒZed/dd„ƒZdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zejjd d!„ ƒZejjd"d#„ ƒZd$d%„ Zd&d'„ Zd(d)„ Zejjd*d+„ ƒZd,d-„ Zd.S )0ÚTestDFMc                 K   s    t |fdddœ|—Ž}t ddgddgddgg¡|d	< t t d
ddg¡¡|d< t ddgddgg¡|d< t d¡|d< t ddgddgg¡|d< | d¡ |S )Nr   ©r   rx   çJn X<@Àç?µÑkyV1@ç…9jNœÀç=lù³û?ç‡ÊùA�!jÀçæý�mR_@r   ç&Î@oá¯?ç]Ó¬„Nÿ?ç“Bî\÷/M@r   ç}^Žª(Ó?çÇ{zNÕ?çlr”rè¿ç*Q›ÝÿŒô?r   r   ç333333ó?ç      Ð¿r   r   ç    €„.A)r   r!   r'   r(   r&   r)   )r*   Úobsr-   Úmodr.   r.   r/   Úcreate_modelÂ  s"    
þ
ÿ
ÿ

ÿ

zTestDFM.create_modelc                 K   sl   | j |f|Ž}|jg dd� |jj}t |j|jf¡}t|jƒD ]&}| 	||jj
d¡ t |j¡||< q@|S )NT)Z
return_ssmr   )r°   rz   r$   Z_statespacer!   r|   rv   r   ÚrangeÚseekr–   r'   Zcollapse_obs)r*   r®   r-   r¯   Ú_ssÚoutÚtr.   r.   r/   ÚcollapseÓ  s    zTestDFM.collapseÚmixedc                 O   sü  t j ¡ j}tjdddd�|_|dddg }t |¡ 	¡ j
dd … d	 }|d
kr‚tj|j
d d…d d …f< tj|j
dd…d d …f< n |dkr´tj|j
dd…df< tj|j
dd…df< nn|dk�r"tj|j
dd…df< tj|j
dd…df< tj|j
dd…df< tj|j
dd…df< tj|j
dd…df< | j|f|Ž}|j| _| jj}| jj}	| jj}
tj d¡ tjj||	 d�}tjj||
 d�}tjj| jjd�}d| j_| j ¡ | _| j ¡ | _| jj|||d� d| j_| j ¡ | _| j ¡ | _| jj|||d� | dd ¡ t|fdddœ|—Ž}t  ddgd d!gd"d#gg¡|d$d d%…d d…f< t !t  d&d'd(g¡¡|d)< t  d*d+gd,d-gg¡|d.d d…d d…f< t "d¡|d.dd …d d…f< t "d¡|d/d d…d d…f< t  d0d1gd1d2gg¡|d3< | #d4¡ |j| _$|j ¡ | _%d S )5Nz
1959-01-01z	2009-7-01r   )ÚstartÚendr   ZrealgdpZrealconsZrealinvr   i�  Úallé2   éw   é‚   Úpartialr   r·   é   éF   é'   éZ   r   iÒ  ©ÚsizeTrt   Fr5   r   r�   rž   rŸ   r    r¡   r¢   r£   r   r2   r¤   r¥   r¦   r   r§   r¨   r©   rª   r   r   r«   r¬   r   r   r­   )&r   Z	macrodataZload_pandasr   r   r    r   r!   r"   ÚdiffZilocr�   r°   r$   r%   rv   rw   rx   ÚrandomÚseedÚnormalr   r5   rz   r7   r{   r}   Zsimulater4   rb   Úpopr   r'   r(   r&   r)   Zaugmented_modelÚaugmented_results)r*   Úwhichr†   r-   ZdtaZlevelsr®   r¯   rv   rw   rx   ZmdvZsdvZisvr.   r.   r/   r0   ß  s|     ÿ
þþ
þÿ
ÿ
ÿ

zTestDFM.setup_classc                 C   sd   | j jrt‚| jjst‚| j jd ks(t‚| jjd k	s8t‚t| j jjd dƒ t| jjjd dƒ d S r1   r3   r:   r.   r.   r/   r<   $  s    zTestDFM.test_using_collapsedc                 C   s.   t | jjdd d …f | jjdd d …f ƒ d S r=   r>   r:   r.   r.   r/   r?   2  s    þzTestDFM.test_forecastsc                 C   s.   t | jjdd d …f | jjdd d …f ƒ d S r=   r@   r:   r.   r.   r/   rA   8  s    þzTestDFM.test_forecasts_errorc                 C   s2   t | jjddd d …f | jjddd d …f ƒ d S r=   rB   r:   r.   r.   r/   rC   >  s    þz TestDFM.test_forecasts_error_covc                 C   s   t | jj| jjƒ d S rD   rE   r:   r.   r.   r/   rF   D  s    þzTestDFM.test_filtered_statec                 C   s   t | jj| jjƒ d S rD   rG   r:   r.   r.   r/   rH   J  s    þzTestDFM.test_filtered_state_covc                 C   s   t | jj| jjƒ d S rD   rI   r:   r.   r.   r/   rJ   P  s    þzTestDFM.test_predicted_statec                 C   s   t | jj| jjƒ d S rD   rK   r:   r.   r.   r/   rL   V  s    þz TestDFM.test_predicted_state_covc                 C   s   t | jj| jjƒ d S rD   rM   r:   r.   r.   r/   rN   \  s    þzTestDFM.test_loglikec                 C   s   t | jj| jjƒ d S rD   rO   r:   r.   r.   r/   rP   b  s    þzTestDFM.test_smoothed_statesc                 C   s   t | jj| jjdd� d S rQ   rT   r:   r.   r.   r/   rV   h  s
    ýz TestDFM.test_smoothed_states_covc                 C   sš   t | jj| jjƒ t | jjd d …d d …dd…f | jjd d…dd …dd…f dd� t | jjd d …d d …dd…f | jjd d…dd …dd …f d	d� d S )
Nr   é   r   r   é   rR   rS   éÿÿÿÿçH¯¼šò×z>)r   r4   rW   r7   rÊ   rU   r:   r.   r.   r/   rX   o  s    þþþz$TestDFM.test_smoothed_states_autocovc                 C   s   t | jj| jjƒ d S rD   rY   r:   r.   r.   r/   r[   ƒ  s    þz-TestDFM.test_smoothed_measurement_disturbancec                 C   s   t | jj| jjƒ d S rD   r\   r:   r.   r.   r/   r]   Œ  s    þz1TestDFM.test_smoothed_measurement_disturbance_covc                 C   s   t | jj| jjƒ d S rD   r^   r:   r.   r.   r/   r_   “  s    þz'TestDFM.test_smoothed_state_disturbancec                 C   s   t | jj| jjƒ d S rD   r`   r:   r.   r.   r/   ra   ™  s    þz+TestDFM.test_smoothed_state_disturbance_covc                 C   s   t | jj| jjƒ d S rD   )r   rb   rc   r}   r:   r.   r.   r/   rd   Ÿ  s    þz&TestDFM.test_simulation_smoothed_statec                 C   s   t | jj| jjƒ d S rD   )r   rb   re   r}   r:   r.   r.   r/   rf   §  s    þz8TestDFM.test_simulation_smoothed_measurement_disturbancec                 C   s   t | jj| jjƒ d S rD   ©r   rb   rg   r}   r:   r.   r.   r/   rh   ®  s    þz2TestDFM.test_simulation_smoothed_state_disturbanceN)r·   )ri   rj   rk   rm   r°   r¶   r0   r<   r?   rA   rC   rF   rH   rJ   rL   rN   rP   rV   rX   ro   rp   rq   r[   r]   r_   ra   rd   rf   rh   r.   r.   r.   r/   rœ   Á  s8   

D


rœ   c                       s(   e Zd Ze‡ fdd„ƒZdd„ Z‡  ZS )ÚTestDFMClassicalSmoothingc                    s   t t| ƒj|dti|—Ž d S ©NÚsmooth_method)ru   rÑ   r0   r   r…   r   r.   r/   r0   ¶  s    
ÿÿÿz%TestDFMClassicalSmoothing.setup_classc                 C   s2   t | jjtƒ t | jjjtƒ t | jjjtƒ d S rD   )r
   r%   rÓ   r   Ú_kalman_smootherÚ_smooth_methodr:   r.   r.   r/   Útest_smooth_method»  s    
ÿ
ÿz,TestDFMClassicalSmoothing.test_smooth_method©ri   rj   rk   rm   r0   rÖ   r‚   r.   r.   r   r/   rÑ   µ  s   rÑ   c                       s(   e Zd Ze‡ fdd„ƒZdd„ Z‡  ZS )ÚTestDFMUnivariateSmoothingc                    s   t t| ƒj|dti|—Ž d S )NZfilter_method)ru   rØ   r0   r   r…   r   r.   r/   r0   Ä  s    
ÿÿÿz&TestDFMUnivariateSmoothing.setup_classc                 C   s2   t | jjdƒ t | jjjdƒ t | jjjtƒ d S r=   )r
   r%   rÓ   rÔ   rÕ   r   r:   r.   r.   r/   rÖ   É  s
    
ÿz-TestDFMUnivariateSmoothing.test_smooth_methodr×   r.   r.   r   r/   rØ   Ã  s   rØ   c                       s(   e Zd Ze‡ fdd„ƒZdd„ Z‡  ZS )ÚTestDFMAlternativeSmoothingc                    s   t t| ƒjf dti|—Ž d S rÒ   )ru   rÙ   r0   r   r…   r   r.   r/   r0   Ñ  s
    ÿÿz'TestDFMAlternativeSmoothing.setup_classc                 C   s2   t | jjtƒ t | jjjtƒ t | jjjtƒ d S rD   )r
   r%   rÓ   r   rÔ   rÕ   r:   r.   r.   r/   rÖ   Ö  s    
ÿ
ÿz.TestDFMAlternativeSmoothing.test_smooth_methodr×   r.   r.   r   r/   rÙ   Ð  s   rÙ   c                       s@   e Zd Ze‡ fdd„ƒZdd„ Zdd„ Zdd„ Zd	d
„ Z‡  Z	S )ÚTestDFMMeasurementDisturbancec                    s    t t| ƒjf tddœ|—Ž d S )NÚnone)rÓ   rË   )ru   rÚ   r0   r   r…   r   r.   r/   r0   ß  s     ÿÿz)TestDFMMeasurementDisturbance.setup_classc                 C   s   t | jj| jjdd� d S ©NrÏ   rS   r^   r:   r.   r.   r/   r_   ä  s
     þz=TestDFMMeasurementDisturbance.test_smoothed_state_disturbancec                 C   s$   t |  | jjj¡j| jjdd� d S rÜ   )r   r¶   r4   rZ   ÚTr7   r:   r.   r.   r/   r[   é  s
     þzCTestDFMMeasurementDisturbance.test_smoothed_measurement_disturbancec                 C   s$   t |  | jjj¡| jjjdd� d S rÜ   )r   r¶   rb   re   rÝ   r}   r:   r.   r.   r/   rf   î  s
     þzNTestDFMMeasurementDisturbance.test_simulation_smoothed_measurement_disturbancec                 C   s   t | jj| jjdd� d S rÜ   rÐ   r:   r.   r.   r/   rh   ó  s
     þzHTestDFMMeasurementDisturbance.test_simulation_smoothed_state_disturbance)
ri   rj   rk   rm   r0   r_   r[   rf   rh   r‚   r.   r.   r   r/   rÚ   Þ  s   rÚ   c                 C   sj   t jjdd�}t j|dd d…f< tj|ddd�}d|j_| |j	¡}d|j_| |j	¡}t
|j|jƒ d S )N)r   r2   rÃ   r   r   )Z	k_factorsZfactor_orderTF)r!   rÆ   rÈ   r�   r   ZDynamicFactorr$   r5   rz   Zstart_paramsr   Zllf)Zreset_randomstater�   r¯   ÚresZres2r.   r.   r/   Útest_dfm_missingù  s    rß   )0rl   Únumpyr!   Zpandasr   ro   ÚosZstatsmodelsr   Zstatsmodels.tsa.statespacer   Z#statsmodels.tsa.statespace.mlemodelr   Z(statsmodels.tsa.statespace.kalman_filterr   Z*statsmodels.tsa.statespace.kalman_smootherr   r   r   Z(statsmodels.tsa.statespace.tests.resultsr	   Znumpy.testingr
   r   ÚpathÚdirnameÚabspathÚ__file__Úcurrent_pathr   rr   rƒ   r‹   r‘   r’   r”   r•   r—   r˜   r™   rš   r›   rœ   rÑ   rØ   rÙ   rÚ   rß   r.   r.   r.   r/   Ú<module>   sR   
 *
 
ÿ 
ÿ
 
ÿ 
ÿ u