U
    Kvfm                     @   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| _|rd| 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.   S/tmp/pip-unpacked-wheel-2v6byqio/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rr*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rtj|j
d dd d f< tj|j
ddd d f< n|dkrt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  all2   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"   Z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dta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   Hz>)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   Z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