U
    Kvf                     @   s  d Z ddlZddl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ZddlmZmZ ddlmZ ddlmZ ejejeZejdd	ZeejeeZejdd
Zeeje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*d#d$ Z+d%d& Z,d'd( Z-d)d* Z.d+d, Z/d-d. Z0d/d0 Z1d1d2 Z2ej34d3d4d5d6gej34d7d8d9gd:d; Z5d<d= Z6d>d? Z7d@dA Z8dBdC Z9dS )DzF
Tests for VARMAX models

Author: Chad Fulton
License: Simplified-BSD
    N)assert_equalassert_allcloseassert_raises)varmaxsarimax)forg   )results_varmaxresultszresults_var_stata.csvzresults_varmax_stata.csvc                   @   sl   e Zd Z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dZdddZdd ZdS )CheckVARMAXz
    Test Vector Autoregression against Stata's `dfactor` code (Stata's
    `var` function uses OLS and not state space / MLE, so we cannot get
    equivalent log-likelihoods)
    c              	   C   s   t jddj t d | jjddd}d| j_d| j_| jj|jdddd	}d| j_d| j_t|j	| j
j	d
d W 5 Q R X d S )NTrecordalwaysd   F)maxiterdispnmi  )methodr   r   h㈵>Zrtol)warningscatch_warningssimplefiltermodelfitenforce_stationarityenforce_invertibilityparamsr   llfr
   )selfr
    r    P/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tsa/statespace/tests/test_varmax.pytest_mle%   s    
zCheckVARMAX.test_mlec                 C   s   | j }||j t|jt|jks*t|||j}t||j d|_	d|_
|||j}d|_	d|_
t||j d S )NFT)r   filterstart_paramslenparam_namesAssertionErrorZtransform_paramsZuntransform_paramsr   r   r   )r   r   actualr    r    r!   test_params4   s    

zCheckVARMAX.test_paramsc                    s   | j   | jjdkrtt| j jj }|j	j	j  t fddt
jD }t| j j| nt| j jd  jdkrt| j jj }|j	j	j  t fddt
jD }t| j j| nt| j jd  d S )Nr   c                    s2   g | ]*} d j |j  |d j  f qS Nr   k_endog.0iZcoefficientsr   r    r!   
<listcomp>Y   s
   
 z,CheckVARMAX.test_results.<locals>.<listcomp>c                    s2   g | ]*} d j |j  |d j  f qS r*   r+   r-   r0   r    r!   r1   g   s
   
 )r
   summaryr   k_arnparrayr   Z
_params_arreshaper,   ranger   Zcoefficient_matrices_varZk_maZ
_params_maZcoefficient_matrices_vma)r   Z	params_arZcoefficient_matricesZ	params_mar    r0   r!   test_resultsM   s4    




zCheckVARMAX.test_resultsc                 C   s   t | jj| jd dd d S )NZloglikeư>r   )r   r
   r   truer   r    r    r!   test_loglikeq   s    zCheckVARMAX.test_loglikec                 C   s   t | jj| jd dd d S )Naic   atol)r   r
   r=   r:   r;   r    r    r!   test_aict   s    zCheckVARMAX.test_aicc                 C   s   t | jj| jd dd d S )Nbicr>   r?   )r   r
   rB   r:   r;   r    r    r!   test_bicx   s    zCheckVARMAX.test_bicr9   c                 K   s*   t | jjf d|i|| jd |d d S )Nendpredictr?   r   r
   rE   r:   )r   rD   r@   kwargsr    r    r!   test_predict|   s
    zCheckVARMAX.test_predictc                 K   s,   t | jjf ||d|| jd |d d S )NrD   dynamicdynamic_predictr?   rF   )r   rD   rJ   r@   rG   r    r    r!   test_dynamic_predict   s
    z CheckVARMAX.test_dynamic_predictc                 C   s&   | j j}d | j _| j j}t|| d S N)r
   standardized_forecasts_errorZ_standardized_forecasts_errorr   )r   Z
cython_sfeZ
python_sfer    r    r!   !test_standardized_forecasts_error   s    z-CheckVARMAX.test_standardized_forecasts_errorN)r9   )r9   )__name__
__module____qualname____doc__r"   pytestmarkZsmoker)   r8   r<   rA   rC   rH   rL   rO   r    r    r    r!   r      s   

#

r   c                       s@   e Zd ZeddddgfddZ fddZ fd	d
Z  ZS )CheckLutkepohlapproxdln_invdln_incdln_consumpc           
      K   s   || _ tjtjdddgtjddddd}t|d  |d	< t|d  |d
