
    gȿ                        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(                  j+                  ej(                  j-                  e            Zej(                  j3                  dd	      Z ej6                  ej(                  j3                  ee            Zej(                  j3                  dd
      Z ej6                  ej(                  j3                  ee            Z G d d      Z G d de      Z  G d de       Z! G d de       Z" G d de       Z# G d de       Z$ G d de       Z% G d de       Z& G d de       Z' G d de      Z( G d d e(      Z) G d! d"e(      Z*d# Z+d$ Z,d% Z-d& Z.d' Z/d( Z0d) Z1d* Z2ejf                  ji                  d+g d,      ejf                  ji                  d-d.d/g      d0               Z5d1 Z6d2 Z7d3 Z8d4 Z9y)5zF
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                       e Zd ZdZd Zej                  j                  d        Zej                  j                  d        Z	d Z
d Zd ZddZdd	Zd
 Zy)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                    t        j                  d      5  t        j                  d       | j                  j	                  dd      }d| j                  _        d| j                  _        | j                  j	                  |j                  ddd	      }d| j                  _        d| j                  _        t        |j                  | j                  j                  d
       d d d        y # 1 sw Y   y xY w)NTrecordalwaysd   F)maxiterdispnmi  )methodr   r   h㈵>rtol)warningscatch_warningssimplefiltermodelfitenforce_stationarityenforce_invertibilityparamsr   llfr   )selfr   s     _/var/www/html/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tests/test_varmax.pytest_mlezCheckVARMAX.test_mle%   s    $$D1 	F!!(+ jjnnSun=G.3DJJ+/4DJJ,jjnnW^^D$*/ % 1G.2DJJ+/3DJJ,GKK)9)9E	F 	F 	Fs   CC,,C5c                    | j                   }|j                  |j                         t        |j                        t        |j                        k(  sJ |j                  |j                  |j                              }t        ||j                         d|_        d|_	        |j                  |j                  |j                              }d|_        d|_	        t        ||j                         y )NFT)
r   filterstart_paramslenparam_namestransform_paramsuntransform_paramsr   r   r    )r#   r   actuals      r$   test_paramszCheckVARMAX.test_params4   s     

U''(5%%&#e.?.?*@@@@ ''$$U%7%78: 2 23 &+"&+#''$$U%7%78: &*"&*# 2 23    c           
         | j                   j                          | j                  }|j                  dkD  rt	        j
                  | j                   j                  |j                           }|j                  |j                  |j                  |j                  z        }t	        j
                  t        |j                        D cg c]4  }|d |j                  ||j                  z  |dz   |j                  z  f   6 c}      }t        | j                   j                  |       n t        | j                   j                  d        |j                  dkD  rt	        j
                  | j                   j                  |j                           }|j                  |j                  |j                  |j                  z        }t	        j
                  t        |j                        D cg c]4  }|d |j                  ||j                  z  |dz   |j                  z  f   6 c}      }t        | j                   j                  |       y t        | j                   j                  d        y c c}w c c}w )Nr   r	   )r   summaryr   k_arnparrayr!   
_params_arreshapek_endogranger   coefficient_matrices_vark_ma
_params_macoefficient_matrices_vma)r#   r   	params_arcoefficientsicoefficient_matrices	params_mas          r$   test_resultszCheckVARMAX.test_resultsM   s    	

 ::>!4!4U5E5E!FGI$,,U]]-2]]UZZ-GIL#%88 uzz*-  ^emm^u}}_ac5==-@@A B- $ 
 >>-/ >>E::>!4!4U5E5E!FGI$,,U]]-2]]UZZ-GIL $&88 uzz*-  ^emm^u}}_ac5==-@@A B- $ 
 >>-/ >>E---s   9I&$9I+c                 b    t        | j                  j                  | j                  d   d       y )Nloglikeư>r   )r   r   r"   truer#   s    r$   test_loglikezCheckVARMAX.test_loglikeq   s!    (($))I*>TJr/   c                 b    t        | j                  j                  | j                  d   d       y )Naic   atol)r   r   rJ   rF   rG   s    r$   test_aiczCheckVARMAX.test_aict   !    (($))E*:Cr/   c                 b    t        | j                  j                  | j                  d   d       y )NbicrK   rL   )r   r   rQ   rF   rG   s    r$   test_biczCheckVARMAX.test_bicx   rO   r/   c                 r    t         | j                  j                  dd|i|| j                  d   |       y )NendpredictrL    r   r   rU   rF   )r#   rT   rM   kwargss       r$   test_predictzCheckVARMAX.test_predict|   s5     DLL  3S3F3IIi 	r/   c                 t    t         | j                  j                  d||d|| j                  d   |       y )NrT   dynamicdynamic_predictrL   rV   rW   )r#   rT   r\   rM   rX   s        r$   test_dynamic_predictz CheckVARMAX.test_dynamic_predict   s8     DLL  DS'DVDII'(	r/   c                     | j                   j                  }d | j                   _        | j                   j                  }t        ||       y N)r   standardized_forecasts_error_standardized_forecasts_errorr   )r#   
cython_sfe
python_sfes      r$   !test_standardized_forecasts_errorz-CheckVARMAX.test_standardized_forecasts_error   s6    \\>>
592\\>>

J/r/   N)rE   )__name__
__module____qualname____doc__r%   pytestmarksmoker.   rB   rH   rN   rR   rY   r^   re   rV   r/   r$   r   r      sm    F [[4 40 [[!F !FFKDD0r/   r   c                   B     e Zd Zedg dfd       Z fdZ fdZ xZS )CheckLutkepohlapprox)dln_invdln_incdln_consumpc           	      2   || _         t        j                  t        j                  g dt        j
                  ddd            }t        j                  |d         j                         |d<   t        j                  |d	         j                         |d
<   t        j                  |d         j                         |d<   |j                  dd|f   }	t        j                  |	f|||d|| _        | j                  j                  |d   |      | _        y )Ninvincconsump
1960-01-01
1982-10-01QSfreqcolumnsindexru   rp   rv   rq   rw   rr   z
1960-04-01
1978-10-01ordertrenderror_cov_typer!   cov_type)rF   pd	DataFramer
   lutkepohl_data
