U
    Ãmœd ã                   @   sô  d Z ddlZddlZddlmZmZmZ ddl	Z	ddl
mZ ddlmZ ddlmZmZ ddlmZmZmZm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!d!d"„ Z"d#d$„ Z#d%d&„ Z$d'd(„ Z%d)d*„ Z&d+d,„ Z'd-d.„ Z(d/d0„ Z)d1d2„ Z*d3d4„ Z+d5d6„ Z,d7d8„ Z-d9d:„ Z.d;d<„ Z/d=d>„ Z0d?d@„ Z1dAdB„ Z2dCdD„ Z3dEdF„ Z4dGdH„ Z5dIdJ„ Z6dKdL„ Z7dMdN„ Z8dOdP„ Z9dQdR„ Z:dSdT„ Z;dUdV„ Z<dWdX„ Z=dYdZ„ Z>d[d\„ Z?e	j@jAd]d^„ ƒZBd_d`„ ZCdadb„ ZDe	j@jAdcdd„ ƒZEdS )ezR
Tests for simulation of time series

Author: Chad Fulton
License: Simplified-BSD
é    N)Úassert_Úassert_allcloseÚassert_equal)Úlfilteré   )ÚTVSS)ÚSpecificationWarningÚEstimationWarning)ÚsarimaxÚ
structuralÚvarmaxÚdynamic_factorc                  C   sF  t j d¡ d} t jj| d�}tjdgdd�}|jddg| d	 t j|df t  |j	¡d
�}t
d	gd	dg|ƒ}t|d	d … |ƒ tjdgdd�}|jddg| d	 t j|df t  |j	¡d
�}t
d	dgd	g|ƒ}t|d	d … |ƒ tjdgdd�}|jdddg| d	 t j|df t  |j	¡d
�}t
d	dgd	dg|ƒ}t|d	d … |ƒ d S )Néÿ'  éd   ©Úsizer   ©r   r   r   ©Úorderç      à?ç      ð?r   ©Ústate_shocksÚinitial_stateç      à¿©r   r   r   ©r   r   r   çš™™™™™É?)ÚnpÚrandomÚseedÚnormalr
   ÚSARIMAXÚsimulateÚr_ÚzerosÚk_statesr   r   )ÚnobsÚepsÚmodÚactualÚdesired© r,   úg/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tsa/statespace/tests/test_simulate.pyÚtest_arma_lfilter   s*    
ÿ
ÿ
ÿr.   c                  C   s’  t j d¡ d} t jj| d�}t jj| d�}tjdgdd�}|jddg| d	 t j|df t  |j	¡d
�}t  | ¡}t
| ƒD ]6}|dkr”|| ||< qzd||d	   ||  ||< qzt|d	d … |ƒ tjdgdd�}|jddg| d	 t j|df t  |j	¡d
�}t  | ¡}t
| ƒD ]:}|dk�r.|| ||< nd||d	   ||  ||< �qt|d	d … |ƒ tjdgdd�}|jdddg| d	 t j|df t  |j	¡d
�}t  | ¡}t
| ƒD ]J}|dk�rÌ|| ||< n,d||d	   d||d	    ||  ||< �q°t|d	d … |ƒ tjdgddd�}|jddddg| d	 t j|df t  |j	¡d
�}t  | ¡}t
| ƒD ]V}d}|dk�r†|||  ||< n0|d||d	    d||d	    ||  ||< �qbt|d	d … |ƒ tjt  | d	 ¡ddd�}|jdddddg| d	 t j|df t  |j	¡d
�}t  | ¡}t
| ƒD ]b}dd|d	   }|dk�rZ|||  ||< n0|d||d	    d||d	    ||  ||< �q*t|d	d … |ƒ tjt  | d	 ¡t jd|f ddd�}|jddddddg| d	 t j|df t  |j	¡d
�}t  | ¡}t
| ƒD ]b}dd|d	   }|dk�r<|||  ||< n0|d||d	    d||d	    ||  ||< �q|d|  }t|d	d … |ƒ d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   Úc©r   ÚtrendgÍÌÌÌÌÌô?Úct)Úexogr   r1   r   )r   r   r    r!   r
   r"   r#   r$   r%   r&   Úranger   )r'   r(   r3   r)   r*   r+   Úir1   r,   r,   r-   Útest_arma_direct3   s¬    
ÿ

ÿ

 
ÿ

0
þ

ÿÿ
þ

ÿÿ ÿ
þ

