U
    Kvf5                     @   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   X/tmp/pip-unpacked-wheel-2v6byqio/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       .A333333?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    eAr3   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__Z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*