date_ranger3   logdifflocr   VARMAXr   smoothr   )
clsrF   r   r   r   r   included_varsrX   dtaendogs
             r$   setup_classzCheckLutkepohl.setup_class   s     ll))3L--lFH E
+002IE
+002IVVC	N388:M\1=@AMM% KuE1?KCIK	 ii&&tH~&Ir/   c                 (    t        |   dddi| y )NrT   ry   rV   superrY   r#   rX   	__class__s     r$   rY   zCheckLutkepohl.test_predict   s    888r/   c                 *    t        |   dddd| y )Nry   z
1961-01-01r[   rV   r   r^   r   s     r$   r^   z#CheckLutkepohl.test_dynamic_predict   s"    $ 	
l	
6<	
r/   )rf   rg   rh   classmethodr   rY   r^   __classcell__r   s   @r$   rn   rn      s,    FN"GJ J(9
 
r/   rn   c                   :     e Zd Ze fd       Zd Zd Zd Z xZS )TestVARc                     t         j                  j                         }t        j                  dd  g d   |d<   t        j                  dd  g d   |d<   t
        |   |ddd	       y )
Nr	   )	predict_1	predict_2	predict_3rU   )dyn_predict_1dyn_predict_2dyn_predict_3r]   r	   r   nunstructuredr   )r
   lutkepohl_var1copyvar_resultsilocr   r   r   rF   r   s     r$   r   zTestVAR.setup_class   sz    ,,113%**12. 0= >Y #."2"212"6 8I #J 	s> 	 	
r/   c                     | j                   j                         j                         dz  }t        |dz  | j                  d   d       y N      ?   var_oim-C6?rL   r   _cov_params_approxdiagonalr   rF   r#   bses     r$   test_bse_approxzTestVAR.test_bse_approx   ;    ll--/88:C?Q		) 44@r/   c                     | j                   j                         j                         dz  }t        |dz  | j                  d   d       y Nr   r   r   {Gz?rL   r   _cov_params_oimr   r   rF   r   s     r$   test_bse_oimzTestVAR.test_bse_oim   ;    ll**,557<Q		) 44@r/   c                 N   | j                   j                         }|j                  D cg c]  }t        |       }}| j                  d   }t        j                  d|d         sJ t        | j                  j                        D ]  }|| j                  j                  z  }||dz      }| j                  j                  |   }t        j                  d|z  |      sJ t        |j                  d            dk(  sJ t        j                  d||dz      z  |      sJ t        j                  d	||d
z      z  |      sJ t        j                  d||dz      z  |      rJ  |d   }t        j                  d|      sJ t        |j                  d            dk(  sJ || j                  j                     }| j                  j                  | j                  j                     }t        t        |            D ]&  }t        j                  ||    d||   d|      r&J  y c c}w )Nr!   Model:.*VAR\(1\)r   r   Results for equation %s
   L1.dln_inv +%.4fL1.dln_inc +%.4fr	   L1.dln_consump +%.4fError covariance matrix    +.4fr   r1   tablesstrrF   researchr8   r   r7   endog_namesr)   split_params_state_covr*   	r#   r1   tabler   r!   r?   offsetnamenamess	            r$   test_summaryzTestVAR.test_summary   s   ,,&&(*1..9#e*998$ yy,fQi888 tzz))* 	$A+++F1Q3KE ::))!,D996=uEEE u{{4()Q... 99/&!2DDeLLL99/&!2DDeLLL993fVaZ6HH"$ $ $	$$ r
yy2E:::5;;t$%+++

445

&&tzz'C'CDs5z" 	DA99azF1Ic?;UCCC	D? :   H"	rf   rg   rh   r   r   r   r   r   r   r   s   @r$   r   r      '    

 

AA"Dr/   r   c                   :     e Zd Ze fd       Zd Zd Zd Z xZS )TestVAR_diagonalc                     t         j                  j                         }t        j                  dd  g d   |d<   t        j                  dd  g d   |d<   t
        |   |ddd	       y )
Nr	   predict_diag1predict_diag2predict_diag3rU   dyn_predict_diag1dyn_predict_diag2dyn_predict_diag3r]   r   r   r   r   )r
   lutkepohl_var1_diagr   r   r   r   r   r   s     r$   r   zTestVAR_diagonal.setup_class   s|    11668%**12. 0A BY #."2"212"6 8M #N 	s: 	 	