< t|d  |d< |j	dd|f }	t
j|	f|||d|| _| jj|d |d| _d S )Ninvincconsump
1960-01-01
1982-10-01QSfreqcolumnsindexrX   rY   rZ   z
1960-04-01
1978-10-01ordertrenderror_cov_typer   cov_type)r:   pd	DataFramer	   lutkepohl_data
date_ranger4   logdifflocr   VARMAXr   smoothr
   )
clsr:   rh   ri   rj   rl   included_varsrG   dtaendogr    r    r!   setup_class   s      zCheckLutkepohl.setup_classc                    s   t t| jf ddi| d S )NrD   r_   superrV   rH   r   rG   	__class__r    r!   rH      s    zCheckLutkepohl.test_predictc                    s    t t| jf ddd| d S )Nr_   z
1961-01-01rI   )r|   rV   rL   r}   r~   r    r!   rL      s
    z#CheckLutkepohl.test_dynamic_predict)rP   rQ   rR   classmethodrz   rH   rL   __classcell__r    r    r~   r!   rV      s   rV   c                       s8   e Zd Ze fddZdd Zdd Zdd Z  ZS )	TestVARc                    s^   t j }tjdd  dddg |d< tjdd  dddg |d	< tt| j|d
ddd d S )Nr   Z	predict_1Z	predict_2Z	predict_3rE   Zdyn_predict_1Zdyn_predict_2Zdyn_predict_3rK   r   r   nunstructuredrg   )r	   Zlutkepohl_var1copyvar_resultsilocr|   r   rz   rv   r:   r~   r    r!   rz      s    



  zTestVAR.setup_classc                 C   s.   | j   d }t|d | jd dd d S N      ?   var_oim-C6?r?   r
   Z_cov_params_approxdiagonalr   r:   r   Zbser    r    r!   test_bse_approx   s    zTestVAR.test_bse_approxc                 C   s.   | j   d }t|d | jd dd d S Nr   r   r   {Gz?r?   r
   Z_cov_params_oimr   r   r:   r   r    r    r!   test_bse_oim   s    zTestVAR.test_bse_oimc           	      C   st  | j  }dd |jD }| jd }td|d s8tt| jj	D ]}|| jj	 }||d  }| jj
| }td| |stt|dd	ksttd
||d   |sttd||d   |sttd||d   |sDtqD|d }td|stt|ddkst|| jj }| jj| jj }tt|D ](}td|| || f |sFtqFd S )Nc                 S   s   g | ]}t |qS r    strr.   tabler    r    r!   r1      s     z(TestVAR.test_summary.<locals>.<listcomp>r   Model:.*VAR\(1\)r   r   Results for equation %s
   L1.dln_inv +%.4fL1.dln_inc +%.4fr   L1.dln_consump +%.4fError covariance matrix   %s +%.4fr
   r2   tablesr:   researchr'   r7   r   r,   endog_namesr%   split_params_state_covr&   	r   r2   r   r   r/   offsetr   namenamesr    r    r!   test_summary   s,    


zTestVAR.test_summary	rP   rQ   rR   r   rz   r   r   r   r   r    r    r~   r!   r      s
   r   c                       s8   e Zd Ze fddZdd Zdd Zdd Z  ZS )	TestVAR_diagonalc                    s^   t j }tjdd  dddg |d< tjdd  dddg |d	< tt| j|d
ddd d S )Nr   predict_diag1predict_diag2predict_diag3rE   dyn_predict_diag1dyn_predict_diag2dyn_predict_diag3rK   r   r   r   rg   )r	   Zlutkepohl_var1_diagr   r   r   r|   r   rz   r   r~   r    r!   rz      s    



  zTestVAR_diagonal.setup_classc                 C   s.   | j   d }t|d | jd dd d S )Nr   r   r   r   r?   r   r   r    r    r!   r      s    z TestVAR_diagonal.test_bse_approxc                 C   s.   | j   d }t|d | jd dd d S r   r   r   r    r    r!   r      s    zTestVAR_diagonal.test_bse_oimc           	      C   st  | j  }dd |jD }| jd }td|d s8tt| jj	D ]}|| jj	 }||d  }| jj
| }td| |stt|dd	ksttd
||d   |sttd||d   |sttd||d   |sDtqD|d }td|stt|dd	kst|| jj }| jj| jj }tt|D ](}td|| || f |sFtqFd S )Nc                 S   s   g | ]}t |qS r    r   r   r    r    r!   r1     s     z1TestVAR_diagonal.test_summary.<locals>.<listcomp>r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r    r!   r     s,    