ÿÿr6   c               	   C   s’  t j d¡ d} t jj| d�}t jj| d�}t  | ¡}t  | ¡}d|d< t  | ¡}d|dd …< tjdgdd�}tjdgd	d
�}|j	ddg| |t  |j
¡d�}|j	ddg| |t  |j
¡d�}	t||	ƒ tjt  | ¡|dd�}tjt  | ¡|d	d�}|j	dddg| |t  |j
¡d�}|j	dddg| |t  |j
¡d�}	t||	ƒ t dgd¡}
|
j	dg| |t  |
j
¡d�}t||ƒ t}d}tj||d�� t dgd¡}
W 5 Q R X |
j	dg| |dgd�}t|d| ƒ t dgd¡}
|
j	dg| |dgd�}t|d| ƒ t dgd¡}
|
j	ddg| ||t  |
j
¡d�}t||| ƒ t dgd¡}
|
j	dg| ||t  |
j
¡d�}t||| ƒ t}d}tj||d�� t dgd¡}
W 5 Q R X |
j	ddg| ||ddgd�}t||t  d¡ ƒ t dgd¡}
|
j	dg| ||ddgd�}t||t  d¡ ƒ t dgd¡}
|
j	ddg| ||ddgd�}|t jt  d¡dt  dd¡ f  }	t||	ƒ t dgd¡}
|
j	dg| |ddgd�}t jt  d¡dt  dd¡ f }	t||	ƒ t dgd¡}
|
j	dddg| |t j||f ddgd�}|t jt  d¡dt  dd¡ f  }	t||	ƒ |
j	dddg| |t j||f ddgd�}|t jt  d¡t  dd d!¡f  }	t||	ƒ t dgd"¡}
|
j	ddg| ||ddgd�}|t jt  d¡  }	t||	ƒ |
j	ddg| ||ddgd�}|t jt  d¡t  dd d!¡f  }	t||	ƒ t dgd#¡}
|
j	ddg| |ddgd�}t jt  d¡ }	t||	ƒ |
j	ddg| |ddgd�}t jt  d¡t  dd d!¡f }	t||	ƒ tjdgdd!d$d%�}
|
j	dg| |dgd�}|t  dd&gd¡ }	t||	ƒ tjdgdd!d'�}
|
j	ddg| ||dgd�}|t jt  dd&gd(¡t  d)d*gd(¡f  }	t||	ƒ tjdgdd+d,�}
|
j	dd-g| |ddgd�}t  d-¡t  d-¡g}t  d-¡ t  d-¡g}t  ||g¡}|}	ddg}t| ƒD ]&}|	|  |d 7  < t  ||¡}�qšt||	ƒ tjdgdd+d+d.�}
|
j	ddd-g| |t j||f ddgd�}t  d-¡t  d-¡g}t  d-¡ t  d-¡g}t  ||g¡}|}	ddg}t| ƒD ].}|	|  |d 7  < t  ||¡||  }�qTt||	ƒ d S )/Né#˜  r   r   r   é1   é2   r   )Úautoregressiver   r   r   r   )r3   r:   )r3   r   r   Z	irregularr   )Úmeasurement_shocksr   zirregular component added©Úmatchzfixed intercepté
   zdeterministic constantúlocal level©r;   r   r   zrandom walkzfixed slopezdeterministic trendz local linear deterministic trendzrandom walk with driftzlocal linear trendé–   é   zsmooth trendzrandom trendF)ÚseasonalZstochastic_seasonaliöÿÿÿ)rC   é   é   iõÿÿÿT)Úcycleg333333ó?)rF   Zstochastic_cycle)r   r   r    r!   r%   r   ÚUnobservedComponentsr
   r"   r#   r&   r   r   ÚpytestÚwarnsÚaranger$   Úc_ZtileÚcosÚsinÚarrayr4   Údot)r'   r(   r3   Úeps1Úeps2Úeps3Úmod1Úmod2r*   r+   r)   Úwarningr=   Úx1Zx2ÚTZstatesr5   r,   r,   r-   Útest_structural—   sZ   



ÿ
ÿ
ÿ
ÿ
ÿ

ÿ
ÿÿ
þ
þ ÿ ÿ ÿ ÿ$
ÿ 
 ÿ$
 ÿ"
 ÿ
 ÿ"
 ÿ
 ÿ
ÿÿ
 ÿ*
ÿ
ÿ ÿrX   c               	   C   s  t j d¡ d} t jj| d�}t jj| dfd�}t  | ¡}t  | ¡}d|d< t  | ¡}d|dd …< tjdggdd	d
�}tjdgdd�}|j	dddg| |t  |j
¡d�}|j	dddg| |t  |j
¡d�}	t||	ƒ tjdggdd	d
�}tjdgdd�}|j	dddg| |t  |j
¡d�}|j	dddg| |t  |j
¡d�}	t||	ƒ t}
d}tj|
|d�� tjdggdd	d
�}W 5 Q R X tjdgdd�}|j	dddddg| |t  |j
¡d�}|j	dddddg| |t  |j
¡d�}	t||	ƒ t}
d}tj|
|d�� tjdggddd
�}W 5 Q R X tjdgddd
�}|j	ddddddg| |t  |j
¡d�}|j	ddddddg| |t  |j
¡d�}	t||	ƒ t  ddgddgg¡}tjddggdd	d
�}|j	t j| ¡ dddf | t j||f t  |j
¡d�}t|dƒ |j	t j| ¡ dddf | t j||f ddgd�}t  | df¡}	t jd }t| ƒD ]}||	|< t  ||¡}�q2t||	ƒ tjddggdd	dd �}|j	t j| ¡ dddddf | t j||f t j||f t  |j
¡d!�}t|t j||f ƒ tjt  | df¡dd	|d"�}|j	t j| ¡ d#d$dddf | t j||f ddgd�}t  | df¡}	t jd }t| ƒD ]<}||	|< || d k �r<||d  d#d$g t  ||¡ }�q<t||	ƒ tjt jj| dfd�d%d	d
�}| 	|j| ¡ t}
d}tj|
|d��& tjt jj| dfd�dd|d"�}W 5 Q R X | 	|j| ¡ d S )&NiÞ¬ r   r   r   r8   r9   r   )rB   r   Únr0   ©rB   r   r   r   r   r   r   )r   rB   )r   r   rB   zVARMA\(p,q\) models is notr<   ©rB   rB   )rB   r   rB   gš™™™™™¹?çš™™™™™É¿r/   r>   gš™™™™™¹¿©r   r   r   rB   )r   r   T)r   r1   Zmeasurement_errorr@   )r   r1   r3   é   éþÿÿÿ)r   r   )r   r   r    r!   r%   r   ÚVARMAXr
   r"   r#   r&   r   r	   rH   rI   rN   r$   ÚravelrK   r4   rO   Ústart_params)r'   r(   r3   rP   rQ   rR   rS   rT   r*   r+   rU   r=   Ú