r/   c                     | j                   j                         j                         dz  }t        |dz  | j                  d   d       y )Nr   r   r   r   rL   r   r   s     r$   r   z TestVAR_diagonal.test_bse_approx   r   r/   c                     | j                   j                         j                         dz  }t        |dz  | j                  d   d       y r   r   r   s     r$   r   zTestVAR_diagonal.test_bse_oim   r   r/   c                 N   | j                   j                         }|j                  D cg c]  }t        |       }}| j                  d   }t        j                  d|d         sJ t        | j                  j                        D ]  }|| j                  j                  z  }||dz      }| j                  j                  |   }t        j                  d|z  |      sJ t        |j                  d            dk(  sJ t        j                  d||dz      z  |      sJ t        j                  d	||d
z      z  |      sJ t        j                  d||dz      z  |      rJ  |d   }t        j                  d|      sJ t        |j                  d            dk(  sJ || j                  j                     }| j                  j                  | j                  j                     }t        t        |            D ]&  }t        j                  ||    d||   d|      r&J  y c c}w )Nr!   r   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   s	            r$   r   zTestVAR_diagonal.test_summary  s   ,,&&(*1..9#e*998$ yy,fQi888 tzz))* 	$A+++F1Q3KE ::))!,D996=uEEE u{{4()Q... 99/&!2DDeLLL99/&!2DDeLLL993fVaZ6HH"$ $ $	$$ r
yy2E:::5;;t$%***

445

&&tzz'C'CDs5z" 	DA99azF1Ic?;UCCC	D? :r   r   r   s   @r$   r   r      r   r/   r   c                   V     e Zd ZdZe fd       Zd Zd Zd Zd Z	d Z
d Zd	 Z x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                 r   t         j                  j                         }t        j                  dd  g d   |d<   t        j                  dd  g d   |d<   t
        |   |dddd	
       g d| _        t        j                  |d   d d | j                  f   }| j                  j                  |      | _        y )Nr	   r   rU   r   r]   r   r   r   T)r   r   r   measurement_error)      ?       @g      @r!   )r
   lutkepohl_var1_diag_measr   r   r   r   r    true_measurement_error_variancesr3   r_r   r   results2)r   rF   r!   r   s      r$   r   z%TestVAR_measurement_error.setup_class3  s    66;;=%**12. 0A BY #."2"212"6 8M #N 	s:" 	 	
 0<,tH~cr*;;< =yy''/r/   c                      y r`   rV   rG   s    r$   r%   z"TestVAR_measurement_error.test_mleG       	r/   c                      y r`   rV   rG   s    r$   r   z)TestVAR_measurement_error.test_bse_approxL  r   r/   c                      y r`   rV   rG   s    r$   r   z&TestVAR_measurement_error.test_bse_oimQ      r/   c                      y r`   rV   rG   s    r$   rN   z"TestVAR_measurement_error.test_aicU  r   r/   c                      y r`   rV   rG   s    r$   rR   z"TestVAR_measurement_error.test_bicZ  r   r/   c                    | j                   j                  j                  j                         D ]  }|dk(  r	|dk(  rd| j                  j
                  j                  }t        j                  | j                        d d d d t        j                  f   }t        ||       rt        t        | j                  j
                  |      t        | j                  j
                  |              y )Nobsobs_cov)r   ssmshapeskeysr   filter_resultsr  r3   diagr   newaxisr   getattrr   )r#   r   r-   desireds       r$   test_representationz-TestVAR_measurement_error.test_representation_  s     JJNN))..0 
	IDu}"55==''99;;<a;KMVW-WT]]%A%A4H$T\\%@%@$GI
	Ir/   c                    | j                   j                         }|j                  D cg c]  }t        |       }}| j                  d   }t        j                  d|d         sJ t        | j                  j                        D ]  }|| j                  j                  z  }||dz      }| j                  j                  |   }t        j                  d|z  |      sJ t        |j                  d            dk(  sJ t        j                  d||dz      z  |      sJ t        j                  d	||d
z      z  |      sJ t        j                  d||dz      z  |      sJ t        j                  d||d
z       z  |      rJ  |d   }t        j                  d|      sJ t        |j                  d            dk(  sJ || j                  j                     }| j                  j                  | j                  j                     }t        t        |            D ]&  }t        j                  ||    d||   d|      r&J  y c c}w )Nr!   r   r   r   r   r   	   r   r   r	   r   zmeasurement_variance +%.4gr   r   r   r   r   r   r   s	            r$   r   z&TestVAR_measurement_error.test_summaryn  s;   ,,&&(*1..9#e*998$ yy,fQi888 tzz))* 	$A+++F1Q3KE ::))!,D996=uEEE u{{4()Q... 99/&!2DDeLLL99/&!2DDeLLL993fVaZ6HH"$ $ $999FQqS6NJ"$ $ $!	$( r
yy2E:::5;;t$%***

445

&&tzz'C'CDs5z" 	DA99azF1Ic?;UCCC	DC :s   I)rf   rg   rh   ri   r   r   r%   r   r   rN   rR   r  r   r   r   s   @r$   r   r   &  sA     0 0&



I$Dr/   r   c                   @     e Zd Ze fd       Zd Zd Zd Zd Z xZ	S )TestVAR_obs_interceptc                     t         j                  j                         }t        j                  dd  g d   |d<   t        j                  dd  g d   |d<   t
        |   |ddd|d	   
       y )Nr	   )predict_int1predict_int2predict_int3rU   )dyn_predict_int1dyn_predict_int2dyn_predict_int3r]   r   r   r   obs_intercept)r   r   r   r  )r
   lutkepohl_var1_obs_interceptr   r   r   r   r   r   s     r$   r   z!TestVAR_obs_intercept.setup_class  s    ::??A%**12. 0@ AY #."2"212"6 8L #M 	c%T/5J 	 	
r/   c                     | j                   j                         j                         dz  }t        |dz  | j                  d   d       y r   r   r   s     r$   r   z%TestVAR_obs_intercept.test_bse_approx  r   r/   c                     | j                   j                         j                         dz  }t        |dz  | j                  d   d       y r   r   r   s     r$   r   z"TestVAR_obs_intercept.test_bse_oim  r   r/   c                      y r`   rV   rG   s    r$   rN   zTestVAR_obs_intercept.test_aic  r   r/   c                      y r`   rV   rG   s    r$   rR   zTestVAR_obs_intercept.test_bic  r   r/   )
rf   rg   rh   r   r   r   r   rN   rR   r   r   s   @r$   r  r    s+    
 
AA
r/   r  c                   b     e Zd Ze fd       Zd Zd Zd Zd Zd Z	 fdZ
d Zd	 Zd
 Z xZS )TestVAR_exogc           	      6   t         j                  j                         }t        j                  dd g d   |d<   d|d   j                  dd d f<   t        j                  dd  g d   |d<   t        j                  d      d	z   }t        | !  |d
dd|dd       y )Nr	   L   )predict_exog1_1predict_exog1_2predict_exog1_3rU   r   )fcast_exog1_dln_invfcast_exog1_dln_incfcast_exog1_dln_consumpfcastK   r   r   r   r   approximate_diffuser   r   r   exoginitializationloglikelihood_burn)	r
   lutkepohl_var1_exogr   r   r   r3   aranger   r   r   rF   r.  r   s      r$   r   zTestVAR_exog.setup_class  s    11668%**1R0 2E FY &'YQT"#((- /J KW yy}q c.&;  	 	
