
    !g                         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                  j                  ej                  j                  e            Z ej"                  ej                  j%                  edd            Zej                  j)                  ej                  j)                  e      d         d   Z ej,                  ej                  j%                  ed	dd
            Z ej0                  ej2                  d      e_        eg d   j6                  dd Z ej:                   ee            Zej@                   ejB                   ee            eedz  f   Z" ej:                   ee       ee      dz         Z#ej@                   ejB                  d      e#e#dz  f   Z$ ej:                  d ee      dz         Z% ej:                   ee      dz    ee      dz   dz         Z&ej@                   ejB                   ee            e%e%dz  f   Z'ej@                   ejB                  d      e&e&dz  f   Z(ddZ)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1y)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)freq)dln_invdln_incdln_consump1960Q21978   
   c           	         |d   }|j                   |j                  z
  }||j                  |j                  z  |j                  z   |j                  z   z
  }||z  |z  }t
        j                  j                  |      }|t        j                  |d         }|t        j                  |         |dd  |j                  |      }	t        d      D ]  }
t        j                  |
   }t        j                  D cg c]  }|  d| d|  }}t        |	j                  d|
      t         |          t        j                  D cg c]  }|  d| d|  }}t        |	j                  d|
d	
      t         |          t        j                  D cg c]  }|  d| d|  }}|	j                  d|
d	d	      }t        |t         |           y c c}w c c}w c c}w )N	state_covparams   z.irf..r   z.irf.ortho.T)orthogonalizedz
.irf.cumu.)r   
cumulative)nobsk_ark_endogk_trendk_exognplinalgcholeskycopytril_indices_fromsmoothrangeendogcolumnsr   impulse_responsesresults_var_R_output)testmodr   r   Sigma_u_mlenobs_effectivedf_residSigma_uLresi
impulse_tonamer'   results                  f/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tests/test_var.py	check_irfr7   +   s    k"KXX(NCKK'#++5

BDHN*X5G
		7#A~*+B((+,F23K
**V
C1X 7]]1%
  %}}. V5AdV4 . .--b!4,W5	7
  %}}. V;zl!D6: . .--b!D-I,W5	7
  %}}. V:j\4&9 . .&&r16:t ' M,W5	7)7...s   5G=G
Gc                     d} t         j                  }t        j                  t        ddd      }|j                  |d         }t        |j                  |d          t        j                  D cg c]
  }|  d| d	 }}t        |j                  d
      t        |   j                  d d
        t        | ||       y c c}w )Nbasicr   r   nr   ordertrendloglikelihood_burnr   llf.fcast..fcstr   )r   	res_basicr   VARMAXr&   r$   r   r@   r'   forecastr)   ilocr7   r*   r   r+   r1   r4   r'   s         r6   test_var_basicrH   S   s    D %%G
--V31
MC
**WX&
'CCGGWU^, 8=}}Et$wtfE*EGECLL$&:7&C&H&H"&MN dC!	 F   /B=c                     d} t         j                  }t        j                  t        ddd      }|j                  |d         }t        |j                  |d          t        j                  D cg c]
  }|  d| d }}t        |j                  d	      t        |   j                  d d	        t        | ||       y c c}w )
Ncr:   r   r<   r   r@   rA   rB   r   )r   res_cr   rD   r&   r$   r   r@   r'   rE   r)   rF   r7   rG   s         r6   
test_var_crM   g   s    D !!G
--V31
MC
**WX&
'CCGGWU^, 8=}}Et$wtfE*EGECLL$&:7&C&H&H"&MN dC!	 FrI   c                     d} t         j                  }t        j                  t        ddd      }|j                  |d         }t        |j                  |d          t        j                  D cg c]
  }|  d| d }}t        |j                  d	      t        |   j                  d d	        t        | ||       y c c}w )
Nctr:   r   r<   r   r@   rA   rB   r   )r   res_ctr   rD   r&   r$   r   r@   r'   rE   r)   rF   r7   rG   s         r6   test_var_ctrQ   {   s    D ""G
--V4A
NC
**WX&
'CCGGWU^, 8=}}Et$wtfE*EGECLL$&:7&C&H&H"&MN dC!	 FrI   c            	         d} t         j                  }t        j                  t        dt
        d d d df   dd      }|j                  |d         }t        |j                  |d          t        j                  D cg c]
  }|  d| d	 }}t        |j                  d
t        d d d df         t        |   j                  d d
        t        | ||       y c c}w )Nct_as_exog0r:   r   r;   r=   exogr>   r?   r   r@   rA   rB   r   rU   )r   res_ct_as_exog0r   rD   r&   exog0r$   r   r@   r'   rE   exog0_fcastr)   rF   r7   rG   s         r6   test_var_ct_as_exog0rZ      s    D ++G