transitionr)   Ústater5   r,   r,   r-   Útest_varmaxL  sÞ    



ÿ
ÿ

ÿ
ÿ

ÿ
ÿ

þ
þ

ÿ
þ
 ÿ

ÿ
ýÿ ÿ
$
  ÿ  þre   c               	   C   s"  t j d¡ d} t jj| d�}t jj| dfd�}t  | ¡}t  | ¡}d|d< t  | ¡}d|dd …< tjddggddd	�}tjdgd
d�}|j	ddddddg| t j
||f |t  |j¡d�}|j	dddg| |t  |j¡d�}	t|d d …df d|	 ƒ t|d d …df d|	 ƒ tjt  | df¡dd|d�}tjdgd
d�}|j	ddddddddg| t j
||f |t  |j¡d�}|j	dddg| |t  |j¡d�}	t|d d …df d|	 d|d d …df   ƒ t|d d …df d|	 d|d d …df   ƒ tjt jj| dfd�dd|ddd�}
|
 	|
j| ¡ d S )Ni+n r   r   r   r8   r9   r   rB   ©Ú	k_factorsÚfactor_orderrZ   r   gÍÌÌÌÌÌì¿çš™™™™™é?r   r   r   r@   r   ©rg   rh   r3   r^   r_   é   T)rg   rh   r3   Zerror_orderZ	error_var)r   r   r    r!   r%   r   ÚDynamicFactorr
   r"   r#   rK   r&   r   rb   )r'   r(   r3   rP   rQ   rR   rS   rT   r*   r+   r)   r,   r,   r-   Útest_dynamic_factor¾  sX    



ý
ÿ ÿ
ý
ÿ..   þrm   c            	   	   C   s  t j d¡ d} t jj| d�}t  | ¡}t  | ¡}d|d< t  | ¡}d|dd …< tjdgdd	�}|j dgdgg¡ |j	d
dg| |d�}t
|dd
t  | ¡  ƒ t dgd¡}|j dgdgg¡ |j	ddg| ||d�}t
|d| | ƒ t  d
dg¡}tjddggddd�}| ddgt  ddg¡¡ |j	t j| ¡ dddf | t j||f t j||f d�}t
|t jdd
t  | ¡  ddt  | ¡  f ƒ tjddggddd�}| dgdgg¡ |j	ddddd
g| t j||f |d�}dd
t  | ¡  }t
|t jd| d| f ƒ d S )Nr7   r   r   r   r8   r9   r   r   r   r   r   )r   r?   )r;   r   r   r]   rY   r0   rf   ri   )r   r   r    r!   r%   r
   r"   ÚssmZinitialize_knownr#   r   rJ   r   rG   Zdiagr   r`   r$   ra   rK   r   rl   )	r'   r(   rP   rQ   rR   r)   r*   rc   Útmpr,   r,   r-   Útest_known_initializationë  sH    


ÿþÿþrp   c                  C   s^   d} t jdgddd�}| ddg| ¡}t|t | ¡ƒ | ddg| ¡}t|t | ¡d ƒ d S )Nr   r   )r   r   r   r/   r0   r   r>   )r
   r"   r#   r   r   Zones)Zn_simulationsr)   r*   r,   r,   r-   Útest_sequential_simulate"  s    rq   c            
      C   sÈ   t  dd¡} t | ¡}| ddg¡}d}t  ||jf¡}t  ||jf¡}|jd }t	|dƒ |j
|d|||d	�}ddt  d|d ¡  }t	||ƒ |j
|j|d|||d	�}	t	|	|ƒ t	|| |¡ƒ d S )
Nr   rE   r   r   r>   ©.éÿÿÿÿr^   Úend©Úanchorr;   r   r   )r   rJ   r
   r"   Úfilterr%   Úk_endogr&   Úpredicted_stater   r#   ÚparamsÚforecast©
Úendogr)   ÚresÚnsimulationsr;   r   r   r*   r+   Ú
mod_actualr,   r,   r-   Ú(test_sarimax_end_time_invariant_noshocks0  s2    


ý
  ü
r�   c            
      C   sÔ   t  t  dd¡¡} tj| ddd�}| ddg¡}d}t  ||jf¡}t  ||jf¡}|j	d	 }t
|d
ƒ |j|d|||d�}ddt  d|d ¡  }t
||ƒ |j|j|d|||d�}	t
|	|ƒ t
|| |¡ƒ d S )Nr   rE   ©r   r   r   T©r   Úsimple_differencingr   r   r>   rr   r^   rt   ru   r   )r   ÚcumsumrJ   r
   r"   rw   r%   rx   r&   ry   r   r#   rz   r{   r|   r,   r,   r-   Ú<test_sarimax_simple_differencing_end_time_invariant_noshocksT  s2    

ý
  ü
r†   c                 C   sÂ   t  dd¡}t |¡}| ddg¡}d}t jj|d�}t jj|d�}|jd d…df }|j|d|||d	�}t	dgdd
gt j
||f ƒd d… | }	t||	ƒ |j|j|d|||d	�}
t|
|	ƒ d S )Nr   rE   r   r   r>   r   rs   rt   ru   r   )r   rJ   r
   r"   rw   r   r!   ry   r#   r   r$   r   rz   ©Úreset_randomstater}   r)   r~   r   r;   r   r   r*   r+   r€   r,   r,   r-   Ú"test_sarimax_time_invariant_shocksy  s4    
ý"ÿÿ
  ür‰   c            
      C   sÎ   t  t  dd¡¡} tj| ddd�}| ddg¡}d}t jj|d	�}t jj|d	�}|jd d