zTestVAR_diagonal.test_summaryr   r    r    r~   r!   r      s
   r   c                       s\   e Zd ZdZe 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  ZS )TestVAR_measurement_errora  
    Notes
    -----
    There does not appear to be a way to get Stata to estimate a VAR with
    measurement errors. Thus this test is mostly a smoke test that measurement
    errors are setup correctly: it uses the same params from TestVAR_diagonal
    and sets the measurement errors variance params to zero to check that the
    loglike and predict are the same.

    It also checks that the state-space representation with positive
    measurement errors is correct.
    c                    s   t j }tjdd  dddg |d< tjdd  dddg |d	< tt| j|d
dddd dddg| _t	j
|d d d | jf }| j|| _d S )Nr   r   r   r   rE   r   r   r   rK   r   r   r   T)rh   ri   rj   measurement_error      ?       @g      @r   )r	   Zlutkepohl_var1_diag_measr   r   r   r|   r   rz    true_measurement_error_variancesr4   r_r   ru   results2)rv   r:   r   r~   r    r!   rz   3  s*    



   z%TestVAR_measurement_error.setup_classc                 C   s   d S rM   r    r;   r    r    r!   r"   F  s    z"TestVAR_measurement_error.test_mlec                 C   s   d S rM   r    r;   r    r    r!   r   K  s    z)TestVAR_measurement_error.test_bse_approxc                 C   s   d S rM   r    r;   r    r    r!   r   P  s    z&TestVAR_measurement_error.test_bse_oimc                 C   s   d S rM   r    r;   r    r    r!   rA   T  s    z"TestVAR_measurement_error.test_aicc                 C   s   d S rM   r    r;   r    r    r!   rC   Y  s    z"TestVAR_measurement_error.test_bicc                 C   s~   | j jj D ]j}|dkrq|dkrZ| jjj}t| j	d d d d tj
f }t|| qtt| jj|t| jj| qd S )NZobsobs_cov)r   ssmZshapeskeysr   Zfilter_resultsr   r4   Zdiagr   newaxisr   getattrr
   )r   r   r(   desiredr    r    r!   test_representation^  s    
z-TestVAR_measurement_error.test_representationc           	      C   s  | j  }dd |jD }| jd }td|d s8tt| jj	D ]}|| jj	 }||d  }| jj
| }td| |stt|dd	ksttd
||d   |sttd||d   |sttd||d   |sttd||d    |sDtqD|d }td|s$tt|ddks<t|| jj }| jj| jj }tt|D ](}td|| || f |sdtqdd S )Nc                 S   s   g | ]}t |qS r    r   r   r    r    r!   r1   o  s     z:TestVAR_measurement_error.test_summary.<locals>.<listcomp>r   r   r   r   r   r   	   r   r   r   r   zmeasurement_variance +%.4gr   r   r   r   r   r   r    r    r!   r   m  s2    


z&TestVAR_measurement_error.test_summary)rP   rQ   rR   rS   r   rz   r"   r   r   rA   rC   r   r   r   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 )TestVAR_obs_interceptc                    sd   t j }tjdd  dddg |d< tjdd  dddg |d	< tt| j|d
dd|d d d S )Nr   Zpredict_int1Zpredict_int2Zpredict_int3rE   Zdyn_predict_int1Zdyn_predict_int2Zdyn_predict_int3rK   r   r   r   obs_intercept)rh   ri   rj   r   )r	   Zlutkepohl_var1_obs_interceptr   r   r   r|   r   rz   r   r~   r    r!   rz     s     



   z!TestVAR_obs_intercept.setup_classc                 C   s.   | j   d }t|d | jd dd d S r   r   r   r    r    r!   r     s    z%TestVAR_obs_intercept.test_bse_approxc                 C   s.   | j   d }t|d | jd dd d S r   r   r   r    r    r!   r     s    z"TestVAR_obs_intercept.test_bse_oimc                 C   s   d S rM   r    r;   r    r    r!   rA     s    zTestVAR_obs_intercept.test_aicc                 C   s   d S rM   r    r;   r    r    r!   rC     s    zTestVAR_obs_intercept.test_bic)
rP   rQ   rR   r   rz   r   r   rA   rC   r   r    r    r~   r!   r     s   r   c                       sl   e Zd Ze fddZdd Zdd Zdd Zd	d
 Zdd Z	 fddZ