r/   c                      y r`   rV   rG   s    r$   r%   zTestVAR_exog.test_mle      r/   c                      y r`   rV   rG   s    r$   rN   zTestVAR_exog.test_aic  r   r/   c                      y r`   rV   rG   s    r$   rR   zTestVAR_exog.test_bic  r   r/   c                     | j                   j                         j                         dz  }t        |d d dz  | j                  d   d       y Nr   ir   r   r   rL   r   r   s     r$   r   zTestVAR_exog.test_bse_approx  sA    ll--/88:C?CR!TYYy%9Er/   c                     | j                   j                         j                         dz  }t        |d d dz  | j                  d   d       y r9  r   r   s     r$   r   zTestVAR_exog.test_bse_oim  sA    ll**,557<CR!TYYy%9Er/   c                 0    t         t        |   dd       y Nr   gMbP?rT   rM   r   rn   rY   r#   r   s    r$   rY   zTestVAR_exog.test_predict      nd0\0Mr/   c                      y r`   rV   rG   s    r$   r^   z!TestVAR_exog.test_dynamic_predict  r   r/   c                     t        j                  dd      dz   d d t         j                  f   }| j                  j	                  d|      }t        || j                  d   d       y )	Nr+  [   r      stepsr.  r*  rE   rL   )r3   r2  r  r   forecastr   rF   r#   r.  r  s      r$   test_forecastzTestVAR_exog.test_forecast  sT    		"e$q(!RZZ-8 ,,''bt'<7!3$?r/   c                    | j                   j                         }|j                  D cg c]  }t        |       }}| j                  d   }t        j                  d|d         sJ t        | j                  j                        D ]  }|| j                  j                  z  }||dz      }| j                  j                  |   }t        j                  d|z  |      sJ t        |j                  d            dk(  sJ t        j                  d||dz      z  |      sJ t        j                  d	||d
z      z  |      sJ t        j                  d||dz      z  |      sJ t        j                  dt        || j                  j                     |   d      z   |      rJ  |d   }t        j                  d|      sJ t        |j                  d            dk(  sJ || j                  j                     }| j                  j                   | j                  j                     }t        t        |            D ]&  }t        j                  ||    d||   d|      r&J  y c c}w )Nr!   zModel:.*VARX\(1\)r   r   r   r   r  r   r   r	   r   z	beta.x1 +   precr   r   r   r   r   )r   r1   r   r   rF   r   r   r8   r   r7   r   r)   r   r   _params_regressionr   r*   r   s	            r$   r   zTestVAR_exog.test_summary  sS   ,,&&(*1..9#e*998$ yy-vay999 tzz))* 	A+++F1Q3KE ::))!,D996=uEEE u{{4()Q... 99/&!2DDeLLL99/&!2DDeLLL99&
);;UD D D99d6$***G*G#H#K()+ +  !	, r
yy2E:::5;;t$%+++

445

&&tzz'C'CDs5z" 	DA99azF1Ic?;UCCC	DG :s   I$)rf   rg   rh   r   r   r%   rN   rR   r   r   rY   r^   rI  r   r   r   s   @r$   r!  r!    sI     
 
 F
F
N@$&Dr/   r!  c                   \     e Zd Ze fd       Zd Zd Zd Zd Zd Z	 fdZ
d Zd	 Z xZS )
TestVAR_exog2c           	         t         j                  j                         }t        j                  dd g d   |d<   d|d   j                  dd d f<   t        j                  dd  g d   |d<   t
        j                  t        j                  d      t        j                  d	      d
z   d d t
        j                  f   f   }t        | -  |ddd|dd       y )Nr	   r#  )predict_exog2_1predict_exog2_2predict_exog2_3rU   r   )fcast_exog2_dln_invfcast_exog2_dln_incfcast_exog2_dln_consumpr*  )r+  r	   r+  r   r   r   r   r,  r-  )r
   lutkepohl_var1_exog2r   r   r   r3   c_onesr2  r  r   r   r3  s      r$   r   zTestVAR_exog2.setup_class'  s    22779%**1R0 2E FY &'YQT"#((- /J KW uuRWWW%		"(91bjj='IIJc.&;  	 	"r/   c                      y r`   rV   rG   s    r$   r%   zTestVAR_exog2.test_mle7  r5  r/   c                      y r`   rV   rG   s    r$   rN   zTestVAR_exog2.test_aic:  r5  r/   c                      y r`   rV   rG   s    r$   rR   zTestVAR_exog2.test_bic=  r5  r/   c                      y r`   rV   rG   s    r$   r   zTestVAR_exog2.test_bse_approx@  r5  r/   c                      y r`   rV   rG   s    r$   r   zTestVAR_exog2.test_bse_oimC  r5  r/   c                 0    t         t        |   dd       y r<  r>  r?  s    r$   rY   zTestVAR_exog2.test_predictF  r@  r/   c                      y r`   rV   rG   s    r$   r^   z"TestVAR_exog2.test_dynamic_predictI  r   r/   c                    t         j                  t        j                  d      t        j                  dd      dz   d d t         j                  f   f   }| j
                  j                  d|      }t        || j                  d   d	       y )
N)rD  r	   r+  rC  r   rD  rE  r*  rE   rL   )	r3   rY  rZ  r2  r  r   rG  r   rF   rH  s      r$   rI  zTestVAR_exog2.test_forecastM  sq    uuRWWW%iiE*Q.2::>? @ ,,''bt'<7!3$?r/   )rf   rg   rh   r   r   r%   rN   rR   r   r   rY   r^   rI  r   r   s   @r$   rP  rP  "  sA    
 " "N@r/   rP  c                   :     e Zd Ze fd       Zd Zd Zd Z xZS )TestVAR2c                     t         j                  j                         }t        j                  dd  ddg   |d<   t        j                  dd  ddg   |d<   t
        |   |dd	d
ddg       y )Nr	   predict_var2_1predict_var2_2rU   dyn_predict_var2_1dyn_predict_var2_2r]   )r   r   r   r   rp   rq   )r   r   r   r   )r
   lutkepohl_var2r   r   r   r   r   r   s     r$   r   zTestVAR2.setup_classW  s    ,,113%**12.0@0@0B CY"-"2"212"68L8L8N #Oc.$i0 	 	2r/   c                     | j                   j                         j                         dz  }t        |d d dz  | j                  d   d d d       y )Nr   r   r   r   r   rL   r   r   s     r$   r   zTestVAR2.test_bse_approxb  sH    ll--/88:C?CR!TYYy%9#2%>TJr/   c                     | j                   j                         j                         dz  }t        |d d dz  | j                  d   d d d       y )Nr   r   r   r   r   rL   r   r   s     r$   r   zTestVAR2.test_bse_oimg  sH    ll**,557<CR!TYYy%9#2%>TJr/   c                    | j                   j                         }|j                  D cg c]  }t        |       }}| j                  d   }t        j                  d|d         sJ t        | j                  j                        D ]  }|| j                  j                  z  | j                  j                  z  }||dz      }| j                  j                  |   }t        j                  d|z  |      sJ t        |j                  d            dk(  sJ t        j                  d||dz      z  |      sJ t        j                  d	||d