--V%2A2,c+,.C
**WX&
'CCGGWU^, 8=}}Et$wtfE*EGECLL+a!e*<L=(166s;= dC! Fs   =Cc            	         d} t         j                  }t        j                  t        dt
        d d d df   dd      }|d   }t        j                  |dd |d d |dd  f   }|j                  |      }t        |j                  |d	          t        j                  D cg c]
  }|  d
| d }}t        |j                  dt        d d d df         t        |   j                  d d        t!        | |||       y c c}w )NrO   r:   r   r;   rT   r      r   r@   rA   rB   r   rV   )r   rP   r   rD   r&   exog1r   r_r$   r   r@   r'   rE   exog1_fcastr)   rF   r7   r*   r   r+   r   r1   r4   r'   s          r6   test_var_ct_as_exog1ra      s   D
 ""G
--V%2A2,c+,.C XFUU6!B<VBC[89F
**V
CCGGWU^, 8=}}Et$wtfE*EGECLL+a!e*<L=(166s;= dC&) Fs   C<c                     d} t         j                  }t        j                  t        ddd      }|d   }t
        j                  |dd |d d |dd  f   }|j                  |      }t        |j                  |d	          t        j                  D cg c]
  }|  d
| d }}t        |j                  d      t        |   j                  d d        t        | |||       y c c}w )Nctt_as_exog1r:   cttr   r<   r   ir   r@   rA   rB   r   )r   res_ctt_as_exog1r   rD   r&   r   r^   r$   r   r@   r'   rE   r)   rF   r7   r`   s          r6   test_var_cttrf      s    D
 ,,G
--V5+,.CXFUU6&$fWfovbc{BCF
**V
CCGGWU^, 8=}}Et$wtfE*EGECLL$&:7&C&H&H"&MN dC&)	 Fs   Cc                     d} t         j                  }t        d   j                  dd }t        dg   j                  dd }t	        j
                  t        d|dd	
      }|j                  |d         }t        |j                  |d          t        j                  D cg c]
  }|  d| d }}t        |j                  d|      t        |   j                  d d        t        | ||       y c c}w )Nct_exogincr   r   1979Q11981Q2r:   rO   r   rT   r   r@   rA   rB   r   rV   )r   res_ct_exogdtalocr   rD   r&   r$   r   r@   r'   rE   r)   rF   r7   r*   r   rU   
exog_fcastr+   r1   r4   r'   s           r6   test_var_ct_exogrq      s    D ''Gu:>>(6*DeW!!(84J
--V$d+,.C
**WX&
'CCGGWU^, 8=}}Et$wtfE*EGECLL*L5(166s;= dC! Fs   C-c                     d} t         j                  }t        ddg   j                  dd }t        ddg   j                  dd }t	        j
                  t        d|d	d
      }|j                  |d         }t        |j                  |d          t        j                  D cg c]
  }|  d| d }}t        |j                  d|      t        |   j                  d d        t        | ||       y c c}w )Nc_2exogri   invr   r   rj   rk   r:   rK   r   rT   r   r@   rA   rB   r   rV   )r   res_c_2exogrm   rn   r   rD   r&   r$   r   r@   r'   rE   r)   rF   r7   ro   s           r6   test_var_c_2exogrv      s    D ''Gu~""8F3DeU^$(((;J
--V$c+,.C
**WX&
'CCGGWU^, 8=}}Et$wtfE*EGECLL*L5(166s;= dC! Fs    C0)N)2__doc__osnumpyr   numpy.testingr   pandaspdstatsmodels.tsa.statespacer   r   r   pathdirnameabspath__file__current_pathread_csvjoinr)   splitup2
read_statarm   PeriodIndexqtrindexrn   r&   arangelentime_trend0c_onesrX   time_trend0_fcastrY   time_trend1time_trend1_fcastr]   r_   r7   rH   rM   rQ   rZ   ra   rf   rq   rv        r6   <module>r      s$   
  )  - "wwrwwx89"r{{GGLLy*DEG  	ggmmBGGMM,/23A6bmmBGGLLgy:JKLBNN377-	1266xG biiE
#
gbggc%j!;Q>?BIIc%j#e*r/: eeGBGGBK!24Eq4HHIbii3u:>*BIIc%j1nc%j1nr.AB 
gbggc%j!;Q>?eeGBGGBK!24Eq4HHI%7P"("("(".*8*2"0"r   