dd Zdd Zdd Z  ZS )TestVAR_exogc              	      s   t j }tjdd dddg |d< d|d jdd d f< tjdd  dd	d
g |d< tdd }tt| j	|ddd|ddd d S )Nr   L   Zpredict_exog1_1Zpredict_exog1_2Zpredict_exog1_3rE   r   Zfcast_exog1_dln_invZfcast_exog1_dln_incZfcast_exog1_dln_consumpfcastK   r   r   r   r   approximate_diffuserh   ri   rj   exogZinitializationloglikelihood_burn)
r	   Zlutkepohl_var1_exogr   r   r   r4   aranger|   r   rz   rv   r:   r   r~   r    r!   rz     s(    



    zTestVAR_exog.setup_classc                 C   s   d S rM   r    r;   r    r    r!   r"     s    zTestVAR_exog.test_mlec                 C   s   d S rM   r    r;   r    r    r!   rA     s    zTestVAR_exog.test_aicc                 C   s   d S rM   r    r;   r    r    r!   rC     s    zTestVAR_exog.test_bicc                 C   s6   | j   d }t|d d d | jd dd d S Nr   ir   r   r   r?   r   r   r    r    r!   r     s    zTestVAR_exog.test_bse_approxc                 C   s6   | j   d }t|d d d | jd dd d S r   r   r   r    r    r!   r     s    zTestVAR_exog.test_bse_oimc                    s   t t| jddd d S Nrf   gMbP?rD   r@   r{   r;   r~   r    r!   rH     s    zTestVAR_exog.test_predictc                 C   s   d S rM   r    r;   r    r    r!   rL     s    z!TestVAR_exog.test_dynamic_predictc                 C   sF   t ddd d d t jf }| jjd|d}t|| jd dd d S )	Nr   [   r      Zstepsr   r   r9   r?   )r4   r   r   r
   forecastr   r:   r   r   r   r    r    r!   test_forecast  s    zTestVAR_exog.test_forecastc           	      C   s  | j  }dd |jD }| jd }td|d s8tt| jj	D ]}|| jj	 }||d  }| jj
| }td| |stt|dd	ksttd
||d   |sttd||d   |sttd||d   |sttdt|| jj | dd |sDtqD|d }td|s.tt|ddksFt|| jj }| jj| jj }tt|D ](}td|| || f |sntqnd S )Nc                 S   s   g | ]}t |qS r    r   r   r    r    r!   r1     s     z-TestVAR_exog.test_summary.<locals>.<listcomp>r   zModel:.*VARX\(1\)r   r   r   r   r   r   r   r   r   z	beta.x1 +   precr   r   r   r   )r
   r2   r   r:   r   r   r'   r7   r   r,   r   r%   r   r   Z_params_regressionr   r&   r   r    r    r!   r     s:    

 
zTestVAR_exog.test_summary)rP   rQ   rR   r   rz   r"   rA   rC   r   r   rH   rL   r   r   r   r    r    r~   r!   r     s   r   c                       sd   e Zd Ze fddZdd Zdd Zdd Zd	d
 Zdd Z	 fddZ
dd Zdd Z  ZS )TestVAR_exog2c              	      s   t j }tjdd dddg |d< d|d jdd d f< tjdd  dd	d
g |d< tjtdtdd d d tj	f f }t
t| j|ddd|ddd d S )Nr   r   Zpredict_exog2_1Zpredict_exog2_2Zpredict_exog2_3rE   r   Zfcast_exog2_dln_invZfcast_exog2_dln_incZfcast_exog2_dln_consumpr   )r   r   r   r   r   r   r   r   r   )r	   Zlutkepohl_var1_exog2r   r   r   r4   c_onesr   r   r|   r   rz   r   r~   r    r!   rz   $  s(    


,
    zTestVAR_exog2.setup_classc                 C   s   d S rM   r    r;   r    r    r!   r"   4  s    zTestVAR_exog2.test_mlec                 C   s   d S rM   r    r;   r    r    r!   rA   7  s    zTestVAR_exog2.test_aicc                 C   s   d S rM   r    r;   r    r    r!   rC   :  s    zTestVAR_exog2.test_bicc                 C   s   d S rM   r    r;   r    r    r!   r   =  s    zTestVAR_exog2.test_bse_approxc                 C   s   d S rM   r    r;   r    r    r!   r   @  s    zTestVAR_exog2.test_bse_oimc                    s   t t| jddd d S r   r{   r;   r~   r    r!   rH   C  s    zTestVAR_exog2.test_predictc                 C   s   d S rM   r    r;   r    r    r!   rL   F  s    z"TestVAR_exog2.test_dynamic_predictc                 C   sV   t jt dt ddd d d t jf f }| jjd|d}t|| jd dd	 d S )