…df }|j	|d|||d�}t
d
gd
dgt j||f ƒd d… | }t||ƒ |j	|j|d|||d�}	t|	|ƒ d S )Nr   rE   r‚   Trƒ   r   r   r>   r   r   rs   rt   ru   r   )r   r…   rJ   r
   r"   rw   r   r!   ry   r#   r   r$   r   rz   r|   r,   r,   r-   Ú:test_sarimax_simple_differencing_end_time_invariant_shocks™  s4    ý"ÿÿ
  ürŠ   c            
   	   C   sÚ   t  dd¡} tj| dd�}| dddg¡}d}t  ||jf¡}t  ||jf¡}|jd }t	|d	ƒ |j
|d
|||d�}tdgddgt jd	t  dd¡f ƒ}t	||ƒ |j
|j|d
|||d�}	t	|	|ƒ t	|| |¡ƒ d S )Nr   rE   Út©r1   r   r   r>   rr   é   rt   ru   r\   é   )r   rJ   r
   r"   rw   r%   rx   r&   ry   r   r#   r   r$   rz   r{   r|   r,   r,   r-   Ú(test_sarimax_time_varying_trend_noshocksº  s2    

ý$
  ü
r�   c            
   	   C   sä   t  t  dd¡¡} tj| dddd�}| dddg¡}d	}t  ||jf¡}t  ||jf¡}|j	d
 }t
|dƒ |j|d|||d�}tdgddgt jdt  dd¡f ƒ}t
||ƒ |j|j|d|||d�}	t
|	|ƒ t
|| |¡ƒ d S )Nr   rE   r‚   r‹   T©r   r1   r„   r   r   r>   rr   r�   rt   ru   r   r\   rŽ   )r   r…   rJ   r
   r"   rw   r%   rx   r&   ry   r   r#   r   r$   rz   r{   r|   r,   r,   r-   Ú<test_sarimax_simple_differencing_time_varying_trend_noshocksÞ  s6    
ÿ

ý$
  ü
r‘   c                 C   sØ   t  dd¡}tj|dd�}| dddg¡}d}t jj|d�}t jj|d�}|jd d…d	f }|j|d
|||d�}t j	||t  dd¡ f }	t
dgddg|	ƒd d	… | }
t||
ƒ |j|j|d
|||d�}t||
ƒ d S )Nr   rE   r‹   rŒ   r   r   r>   r   rs   rt   ru   é   r\   ©r   rJ   r
   r"   rw   r   r!   ry   r#   r$   r   r   rz   ©rˆ   r}   r)   r~   r   r;   r   r   r*   Úxr+   r€   r,   r,   r-   Ú&test_sarimax_time_varying_trend_shocks  s0    ý
  ür–   c                 C   sì   t  t  dd¡¡}tj|dddd�}| dddg¡}d	}t jj|d
�}t jj|d
�}|jd d…df }t	|dƒ |j
|d|||d�}t j||t  dd¡ f }	tdgddg|	ƒd d… | }
t	||
ƒ |j
|j|d|||d�}t	||
ƒ d S )Nr   rE   r‚   r‹   Tr�   r   r   r>   r   r   rs   r�   rt   ru   r’   r\   )r   r…   rJ   r
   r"   rw   r   r!   ry   r   r#   r$   r   rz   r”   r,   r,   r-   Ú:test_sarimax_simple_differencing_time_varying_trend_shocks#  s6    
ÿ
ý
  ür—   c               	   C   s  t  dd¡} t  dd¡d }tj| |d d… d�}| dddg¡}d}t  ||jf¡}t  ||jf¡}|jd	 }|j	||dd … d
|||d�}t
dgddgt j|dgd f ƒ|dd …  }	t||	ƒ |j	|j||dd … d
|||d�}
t|
|	ƒ t||j||dd … d�ƒ d S )Nr   rE   r’   rB   r>   ©r3   r   r   rr   rt   ©r3   rv   r;   r   r   r\   r   é	   )r   rJ   r
   r"   rw   r%   rx   r&   ry   r#   r   r$   r   rz   r{   ©r}   r3   r)   r~   r   r;   r   r   r*   r+   r€   r,   r,   r-   Ú'test_sarimax_time_varying_exog_noshocksF  s8    
ý 
ÿ
  
 ü
rœ   c               	   C   s(  t  t  dd¡¡} t  t  dd¡d ¡}tj| d|d d… dd�}| dd	dg¡}d
}t  ||jf¡}t  ||jf¡}|j	d }|j
||dd … d|||d�}tdgddgt j|dgd f ƒt  |¡d
d …  }	t||	ƒ |j
|j||dd … d|||d�}
t|
|	ƒ t||j||dd … d�ƒ d S )Nr   rE   r’   rB   r‚   T©r   r3   r„   r   r   r>   rr   rt   r™   r   r\   rš   r˜   )r   r…   rJ   r
   r"   rw   r%   rx   r&   ry   r#   r   r$   Údiffr   rz   r{   r›   r,   r,   r-   Ú;test_sarimax_simple_differencing_time_varying_exog_noshocksl  s<    ÿ
ý ÿ
  
 ü