z      z  |      sJ t        j                  d||dz      z  |      sJ t        j                  d||dz      z  |      rJ  |d   }t        j                  d|      sJ t        |j                  d            dk(  sJ || j                  j                     }| j                  j                  | j                  j                     }t        t        |            D ]&  }t        j                  ||    d||   d|      r&J  y c c}w )Nr!   zModel:.*VAR\(2\)r   r   r   r   r  r   r   r	   zL2.dln_inv +%.4fzL2.dln_inc +%.4frK   r   r   r   r   r   )r   r1   r   r   rF   r   r   r8   r   r7   r2   r   r)   r   r   r*   r   s	            r$   r   zTestVAR2.test_summaryl  s:   ,,&&(*1..9#e*998$ yy,fQi888 tzz))* 	MA+++djjoo=F1Q3KE ::))!,D996=uEEE u{{4()Q... 99/&!2DDeLLL99/&!2DDeLLL99/&!2DDeLLL99/&!2DDeLLL	M$ r
yy2E:::5;;t$%***

445

&&tzz'C'CDs5z" 	DA99azF1Ic?;UCCC	D? :s   Ir   r   s   @r$   rd  rd  V  s'    2 2K
K
"Dr/   rd  c                       e Zd Zedd       Zy)CheckFREDManufacturingc                    || _         t        j                  j                  t        dd      }t        |d      5 }t        j                  |      }	d d d        t        j                  	j                  d      |	_
        |	d   j                         |	d<   |	d   j                         |	d	<   |	j                  d
d dd	gf   }
t        j                  d      5  t        j                  d       t!        j"                  |
f|||d|| _        d d d        | j$                  j'                  |d   |      | _        y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nr   zmanufac.dtarbMSr{   	lncaputil
dlncaputillnhoursdlnhoursz
1972-02-01Tr   r   r   r!   r   )rF   ospathjoincurrent_pathopenr   
read_stataDatetimeIndexmonthr   r   r   r   r   r   r   r   r   r   r   )r   rF   r   r   r   r   rX   rx  	test_datar   r   s              r$   r   z"CheckFREDManufacturing.setup_class  s/    ww||L)]C$ 	+--	*C	+$$SYYT:	,113Li.--/Jj'AAB$$D1 	O!!(+e O55COGMOCI	O
 ii&&tH~&I	+ 	+	O 	Os   D75E7E EN)ro   )rf   rg   rh   r   r   rV   r/   r$   ro  ro    s    J Jr/   ro  c                        e Zd ZdZe fd       Zd Zej                  j                  d      d        Z
ej                  j                  d      d        Zd Zd Z fd	Z fd
Zd Z xZS )	TestVARMAN
    Test against the sspace VARMA example with some params set to zeros.
    c                     t         j                  j                         }t        j                  dd  ddg   |d<   t        j                  dd  ddg   |d<   t
        |   |dd	d
       y )Nr	   predict_varma11_1predict_varma11_2rU   dyn_predict_varma11_1dyn_predict_varma11_2r]   r	   r	   r   r   r   )r
   fred_varma11r   varmax_resultsr   r   r   r   s     r$   r   zTestVARMA.setup_class  s    **//1(--ab13F3F3H IY"0"5"5ab"9#%<;> #? 	&J 	 	