N)r   r   r   r   r   r   r   r   r9   r?   )	r4   r   r   r   r   r
   r   r   r:   r   r    r    r!   r   J  s
    zTestVAR_exog2.test_forecast)rP   rQ   rR   r   rz   r"   rA   rC   r   r   rH   rL   r   r   r    r    r~   r!   r     s   r   c                       s8   e Zd Ze fddZdd Zdd Zdd Z  ZS )	TestVAR2c                    s`   t j }tjdd  ddg |d< tjdd  ddg |d< tt| j|dd	d
ddgd d S )Nr   Zpredict_var2_1Zpredict_var2_2rE   Zdyn_predict_var2_1Zdyn_predict_var2_2rK   )r   r   r   r   rX   rY   )rh   ri   rj   rw   )r	   Zlutkepohl_var2r   r   r   r|   r   rz   r   r~   r    r!   rz   T  s    



   zTestVAR2.setup_classc                 C   s>   | j   d }t|d d d | jd d d dd d S )Nr   r   r   r   r   r?   r   r   r    r    r!   r   _  s    zTestVAR2.test_bse_approxc                 C   s>   | j   d }t|d d d | jd d d dd d S )Nr   r   r   r   r   r?   r   r   r    r    r!   r   d  s    zTestVAR2.test_bse_oimc           	      C   s  | j  }dd |jD }| jd }td|d s8tt| jj	D ]}|| jj	 | jj
 }||d  }| jj| }td| |stt|dd	ksttd
||d   |sttd||d   |sttd||d   |sttd||d   |sDtqD|d }td|s*tt|ddksBt|| jj }| jj| jj }tt|D ](}td|| || f |sjtqjd S )Nc                 S   s   g | ]}t |qS r    r   r   r    r    r!   r1   k  s     z)TestVAR2.test_summary.<locals>.<listcomp>r   zModel:.*VAR\(2\)r   r   r   r   r   r   r   r   zL2.dln_inv +%.4fzL2.dln_inc +%.4fr>   r   r   r   r   )r
   r2   r   r:   r   r   r'   r7   r   r,   r3   r   r%   r   r   r&   r   r    r    r!   r   i  s*    

zTestVAR2.test_summaryr   r    r    r~   r!   r   S  s
   
r   c                   @   s   e Zd ZedddZdS )CheckFREDManufacturingrW   c              	   K   s   || _ tjtdd}t|d}t|}	W 5 Q R X tj|	j	dd|	_
|	d  |	d< |	d  |	d	< |	jd
d dd	gf }
tjdd, td tj|
f|||d|| _W 5 Q R X | jj|d |d| _d S )Nr
   zmanufac.dtarbZMSra   Z	lncaputilZ
dlncaputilZlnhoursZdlnhoursz
1972-02-01Tr   r   rg   r   rk   )r:   ospathjoincurrent_pathopenrm   Z
read_stataZDatetimeIndexmonthre   rr   rs   r   r   r   r   rt   r   ru   r
   )rv   r:   rh   ri   rj   rl   rG   r   Z	test_datarx   ry   r    r    r!   rz     s     
z"CheckFREDManufacturing.setup_classN)rW   )rP   rQ   rR   r   rz   r    r    r    r!   r     s   r   c                       s   e Zd ZdZe fddZdd Zej	ddd Z
ej	dd	d
 Zdd Zdd Z fddZ fddZdd Z  ZS )	TestVARMAN
    Test against the sspace VARMA example with some params set to zeros.
    c                    sZ   t j }tjdd  ddg |d< tjdd  ddg |d< tt| j|dd	d
d d S )Nr   Zpredict_varma11_1Zpredict_varma11_2rE   Zdyn_predict_varma11_1Zdyn_predict_varma11_2rK   r   r   r   r   rg   )r	   Zfred_varma11r   varmax_resultsr   r|   r   rz   r   r~   r    r!   rz     s    

 

   zTestVARMA.setup_classc                 C   s   d S rM   r    r;   r    r    r!   r"     s    zTestVARMA.test_mle,Known failure: standard errors do not match.c                 C   s   d S rM   r    r;   r    r    r!   r     s    zTestVARMA.test_bse_approxc                 C   s   d S rM   r    r;   r    r    r!   r     s    zTestVARMA.test_bse_oimc                 C   s   d S rM   r    r;   r    r    r!   rA     s    zTestVARMA.test_aicc                 C   s   d S rM   r    r;   r    r    r!   rC     s    zTestVARMA.test_bicc                    s   t t| jddd d S N