rŸ   c              	   C   s  t  dd¡}t  dd¡d }tj||d d… d�}| dddg¡}d}t jj|d	�}t jj|d	�}|jd d…d
f }|j||dd … d|||d�}	t j	||d d
… f }
t
dgddg|
ƒ|dd …  | }t|	|ƒ |j|j||dd … d|||d�}t||ƒ d S )Nr   rE   r’   rB   r>   r˜   r   r   r   rs   rt   r™   r\   r“   ©rˆ   r}   r3   r)   r~   r   r;   r   r   r*   r•   r+   r€   r,   r,   r-   Ú%test_sarimax_time_varying_exog_shocks“  s4    ý"
  
 ür¡   c              	   C   s  t  t  dd¡¡}t  t  dd¡d ¡}tj|d|d d… dd�}| dd	dg¡}d
}t jj|d�}t jj|d�}|jd d…df }|j	||dd … d|||d�}	t j
||d d… f }
tdgddg|
ƒt  |¡d
d …  | }t|	|ƒ |j	|j||dd … d|||d�}t||ƒ d S )Nr   rE   r’   rB   r‚   Tr�   r   r   r>   r   r   rs   rt   r™   r\   )r   r…   rJ   r
   r"   rw   r   r!   ry   r#   r$   r   rž   r   rz   r    r,   r,   r-   Ú9test_sarimax_simple_differencing_time_varying_exog_shocks³  s<    ÿý"ÿ
  
 ür¢   c            
      C   s°   t  dd¡} t | d¡}| ddg¡}d}t  ||jf¡}t  ||jf¡}|jd }|j	|d|||d�}|d	 }t
||ƒ |j	|j|d|||d�}	t
|	|ƒ t
|| |¡ƒ d S )
Nr   rE   Úllevelr   r>   rr   rt   ru   r   ©r   rJ   r   rG   rw   r%   rx   r&   ry   r#   r   rz   r{   r|   r,   r,   r-   Ú6test_unobserved_components_end_time_invariant_noshocks×  s0    
ý
  ü
r¥   c                 C   sÀ   t  dd¡}t |d¡}| ddg¡}d}t jj|d�}t jj|d�}|jd d…df }|j|d|||d	�}|t  	t j
d
|d d… f ¡ | }	t||	ƒ |j|j|d|||d	�}
t|
|	ƒ d S )Nr   rE   r£   r   r>   r   rs   rt   ru   r   ©r   rJ   r   rG   rw   r   r!   ry   r#   r…   r$   r   rz   r‡   r,   r,   r-   Ú4test_unobserved_components_end_time_invariant_shocksû  s2    ýÿ
  ür§   c               	   C   sú   t  dd¡} t  dd¡d }tj| d|d d… d�}| dddg¡}d}t  ||jf¡}t  ||jf¡}|jd	 }|j	||dd … d
|||d�}|d |dd …  }	t
||	ƒ |j	|j||dd … d
|||d�}
t
|
|	ƒ t
||j||dd … d�ƒ d S )Nr   rE   r’   rB   r£   r>   r˜   r   rr   rt   r™   r   r¤   r›   r,   r,   r-   Ú9test_unobserved_components_end_time_varying_exog_noshocks  s4    
ý
  
 ü
r¨   c              	   C   sþ   t  dd¡}t  dd¡d }tj|d|d d… d�}| dddg¡}d}t jj|d	�}t jj|d	�}|jd d…d
f }|j||dd … d|||d�}	|t  	t j
d|d d
… f ¡ | |dd …  }
t|	|
ƒ |j|j||dd … d|||d�}t||
ƒ d S )Nr   rE   r’   rB   r£   r>   r˜   r   r   rs   rt   r™   r   r¦   )rˆ   r}   r3   r)   r~   r   r;   r   r   r*   r+   r€   r,   r,   r-   Ú7test_unobserved_components_end_time_varying_exog_shocks?  s:    ýÿ
ÿ
  
 ür©   c            
   	   C   sä   t  dd¡ dd¡} tj| dd�}| dddddddg¡}d}t  ||jf¡}t  ||jf¡}|j	d d …d	f }|j
|d
|||d�}|d d …d f dt  d¡  j}t||ƒ |j
|j|d
|||d�}	t|	|ƒ t|| |¡ƒ d S )Nr   r’   r>   rB   rY   rŒ   r   r   rs   rt   ru   )r   rJ   Úreshaper   r`   rw   r%   rx   r&   ry   r#   rW   r   rz   r{   r|   r,   r,   r-   Ú'test_varmax_end_time_invariant_noshocks_  s0    ý 
  ü
r«   c              	   C   s  t  dd¡ dd¡}tj|dd�}| dddddddg¡}d}t jj||jfd	�}t jj||j	fd	�}|j
d d …d
f }|j|d|||d�}t  ||jf¡}	||	d< td|ƒD ]$}
|	|
d   ¡ ||
d   |	|
< q®|	| }	t||	ƒ |j|j|d|||d�}t||	ƒ d S )Nr   r’   r>   rB   rY   rŒ   r   r   r   rs   rt   ru   r   )r   rJ   rª   r   r`   rw   r   r!   rx   r&   ry   r#   r%   r4   Úsumr   rz   ©rˆ   r}   r)   r~   r   r;   r   r   r*   r+   r5   r€   r,   r,   r-   Ú%test_varmax_end_time_invariant_shocks�  s6    ý"
  ür®   c                  C   sR  t  dd¡ dd¡} tj| dd�}| dddddddddddg¡}d}t  ||jf¡}t  ||jf¡}|j	d dd	�� |j
d d …d
f  ¡ }W 5 Q R X |j|d|||d�}t  ||jf¡}||d< dt  dd¡ }	td|ƒD ],}
||
d   ¡ |	|
  ||