r/   c                      y r`   rV   rG   s    r$   r%   zTestVARMA.test_mle       	r/   ,Known failure: standard errors do not match.c                      y r`   rV   rG   s    r$   r   zTestVARMA.test_bse_approx  r   r/   c                      y r`   rV   rG   s    r$   r   zTestVARMA.test_bse_oim  r   r/   c                      y r`   rV   rG   s    r$   rN   zTestVARMA.test_aic  r  r/   c                      y r`   rV   rG   s    r$   rR   zTestVARMA.test_bic  r  r/   c                 (    t         |   dd       y N
2009-05-01r   r=  r   r?  s    r$   rY   zTestVARMA.test_predict      D9r/   c                 (    t         |   dd       y Nr  
2000-01-01r[   r   r?  s    r$   r^   zTestVARMA.test_dynamic_predict  s    $|$Lr/   c           	         | j                   j                         }|j                  D cg c]  }t        |       }}| j                  d   }t        j                  d|d         sJ t        | j                  j                        D ]q  }|| j                  j                  z  }| j                  j                  dz  | j                  j                  z  || j                  j                  z  z   }||dz      }| j                  j                  |   }t        j                  d|z  |      sJ t        |j                  d            dk(  sJ t        j                  dt        ||dz      d	
      z   |      sJ t        j                  dt        ||dz      d	
      z   |      sJ t        j                  dt        ||dz      d	
      z   |      sJ t        j                  dt        ||dz      d	
      z   |      rrJ  |d   }t        j                  d|      sJ t        |j                  d            dk(  sJ || j                  j                     }| j                  j                   | j                  j                     }	t        t        |	            D ]0  }t        j                  |	|    dt        ||   d	
       |      r0J  y c c}w )Nr!   zModel:.*VARMA\(1,1\)r   r   r   r   r  zL1.dlncaputil +rK  rL  zL1.dlnhours +r	   zL1.e\(dlncaputil\) +zL1.e\(dlnhours\) +r   r      r   )r   r1   r   r   rF   r   r   r8   r   r7   r2   r   r)   r   r   r   r*   )
r#   r1   r   r   r!   r?   	offset_ar	offset_mar   r   s
             r$   r   zTestVARMA.test_summary  s   ,,&&(*1..9#e*998$ yy0&)<<< tzz))* 	ADJJ...I++Q.@TZZ///0I1Q3KE ::))!,D996=uEEE u{{4()Q... 99!D	A)>Q$GG   99$vi!m'<1"EE   99'$vi!m/D1*MM   99%VIM-B(KK  /	8 r
yy2E:::5;;t$%***

445

&&tzz'C'CDs5z" 	NA99azD,C+DEuMMM	NS :s   K)rf   rg   rh   ri   r   r   r%   rj   rk   skipr   r   rN   rR   rY   r^   r   r   r   s   @r$   r  r    s     	
 	
 [[DE F [[DE F:M,Nr/   r  c                        e Zd ZdZe fd       Zd Zej                  j                  d      d        Z
ej                  j                  d      d        Zd Zd Z fd	Z fd
Z xZS )TestVMA1r  c                     t         j                  j                         }t        j                  dd  ddg   |d<   t        j                  dd  ddg   |d<   t
        |   |dd	d
       y )Nr	   predict_vma1_1predict_vma1_2rU   dyn_predict_vma1_1dyn_predict_vma1_2r]   r   r	   r   r   r   )r
   	fred_vma1r   r  r   r   r   r   s     r$   r   zTestVMA1.setup_class  s    '',,.(--ab13C3C3E FY"0"5"5ab"9 "6;8 #9 	c* 	 	
r/   c                      y r`   rV   rG   s    r$   r%   zTestVMA1.test_mle  r  r/   r  c                      y r`   rV   rG   s    r$   r   zTestVMA1.test_bse_approx!  r   r/   c                      y r`   rV   rG   s    r$   r   zTestVMA1.test_bse_oim&  r   r/   c                      y r`   rV   rG   s    r$   rN   zTestVMA1.test_aic+  r  r/   c                      y r`   rV   rG   s    r$   rR   zTestVMA1.test_bic1  r  r/   c                 (    t         |   dd       y r  r   r?  s    r$   rY   zTestVMA1.test_predict7  r  r/   c                 (    t         |   dd       y r  r   r?  s    r$   r^   zTestVMA1.test_dynamic_predict:  s    $l 	% 	
r/   )rf   rg   rh   ri   r   r   r%   rj   rk   r  r   r   rN   rR   rY   r^   r   r   s   @r$   r  r  
  s     	
 	
 [[DE F [[DE F:
 
r/   r  c                  2   t        j                  d      j                  dd      } t        j                  d      }t        j                  |t        j
                  ddd            }t        j                  | |d	
       t        j                  | |d	
       y )N   
   r   r  z
2009-01-01YSr{   r   r   r.  r   )r3   r2  r6   r   Seriesr   r   r   )r   r.  exog2s      r$   test_specificationsr  @  so    IIbM!!"a(E99R=DIId"--l59#; <E MM%d&1 MM%e62r/   c                     i t         _        t        j                  d      j	                  dd      } t        j                  t              5  t        j                  | dd       d d d        t        j                  t              5  t        j                  | dd       d d d        t        j                  t              5  t        j                  | d	       d d d        t        j                  d
      5 }t        j                  d       t        j                  | d	       d d d        t        j                  d
      5 }t        j                  d       t        j                  | d	       d}t        |d   j                        |k(  sJ 	 d d d        t        j                          y # 1 sw Y   HxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY w)Nr  r  r   r    r   r   )r   r   )r   r   r   Tr   r   r  zcEstimation of VARMA(p,q) models is not generically robust, due especially to identification issues.r   )r   __warningregistry__r3   r2  r6   rj   raises
ValueErrorr   r   r   r   r   messageresetwarnings)r   wr  s      r$   test_misspecificationsr  N  ss   !#F IIbM!!"a(E 
z	" 5e645 
z	" >e6"=> 
z	" +e6*+ 
	 	 	- +h'e6*+
 
	 	 	- ,h'e6*?1Q4<< G+++, 35 5> >+ ++ +
, ,s=   
F)F6>G4-G?AG)F36G GGG$c                     d} d}t         j                  j                  d       t         j                  j                  | |f      }t         j                  |d ddf<   t         j                  |dddf<   t         j                  j                  | df      }t         j                  j                  | df      }t        j                  d	d
|       }t        j                  ||      }t        j                  |j                         |      }t        j                  ||      }t        j                  ||d      t        j                  ||d      t        j                  ||d      t        j                  ||d      g}	|	D ]z  }
|
j                   |
j                  d      }|j                          |j                          |j                  d       |j!                          t         j                  j                  d|
j"                  f      }|j%                  d|       |j'                  d|       t         j                  j                  d|
j"                  f      }t)        j*                  t,              5  |j%                  d|       d d d        t         j                  j                  d|
j"                  dz   f      }t)        j*                  t,              5  |j%                  d|       d d d        } t)        j*                  t,              5  t        j                  |t        j.                  d      d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r   i  sizerK  r      r	   z
1970-01-01rz   )r|   periodsr  r   r  F)r   T)r\   rE  )r  rK  )r3   randomseednormalnanr   r   r   r  squeezer   r   r(   r   r1   rU   get_predictionk_exogrG  get_forecastrj   r  r  zeros)nobsr7   r   exog1r  r   endog_pdexog1_pdexog2_pdmodelsmodresoos_exogs                r$   test_misc_exogr  q  s   DGIINN4II4/2E66E"1"a%LFFE!A#q&MII4),EII4),EMM,T4@E||E/Hyy6H||E/H 	e%v6e%v6hXV<hXV<	F  1gg5g!D!99##!SZZ#918,qx0 99##!SZZ#9]]:& 	1LLqxL0	1 99##!SZZ!^)<#=]]:& 	1LLqxL0	1 	1'1. 
z	" Ce"((7"36BC C	1 	1	1 	1C Cs$   >M"M,M(M	M%	(M1c                     t         j                  j                  d       t        j                  t         j                  j                  d            } t        j                  | d      }|j                  |j                        }|j                  dddg      }|j                  j                  t        j                  dg            sJ y )	Ni )2   r   r  r   r  r	   a)startrT   r   )r3   r  r  r   r   r  r   r   r   r(   rU   r   equalsIndex)r   r  r  outs       r$   test_predict_custom_indexr    s    IINN6LL))w)78E
--V
,C
**S%%
&C
++A1SE+
2C99BHHcUO,,,r/   c            	         d} t        j                  | df      dz  }t        j                  |       }t        j                  |d|d      }|j	                  t         j
                  dgdz  ddd	dd	f         }d
}t        j                  d	      }t        j                  d      }t        |j                  d	|      d       t        |j                  d	|      d       t        |j                  d	|      d       d}t        j                  |      }t        j                  |d	f      }t        |j                  ||      d       t        |j                  ||      d       t        t        |j                  |d
       t        t        |j                  |d	dg       t        t        |j                  |t        j                  |df             y )Nr   r   r   r   r   )r   r.  r   r   rK  r	   r   r  r.  r  )