2009-05-01r   r   )r|   r   rH   r;   r~   r    r!   rH     s    zTestVARMA.test_predictc                    s   t t| jddd d S Nr   
2000-01-01rI   )r|   r   rL   r;   r~   r    r!   rL     s    zTestVARMA.test_dynamic_predictc           
   	   C   s  | j  }dd |jD }| jd }td|d s8tt| jj	D ]}|| jj	 }| jj	d | jj
 || jj	  }||d  }| jj| }td| |stt|dd	ksttd
t||d  dd |sttdt||d  dd |sttdt||d  dd |s(ttdt||d  dd |sDtqD|d }td|shtt|ddkst|| jj }| jj| jj }	tt|	D ]0}td|	| t|| ddf |stqd S )Nc                 S   s   g | ]}t |qS r    r   r   r    r    r!   r1     s     z*TestVARMA.test_summary.<locals>.<listcomp>r   zModel:.*VARMA\(1,1\)r   r   r   r   r   zL1.dlncaputil +r   r   zL1.dlnhours +r   zL1.e\(dlncaputil\) +zL1.e\(dlnhours\) +r   r      z%s +%s)r
   r2   r   r:   r   r   r'   r7   r   r,   r3   r   r%   r   r   r   r&   )
r   r2   r   r   r/   Z	offset_arZ	offset_mar   r   r   r    r    r!   r     sL    





zTestVARMA.test_summary)rP   rQ   rR   rS   r   rz   r"   rT   rU   skipr   r   rA   rC   rH   rL   r   r   r    r    r~   r!   r     s   




r   c                       s|   e Zd ZdZe fddZdd Zej	ddd Z
ej	dd	d
 Zdd Zdd Z fddZ fddZ  ZS )TestVMA1r   c                    sZ   t j }tjdd  ddg |d< tjdd  ddg |d< tt| j|dd	d
d d S )Nr   Zpredict_vma1_1Zpredict_vma1_2rE   Zdyn_predict_vma1_1Zdyn_predict_vma1_2rK   r   r   r   r   rg   )r	   Z	fred_vma1r   r   r   r|   r   rz   r   r~   r    r!   rz     s    

 

   zTestVMA1.setup_classc                 C   s   d S rM   r    r;   r    r    r!   r"     s    zTestVMA1.test_mler   c                 C   s   d S rM   r    r;   r    r    r!   r     s    zTestVMA1.test_bse_approxc                 C   s   d S rM   r    r;   r    r    r!   r   #  s    zTestVMA1.test_bse_oimc                 C   s   d S rM   r    r;   r    r    r!   rA   (  s    zTestVMA1.test_aicc                 C   s   d S rM   r    r;   r    r    r!   rC   .  s    zTestVMA1.test_bicc                    s   t t| jddd d S r   )r|   r   rH   r;   r~   r    r!   rH   4  s    zTestVMA1.test_predictc                    s   t t| jddd d S r   )r|   r   rL   r;   r~   r    r!   rL   7  s    zTestVMA1.test_dynamic_predict)rP   rQ   rR   rS   r   rz   r"   rT   rU   r   r   r   rA   rC   rH   rL   r   r    r    r~   r!   r     s   




r   c                  C   sZ   t ddd} t d}tj|tjddddd}tj| |d	d
 tj| |d	d
 d S )N   
   r   r   z
2009-01-01ZYSra   re   r   r   rh   )r4   r   r6   rm   Seriesrp   r   rt   )ry   r   exog2r    r    r!   test_specifications<  s    

r  c               	   C   s  i t _tddd} tt t j| ddd W 5 Q R X tt t j| ddd W 5 Q R X tt t j| dd	 W 5 Q R X t	j
d
d}t	d t j| dd	 W 5 Q R X t	j
d
d8}t	d t j| dd	 d}t|d j|kstW 5 Q R X t	  d S )Nr   r   r   r    rh   ri   )rh   rj   )r   r   rh   Tr   r   r   zcEstimation of VARMA(p,q) models is not generically robust, due especially to identification issues.r   )r   __warningregistry__r4   r   r6   rT   raises
ValueErrorrt   r   r   r   r   messager'   resetwarnings)ry   wr  r    r    r!   test_misspecificationsJ  s"    

 r  c               
   C   s  d} d}t jd t jj| |fd}t j|d ddf< t j|dddf< t jj| dfd}t jj| dfd}tjd	d