d   ||
< qÜ|| }t||ƒ |j|j|d|||d�}t||ƒ t|| |¡ƒ d S )Nr   r’   r>   rB   r2   rŒ   r   r   ©r3   Úout_of_samplers   rt   ru   r   rE   )r   rJ   rª   r   r`   rw   r%   rx   r&   Ú_set_final_predicted_statery   Úcopyr#   r4   r¬   r   rz   r{   )r}   r)   r~   r   r;   r   r   r*   r+   Ú	tmp_trendr5   r€   r,   r,   r-   Ú+test_varmax_end_time_varying_trend_noshocks£  s<      ý*
  ü
r´   c                 C   sJ  t  dd¡ dd¡}tj|dd�}| dddddddddddg¡}d}t jj||jfd	�}t jj||j	fd	�}|j
d dd
�� |jd d …df  ¡ }W 5 Q R X |j|d|||d�}t  ||jf¡}	||	d< dt  dd¡ }
td|ƒD ],}|	|d   ¡ |
|  ||d   |	|< qä|	| }	t||	ƒ |j|j|d|||d�}t||	ƒ d S )Nr   r’   r>   rB   r2   rŒ   r   r   r   r¯   rs   rt   ru   r   rE   )r   rJ   rª   r   r`   rw   r   r!   rx   r&   r±   ry   r²   r#   r%   r4   r¬   r   rz   )rˆ   r}   r)   r~   r   r;   r   r   r*   r+   r³   r5   r€   r,   r,   r-   Ú)test_varmax_end_time_varying_trend_shocksÏ  s:      ý*
  ürµ   c                  C   s”  t  dd¡ dd¡} t  dd¡d }tj| d|d d… d�}| dddddddddg	¡}d}t  ||jf¡}t  ||jf¡}|j	|dd … dd	�}|j
|dd
�� |jd d …df  ¡ }W 5 Q R X |j||dd … d|||d�}	t  ||jf¡}
||
d< td|ƒD ]2}|
|d   ¡ |d|   ||d   |
|< �q|
| }
t|	|
ƒ |j|j||dd … d|||d�}t||
ƒ t|	|j||dd … d�ƒ d S )Nr   r’   r>   rB   rY   ©r1   r3   r   r   ©r°   r¯   rs   rt   r™   r   r˜   )r   rJ   rª   r   r`   rw   r%   rx   r&   Ú_validate_out_of_sample_exogr±   ry   r²   r#   r4   r¬   r   rz   r{   )r}   r3   r)   r~   r   r;   r   Útmp_exogr   r*   r+   r5   r€   r,   r,   r-   Ú*test_varmax_end_time_varying_exog_noshocksö  s@     ý0
  
 ü
rº   c                 C   sò  t  dd¡ dd¡}t  dd¡d }tj|d d… d|d d… d�}| d	d	d	d	d	d	d	d
d	g	¡}tj|d|d d… d�}| d	d	d	d	d	d	d	d
d	g	¡}d}t jj||jfd�}t jj||j	fd�}	|j
|dd … dd�}
|j|
dd�� |jd d …df  ¡ }W 5 Q R X |j||dd … d||	|d�}|j||dd … d||	|jd d …df d�}t  ||jf¡}||d< td|ƒD ]2}||d   ¡ |d|   |	|d   ||< �qr|| }t||ƒ t||ƒ |j|j||dd … d||	|d�}t||ƒ d S )Nr   é   rE   rB   r’   r>   rY   r¶   r   r   r   r·   r¯   rs   rt   r™   r_   r   )r   rJ   rª   r   r`   rw   r   r!   rx   r&   r¸   r±   ry   r²   r#   r%   r4   r¬   r   rz   )rˆ   r}   r3   r)   r~   rT   Úres2r   r;   r   r¹   r   r*   Úactual2r+   r5   r€   r,   r,   r-   Ú(test_varmax_end_time_varying_exog_shocks#  sN      ýý0

  
 ür¾   c                  C   s  t  dd¡ dd¡} tj| ddd�}d|j_| dddddg¡}d}t  ||j	f¡}t  ||j
f¡}|jd }|j|d	|||d
�}t  ||j	f¡}||d< td|ƒD ] }	||	d  ||	d   ||	< q¤|| }t||ƒ |j|j|d	|||d
�}
t|
|ƒ t|| |¡ƒ d S )Nr   r’   r>   rB   rf   Tr   rr   rt   ru   r   ©r   rJ   rª   r   rl   rn   Úfilter_univariaterw   r%   rx   r&   ry   r#   r4   r   rz   r{   )r}   r)   r~   r   r;   r   r   r*   r+   r5   r€   r,   r,   r-   Ú/test_dynamic_factor_end_time_invariant_noshocksS  s:    
ý
  ü
rÁ   c              	   C   s
  t  dd¡ dd¡}tj|ddd�}d|j_| dddddddg¡}d}t jj	||j
fd�}t jj	||jfd�}|jd	 }|j|d
|||d�}t  ||j
f¡}	||	d< td|ƒD ] }
|	|
d  ||
d   |	|
< q°|	| }	t||	ƒ |j|j|d
|||d�}t||	ƒ d S )Nr   r’   r>   rB   rf   Tr   r   rr   rt   ru   r   ©r   rJ   rª   r   rl   rn   rÀ   rw   r   r!   rx   r&   ry   r#   r%   r4   r   rz   r­   r,   r,   r-   Ú-test_dynamic_factor_end_time_invariant_shocks|  s8    
ý
  ürÃ   c               	   C   s\  t  dd¡ dd¡} t  dd¡d }tj| dd|d d… d�}d|j_| dddddddg¡}d}t  ||j	f¡}t  ||j