r3   rZ  r   r   r   r   r   rG  r   r  )	r  r   r.  r  r  exog_fcast_scalarexog_fcast_1dimexog_fcast_2dimhs	            r$   test_forecast_exogr    sl   DGGT1I$E774=D
--V$c
BC
**RUUA37CaA56
7C ggajOggfoOCLL):L;R@CLLL92>CLLL92> 	AggajOggq!foOCLLL92>CLLL92> *cllAB7*cllAQF;*cllABGGQFODr/   c                 (   g d}g d}|D ]"  }t        t        ||      t        | |             $ |D ]6  }t        t        |j                  |      t        | j                  |             8 t        |j                         | j                                y )N)r   r   r   r   r   r    k_params)r  r7   k_statesk_posdefr  designr  state_intercept
transition	selection	state_cov)r   r  r  _get_init_kwds)r  mod2attrs	ssm_attrsattrs        r$   check_equivalent_modelsr    s    EENI  >WT4('#t*<=>  FWTXXt,gcggt.DEF $$&(:(:(<=r/   c                     d} t        j                  | df      dz  }t        j                  |       }ddg}ddg}dd	g}d
dg}d
dg}d
dg}dd l}	g d}
|	j                  ||||||      D ]  }t	        t        |
|            }t        j                  d
      5  t        j                  d       t        j                  |fd|i|}t        j                  |fd|i|j                         }d d d        t                y # 1 sw Y   xY w)Nr   rK   r   r   r  tr   r   r   FTr   )r   r   r   r   r   r    r   ignorer.  )r3   rZ  	itertoolsproductdictzipr   r   r   r   r   r  r  )r  r   r.  orderstrendserror_cov_typesmeasurement_errorsenforce_stationaritiesenforce_invertibilitiesr  r   elementrX   r  r  s                  r$   test_recreate_modelr    s&   DGGT1I$E774=DfF3ZF!>2O#T]$dm>E$$VV_%7%;%<> 
+ c%)*$$E2 	K!!(+--;D;F;C==JTJS5G5G5IJD	K 	 T*
+	K 	Ks   ADD
	c            	      *   t        j                  d      j                  dd      } t        j                  d      }g d}t	        j
                  | dd|      }|j                  |      }t	        j
                  | d d dd|d d       }|j                  |      }|j                  | dd  |dd  	      }t        |j                  |j                         t        |j                  |j                         d
D ]"  }t        t        ||      t        ||             $ dD ]"  }t        t        ||      t        ||             $ t        |j                  dt        j                  d      	      |j                  dt        j                  d      	             y )N   r   r   皙?皙?r   皙        r  r   r   r   r  r   r   r  r   r   r.  r  r  r  r"   llf_obsr0  filtered_statefiltered_state_covpredicted_statepredicted_state_cov	forecastsforecasts_errorforecasts_error_covra   forecasts_error_diffuse_cov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  )r3   r2  r6   rZ  r   r   r   appendr   specificationr   cov_params_defaultr  rG  	r   r.  r!   mod1res1r  res2res3r  s	            r$   test_append_resultsr-    sW   IIcN""3*E773<DF
 ==fCdCD;;vD==s649MD;;vD;;uRSzRS	;2D##T%7%78D++T-D-DE@ ?WT4('$*=>?. ? 	WT4('$*=>? DMM"2772;M7MM"2772;M79r/   r   )r   cctrG  TFc           	         t        j                  d      j                  dd      }g }| dk(  rddg}| dk(  rg d}t         j                  |d	d
dddddf   }t	        j
                  |d|       }|j                  |      }|r|j                          |j                  |d d       }|j                  |      }|r|j                          |j                  |dd        }	t        |	j                  |j                  dd         dD ]1  }
t        ||
      }|	|ddd f   }t        t        |	|
      |d       3 t        |	j                  d      |j                  d             y )Nr  r   r   r.  r
  r  r/  )r
  r  r   r   r   r  r  r   r   r  r  )r  r  r  r  r  r  r  ra   r  r  r  r  r  r   r!  r"  r#  r$  .g-q=rL   r  )r3   r2  r6   r   r   r   r   rG  cloneextendr   r  r  )r   rG  r   trend_paramsr!   r)  r*  r  r+  r,  r  r  s               r$   test_extend_resultsr4  "  sY    IIcN""3*EL|Sz})UU<c3r2 F ==fE:D;;vD 	::eCRj!D;;vD 	;;uRSz"DDLL$,,rs"34. B $%c23h'Gd+W5AB" DMM"%t}}R'89r/   c            	         t        j                  d      j                  dd      } t        j                  d      }g d}t	        j
                  | dd|      }|j                  |      }t	        j
                  | d d dd|d d       }|j                  |      }|j                  | dd  |dd  	      }t        |j                  |j                  dd         d
D ]/  }t        ||      }	|		|	ddd f   }	t        t        ||      |	       1 t        |j                  dt        j                  d      	      |j                  dt        j                  d      	             y )Nr  r   r   r	  r   r  r  r  r  r  .r  )r3   r2  r6   rZ  r   r   r   r2  r   r  r  r   rG  )
r   r.  r!   r)  r*  r  r+  r,  r  r  s
             r$   test_extend_results_exogr6  T  s8   IIcN""3*E773<DF
 ==fCdCD;;vD==s649MD;;vD;;uRSzRS	;2DDLL$,,rs"34. 3 $%c23h'GWT4('2!3$ DMM"2772;M7MM"2772;M79r/   c            	      6   t        j                  d      j                  dd      } t        j                  d      }g d}t	        j
                  | d d dd|d d       }|j                  |      }t	        j
                  | dd  dd|dd        }|j                  |      }|j                  | d d |d d 	      }t        |j                  |j                         t        |j                  |j                         d