| d}tj||d}tj|	 |d}tj||d}t
j||ddt
j||ddt
j||ddt
j||ddg}	|	D ]}
|
j |
jdd}|  |  |jdd |  t jjd|
jfd}|jd|d |jd|d t jjd|
jfd}tt |jd|d W 5 Q R X t jjd|
jd fd}tt |jd|d W 5 Q R X qtt t
j|t ddd W 5 Q R X d S )Nr   r   i  sizer   r      r   z
1970-01-01r`   )rb   Zperiodsr   r   r   F)r   T)rJ   r   )r   r   )r4   randomseednormalnanrm   rp   rn   r   Zsqueezer   rt   r$   r   r2   rE   Zget_predictionZk_exogr   Zget_forecastrT   r  r  zeros)nobsr,   ry   Zexog1r   re   Zendog_pdZexog1_pdZexog2_pdmodelsmodresZoos_exogr    r    r!   test_misc_exogm  sF    r  c                  C   sh   t jd tt jjdd} tj| dd}||j	}|j
dddgd}|jtdgsdtd S )	Ni )2   r   r  r   r  r   a)startrD   re   )r4   r  r  rm   rn   r  r   rt   ru   r$   rE   re   equalsZIndexr'   )ry   r  r  outr    r    r!   test_predict_custom_index  s    r  c            	   	   C   s4  d} t | dfd }t | }tj|d|dd}|t jdgd ddd	dd	f }d
}t d	}t d}t|jd	|dd t|jd	|dd t|jd	|dd d}t |}t |d	f}t|j||dd t|j||dd tt	|j|d
d tt	|j|d	dgd tt	|j|t |dfd d S )Nr   r   r   r   r   )rh   r   ri   r   r   r   r   r   r   r   )
r4   r   r   rt   ru   r   r   r   r   r  )	r  ry   r   r  r  Zexog_fcast_scalarZexog_fcast_1dimZexog_fcast_2dimhr    r    r!   test_forecast_exog  s&    
"


r!  c                 C   s   dddddddg}dd	d
ddddddddg}|D ]}t t||t| | q0|D ]}t t|j|t| j| qPt | |   d S )Nrh   ri   rj   r   r   r   Zk_paramsr  r,   Zk_statesZk_posdefr   Zdesignr   state_interceptZ
transitionZ	selectionZ	state_cov)r   r   r   _get_init_kwds)r  mod2attrsZ	ssm_attrsattrr    r    r!   check_equivalent_models  s2                  r'  c               
   C   s   d} t | dfd }t | }ddg}ddg}dd	g}d
dg}d
dg}d
dg}dd l}	ddddddg}
|	||||||D ]n}tt|
|}tjd
d@ td t	j
|fd|i|}t	j
|fd|i| }W 5 Q R X t|| q|d S )Nr   r>   r   r   r   tr   r   r   FTr   rh   ri   rj   r   r   r   r   ignorer   )r4   r   	itertoolsproductdictzipr   r   r   r   rt   r#  r'  )r  ry   r   ZordersZtrendsZerror_cov_typesZmeasurement_errorsZenforce_stationaritiesZenforce_invertibilitiesr*  r   elementrG   r  r$  r    r    r!   test_recreate_model  s2    
 

$r/  c            	      C   s&  t ddd} t d}ddddddd	d
d	dd	g}tj| dd|d}||}tj| d d dd|d d d}||}|j| dd  |dd  d}t|j	|j	 t
|j|j dD ]}tt||t|| qdD ]}tt||t|| qt
|jdt dd|jdt dd d S )N   r   r   皙?皙?r   皙        r   r   r   r(  rh   ri   r   r  r  r  r   llf_obsr   filtered_statefiltered_state_covpredicted_statepredicted_state_cov	forecastsforecasts_errorforecasts_error_covrN   Zforecasts_error_diffuse_covZpredicted_diffuse_state_covscaled_smoothed_estimatorscaled_smoothed_estimator_covsmoothing_errorsmoothed_statesmoothed_state_covsmoothed_state_autocov smoothed_measurement_disturbancesmoothed_state_disturbance$smoothed_measurement_disturbance_covsmoothed_state_disturbance_covr   )r4   r   r6   r   r   rt   ru   appendr   specificationr   cov_params_defaultr   r   	ry   r   r   mod1res1r$  res2res3r&  r    r    r!   test_append_results  s6    
      
"
rR  ri   r   cctr   TFc              	   C   s$  t ddd}g }| dkr&ddg}| dkr:dddd	g}t j|d
ddddddf }tj|d| d}||}|rz|  ||d d }||}|r|  |	|dd  }	t
|	j|jdd   dD ]:}
t||
}|d k	r|ddd f }t
t|	|
|dd qt
|	d|d d S )Nr0  r   r   rS  r1  r2  rT  r   r   r   r3  r4  r   r  r  )r9  r:  r;  r<  r=  r>  r?  rN   r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  .g-q=r?   r   )r4   r   r6   r   r   rt   ru   r   cloneextendr   r7  r   )ri   r   ry   Ztrend_paramsr   rN  rO  r$  rP  rQ  r&  r   r    r    r!   test_extend_results  s>         


rW  c            
      C   s  t ddd} t d}ddddddd	d
d	dd	g}tj| dd|d}||}tj| d d dd|d d d}||}|j| dd  |dd  d}t|j	|j	dd   dD ]6}t
||}	|	d k	r|	ddd f }	tt
|||	 qt|jdt dd|jdt dd d S )Nr0  r   r   r1  r2  r   r3  r4  r   r   r   r(  r5  r  r  r8  .r   )r4   r   r6   r   r   rt   ru   rV  r   r7  r   r   r   )
ry   r   r   rN  rO  r$  rP  rQ  r&  r   r    r    r!   test_extend_results_exogP  s6    
      
"

rX  c            	      C   s6  t ddd} t d}ddddddd	d
d	dd	g}tj| d d dd|d d d}||}tj| dd  dd|dd  d}||}|j| d d |d d d}t|j	|j	 t
|j|j dD ]}tt||t|| qdD ]}tt||t|| qt
|jdt dd|jdt dd d S )Nr0  r   r   r1  r2  r   r3  r4  r   r   r  r   r(  r5  r  r6  r8  r   )r4   r   r6   r   r   rt   ru   applyr   rK  r   rL  r   r   rM  r    r    r!   test_apply_resultsw  s6    
      "
"
rZ  c                  C   s  t jtjdddgt jddddd} t|  jd	d  } | jd d d d
f }| jd d d
f }ddddg}ddddg}|d |d |d
 dd|d
 |d	 |d	 |d |d g
}t	j
||ddd}|j  ||}|j}tt|t|j tj|jd d df |ddd}	|	j  tj|jd d d	f |ddd}
|
j  |	|}|
|}t|jd
d  |j|j d
d   d S )Nr[   r\   r]   r^   r_   r`   ra   rc   r   r   g{Gzgffffff?g333333ӿgMb`?gMbp?g?      r   r   r>   r   r   )r   rh   rj   )r   r   r   rS  )r   rh   ri   )rm   rn   r	   ro   rp   r4   rq   rr   r   r   rt   r   Zinitialize_diffuseru   r$   r   r%   r&   r   ZSARIMAXr   r7  )rx   ry   r   Z
ma_params1Z
ma_params2Z
vma_paramsZmod_vmaZres_mvaspZmod_ma1Zmod_ma2Zres_ma1Zres_ma2r    r    r!   test_vma1_exog  sP         






r]  c                  C   s  t d} dddddddg}d	d
d
ddddg}tj| ddd}|}t|j| tj| ddgd}ddg| }t|j| |ddg|  t|d ddg tj| dddgd}ddddg| }t|j| |dd
dd
g|  t|d d t|d d |d
dd
dg|  t|d t dd t|d dt dd  |ddddg|  t|d dt dd  t|d ddt dd   tj| dd
dgd}ddg| }t|j| |ddg|  t|d t dd t|d dt dd  tj| ddd
dgd}ddddg| }t|j| |dd
dd
g|  t|d d t|d d |d
dd
dg|  t|d t ddd  t|d dt ddd   |ddddg|  t|d dt ddd   t|d ddt ddd    d S ) N)r>   r   zL1.y1.y1zL1.y2.y1zL1.y1.y2zL1.y2.y2zsqrt.var.y1zsqrt.cov.y1.y2zsqrt.var.y2r   r   g?r   r4  r   r   r  r   zintercept.y1zintercept.y2g333333?r[  r"  zdrift.y1zdrift.y2)r"  r   )r"  r   g?r      z
trend.2.y1z
trend.2.y2)	r4   r  r   rt   r   r&   updater   r   )ry   Z
base_namesZbase_paramsr  r   r    r    r!   test_param_names_trend  sn    
    r`  ):rS   r   r   r   Znumpyr4   Znumpy.testingr   r   r   Zpandasrm   rT   Zstatsmodels.tsa.statespacer   r   Zstatsmodels.iolib.summaryr   r
   r	   r   dirnameabspath__file__r   r   Zvar_pathZread_csvr   Zvarmax_pathr   r   rV   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r'  r/  rR  rU   ZparametrizerW  rX  rZ  r]  r`  r    r    r    r!   <module>   sT   s;;n!j4;c4#2	 (0'),