f¡}|jd }|j||dd … d	|||d
�}t  ||j	f¡}	||	d< td|ƒD ] }
|	|
d  ||
d   |	|
< qÌ|	| |dd …d f  }	t||	ƒ |j|j||dd … d	|||d
�}t||	ƒ t||j||dd … d�ƒ d S )Nr   r’   r>   rB   rj   Tr   rr   rt   r™   r   r˜   r¿   )r}   r3   r)   r~   r   r;   r   r   r*   r+   r5   r€   r,   r,   r-   Ú2test_dynamic_factor_end_time_varying_exog_noshocks   sB    

ÿ
ý
  
 ü
rÄ   c              	   C   s´  t  dd¡ dd¡}t  dd¡d }tj|d d… dd|d d… d�}d|j_| d	d	d	d	d	d	d	g¡}tj|dd|d d… d�}d|j_| d	d	d	d	d	d	d	g¡}d}t jj	||j
fd
�}t jj	||jfd
�}	|jd }
|j||dd … d||	|
d�}|j||dd … d||	|
d�}t  ||j
f¡}|
|d< td|ƒD ]"}||d  |	|d   ||< �q4|| |dd …d f  }t||ƒ t||ƒ |j|j||dd … d||	|
d�}t||ƒ d S )Nr   r»   rE   rB   r’   r>   rj   Tr   r   rr   rt   r™   rs   r   rÂ   )rˆ   r}   r3   r)   r~   rT   r¼   r   r;   r   r   r*   r½   r+   r5   r€   r,   r,   r-   Ú0test_dynamic_factor_end_time_varying_exog_shocksÌ  sb    
   
ÿ   
ÿ
ýý 

  
 ürÅ   c                  C   s¸   t  t d¡¡} t | ¡}| ddg¡}|jdt d¡t d¡d�}t  ddg¡}t||ƒ |jddt d¡t d¡d�}t  	dd¡}t jddg|d	�}t||ƒ t
|j |j¡ƒ d S )
NrB   r   r   r   r   r   ©rv   r   r   é   ©Úindex)ÚpdÚSeriesr   r%   r
   r"   rw   r#   r   Ú
RangeIndexr   rÉ   Úequals©r}   r)   r~   r*   r+   Úixr,   r,   r-   Ú!test_pandas_univariate_rangeindexý  s    
ÿ
ÿ
rÐ   c                  C   s  t  t d¡¡} t | ¡}| ddg¡}|jdt d¡t d¡dd�}t j 	dgddgg¡}t j
t d¡|d	�}t||ƒ t|j |j¡ƒ |jddt d¡t d¡dd
�}t  dd¡}t j 	dgddgg¡}t j
t d¡||d�}t||ƒ t|j |j¡ƒ t|j |j¡ƒ d S )NrB   r   r   r   ©r   r   ÚrepetitionsÚyr   r[   ©Úcolumns©rv   r   r   rÒ   rÇ   ©rÉ   rÕ   )rÊ   rË   r   r%   r
   r"   rw   r#   Ú
MultiIndexÚfrom_productÚ	DataFramer   r   rÕ   rÍ   rÌ   rÉ   ©r}   r)   r~   r*   rÕ   r+   rÏ   r,   r,   r-   Ú-test_pandas_univariate_rangeindex_repetitions  s*    
 ÿ
 ÿ
rÜ   c                  C   sä   t jdddd�} t jt d¡| d�}t |¡}| ddg¡}|jdt d¡t d¡d	�}t jd
ddd�} t jddg| d�}t	||ƒ t
|j |j¡ƒ |jddt d¡t d¡d�}t jdddd�} t jddg| d�}t	||ƒ d S )NÚ2000rB   ÚM©ÚstartZperiodsÚfreqrÈ   r   r   r   r   ú2000-01r   rÆ   ú2000-03©rÊ   Ú
date_rangerË   r   r%   r
   r"   rw   r#   r   r   rÉ   rÍ   ©rÏ   r}   r)   r~   r*   r+   r,   r,   r-   Ú test_pandas_univariate_dateindex+  s"    
ÿ
ÿrç   c                  C   s@  t jdddd�} t jt d¡| d�}t |¡}| ddg¡}|jdt d¡t d¡dd	�}t jd
ddd�} t j	 
dgddgg¡}t jt d¡| |d�}t||ƒ t|j |j¡ƒ |jddt d¡t d¡dd�}t jdddd�} t j	 
dgddgg¡}t jt d¡| |d�}t||ƒ t|j |j¡ƒ t|j |j¡ƒ d S )NrÝ   rB   rÞ   rß   rÈ   r   r   r   rÑ   râ   rÓ   r   r[   r×   rÖ   rã   )rÊ   rå   rË   r   r%   r
   r"   rw   r#   rØ   rÙ   rÚ   r   r   rÕ   rÍ   rÉ   ©rÏ   r}   r)   r~   r*   rÕ   r+   r,   r,   r-   Ú,test_pandas_univariate_dateindex_repetitionsB  s.    
 ÿ
 ÿ
ré   c               	   C   sÊ   t  t d¡¡} tj| dd�}| dddddddg¡}|jdt d¡t d¡d	�}t  t d¡¡}t||ƒ |jddt d¡t d¡d
�}t  	dd¡}t jt d¡|d�}t||ƒ t
|j |j¡ƒ d S )Nr[   rY   rŒ   r   ç        r   r   rB   r   rÆ   rÇ   rÈ   )rÊ   rÚ   r   r%   r   r`   rw   r#   r   rÌ   r   rÉ   rÍ   rÎ   r,   r,   r-   Ú#test_pandas_multivariate_rangeindex]  s    ÿ
ÿ
rë   c               	   C   s0  t jt d¡ddgd�} tj| dd�}| dddd	d
dd
g¡}|jdt d¡t d¡dd�}t j 	ddgddgg¡}t jt d¡|d�}t
||ƒ t|j |j¡ƒ |jddt d¡t d¡dd�}t  dd¡}t j 	ddgddgg¡}t jt d¡||d�}t
||ƒ t|j |j¡ƒ t|j |j¡ƒ d S )Nr[   Úy1Úy2rÔ   rY   rŒ   r   rê   r   r   rB   rÑ   r   r   ©rB   rÇ   rÖ   rÇ   r×   )rÊ   rÚ   r   r%   r   r`   rw   r#   rØ   rÙ   r   r   rÕ   rÍ   rÌ   rÉ   rÛ   r,   r,   r-   Ú/test_pandas_multivariate_rangeindex_repetitionsr  s*     ÿ
 ÿ
