U
    Ãmœdô5  ã                   @   s�   d Z ddlZddlmZ ddlmZmZ ddlm	Z	 ddl
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S )zG
Tests for initialization

Author: Chad Fulton
License: Simplified-BSD
é    N)Úsolve_discrete_lyapunov)ÚsarimaxÚvarmax)ÚInitialization)Úassert_allcloseÚassert_raisesc           	      C   s”   || d�\}}}t ||ƒ t ||ƒ t ||ƒ | j ¡  |j| jjd� | jj}| |¡ t t |j	¡|ƒ t t |j
¡|ƒ t t |j¡|ƒ d S )N©Úmodel)Úprefix)r   ZssmZ_initialize_representationZ_initialize_initializationr
   Ú_statespaceZ
initializeÚnpÚarrayZinitial_stateZinitial_diffuse_state_covZinitial_state_cov)	ÚmodÚinitZa_trueZ	Pinf_trueZ
Pstar_trueÚaÚPinfÚPstarr   © r   úm/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tsa/statespace/tests/test_initialization.pyÚcheck_initialization   s    




r   c               	   C   s¦  t  d¡} tj| dd�}t|jddgd�}t||dgt  dg¡t  dg¡ƒ t|jdt  dg¡d	�}t||dgt  dg¡t  dg¡ƒ t|jddgt  dg¡d
�}t||dgt  dg¡t  dg¡ƒ t  d¡} tj| dd�}t|jdddgd�}t||ddgt  ddg¡t  ddg¡ƒ t|jdt  ddg¡d	�}t||ddgt  ddg¡t  ddg¡ƒ t|jdddgt  ddg¡d
�}t||ddgt  ddg¡t  ddg¡ƒ d S )Né
   ©é   r   r   ©ÚorderÚknownç      ø?©Úconstantr   r   ©Ústationary_cov©r   r    ©é   r   r   çš™™™™™É¿çÍÌÌÌÌÌ@)r   Úzerosr   ÚSARIMAXr   Úk_statesr   Údiag©Úendogr   r   r   r   r   Útest_global_known"   s8    
""
ÿ"
ÿÿÿÿÿr,   c               	   C   s�   t  d¡} tj| dd�}t|jdƒ}t||dgt  d¡t  dg¡ƒ t  d¡} tj| dd�}t|jdƒ}t||ddgt  d¡t  ddg¡ƒ d S )	Nr   r   r   Údiffuser   r   r"   r#   )	r   r&   r   r'   r   r(   r   Úeyer)   r*   r   r   r   Útest_global_diffuseL   s    
 
r/   c                  C   sv  t  d¡} tj| dd�}t|jdƒ}t||dgt  dg¡t  d¡d ƒ t|jddgd	�}t||dgt  dg¡t  d¡d ƒ t|jdd
d�}t||dgt  dg¡t  d¡d
 ƒ t  d¡} tj| dd�}t|jdƒ}t||ddgt  ddg¡t  d¡d ƒ t|jdddgd	�}t||ddgt  ddg¡t  d¡d ƒ t|jdd
d�}t||ddgt  ddg¡t  d¡d
 ƒ d S )Nr   r   r   Úapproximate_diffuser   r   ç    €„.Aç333333ó?r   g    _ B©Zapproximate_diffuse_variancer"   r#   r$   )	r   r&   r   r'   r   r(   r   r)   r.   r*   r   r   r   Útest_global_approximate_diffuse^   s0    
$$ÿ$
(ÿÿÿr4   c            
   	   C   sæ  t  d¡} tj| ddd�}d}d}d}| t j|||f ¡ t|jdƒ}t||dgt  	dg¡t  
d	¡| d	|d
   ƒ d}d}d}| t j|||f ¡ t|jdƒ}t|||d	|  gt  	dg¡t  
d	¡| d	|d
   ƒ t  d¡} tj| ddd�}d}ddg}d}| t j|||f ¡ t|jdƒ}t  dd	gddgg¡}t  	|dg¡}t||ƒ}t||ddgt  	ddg¡|ƒ d}ddg}d}| t j|||f ¡ t|jdƒ}t j t  
d
¡| ¡ |dg¡}	t|||	t  	ddg¡|ƒ d S )Nr   r   Úc)r   Ztrendr   ç      à?ç       @Ú
stationaryr   r#   r2   r"   r$   )r   r&   r   r'   ÚupdateÚr_r   r(   r   r)   r.   r   r   ÚlinalgÚinvÚdot)
r+   r   Ú	interceptÚphiÚsigma2r   ÚTÚQÚdesired_covÚdesired_interceptr   r   r   Útest_global_stationary€   sP    
ÿÿ

ÿ
 ÿrE   c               
   C   s.  t  d¡} tj| dd�}ddg}d}| t j||f ¡ t|jƒ}|jddd	gd