D ]"  }t        t        ||      t        ||             $ dD ]"  }t        t        ||      t        ||             $ t        |j                  dt        j                  d      	      |j                  dt        j                  d      	             y )Nr  r   r   r	  r  r   r  r  r  r  r  r  )r3   r2  r6   rZ  r   r   r   applyr   r&  r   r'  r  rG  r(  s	            r$   test_apply_resultsr9  {  sc   IIcN""3*E773<DF
 ==s649MD;;vD==rs649MD;;vD::eCRjtCRy:1D##T%7%78D++T-D-DE@ ?WT4('$*=>?. ? 	WT4('$*=>? DMM"2772;M7MM"2772;M79r/   c                  2   t        j                  t        j                  g dt        j                  ddd            } t        j                  |       j                         j                  dd  } | j                  d d d df   }| j                  d d df   }g d	}g d
}|d   |d   |d   dd|d   |d   |d   |d   |d   g
}t        j                  ||dd      }|j                  j                          |j                  |      }|j                  }t        t!        |      t!        |j"                               t%        j&                  |j                  d d df   |dd      }	|	j                  j                          t%        j&                  |j                  d d df   |dd      }
|
j                  j                          |	j                  |      }|
j                  |      }t)        |j*                  dd  |j*                  |j*                  z   dd         y )Nrt   rx   ry   rz   r{   r}   r	   r   )g{Gzgffffff?g333333ӿgMb`?)gMbp?g?      r   r   rK   r  r   )r.  r   r   )r   r   r	   r.  )r.  r   r   )r   r   r
   r   r   r3   r   r   r   r   r   r  initialize_diffuser   r(   r   r)   r*   r   SARIMAXr   r  )r   r   r.  
ma_params1
ma_params2
vma_paramsmod_vmares_mvaspmod_ma1mod_ma2res_ma1res_ma2s                r$   test_vma1_exogrH    s   
,,%%/HmmL,TBDC &&+



!
!!"
%CHHQUOE88AqD>D*J+JQ-AQ-Z]Q-AQ-A	0J mmEF+57GKK""$nnZ(G 
		BR#g1123 ooejjA.T$')GKK""$ooejjA.T$')GKK""$nnZ(GnnZ(G GOOAB'__w6;=r/   c            	      X   t        j                  d      } g d}g d}t        j                  | dd      }|}t	        |j
                  |       t        j                  | ddg      }dd	g|z   }t	        |j
                  |       |j                  d
dg|z          t        |d   d
dg       t        j                  | dddg      }g d|z   }t	        |j
                  |       |j                  g d|z          t        |d   d
       t        |d   d       |j                  g d|z          t        |d   t        j                  dd             t        |d   dt        j                  dd      z         |j                  g d|z          t        |d   d
t        j                  dd      z          t        |d   ddt        j                  dd      z  z          t        j                  | dddg      }ddg|z   }t	        |j
                  |       |j                  ddg|z          t        |d   t        j                  dd             t        |d   dt        j                  dd      z         t        j                  | dg d      }g d|z   }t	        |j
                  |       |j                  g d|z          t        |d   d
       t        |d   d       |j                  g d|z          t        |d   t        j                  dd      dz         t        |d   dt        j                  dd      dz  z         |j                  g d|z          t        |d   d
t        j                  dd      dz  z          t        |d   ddt        j                  dd      dz  z  z          y )N)rK   r   )zL1.y1.y1zL1.y2.y1zL1.y1.y2zL1.y2.y2zsqrt.var.y1zsqrt.cov.y1.y2zsqrt.var.y2)r   r   r   g?r   r  r   r   r   r  r	   intercept.y1intercept.y2333333?r;  r  )rJ  drift.y1rK  drift.y2)rL  r   r;  r   )r  r   )r  r	   )r   r	   r   皙?r      rO  )rL  r	   r;  rO  r   rM  rN  )r	   r   r	   )rJ  z
trend.2.y1rK  z
trend.2.y2)	r3   r  r   r   r   r*   updater   r2  )r   
base_namesbase_paramsr  r  s        r$   test_param_names_trendrT    s?   HHVEBJ1K --V3
7CG'* --VA3
7C~.;G'*JJT{[()C)*S$K8 --VAq6
:C,.89G'*JJ ;./C,-s3C,-t4JJ~+,C,-ryyA?C,-sRYYq!_/DEJJ"[01C,-sRYYq!_/DEC,-tcBIIaO6K/KL --VAq6
:C:&3G'*JJ3x+%&C,-ryyA?C,-sRYYq!_/DE --V9
=C.0:;G'*JJ ;./C,-s3C,-t4JJ~+,C,-ryyA/ABC,-sRYYq!_a5G/GHJJ"[01C,-sRYYq!_a5G/GHC,-tcBIIaOQ<N6N/NOr/   ):ri   rw  r   r   numpyr3   numpy.testingr   r   r   pandasr   rj   statsmodels.tsa.statespacer   r   statsmodels.iolib.summaryr   r   r
   rx  dirnameabspath__file__rz  ry  var_pathread_csvr   varmax_pathr  r   rn   r   r   r   r  r!  rP  rd  ro  r  r  r  r  r  r  r  r  r  r-  rk   parametrizer4  r6  r9  rH  rT  rV   r/   r$   <module>ra     s   
 	   F F   6 * #wwrwwx8977<<	#:;bkk"'',,|X>?ggll9&@ARWW\\,DEp0 p0f
[ 
>8Dn 8Dv8D~ 8DvlD lD^N DhD> hDV1@N 1@h8D~ 8DvJ[ J._N& _ND3
% 3
l3 F/Cd-E@>$+8%9P "23dE]3-: 4 4-:`$9N&9R)=X6Pr/   