rï   c               	   C   sæ   t jdddd�} t jt d¡| d�}tj|dd�}| d	d
d
ddd
dg¡}|jdt d¡t d¡d�}t jt d¡| d�}t	||ƒ |jddt d¡t d¡d�}t jdddd�} t jt d¡| d�}t	||ƒ t
|j |j¡ƒ d S )NrÝ   rB   rÞ   rß   r[   rÈ   rY   rŒ   r   rê   r   r   r   rÆ   rã   )rÊ   rå   rÚ   r   r%   r   r`   rw   r#   r   r   rÉ   rÍ   ræ   r,   r,   r-   Ú"test_pandas_multivariate_dateindex‹  s     ÿ
ÿ
rð   c               	   C   sH  t jdddd�} t jt d¡ddg| d�}tj|d	d
�}| dddddddg¡}|jdt d¡t d¡dd�}t j	 
ddgddgg¡}t jt d¡|| d�}t||ƒ t|j |j¡ƒ |jddt d¡t d¡dd�}t jdddd�} t j	 
ddgddgg¡}t jt d¡| |d�}t||ƒ t|j |j¡ƒ t|j |j¡ƒ d S )NrÝ   rB   rÞ   rß   r[   rì   rí   )rÕ   rÉ   rY   rŒ   r   rê   r   r   rÑ   r   r   rî   rÖ   rã   r×   )rÊ   rå   rÚ   r   r%   r   r`   rw   r#   rØ   rÙ   r   r   rÕ   rÍ   rÉ   rè   r,   r,   r-   Ú.test_pandas_multivariate_dateindex_repetitions¡  s,     ÿ
 ÿ
rñ   c                  C   sÖ   t jdddd�} t jt d¡| d�}t |¡}| ddg¡}|jddt d¡t d¡d	�}|jd| d t d¡t d¡d	�}t	||ƒ t
|j |j¡ƒ |jdd
t d¡t d¡d	�}t	||ƒ t
|j |j¡ƒ d S )NrÝ   rB   rÞ   rß   rÈ   r   r   r   rÆ   rs   rä   )rÏ   r}   r)   r~   r+   r*   r,   r,   r-   Útest_pandas_anchor»  s"    
ÿÿ
ÿ
rò   c                 C   s   t t d¡ƒ}| g d¡ d S )N©r>   rB   r>   )r   r   r%   r#   ©rˆ   r)   r,   r,   r-   Útest_time_varyingÒ  s    rõ   c                 C   sü   t t d¡ƒ}t |j|j|jf¡|d< t |j¡|d< d|dd d …f< |dd d …d d …df d |d< |dd d …d d …df |d< t|d j|jj	|jj	fƒ t|d j|j
|jj	fƒ |jg dt |j
¡d	�}t|d d
… |dd d …d d
…f jƒ d S )Nró   Úobs_cov)rö   .rš   r   Ústate_interceptÚ	state_covÚ	selectionr>   )r   rš   Úobs_intercept)r   r   r%   rx   r'   Úeyer   Úshapern   Úk_posdefr&   r#   r   rW   ©rˆ   r)   Úsimr,   r,   r-   Útest_time_varying_obs_covØ  s     r   c                 C   sÜ   t t d¡ƒ}|dd d …d d …df d |d< |dd d …d d …df |d< d|dd d …f< t |jj|jj|jf¡|d< t |jj¡|d< t|d j|j	|j	fƒ t|d j|j
|jjfƒ | g d¡}t||d	 jƒ d S )
Nró   rö   r   rù   r÷   rø   )rø   .rs   r>   rú   )r   r   r%   rn   rý   r'   rû   r   rü   rx   r&   r#   r   rW   rþ   r,   r,   r-   Útest_time_varying_state_covæ  s     r  c                 C   sŠ   t t d¡ƒ}|dd d …d d …df |d< |dd d …d d …df |d< t|d j|j|jfƒ t|d j|jj|jjfƒ | g d¡ d S )Nró   rö   r   rø   r>   )	r   r   r%   r   rü   rx   rn   rý   r#   rô   r,   r,   r-   Útest_time_varying_selectionó  s    r  )FÚ__doc__Únumpyr   ZpandasrÊ   Znumpy.testingr   r   r   rH   Zscipy.signalr   Ztest_impulse_responsesr   Zstatsmodels.tools.sm_exceptionsr   r	   Zstatsmodels.tsa.statespacer
   r   r   r   r.   r6   rX   re   rm   rp   rq   r�   r†   r‰   rŠ   r�   r‘   r–   r—   rœ   rŸ   r¡   r¢   r¥   r§   r¨   r©   r«   r®   r´   rµ   rº   r¾   rÁ   rÃ   rÄ   rÅ   rÐ   rÜ   rç   ré   rë   rï   rð   rñ   rò   ÚmarkZsmokerõ   r   r  r  r,   r,   r,   r-   Ú<module>   sr   d 6r-7$% !$&#&' $$% "",'-0)$,1