� |jdddgd
� t	||d	dgt  
ddg¡t  
ddg¡ƒ | d¡ | dd¡ t	||d	dgt  
ddg¡t  
ddg¡ƒ | d¡ | dd¡ t	||d	dgt  
ddg¡t  
ddg¡ƒ | d¡ | dd¡ t	||d	dgt  
ddg¡t  
ddg¡ƒ t|jƒ}|jddt  
dg¡d� | dd¡ t	||ddgt  
ddg¡t  
ddg¡ƒ t|jƒ}|jddd	gt  
dg¡d� | dd¡ t	||d	dgt  
ddg¡t  
ddg¡ƒ t  d¡} tj| dd�}t|jƒ}|jddd	dgd
� | dd¡ t	||d	ddgt  
dddg¡t  
dddg¡ƒ t|jƒ}|jddt  
ddg¡d� | dd¡ t	||dddgt  
dddg¡t  
dddg¡ƒ t|jƒ}|jddd	dgt  
ddg¡d� | dd¡ t	||d	ddgt  
dddg¡t  
dddg¡ƒ d S )Nr   r"   r   r6   r$   r7   r   r   r2   r   r   r-   r0   r1   r8   r   r!   )é   r   r   ©r   r#   r#   r%   )r   r&   r   r'   r9   r:   r   r(   Úsetr   r)   Úunset)r+   r   r?   r@   r   r   r   r   Útest_mixed_basic´   sh    

ÿ
(
ÿ
(
(
(

ÿ
ÿ
ÿÿrJ   c               	   C   sD  t  d¡} tj| dd�}ddg}d}| t j||f ¡ t|jƒ}| dd¡ | d	d
¡ t  d¡}t  	ddgddgg¡}t  
|dg¡}t||ƒ|dd …dd …f< t||dddgt  
dddg¡|ƒ | ¡  | dd¡ | dd
¡ | dd¡ t  	dgg¡}t  
|g¡}t  
dt  t||ƒ¡dg¡}t||dddgt  
dddg¡|ƒ | ¡  | dd¡ | dd
¡ | dd
¡ d|d< t||dddgt  
dddg¡|ƒ t  d¡} tj| dd�}ddg}t  	ddgddgg¡}	t  	ddgddgg¡}
t  d¡}t j||	 ¡ t j |
¡| f }| |¡ t|jd
ƒ}t j t  d¡|	 |¡}t|	|
ƒ}t|||t  
ddg¡|ƒ | d d¡ t||ddgt  d¡t  
ddg¡ƒ | d ¡ | dd
¡ | dd
¡ ||d�\}}}|d d|	d   |d d|	d   g}t  
|
d d|	d d   |
d d|	d d   g¡}t|||t  
ddg¡|ƒ d S )Nr   )r#   r   r   r   r6   r$   r7   r   r-   )r   rF   r8   ©rF   rF   r   r#   r0   r1   ©r#   r#   )r   r#   )r   r   r   gš™™™™™¹¿çš™™™™™¹?gš™™™™™é?r2   gš™™™™™Ù¿gš™™™™™Ù?r   )r   r   )r   r   )r   r&   r   r'   r9   r:   r   r(   rH   r   r)   r   r   ÚclearZsqueezer   ZVARMAXZtril_indicesZravelr;   ZcholeskyZsolver.   rI   )r+   r   r?   r@   r   rC   rA   rB   r>   Z
transitionZcovZtrilÚparamsrD   r   r   r   r   r   r   Útest_mixed_stationaryÿ   s€    



ÿ"""

ÿ
ÿ
ÿ

ÿ$
ÿÿÿrP   c                  C   sˆ  t  d¡} tj| dd�}ddddddg}d}| t j||f ¡ td	ƒ}td
dƒ}tdddd�}| d|¡ | d
|¡ td	ƒ}tdddgdggd�}| d|¡ tddƒ}	| d|	¡ tddƒ}
| d
|
¡ tdƒ}| d|¡ | d|¡ t  d¡}t  ddgddgg¡}t  |dgddgg¡}t	||ƒ|d d
…d d
…f< d|d< d|d< d|d< t
||ddddddgt  ddddddg¡|ƒ d S )Nr   )é   r   r   r   r6   r$   rM   g        r7   rF   r#   r8   r   r0   g    eÍÍAr3   rG   r   r!   r   r-   rQ   )r   rF   )rF   rQ   )rQ   rQ   rL   rK   r1   )é   rR   )r   r&   r   r'   r9   r:   r   rH   r   r   r   r)   )r+   r   r?   r@   Zinit1_1Z	init1_1_1Z	init1_1_2Zinit1_2Z	init1_2_1Z	init1_2_2Z	init1_2_3r   rC   rA   rB   r   r   r   Útest_nestedF  sJ    

ÿ



ÿ
ÿþrS   c                  C   sb  t ttddƒ t ttddddgd� t ttddddgd� t ttddƒ t ttdddgd� t ttddd	gd� tdƒ} t t| jd
dƒ t t| jd
ƒ t t| jddƒ t t| jddƒ t t| jdƒ t t| jddƒ t t| jdƒ |  d d¡ t t| jddƒ |  ¡  |  dd¡ t t| jd dƒ |  ¡  t t| jdƒ tdƒ} t t| ƒ tddƒ} t t| ƒ d S )NrR   Ú r8   r   r#   r   r   r   r   éÿÿÿÿr-   Úx)r   r#   rF   )r   Ú
ValueErrorr   rH   rI   rN   )r   r   r   r   Útest_invalidp  s6    
ÿ

rX   )Ú__doc__Únumpyr   Zscipy.linalgr   Zstatsmodels.tsa.statespacer   r   Z)statsmodels.tsa.statespace.initializationr   Znumpy.testingr   r   r   r,   r/   r4   rE   rJ   rP   rS   rX   r   r   r   r   Ú<module>   s   *"4KG*