U
    Kvf(!                     @   s  d Z ddlZddlZddlmZ ddlZddlm	Z	 ddl
mZ ejejeZeejeddZejejed d Zeejed	dd
Zejejdde_edddg jdd ZeeeZej e!eeeed f Z"eeeeed Z#ej e!de#e#d f Z$edeed Z%eeed eed d Z&ej e!eee%e%d f Z'ej e!de&e&d f Z(d&ddZ)dd Z*dd Z+dd Z,dd Z-dd Z.d d! Z/d"d# Z0d$d% Z1dS )'aK  
Tests for VAR models (via VARMAX)

These are primarily tests of VAR results from the VARMAX state space approach
compared to the output of estimation via CSS

loglikelihood_burn = k_ar is required, since the loglikelihood reported by the
CSS approach is the conditional loglikelihood.

Author: Chad Fulton
License: Simplified-BSD
    N)assert_allclose)varmax   )results_var_Rresultszresults_var_R_output.csvtestszlutkepohl2.dtaQ)freqZdln_invZdln_incZdln_consump1960Q21978   
   c                    s,  |d }|j |j }||j|j |j |j  }|| | }tj|}|d kr^t|d }|t	| |dd < |
|}	tdD ]}
tj|
   fddtjD }t|	d|
t|   fddtjD }t|	jd|
d	d
t|   fddtjD }|	jd|
d	d	d}t|t|  qd S )NZ	state_covparams   c                    s   g | ]}d  |f qS )z%s.irf.%s.%s .0nameZ
impulse_totestr   M/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tsa/statespace/tests/test_var.py
<listcomp>?   s   zcheck_irf.<locals>.<listcomp>r   c                    s   g | ]}d  |f qS )z%s.irf.ortho.%s.%sr   r   r   r   r   r   E   s   T)orthogonalizedc                    s   g | ]}d  |f qS )z%s.irf.cumu.%s.%sr   r   r   r   r   r   K   s   )r   Z
cumulative)ZnobsZk_arZk_endogZk_trendZk_exognpZlinalgZcholeskycopyZtril_indices_fromsmoothrangeendogcolumnsr   Zimpulse_responsesresults_var_R_output)r   modr   r   ZSigma_u_mleZnobs_effectiveZdf_residZSigma_uLresir   resultr   r   r   	check_irf+   sF    

 r&   c                     s|   d t j} tjtdddd}|| d }t|j| d   fdd	tjD }t|	d
t
| jd d
  t ||  d S )Nbasicr   r   nr   ordertrendloglikelihood_burnr   llfc                    s   g | ]}d  |f qS z%s.fcast.%s.fcstr   r   r   r   r   r   ^   s     z"test_var_basic.<locals>.<listcomp>r   )r   Z	res_basicr   VARMAXr   r   r   r.   r   forecastr    ilocr&   r   r!   r#   r   r   r0   r   test_var_basicS   s    r5   c                     s|   d t j} tjtdddd}|| d }t|j| d   fddtjD }t|	d	t
| jd d	  t ||  d S )
Ncr(   r   r*   r   r.   c                    s   g | ]}d  |f qS r/   r   r   r0   r   r   r   r   s     ztest_var_c.<locals>.<listcomp>r   )r   Zres_cr   r1   r   r   r   r.   r   r2   r    r3   r&   r4   r   r0   r   
test_var_cg   s    r7   c                     s|   d t j} tjtdddd}|| d }t|j| d   fddtjD }t|	d	t
| jd d	  t ||  d S )
Nctr(   r   r*   r   r.   c                    s   g | ]}d  |f qS r/   r   r   r0   r   r   r      s     ztest_var_ct.<locals>.<listcomp>r   )r   res_ctr   r1   r   r   r   r.   r   r2   r    r3   r&   r4   r   r0   r   test_var_ct{   s    r:   c                     s   d t j} tjtdtd d d df ddd}|| d }t|j| d   fdd	tj	D }t|j
d
td d d df dt| jd d
  t ||  d S )NZct_as_exog0r(   r   r)   r+   exogr,   r-   r   r.   c                    s   g | ]}d  |f qS r/   r   r   r0   r   r   r      s     z(test_var_ct_as_exog0.<locals>.<listcomp>r   r<   )r   Zres_ct_as_exog0r   r1   r   exog0r   r   r.   r   r2   exog0_fcastr    r3   r&   r4   r   r0   r   test_var_ct_as_exog0   s    r@   c                     s   d t j} tjtdtd d d df ddd}| d }tj|dd |d d |dd  f }||}t	|j
| d	   fd
dtjD }t	|jdtd d d df dt| jd d  t || | d S )Nr8   r(   r   r)   r;   r      r   r.   c                    s   g | ]}d  |f qS r/   r   r   r0   r   r   r      s     z(test_var_ct_as_exog1.<locals>.<listcomp>r   r=   )r   r9   r   r1   r   exog1r   r_r   r   r.   r   r2   exog1_fcastr    r3   r&   r   r!   r   r#   r   r   r0   r   test_var_ct_as_exog1   s    (
rF   c                     s   d t j} tjtdddd}| d }tj|dd |d d |dd  f }||}t|j	| d	   fd
dtj
D }t|dt| jd d  t || | d S )NZctt_as_exog1r(   Zcttr   r*   r   ir   r.   c                    s   g | ]}d  |f qS r/   r   r   r0   r   r   r      s     z test_var_ctt.<locals>.<listcomp>r   )r   Zres_ctt_as_exog1r   r1   r   r   rC   r   r   r.   r   r2   r    r3   r&   rE   r   r0   r   test_var_ctt   s    
(
rG   c                     s   d t j} td jdd }tdg jdd }tjtd|dd	d
}|| d }t|j	| d   fddtj
D }t|jd|dt| jd d  t ||  d S )NZct_exogincr
   r   1979Q11981Q2r(   r8   r   r;   r   r.   c                    s   g | ]}d  |f qS r/   r   r   r0   r   r   r      s     z$test_var_ct_exog.<locals>.<listcomp>r   r=   )r   Zres_ct_exogdtalocr   r1   r   r   r   r.   r   r2   r    r3   r&   r   r<   Z
exog_fcastr!   r#   r   r   r0   r   test_var_ct_exog   s    rN   c                     s   d t j} tddg jdd }tddg jdd }tjtd|d	d
d}|| d }t|j	| d   fddtj
D }t|jd|dt| jd d  t ||  d S )NZc_2exogrH   invr
   r   rI   rJ   r(   r6   r   r;   r   r.   c                    s   g | ]}d  |f qS r/   r   r   r0   r   r   r     s     z$test_var_c_2exog.<locals>.<listcomp>r   r=   )r   Zres_c_2exogrK   rL   r   r1   r   r   r   r.   r   r2   r    r3   r&   rM   r   r0   r   test_var_c_2exog   s    rP   )N)2__doc__osZnumpyr   Znumpy.testingr   ZpandaspdZstatsmodels.tsa.statespacer   r   r   pathdirnameabspath__file__current_pathZread_csvjoinr    splitZup2Z
read_statarK   ZPeriodIndexZqtrindexrL   r   ZarangelenZtime_trend0Zc_Zonesr>   Ztime_trend0_fcastr?   Ztime_trend1Ztime_trend1_fcastrB   rD   r&   r5   r7   r:   r@   rF   rG   rN   rP   r   r   r   r   <module>   s>    
(