
    !g                    	   d Z ddlZddlZddlmZ ddl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 ddlmZ dd	lmZmZmZmZmZ ej2                  j5                  ej2                  j7                  e            Zej2                  j=                  d
d      Z ej@                  eejB                  z   ez         Z"ej2                  j=                  d
d      Z# ej@                  ej2                  j=                  ee#            Z$ G d d      Z% G d d      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-      Z0 G d% d&e'      Z1 G d' d(e1      Z2 G d) d*e1      Z3 G d+ d,e1      Z4 G d- d.e1      Z5 G d/ d0      Z6 G d1 d2e6      Z7 G d3 d4e6      Z8 G d5 d6e6      Z9 G d7 d8e6      Z: G d9 d:e6      Z; G d; d<e6      Z< G d= d>e6      Z= G d? d@e6      Z> G dA dBe6      Z? G dC dDe6      Z@ G dE dFe6      ZA G dG dHe6      ZB G dI dJe6      ZC G dK dLe6      ZD G dM dNe6      ZE G dO dPe6      ZF G dQ dRe6      ZG G dS dTe6      ZH G dU dVe6      ZI G dW dXe6      ZJ G dY dZe6      ZK G d[ d\e6      ZL G d] d^e6      ZM G d_ d`e6      ZN G da dbe6      ZO G dc dde6      ZP G de dfe6      ZQ G dg dhe6      ZR G di dje6      ZS G dk dle6      ZT G dm dne6      ZU G do dpe6      ZV G dq dre6      ZW G ds dte6      ZX G du dve6      ZY G dw dxe6      ZZ G dy dze6      Z[ G d{ d|e6      Z\ G d} d~e6      Z] G d de6      Z^ G d de6      Z_ G d de6      Z` G d de6      Za G d de6      Zb G d de6      Zc G d de6      Zd G d de6      Ze G d de6      Zf G d de6      Zg G d de6      Zh G d de6      Zi G d de6      Zj G d de6      Zk G d de6      Zl G d de6      Zm G d de6      Zn G d de6      Zo G d de6      Zp G d de6      Zq G d de6      Zrd Zsd Ztd Zud Zvd Zwd Zxe	j                  j                  d        Z{d Z|d Z}ddZ~e	j                  j                  d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                   dÄ        ZdĄ Zdń ZdƄ Zy)zG
Tests for SARIMAX models

Author: Chad Fulton
License: Simplified-BSD
    N)PLATFORM_WIN)sarimaxtools   )results_sarimax)add_constant)Bunch)assert_assert_equalassert_almost_equalassert_raisesassert_allcloseresultszresults_realgdpar_stata.csvzresults_sarimax_coverage.csvc                   J    e Zd ZdZed        Zd Zd Zd Zd Z	d Z
d Zd	 Zy
)TestSARIMAXStatsmodelsz
    Test ARIMA model using SARIMAX class against statsmodels ARIMA class

    Notes
    -----

    Standard errors are quite good for the OPG case.
    c                    t         j                  | _        | j                  d   }t               }d|_        d|_        d|_        d|_        t        j                  g d      |_
        t        j                  g d      |_        || _        t        j                  |dd	d
d
      | _        | j                  j!                  d      | _        y )NdatagI=`gI=kq@gEs8r@g	VqYq@)gF?g%X?gEP^ڿ)g#W?gB½S?gm6@?r   r   r   cT)ordertrendsimple_differencinghamilton_representationdisp)r   wpi1_stationarytruer	   llfaicbichqicnparrayparamsbseresult_ar   SARIMAXmodel_bfitresult_b)clsendogr'   s      j/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/tsa/statespace/tests/test_sarimax.pysetup_classz"TestSARIMAXStatsmodels.setup_class+   s    "22  7)((*((#HIxx DEooe9C:>>BD {{B/    c                 l    t        | j                  j                  | j                  j                         y N)r   r+   r   r'   selfs    r.   test_loglikez#TestSARIMAXStatsmodels.test_loglike?        ))4==+<+<=r0   c                 l    t        | j                  j                  | j                  j                         y r2   )r   r+   r    r'   r3   s    r.   test_aiczTestSARIMAXStatsmodels.test_aicB   r6   r0   c                 l    t        | j                  j                  | j                  j                         y r2   )r   r+   r!   r'   r3   s    r.   test_biczTestSARIMAXStatsmodels.test_bicE   r6   r0   c                 l    t        | j                  j                  | j                  j                         y r2   )r   r+   r"   r'   r3   s    r.   	test_hqicz TestSARIMAXStatsmodels.test_hqicH   s     **DMM,>,>?r0   c                     | j                   j                  j                         }d|d   z
  |d   z  |d<   t        | j                  j                  d d |d       y )Nr   r   r   g-C6
?atol)r'   r%   copyr   r+   )r4   params_as     r.   test_mlezTestSARIMAXStatsmodels.test_mleK   sS     =='',,.8A;(1+5,,Sb18$Gr0   c                     | j                   j                  d      }|j                         dz  }t        |dd | j                  j
                  dd  d       y )NTapprox_complex_step      ?r   r   h㈵>r>   )r+   _cov_params_approxdiagonalr   r'   r&   )r4   cpar&   s      r.   test_bsezTestSARIMAXStatsmodels.test_bseR   sL    mm..4.Hllnc!Ab	4==#4#4QR#8tDr0   c                     dd l mc m} |j                  | j                         |j                  | j                         y )Nr   )statsmodels.tools._testingr   _testingcheck_ttest_tvaluesr+   check_ftest_pvalues)r4   smts     r.   test_t_testz"TestSARIMAXStatsmodels.test_t_testX   s.    00 	..r0   N)__name__
__module____qualname____doc__classmethodr/   r5   r8   r:   r<   rB   rK   rR    r0   r.   r   r   "   sA     0 0&>>>@HE/r0   r   c                   ,    e Zd ZdZed        Zd Zd Zy)TestRealGDPARStataz
    Includes tests of filtered states and standardized forecast errors.

    Notes
    -----
    Could also test the usual things like standard errors, etc. but those are
    well-tested elsewhere.
    c                     t        j                  t        d         j                         dd  j                  }t        j                  |ddd      | _        g d}| j                  j                  |      | _	        y )Nvaluer   )   r   r   nT)r   r   r   )g.*w?gdr
?gD{g	rm	gEg?Q?g1D
Y?gf4fg+I?gߔ$?gMQ>Ʊ?g=+[gƐr?)
r#   logrealgdp_resultsdiffvaluesr   r(   modelfilterr   )r,   dlgdpr%   s      r.   r/   zTestRealGDPARStata.setup_classi   sd    w/0557;BBOOE3<@B	

 ii&&v.r0   c                     t        d      D ]K  }t        t        j                  dd  d|dz   z     | j                  j
                  j                  |   d       M y )Nr]   r   zu%dư>r>   )ranger   r`   ilocr   filter_resultsfiltered_state)r4   is     r.   test_filtered_statez&TestRealGDPARStata.test_filtered_statev   sU    r 	A$$QR(!A#7++::1=	r0   c                     t        t        j                  dd  d   | j                  j                  j
                  d   d       y )Nr   rstdr   MbP?r>   )r   r`   ri   r   rj   standardized_forecasts_errorr3   s    r.   !test_standardized_forecasts_errorz4TestRealGDPARStata.test_standardized_forecasts_error~   s:      $V,LL''DDQG	
r0   N)rS   rT   rU   rV   rW   r/   rm   rr   rX   r0   r.   rZ   rZ   `   s%     
/ 
/
r0   rZ   c                   *    e Zd Zd Zd Zd Zd Zd Zy)SARIMAXStataTestsc                 `    t        | j                  j                  | j                  d   d       y )Nloglike   )r   resultr   r   r3   s    r.   r5   zSARIMAXStataTests.test_loglike   s#    KKOOIIi !	
r0   c                 `    t        | j                  j                  | j                  d   d       y )Nr       )r   rx   r    r   r3   s    r.   r8   zSARIMAXStataTests.test_aic   #    KKOOIIea	
r0   c                 `    t        | j                  j                  | j                  d   d       y )Nr!   rz   r   rx   r!   r   r3   s    r.   r:   zSARIMAXStataTests.test_bic   r{   r0   c                 @   d| j                   j                  z  dt        j                  t        j                  | j                   j                              z  | j                   j
                  j                  d   z  z   }t        | j                   j                  |d       y )N   r   rz   )	rx   r   r#   r_   nobs_effectiver%   shaper   r"   )r4   r"   s     r.   r<   zSARIMAXStataTests.test_hqic   sy    t{{bffRVVDKK66788KK$$Q'(( 	
 	KK!	
r0   c                     | j                   j                  }d | j                   _        | j                   j                  }t        ||       y r2   )rx   rq   _standardized_forecasts_errorr   )r4   
cython_sfe
python_sfes      r.   rr   z3SARIMAXStataTests.test_standardized_forecasts_error   s6    [[==
481[[==

J/r0   N)rS   rT   rU   r5   r8   r:   r<   rr   rX   r0   r.   rt   rt      s    


	
0r0   rt   c                   &    e Zd ZdZed        Zd Zy)ARIMAz?
    ARIMA model

    Stata arima documentation, Example 1
    c                 N   || _         |d   }|j                  dd       |j                  dd       t        j                  |g|ddd|| _        d|d	   d
   z
  |d   d
   z  }t
        j                  ||d	   |d   |d   f   }| j                  j                  |      | _        y )Nr   r   Tr   r   r   r   r   r   	params_arr   params_mean	params_maparams_variance)	r   
setdefaultr   r(   rc   r#   r_rd   rx   r,   r   argskwargsr-   	interceptr%   s          r.   r/   zARIMA.setup_class   s    V/63T:OOE 5%)5# 5-35	
 k*1--m1DQ1GG	y${"3T+5F-./ 0 YY%%f-
r0   c                     | j                   j                  d      }t        |j                  | j                  j                  d       y Nr   r   rp   r>   rc   r*   r   r%   rx   r4   rx   s     r.   rB   zARIMA.test_mle   4    R(MM4;;--	
r0   NrS   rT   rU   rV   rW   r/   rB   rX   r0   r.   r   r      s     
 . .$
r0   r   c                   D     e Zd ZdZe fd       Zd Zd Zd Zd Z	 xZ
S )TestARIMAStationaryr
    Notes
    -----

    Standard errors are very good for the OPG and complex step approximation
    cases.
    c                 @    t         |   t        j                         y r2   )superr/   r   r   r,   	__class__s    r.   r/   zTestARIMAStationary.setup_class       ++	
r0   c                    t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d   | j                  d   d       t        | j                  j                  d   | j                  d	   d       y 
NopgTFr   	se_ar_opgHz>r>   r   	se_ma_opgr   rx   cov_type_cov_approx_complex_step_cov_approx_centeredr   r&   r   r3   s    r.   rK   zTestARIMAStationary.test_bse       T[[))51T[[994@T[[55u=*DIIk,BN*DIIk,BNr0   c                     | j                   j                  d      j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d	   d       y )
NTrD   rF   r   	se_ar_oimr   r>   r   	se_ma_oimrx   rH   rI   r   r   r4   r&   s     r.   test_bse_approxz#TestARIMAStationary.test_bse_approx   ^    kk,, $ - &&.hj#6A		+ 6TBA		+ 6TBr0   c                     | j                   j                  j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d   d       y )	NrF   r   r   rp   r>   r   r   {Gz?rx   cov_params_oimrI   r   r   r4   oim_bses     r.   test_bse_oimz TestARIMAStationary.test_bse_oim   sQ    ++,,557<
DIIk$:F
DIIk$:Fr0   c                 F   | j                   j                  j                         dz  }| j                   j                  }|j                         dz  }t        j
                  | j                  d   | j                  d   f   }t        |dd |d       t        |dd |d       y )	NrF   se_ar_robustse_ma_robustr   rz   r   r>   rp   )rx   cov_params_robust_oimrI   cov_params_robust_approxr#   r   r   r   )r4   robust_oim_bsecprarobust_approx_bsetrue_robust_bses        r.   test_bse_robustz#TestARIMAStationary.test_bse_robust  s    ::CCEsJ{{33 MMOS0%%IIn%tyy'@@
 	q+_4H)!A.dKr0   )rS   rT   rU   rV   rW   r/   rK   r   r   r   __classcell__r   s   @r.   r   r      s4     
 

OC0G	Lr0   r   c                   >     e Zd ZdZe fd       Zd Zd Zd Z xZ	S )TestARIMADiffuse
    Notes
    -----

    Standard errors are very good for the OPG and quite good for the complex
    step approximation cases.
    c                 x    d|d<   t         j                  d   |d<   t        |   t         j                  fi | y )Napproximate_diffuseinitializationinitial_variance)r   wpi1_diffuser   r/   )r,   r   r   s     r.   r/   zTestARIMADiffuse.setup_class  sB    #8 (();< 	!" 	O88CFCr0   c                    t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d   | j                  d   d       t        | j                  j                  d   | j                  d	   d       y r   r   r3   s    r.   rK   zTestARIMADiffuse.test_bse  r   r0   c                     | j                   j                  d      j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d	   d       y )
NTrD   rF   r   r   -C6?r>   r   r   r   r   s     r.   r   z TestARIMADiffuse.test_bse_approx&  r   r0   c                     | j                   j                         j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d   d       y )	NrF   r   r   r   r>   r   r   皙?rx   _cov_params_oimrI   r   r   r   s     r.   r   zTestARIMADiffuse.test_bse_oim>  T    kk))+446;A		+ 6TBA		+ 6TBr0   
rS   rT   rU   rV   rW   r/   rK   r   r   r   r   s   @r.   r   r     s0     D DOC0Cr0   r   c                   &    e Zd ZdZed        Zd Zy)AdditiveSeasonalz^
    ARIMA model with additive seasonal effects

    Stata arima documentation, Example 2
    c                 t   || _         t        j                  |d         }|j                  dd       |j                  dd       t	        j
                  |g|ddd|| _        d|d	   d
   z
  |d   d
   z  }t        j                  ||d	   |d   |d   f   }| j                  j                  |      | _	        y )Nr   r   Tr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   
r   r#   r_   r   r   r(   rc   r   rd   rx   r   s          r.   r/   zAdditiveSeasonal.setup_classK  s    tF|$/63T:OO
;?
-S
CI
	 k*1--m1DQ1GG	y${"3T+5F-./ 0 YY%%f-
r0   c                     | j                   j                  d      }t        |j                  | j                  j                  d       y r   r   r   s     r.   rB   zAdditiveSeasonal.test_mle_  r   r0   Nr   rX   r0   r.   r   r   E  s     
 . .&
r0   r   c                   >     e Zd ZdZe fd       Zd Zd Zd Z xZ	S )TestAdditiveSeasonalr   c                 @    t         |   t        j                         y r2   )r   r/   r   wpi1_seasonalr   s    r.   r/   z TestAdditiveSeasonal.setup_classo      ))	
r0   c                    t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d   | j                  d   d       t        | j                  j                  dd	 | j                  d
   d       y )Nr   TFr   r   rg   r>   r   rw   r   rG   r   r3   s    r.   rK   zTestAdditiveSeasonal.test_bseu  s    T[[))51T[[994@T[[55u=*DIIk,BN!,dii.D!	#r0   c                     | j                   j                  d      j                         dz  }t        |d   | j                  d   d       t        |dd	 | j                  d
   d       y )NTrD   rF   r   r   r   r>   r   rw   r   r   r   s     r.   r   z$TestAdditiveSeasonal.test_bse_approx  s`    kk,, $ - &&.hj#6A		+ 6TBAa$))K"8tDr0   c                     | j                   j                         j                         dz  }t        |d   | j                  d   d       t        |dd | j                  d   d	       y )
NrF   r   r   r   r>   r   rw   r   r   r   r   s     r.   r   z!TestAdditiveSeasonal.test_bse_oim  sV    kk))+446;A		+ 6TBAa$))K"8tDr0   r   r   s   @r.   r   r   g  s-     
 

#E2Er0   r   c                   &    e Zd ZdZed        Zd Zy)Airlinez`
    Multiplicative SARIMA model: "Airline" model

    Stata arima documentation, Example 3
    c                 L   || _         t        j                  |d         }|j                  dd       |j                  dd       t	        j
                  |g|dddd|| _        t        j                  |d	   |d
   |d   f   }| j                  j                  |      | _	        y )Nr   r   Tr   )r   r   r   )r   r   r   r]   r^   )r   seasonal_orderr   r   params_seasonal_mar   r   )r,   r   r   r   r-   r%   s         r.   r/   zAirline.setup_class  s    tF|$/63T:OO

"=
 &
	
 tK($/C*D-./ 0 YY%%f-
r0   c                    t        j                         5  t        j                  d       | j                  j	                  d      }t        |j                  | j                  j                  d       d d d        y # 1 sw Y   y xY w)Nignorer   r   r   r>   )warningscatch_warningssimplefilterrc   r*   r   r%   rx   r   s     r.   rB   zAirline.test_mle  sc    $$& 	!!(+ZZ^^^,Ft{{11		 	 	s   AA<<BNr   rX   r0   r.   r   r     s     
 . ."r0   r   c                   >     e Zd ZdZe fd       Zd Zd Zd Z xZ	S )TestAirlineHamiltonr   c                 @    t         |   t        j                         y r2   r   r/   r   air2_stationaryr   s    r.   r/   zTestAirlineHamilton.setup_class  r   r0   c                    t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d   | j                  d   d       t        | j                  j                  d   | j                  d	   d       y 
Nr   TFr   r   rg   r>   r   se_seasonal_ma_opgr   r3   s    r.   rK   zTestAirlineHamilton.test_bse      T[[))51T[[994@T[[55u=*DIIk,BN*DII6J,K!	#r0   c                     | j                   j                  d      j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d	   d       y 
NTrD   rF   r   r   rg   r>   r   se_seasonal_ma_oimr   r   s     r.   r   z#TestAirlineHamilton.test_bse_approx  _    kk,, $ - &&.hj#6A		+ 6TBA		*> ?dKr0   c                     | j                   j                  j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d   d       y NrF   r   r   r   r>   r   r   r   r   s     r.   r   z TestAirlineHamilton.test_bse_oim  R    ++,,557<
DIIk$:F
DII.B$C$Or0   r   r   s   @r.   r   r     -     
 

#L6Pr0   r   c                   >     e Zd ZdZe fd       Zd Zd Zd Z xZ	S )TestAirlineHarveyr   c                 D    t         |   t        j                  d       y )NF)r   r   r   s    r.   r/   zTestAirlineHarvey.setup_class  s     ++U 	 	
r0   c                    t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d   | j                  d   d       t        | j                  j                  d   | j                  d	   d       y r   r   r3   s    r.   rK   zTestAirlineHarvey.test_bse
  r   r0   c                     | j                   j                  d      j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d	   d       y r   r   r   s     r.   r   z!TestAirlineHarvey.test_bse_approx  r   r0   c                     | j                   j                  j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d   d       y r   r   r   s     r.   r   zTestAirlineHarvey.test_bse_oim/  r   r0   r   r   s   @r.   r  r    r  r0   r  c                   J     e Zd ZdZe fd       Zd Zd Zd Zd Z	d Z
 xZS )TestAirlineStateDifferencingr   c                 F    t         |   t        j                  dd       y )NF)r   r   r   r   s    r.   r/   z(TestAirlineStateDifferencing.setup_class>  s#    ++$) 	 	
r0   c                 `    t        | j                  j                  | j                  d   d       y )Nr!   r   r}   r3   s    r.   r:   z%TestAirlineStateDifferencing.test_bicE  s%     	KKOOIIea	
r0   c                     | j                   j                  ddd      }t        |j                  | j                  j                  d       y )Nnmi  r   )methodmaxiterr   rp   r>   r   r   s     r.   rB   z%TestAirlineStateDifferencing.test_mleN  s8    tTBMM4;;--	r0   c                    t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d   | j                  d   d       t        | j                  j                  d   | j                  d	   d       y r   r   r3   s    r.   rK   z%TestAirlineStateDifferencing.test_bseT  r   r0   c                     | j                   j                  d      j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d	   d       y )
NTrD   rF   r   r   r   r>   r   r   r   r   s     r.   r   z,TestAirlineStateDifferencing.test_bse_approx^  r   r0   c                     | j                   j                  j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d   d       y r   r   r   s     r.   r   z)TestAirlineStateDifferencing.test_bse_oimx  r   r0   )rS   rT   rU   rV   rW   r/   r:   rB   rK   r   r   r   r   s   @r.   r	  r	  6  s7     
 

#L4Pr0   r	  c                   "    e Zd ZdZedd       Zy)Friedmanzb
    ARMAX model: Friedman quantity theory of money

    Stata arima documentation, Example 4
    Nc                 z   || _         t        j                  |d   d      }|t        |d   d         }|j	                  dd       |j	                  dd       t        j                  |g||dd|| _        t        j                  |d	   |d
   |d   |d   f   }| j                  j                  |      | _	        y )Nr   consumpm2r   Tr   r   r   r   exogr   params_exogr   r   r   )
r   r#   r   r   r   r   r(   rc   rd   rx   )r,   r   r  r   r   r-   r%   s          r.   r/   zFriedman.setup_class  s    d6l9-.<VT 23D/63T:OO
04
I
8>
	 tM*D,=K($/@*AB C YY%%f-
r0   r2   )rS   rT   rU   rV   rW   r/   rX   r0   r.   r  r    s    
 . .r0   r  c                   D     e Zd ZdZe fd       Zd Zd Zd Zd Z	 xZ
S )TestFriedmanMLERegressionr   c                 @    t         |   t        j                         y r2   )r   r/   r   friedman2_mler   s    r.   r/   z%TestFriedmanMLERegression.setup_class  r   r0   c                     | j                   j                  d      }|j                  | j                  j                  z  }t	        |t        j                  d      dd       y )Nr   r      r   rp   r?   rtol)rc   r*   r%   rx   r   r#   ones)r4   rx   ratios      r.   rB   z"TestFriedmanMLERegression.test_mle  sD    R( 2 22rwwqz4@r0   c                    t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  dd | j                  d   d       t        | j                  j                  d   | j                  d	   d
       t        | j                  j                  d   | j                  d   d
       y )Nr   TFr   r   se_exog_opgr   r>   r   rg   rz   r   r   r3   s    r.   rK   z"TestFriedmanMLERegression.test_bse  s    T[[))51T[[994@T[[55u=!,dii.F!	#*DIIk,BN*DIIk,BNr0   c                    | j                   j                  d      j                         dz  }t        |dd | j                  d   d       t        |d   | j                  d	   d
       t        |d   | j                  d   d
       y )NTrD   rF   r   r   se_exog_oimr   r>   r   rg   rz   r   r   r   s     r.   r   z)TestFriedmanMLERegression.test_bse_approx  sy    kk,, $ - &&.hj#6Aa$))M":FA		+ 6TBA		+ 6TBr0   c                 N   | j                   j                  j                         dz  }t        |d   | j                  d   d   d       t        |d   | j                  d   d   d       t        |d   | j                  d	   d       t        |d
   | j                  d   d       y )NrF   r   r)  r   r#  r   r>   r   r   rz   r   r   r   s     r.   r   z&TestFriedmanMLERegression.test_bse_oim  s    kk((113S8A		- 8 ;!DA		- 8 ;$GA		+ 6TBA		+ 6TBr0   )rS   rT   rU   rV   rW   r/   rB   rK   r   r   r   r   s   @r.   r  r    s4     
 

A	OC<Cr0   r  c                   \     e Zd ZdZe fd       Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Z xZS )TestFriedmanStateRegressiona@  
    Notes
    -----

    MLE is not very close and standard errors are not very close for any set of
    parameters.

    This is likely because we're comparing against the model where the
    regression coefficients are also estimated by MLE. So this test should be
    considered just a very basic "sanity" test.
    c                 h   t        t        j                        }t        |d   d         dz  }|d   d d  |d<   |d   d d  |d<   g |d<   g |d<   t        |   ||d	
       t        j                  |d   |d   |d   |d   f   | _        | j                  j                  | j                        | _        y )Nr   r        $@r  mle_params_exogr'  mle_se_exogse_exogF)r  mle_regressionr   r   r   )dictr   r  r   r   r/   r#   r   true_paramsrc   rd   rx   )r,   r   r  r   s      r.   r/   z'TestFriedmanStateRegression.setup_class  s     O112DL./#5"&}"5a"8"=1!4] ]YtE 	 	
 %%] 3T+5F $[ 148I3J!K L YY%%coo6
r0   c                     | j                   j                  d      }t        |j                  | j                  j                  dd       y )Nr   r   r   皙?r"  r   r   s     r.   rB   z$TestFriedmanStateRegression.test_mle  s6    R(MM4;;--D	
r0   c                     t        | j                  j                  j                  dd df   dz  | j                  d   d       y )Nr   r   r/  r0  r   )r   rx   rj   rk   r   r3   s    r.   test_regression_parametersz6TestFriedmanStateRegression.test_regression_parameters  s>     	KK&&55bc2g>DII'(!	
r0   c                      y r2   rX   r3   s    r.   r5   z(TestFriedmanStateRegression.test_loglike      r0   c                      y r2   rX   r3   s    r.   r8   z$TestFriedmanStateRegression.test_aic  r;  r0   c                      y r2   rX   r3   s    r.   r:   z$TestFriedmanStateRegression.test_bic  r;  r0   c                    t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d       t        | j                  j                  d   | j                  d   d       t        | j                  j                  d   | j                  d	   d       y )
Nr   TFr   r   r   r>   r   r   r   r3   s    r.   rK   z$TestFriedmanStateRegression.test_bse!  r   r0   c                     | j                   j                  d      j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d	   d       y )
NTrD   rF   r   r   r   r>   r   r   r   r   s     r.   r   z+TestFriedmanStateRegression.test_bse_approx*  r   r0   c                     | j                   j                         j                         dz  }t        |d   | j                  d   d       t        |d   | j                  d   d       y )NrF   r   r   r   r>   r   r   r   r   s     r.   r   z(TestFriedmanStateRegression.test_bse_oimC  r   r0   )rS   rT   rU   rV   rW   r/   rB   r9  r5   r8   r:   rK   r   r   r   r   s   @r.   r-  r-    sG    
 7 7*

 OC2Cr0   r-  c                   J     e Zd ZdZe fd       Zd Zd Zd Zd Z	d Z
 xZS )TestFriedmanPredicta  
    ARMAX model: Friedman quantity theory of money, prediction

    Stata arima postestimation documentation, Example 1 - Dynamic forecasts

    This follows the given Stata example, although it is not truly forecasting
    because it compares using the actual data (which is available in the
    example but just not used in the parameter MLE estimation) against dynamic
    prediction of that data. Here `test_predict` matches the first case, and
    `test_dynamic_predict` matches the second.
    c                 @    t         |   t        j                         y r2   )r   r/   r   friedman2_predictr   s    r.   r/   zTestFriedmanPredict.setup_classV  s    --	
r0   c                      y r2   rX   r3   s    r.   r5   z TestFriedmanPredict.test_loglike_  r;  r0   c                      y r2   rX   r3   s    r.   r8   zTestFriedmanPredict.test_aicb  r;  r0   c                      y r2   rX   r3   s    r.   r:   zTestFriedmanPredict.test_bice  r;  r0   c                 h    t        | j                  j                         | j                  d   d       y )Npredictrz   )r   rx   rI  r   r3   s    r.   test_predictz TestFriedmanPredict.test_predicth  s(    KK!IIi !	
r0   c                     t        | j                  d   d         dz
  dz
  }t        | j                  j	                  |      | j                  d   d       y )Nr   r     r   dynamicdynamic_predictrz   )lenr   r   rx   rI  )r4   rN  s     r.   test_dynamic_predictz(TestFriedmanPredict.test_dynamic_predictn  sP    dii'	23B6q8KK0II'(!	
r0   )rS   rT   rU   rV   rW   r/   r5   r8   r:   rJ  rQ  r   r   s   @r.   rB  rB  J  s5    
 
 


r0   rB  c                   J     e Zd ZdZe fd       Zd Zd Zd Zd Z	d Z
 xZS )TestFriedmanForecasta  
    ARMAX model: Friedman quantity theory of money, forecasts

    Variation on:
    Stata arima postestimation documentation, Example 1 - Dynamic forecasts

    This is a variation of the Stata example, in which the endogenous data is
    actually made to be missing so that the predict command must forecast.

    As another unit test, we also compare against the case in State when
    predict is used against missing data (so forecasting) with the dynamic
    option also included. Note, however, that forecasting in State space models
    amounts to running the Kalman filter against missing datapoints, so it is
    not clear whether "dynamic" forecasting (where instead of missing
    datapoints for lags, we plug in previous forecasted endog values) is
    meaningful.
    c                 &   t        t        j                        }|d   d   dd  |d   d   dd  d|d<   |d   d   d d |d   d   d d d|d<   t        |   |       | j
                  j                  | j                  j                        | _        y )Nr   r  ir  )r  r  forecast_data)	r4  r   rD  r   r/   rc   rd   rx   r%   )r,   r   r   s     r.   r/   z TestFriedmanForecast.setup_class  s    O556 F|I.st4v,t$ST*!
_
 F|I.t4v,t$Tc*
V
 	D!YY%%cjj&7&78
r0   c                      y r2   rX   r3   s    r.   r5   z!TestFriedmanForecast.test_loglike  r;  r0   c                      y r2   rX   r3   s    r.   r8   zTestFriedmanForecast.test_aic  r;  r0   c                      y r2   rX   r3   s    r.   r:   zTestFriedmanForecast.test_bic  r;  r0   c                     t        | j                  d   d         dz   dz
  }t        | j                  d   d         }t        | j                  j                  ||      | j                  d   d	       y )
Nr   r  rL  r   rU  r  )endr  forecastrz   rP  r   r   r   rx   rI  )r4   rZ  r  s      r.   test_forecastz"TestFriedmanForecast.test_forecast  si    $))F#I./214DIIo6t<=KKCd3IIj!1	
r0   c                 $   t        | j                  d   d         dz   dz
  }t        | j                  d   d         dz
  }t        | j                  d   d         }t        | j                  j                  |||      | j                  d   d	       y )
Nr   r  rL  r   rU  r  )rZ  rN  r  dynamic_forecastrz   r\  )r4   rZ  rN  r  s       r.   test_dynamic_forecastz*TestFriedmanForecast.test_dynamic_forecast  s    $))F#I./214dii'	23A5DIIo6t<=KKCtDII()1	
r0   )rS   rT   rU   rV   rW   r/   r5   r8   r:   r]  r`  r   r   s   @r.   rS  rS  v  s5    " 9 9&

r0   rS  c                   z    e Zd Zed
d       Zd Zd Zd Zd Ze	j                  j                  d        Zd Zd	 Zy)SARIMAXCoverageTestNc                    |t         j                  }t        j                  |   d   | _        t        j                  t        j                  |   d   j                  d      D cg c]  }t        |       c}      | _	        | j                  d   dz  | j                  d<   || _
        |j                  dd       |j                  dd       t        j                  |g|i || _        y c c}w )	Nr   
parameters,r   r   r   Tr   )r   	wpi1_datacoverage_resultsloctrue_logliker#   r$   splitfloatr5  decimalr   r   r(   rc   )r,   rl   rl  r-   r   r   xs          r.   r/   zSARIMAXCoverageTest.setup_class  s     =#--E ,//259((.2215lCII#N$PE!H$P 
 "oob114  	/63T:OOE;D;F;	$Ps   $C+c                     | j                   j                  | j                        | _        t	        | j                  j
                  | j                  dd| j                   z  z         y )Ngffffff?
   r>   )rc   rd   r5  rx   r   r   ri  rl  r3   s    r.   r5   z SARIMAXCoverageTest.test_loglike  sM    jj''(8(89KKOOrT\\M**	
r0   c                    | j                   j                  }| j                   j                  }d| j                   _        d| j                   _        | j                   j                   || j                   _        || j                   _        y )NF)rc   enforce_stationarityenforce_invertibilitystart_params)r4   statinvs      r.   test_start_paramsz%SARIMAXCoverageTest.test_start_params  s_     zz..jj..*/

'+0

(

*.

'+.

(r0   c                    | j                   }|j                  |j                  }}| j                  }|j	                  | j                         |j
                  }|j                  }||j                            }|j                  dk(  xs, t        j                  t        j                  d|dd   f         xr< t        |      dk  xs, t        j                  t        j                  d|dd   f         |_        |j                  }|j                  }	|	|	j                            }
|j                   dk(  xs+ t        j                  t        j                  d|dd  f         xr; t        |
      dk  xs+ t        j                  t        j                  d|
dd  f         |_        |j#                  |      }|j%                  |      }t'        ||d       ||_        ||_        y )Nr   r   rw   )rc   rq  rr  r5  updatepolynomial_arpolynomial_seasonal_arnonzerok_arr   is_invertibler#   r   rP  polynomial_mapolynomial_seasonal_mak_mauntransform_paramstransform_paramsr   )r4   rc   rt  ru  true_constrainedparpsarcontracted_psarpmapsmacontracted_psmaunconstrainedconstraineds                r.   test_transform_untransformz.SARIMAXCoverageTest.test_transform_untransform  s   

..0K0Kc++
 	T%%&!!++t||~.ZZ1_G 3 3BEE!c!"gX+4F G E!Q& D##BEE!oab.A-A*A$BC 	" !!++t||~.ZZ1_F 3 3BEE!SW*4E F D!Q& C##BEE!_QR-@*@$AB 	# 001AB,,];K)91=%)"&)#r0   c                    | j                   j                  | j                        | _        | j                  j	                          | j                  j
                   | j                  j                   | j                  j                   | j                  j                   | j                  j                   | j                  j                   y r2   )rc   rd   r5  rx   summarycov_params_defaultcov_params_approxr   cov_params_opgr   r   r3   s    r.   test_resultsz SARIMAXCoverageTest.test_results  s    jj''(8(89 	 	&&%%"""")),,r0   c                     | j                   j                  | j                        | _        | j                  j	                          y r2   )rc   rd   r5  rx   plot_diagnostics)r4   close_figuress     r.   test_plot_diagnosticsz)SARIMAXCoverageTest.test_plot_diagnostics  s0     jj''(8(89$$&r0   c                    | j                   j                  | j                        }|j                         }t	        |j
                  | j                   j                  f       |j                  dd      }t	        |j
                  d       |j                  ddd      }t	        |j
                  d       | j                   j                  dk(  r|j                  | j                   j                  | j                   j                  dz   d      }t	        |j
                  d       |j                  | j                   j                  | j                   j                  dz   d      }|j                         }t	        |j
                  d       |j                  d      }t	        |j
                  d	       y | j                   j                  }t        j                  dg|z  d
z     j                  d
|      }|j                  | j                   j                  | j                   j                  dz   d|      }t	        |j
                  d       |j                  | j                   j                  | j                   j                  dz   d|      }t        j                  dg|z     j                  d|      }|j                  |      }t	        |j
                  d       y )Nro     startrZ  )   )r  rZ  rN  r   ir   )ro  r  r  rZ  rN  r  r   r  )rc   rd   r5  rI  r   r   nobsk_exogr[  r#   r   reshape)r4   rx   rI  r[  r  r  s         r.   rJ  z SARIMAXCoverageTest.test_predict  s(   ""4#3#34 .."W]]TZZ__$67..rr.2W]]E*..rr2.>W]]E* ::!nn4::??)-);S % JG.nn4::??)-);S % JG (H.r*H/ZZ&&F55!VB'//F;Dnn4::??)-);S*. % 0G .nn4::??)-);S*. % 0G 55!V$,,Q7DD1H.r0   c                    | j                   }| j                   j                         }|j                  j                  }|j                  j                  }t        j                  ||fi |}| j                   j                  | j                        }|j                  | j                        }t        rdnd}t        |j                  |j                  |       y Nrg   gvIh%<=r+  )rc   _get_init_kwdsr   
orig_endog	orig_exogr   r(   rd   r5  r   r   r   	r4   mod1r   r-   r  model2res1res2r#  s	            r.   test_init_keys_replicatez,SARIMAXCoverageTest.test_init_keys_replicateG  s    zz**,		$$yy""77zz  !1!12}}T--.#t$((6r0   )rw   N)rS   rT   rU   rW   r/   r5   rv  r  r  pytestmark
matplotlibr  rJ  r  rX   r0   r.   rb  rb    sR    < <,
	/!*F- [[' '
*/X7r0   rb  c                   (     e Zd Ze fd       Z xZS )Test_arc                 6    d|d<   t        |   dg|i | y )Nrz   r   r   r   r   r   r/   r,   r   r   r   s      r.   r/   zTest_ar.setup_classY  #    #wA///r0   rS   rT   rU   rW   r/   r   r   s   @r.   r  r  U       0 0r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ar_as_polynomialc                 @    g dddf|d<   t        |   dg|i | y )Nr   r   r   r  r  s      r.   r/   z!Test_ar_as_polynomial.setup_classc  s*    $a+wA///r0   r  r   s   @r.   r  r  _  r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ar_trend_cc                     d|d<   d|d<   t        |   dg|i | | j                  }d|dd j                         z
  |d   z  | j                  d<   y )Nr  r   r   r   r   rw   r   r   r/   r5  sumr,   r   r   tpsr   s       r.   r/   zTest_ar_trend_c.setup_classm  s_    #wwA/// oo#a(,,.0CF:r0   r  r   s   @r.   r  r  i  s     ; ;r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ar_trend_ctc                     d|d<   d|d<   t        |   dg|i | | j                  }d|dd j                         z
  |d d z  | j                  d d y )Nr  r   ctr   r   r   r!  r  r  s       r.   r/   zTest_ar_trend_ct.setup_class|  sc    #wwA/// oo 3q8<<>1S!W<r0   r  r   s   @r.   r  r  x       = =r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ar_trend_polynomialc                     d|d<   g d|d<   t        |   dg|i | | j                  }d|dd j                         z
  |d d z  | j                  d d y )	Nr  r   r   r   rz   r   r   r!  r  r  s       r.   r/   z$Test_ar_trend_polynomial.setup_class  sc    #w&wA/// oo 3q8<<>1S!W<r0   r  r   s   @r.   r  r    r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ar_diffc                 6    d|d<   t        |   dg|i | y )N)rz   r   r   r   rw   r  r  s      r.   r/   zTest_ar_diff.setup_class  r  r0   r  r   s   @r.   r  r    r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ar_seasonal_diffc                 @    d|d<   d|d<   t        |   dg|i | y )Nr  r   r   r   r   rw   r   r!  r  r  s      r.   r/   z!Test_ar_seasonal_diff.setup_class  s.    #w#/ A///r0   r  r   s   @r.   r  r         0 0r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ar_diffusec                 J    d|d<   d|d<   d|d<   t        |   dg|i | y )Nr  r   r   r       eAr      r  r  s      r.   r/   zTest_ar_diffuse.setup_class  s9    #w#8 %(!"A///r0   r  r   s   @r.   r  r         0 0r0   r  c                   .     e Zd Ze fd       Zd Z xZS )Test_ar_no_enforcec                     d|d<   d|d<   d|d<   d|d<   d|d	<   t        |   d
g|i | d| j                  j                  _        y )Nr  r   Frq  rr  r  r   r   loglikelihood_burnr  )r   r/   rc   ssmr  r  s      r.   r/   zTest_ar_no_enforce.setup_class  sa    #w).%&*/&'%(!"'(#$A/// ,-		(r0   c                    | j                   }| j                   j                         }|j                  j                  }|j                  j                  }t        j                  ||fi |}|j                  j                  |j                  _        | j                   j                  | j                        }|j                  | j                        }t        rdnd}t        |j                  |j                  |       y r  )rc   r  r   r  r  r   r(   r  r   rd   r5  r   r   r   r  s	            r.   r  z+Test_ar_no_enforce.test_init_keys_replicate  s    zz**,		$$yy""77$(HH$;$;

!zz  !1!12}}T--.#t$((6r0   )rS   rT   rU   rW   r/   r  r   r   s   @r.   r  r    s     	- 	-7r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ar_exogenousc                     d|d<   t         j                  }|t        j                  |      z
  dz  |d<   t	        |   dg|i | y )Nr  r   r   r     r   rf  r#   floorr   r/   r,   r   r   r-   r   s       r.   r/   zTest_ar_exogenous.setup_class  sI    #w))"((5/1A5vA///r0   r  r   s   @r.   r  r    r  r0   r  c                   4     e Zd Ze fd       Zd Zd Z xZS )Test_ar_exogenous_in_statec                     d|d<   t         j                  }|t        j                  |      z
  dz  |d<   d|d<   t	        |   dg|i | | j                  d   | _        | j                  d	d  | _        y )
Nr  r   r   r  Fr3  r  r   r   )r   rf  r#   r  r   r/   r5  true_regression_coefficientr  s       r.   r/   z&Test_ar_exogenous_in_state.setup_class  sw    #w))"((5/1A5v#( A///*-//!*<'//!"-r0   c                     | j                   j                  | j                        | _        t	        | j                  j
                  | j                  d       y )Nr   r>   )rc   rd   r5  rx   r   r   ri  r3   s    r.   r5   z'Test_ar_exogenous_in_state.test_loglike  s?     jj''(8(89KKOO	
r0   c                     | j                   j                  | j                        | _        t	        | j                  j
                  j                  d   d   | j                  | j                         y )Nrz   r   )	rc   rd   r5  rx   r   rj   rk   r  rl  r3   s    r.   test_regression_coefficientz6Test_ar_exogenous_in_state.test_regression_coefficient  sU     jj''(8(89KK&&55a8<,,LL	
r0   )rS   rT   rU   rW   r/   r5   r  r   r   s   @r.   r  r    s!     . .	


r0   r  c                   (     e Zd Ze fd       Z xZS )Test_mac                 6    d|d<   t        |   dg|i | y )Nr   r   rz   r      r  r  s      r.   r/   zTest_ma.setup_class  r  r0   r  r   s   @r.   r  r  
  r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ma_as_polynomialc                 @    ddg df|d<   t        |   dg|i | y )Nr   r   r   r  r  r  s      r.   r/   z!Test_ma_as_polynomial.setup_class  s*    a+wA///r0   r  r   s   @r.   r  r    r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ma_trend_cc                 @    d|d<   d|d<   t        |   dg|i | y )Nr  r   r   r   	   r  r  s      r.   r/   zTest_ma_trend_c.setup_class"  s,    #wwA///r0   r  r   s   @r.   r  r    r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ma_trend_ctc                 @    d|d<   d|d<   t        |   dg|i | y )Nr  r   r  r   ro  r  r  s      r.   r/   zTest_ma_trend_ct.setup_class-  s,    #wwB000r0   r  r   s   @r.   r  r  )       1 1r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ma_trend_polynomialc                 D    d|d<   g d|d<   t        |   dg|i | y )Nr  r   r   r   r  r  r  s      r.   r/   z$Test_ma_trend_polynomial.setup_class8  s,    #w&wB000r0   r  r   s   @r.   r  r  4  r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ma_diffc                 6    d|d<   t        |   dg|i | y )N)r   r   rz   r   r]   r  r  s      r.   r/   zTest_ma_diff.setup_classC  #    #wB000r0   r  r   s   @r.   r  r  ?       1 1r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ma_seasonal_diffc                 @    d|d<   d|d<   t        |   dg|i | y )Nr  r   r  r      r  r  s      r.   r/   z!Test_ma_seasonal_diff.setup_classM  .    #w#/ B000r0   r  r   s   @r.   r  r  I  r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ma_diffusec                 J    d|d<   d|d<   d|d<   t        |   dg|i | y )Nr  r   r   r   r  r      r  r  s      r.   r/   zTest_ma_diffuse.setup_classX  9    #w#8 %(!"B000r0   r  r   s   @r.   r  r  T       1 1r0   r  c                   (     e Zd Ze fd       Z xZS )Test_ma_exogenousc                     d|d<   t         j                  }|t        j                  |      z
  dz  |d<   t	        |   dg|i | y )Nr  r   r   r  rL  r  r  s       r.   r/   zTest_ma_exogenous.setup_classd  I    #w))"((5/1A5vB000r0   r  r   s   @r.   r  r  `  r  r0   r  c                   (     e Zd Ze fd       Z xZS )	Test_armac                 6    d|d<   t        |   dg|i | y )N)rz   r   rz   r      r  r  s      r.   r/   zTest_arma.setup_classp  r  r0   r  r   s   @r.   r  r  l  r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_arma_trend_cc                     d|d<   d|d<   t        |   dg|i | | j                  }d|dd j                         z
  |d d z  | j                  d d y )Nrz   r   r   r   r   r      r   rw   r  r  s       r.   r/   zTest_arma_trend_c.setup_classz  sc    #wwB000 oo 3q8<<>1S!W<r0   r  r   s   @r.   r  r  v  r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_arma_trend_ctc                     d|d<   d|d<   t        |   dg|i | | j                  }d|dd j                         z
  |d d z  | j                  d d y )	Nr  r   r  r      r   r   r!  r  r  s       r.   r/   zTest_arma_trend_ct.setup_class  sc    #wwB000 oo 3q8<<>1S!W<r0   r  r   s   @r.   r  r    r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_arma_trend_polynomialc                     d|d<   g d|d<   t        |   dg|i | | j                  }d|dd j                         z
  |d d z  | j                  d d y )	Nr  r   r   r      r   r   r!  r  r  s       r.   r/   z&Test_arma_trend_polynomial.setup_class  sc    #w&wB000 oo 3q8<<>1S!W<r0   r  r   s   @r.   r"  r"    r  r0   r"  c                   (     e Zd Ze fd       Z xZS )Test_arma_diffc                 6    d|d<   t        |   dg|i | y )Nrz   r   r   r   r  r  r  s      r.   r/   zTest_arma_diff.setup_class  r  r0   r  r   s   @r.   r&  r&    r  r0   r&  c                   (     e Zd Ze fd       Z xZS )Test_arma_seasonal_diffc                 @    d|d<   d|d<   t        |   dg|i | y )Nr  r   r  r      r  r  s      r.   r/   z#Test_arma_seasonal_diff.setup_class  r	  r0   r  r   s   @r.   r*  r*    r  r0   r*  c                   (     e Zd Ze fd       Z xZS )Test_arma_diff_seasonal_diffc                 @    d|d<   d|d<   t        |   dg|i | y )Nr(  r   r  r      r  r  s      r.   r/   z(Test_arma_diff_seasonal_diff.setup_class  7    #w#/ 	!	!	!r0   r  r   s   @r.   r.  r.         ! !r0   r.  c                   (     e Zd Ze fd       Z xZS )Test_arma_diffusec                 J    d|d<   d|d<   d|d<   t        |   dg|i | y )Nr  r   r   r   r  r      r  r  s      r.   r/   zTest_arma_diffuse.setup_class  r  r0   r  r   s   @r.   r4  r4    r  r0   r4  c                   (     e Zd Ze fd       Z xZS )Test_arma_exogenousc                     d|d<   t         j                  }|t        j                  |      z
  dz  |d<   t	        |   dg|i | y )Nr  r   r   r     r  r  s       r.   r/   zTest_arma_exogenous.setup_class  r  r0   r  r   s   @r.   r8  r8    r  r0   r8  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_arc                 @    d|d<   d|d<   t        |   dg|i | y )Nr   r   r   r   rz   r   r   rw   r      r  r  s      r.   r/   zTest_seasonal_ar.setup_class  r	  r0   r  r   s   @r.   r<  r<    r  r0   r<  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ar_as_polynomialc                 L    d|d<   g ddddf|d<   t        |   dg|i | y )Nr>  r   r   r   rw   r   r@  r  r  s      r.   r/   z*Test_seasonal_ar_as_polynomial.setup_class  s@    #w$-q!Q#7 	!	!	!r0   r  r   s   @r.   rB  rB    r2  r0   rB  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ar_trend_cc                     d|d<   d|d<   d|d<   t        |   dg|i | | j                  }d|dd	 j                         z
  |d d z  | j                  d d y )
Nr>  r   r?  r   r   r      r   rw   r  r  s       r.   r/   z$Test_seasonal_ar_trend_c.setup_class  n    #w#/ wB000 oo 3q8<<>1S!W<r0   r  r   s   @r.   rE  rE         = =r0   rE  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ar_trend_ctc                     d|d<   d|d<   d|d<   t        |   dg|i | | j                  }d|d	d
 j                         z
  |d d	 z  | j                  d d	 y )Nr>  r   r?  r   r  r      r   r   r!  r  r  s       r.   r/   z%Test_seasonal_ar_trend_ct.setup_class  sl    #w#/ wB000oo 3q8<<>1S!W<r0   r  r   s   @r.   rK  rK    r  r0   rK  c                   (     e Zd Ze fd       Z xZS )!Test_seasonal_ar_trend_polynomialc                     d|d<   d|d<   g d|d<   t        |   dg|i | | j                  }d|d	d
 j                         z
  |d d	 z  | j                  d d	 y )Nr>  r   r?  r   r   r      r   r   r!  r  r  s       r.   r/   z-Test_seasonal_ar_trend_polynomial.setup_class  sw    #w#/ &w	!	!	! oo 3q8<<>1S!W<r0   r  r   s   @r.   rO  rO         	= 	=r0   rO  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ar_diffc                 @    d|d<   d|d<   t        |   dg|i | y )Nr   r   r   r   r?  r      r  r  s      r.   r/   z!Test_seasonal_ar_diff.setup_class'  r	  r0   r  r   s   @r.   rT  rT  #  r  r0   rT  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ar_seasonal_diffc                 @    d|d<   d|d<   t        |   dg|i | y )Nr>  r   )rz   r   r   rw   r      r  r  s      r.   r/   z*Test_seasonal_ar_seasonal_diff.setup_class2  r1  r0   r  r   s   @r.   rY  rY  .  r2  r0   rY  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ar_diffusec                 T    d|d<   d|d<   d|d<   d|d<   t        |   d	g|i | y )
Nr>  r   r?  r   r   r   r  r      r  r  s      r.   r/   z$Test_seasonal_ar_diffuse.setup_class>  D    #w#/ #8 %(!"B000r0   r  r   s   @r.   r]  r]  :       1 1r0   r]  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ar_exogenousc                     d|d<   d|d<   t         j                  }|t        j                  |      z
  dz  |d<   t	        |   dg|i | y )Nr>  r   r?  r   r   r      r  r  s       r.   r/   z&Test_seasonal_ar_exogenous.setup_classK  T    #w#/ ))"((5/1A5vB000r0   r  r   s   @r.   rc  rc  G  ra  r0   rc  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_mac                 @    d|d<   d|d<   t        |   dg|i | y )Nr>  r   r   r   rz   rw   r   !   r  r  s      r.   r/   zTest_seasonal_ma.setup_classX  r	  r0   r  r   s   @r.   rh  rh  T  r  r0   rh  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ma_as_polynomialc                 L    d|d<   ddg ddf|d<   t        |   dg|i | y )Nr>  r   r   r   rw   r   rk  r  r  s      r.   r/   z*Test_seasonal_ma_as_polynomial.setup_classc  s@    #w$%q)Q#7 	!	!	!r0   r  r   s   @r.   rm  rm  _  r2  r0   rm  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ma_trend_cc                 T    d|d<   d|d<   d|d<   d|d<   t        |   d	g|i | y )
Nr>  r   rj  r   r   r   rz   rl  "   r  r  s      r.   r/   z$Test_seasonal_ma_trend_c.setup_classo  sA    #w#/ wyB000r0   r  r   s   @r.   rp  rp  k  ra  r0   rp  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ma_trend_ctc                 J    d|d<   d|d<   d|d<   t        |   dg|i | y )Nr>  r   rj  r   r  r   #   r  r  s      r.   r/   z%Test_seasonal_ma_trend_ct.setup_class|  s7    #w#/ wB000r0   r  r   s   @r.   rt  rt  x  r  r0   rt  c                   (     e Zd Ze fd       Z xZS )!Test_seasonal_ma_trend_polynomialc                 X    d|d<   d|d<   g d|d<   d|d<   t        |   d	g|i | y )
Nr>  r   rj  r   r   r   rz   rl  $   r  r  s      r.   r/   z-Test_seasonal_ma_trend_polynomial.setup_class  sJ    #w#/ &wy	!	!	!r0   r  r   s   @r.   rx  rx         ! !r0   rx  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ma_diffc                 @    d|d<   d|d<   t        |   dg|i | y )NrV  r   rj  r   %   r  r  s      r.   r/   z!Test_seasonal_ma_diff.setup_class  r	  r0   r  r   s   @r.   r}  r}    r  r0   r}  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ma_seasonal_diffc                 @    d|d<   d|d<   t        |   dg|i | y )Nr>  r   )r   r   rz   rw   r   &   r  r  s      r.   r/   z*Test_seasonal_ma_seasonal_diff.setup_class  r1  r0   r  r   s   @r.   r  r    r2  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ma_diffusec                 T    d|d<   d|d<   d|d<   d|d<   t        |   d	g|i | y )
Nr>  r   rj  r   r   r   r  r   '   r  r  s      r.   r/   z$Test_seasonal_ma_diffuse.setup_class  r`  r0   r  r   s   @r.   r  r    ra  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_ma_exogenousc                     d|d<   d|d<   t         j                  }|t        j                  |      z
  dz  |d<   t	        |   dg|i | y )Nr>  r   rj  r   r   r  (   r  r  s       r.   r/   z&Test_seasonal_ma_exogenous.setup_class  rf  r0   r  r   s   @r.   r  r    ra  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_armac                 @    d|d<   d|d<   t        |   dg|i | y )Nr>  r   rz   r   r   rw   r   )   r  r  s      r.   r/   zTest_seasonal_arma.setup_class  r	  r0   r  r   s   @r.   r  r    r  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_arma_trend_cc                     d|d<   d|d<   d|d<   t        |   dg|i | | j                  }d|dd	 j                         z
  |d d z  | j                  d d y )
Nr>  r   r  r   r   r   *   r   rw   r  r  s       r.   r/   z&Test_seasonal_arma_trend_c.setup_class  rH  r0   r  r   s   @r.   r  r    rI  r0   r  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_arma_trend_ctc                     d|d<   d|d<   d|d<   t        |   dg|i | | j                  }d|d	d
 j                         z
  |d d	 z  | j                  d d	 y )Nr>  r   r  r   r  r   +   r   r   r!  r  r  s       r.   r/   z'Test_seasonal_arma_trend_ct.setup_class  sw    #w#/ w	!	!	! oo 3q8<<>1S!W<r0   r  r   s   @r.   r  r    rR  r0   r  c                   .     e Zd Ze fd       Zd Z xZS )#Test_seasonal_arma_trend_polynomialc                     d|d<   d|d<   g d|d<   d|d<   t        |   d	g|i | | j                  }d
|dd j                         z
  |d d z  | j                  d d y )Nr>  r   r  r   r   r   rz   rl  ,   r   r   r!  r  r  s       r.   r/   z/Test_seasonal_arma_trend_polynomial.setup_class  s    #w#/ &wy	!	!	! oo 3q8<<>1S!W<r0   c                    | j                   j                  | j                        | _        | j                  j	                          | j                  j
                   | j                  j                   | j                  j                   y r2   rc   rd   r5  rx   r  r  r   r  r3   s    r.   r  z0Test_seasonal_arma_trend_polynomial.test_results   [    jj''(8(89 	 	&& 	""""r0   rS   rT   rU   rW   r/   r  r   r   s   @r.   r  r    s     
= 
=#r0   r  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_arma_diffc                 @    d|d<   d|d<   t        |   dg|i | y )NrV  r   r  r   -   r  r  s      r.   r/   z#Test_seasonal_arma_diff.setup_class  r	  r0   r  r   s   @r.   r  r    r  r0   r  c                   (     e Zd Ze fd       Z xZS ) Test_seasonal_arma_seasonal_diffc                 @    d|d<   d|d<   t        |   dg|i | y )Nr>  r   rz   r   r   rw   r   .   r  r  s      r.   r/   z,Test_seasonal_arma_seasonal_diff.setup_class  r1  r0   r  r   s   @r.   r  r    r2  r0   r  c                   .     e Zd Ze fd       Zd Z xZS )%Test_seasonal_arma_diff_seasonal_diffc                 @    d|d<   d|d<   t        |   dg|i | y )NrV  r   r  r   /   r  r  s      r.   r/   z1Test_seasonal_arma_diff_seasonal_diff.setup_class+  r1  r0   c                    | j                   j                  | j                        | _        | j                  j	                          | j                  j
                   | j                  j                   | j                  j                   y r2   r  r3   s    r.   r  z2Test_seasonal_arma_diff_seasonal_diff.test_results2  r  r0   r  r   s   @r.   r  r  '  s     ! !#r0   r  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_arma_diffusec                 ^    d|d<   d|d<   d|d<   d|d<   d	|d
<   t        |   dg|i | y )Nr>  r   r  r   rz   rl  r   r   r  r   0   r  r  s      r.   r/   z&Test_seasonal_arma_diffuse.setup_classF  sN    #w#/ y#8 %(!"B000r0   r  r   s   @r.   r  r  B  s     1 1r0   r  c                   (     e Zd Ze fd       Z xZS )Test_seasonal_arma_exogenousc                     d|d<   d|d<   t         j                  }|t        j                  |      z
  dz  |d<   t	        |   dg|i | y )Nr>  r   r  r   r   r  1   r  r  s       r.   r/   z(Test_seasonal_arma_exogenous.setup_classT  s]    #w#/ ))"((5/1A5v	!	!	!r0   r  r   s   @r.   r  r  P  r{  r0   r  c                   .     e Zd Ze fd       Zd Z xZS )Test_sarimax_exogenousc                     d|d<   d|d<   t         j                  }|t        j                  |      z
  dz  |d<   t	        |   dg|i | y )Nr(  r   r  r   r   r  2   r  r  s       r.   r/   z"Test_sarimax_exogenous.setup_classb  rf  r0   c                 f   | j                   j                  | j                        }t        | j                  dd |j                         t        | j                  dd |j
                         t        | j                  dd |j                         t        | j                  dd |j                         y )Nr   rw   r  r  r  )rc   rd   r5  r   arparamsmaparamsseasonalarparamsseasonalmaparamsr   s     r.   test_results_paramsz*Test_sarimax_exogenous.test_results_paramsj  s    ""4#3#34((1-v?((1-v?((1-v/F/FG((2.0G0GHr0   )rS   rT   rU   rW   r/   r  r   r   s   @r.   r  r  ^  s     1 1Ir0   r  c                   (     e Zd Ze fd       Z xZS )#Test_sarimax_exogenous_not_hamiltonc                     d|d<   d|d<   t         j                  }|t        j                  |      z
  dz  |d<   d|d<   d|d	<   t	        |   d
g|i | y )Nr(  r   r  r   r   r  Fr   r   r  r  r  s       r.   r/   z/Test_sarimax_exogenous_not_hamilton.setup_classv  ss    #w#/ ))"((5/1A5v,1()(-$%	!	!	!r0   r  r   s   @r.   r  r  r  s     ! !r0   r  c                   (     e Zd Ze fd       Z xZS )Test_sarimax_exogenous_diffusec                     d|d<   d|d<   t         j                  }|t        j                  |      z
  dz  |d<   d|d<   d|d	<   d
|d<   t	        |   dg|i | y )Nr(  r   r  r   r   r  rl  r   r   r  r   3   r  r  s       r.   r/   z*Test_sarimax_exogenous_diffuse.setup_class  s}    #w#/ ))"((5/1A5vy#8 %(!"	!	!	!r0   r  r   s   @r.   r  r    s    
 	! 	!r0   r  c                   (     e Zd Ze fd       Z xZS )'Test_arma_exog_trend_polynomial_missingc                    t         j                  t        j                     }|t        j                  |      z
  dz  dd  |d<   t         j
                  |dd |dd  |d d z
  }t         j
                  |d<   d|d<   g d	|d
<   d|d<   t        |   dg|d|i| | j                  }d|dd j                         z
  |d   z  | j                  d<   y )Nr   r   r  r  r$  r   r  r   r   r   r   r   r   rl  4   r-   r!  r   )
r#   r   r   rf  r  nanr   r/   r5  r  )r,   r   r   r-   r  r   s        r.   r/   z3Test_arma_exog_trend_polynomial_missing.setup_class  s    o//0 288E?2Q6;vffaab	E#2J&66a#w&wy	."	.	.&,	. oo#a(,,.0CF:r0   r  r   s   @r.   r  r    s     ; ;r0   r  c                     t        j                  d      dz  } d| z  }t        j                  | |ddd      }t	        j
                         5  t	        j                  d       |j                  d	
      }d d d        t        j                  ddgd       t        |j                  j                  d   dd  dgdz  d       y # 1 sw Y   NxY w)Nd         ?r   r>  TF)r  r   time_varying_regressionr3  r   r   r   r   r!  r   rF   c   r  )r#   aranger   r(   r   r   r   r*   r   r%   rj   rk   )r-   r  modress       r.   test_simple_time_varyingr    s     IIcN3EU7D
// $C 
	 	 	" h'gg2g 

QFA. **99!<QR@3%(AN s   (CC
c                  L    t        t        t        j                  g ddd       y )N)r   r   rz   T)r-   r3  r  )r   
ValueErrorr   r(   rX   r0   r.   test_invalid_time_varyingr    s     $&r0   c                  L   t         j                  } t        j                  | d      }|j	                  g d      }t        j                  | d      }|j
                  j                  |j                  j                  |j                  j                         |j	                  g d      }t        j                  | dd|j                  j                  |j                  j                        }|j	                  g d      }t        j                  | dd      }|j	                  g d      }t        |j                  |j                         t        |j                  j                  |j                  j                         t        |j                  |j                         t        |j                  j                  |j                  j                         t        |j                  |j                         t        |j                  j                  |j                  j                         y )Nr  r   rF   r7  r   r   knownr   r   initial_stateinitial_state_cov
stationary)r   r   )r   rf  r   r(   rd   r  initialize_knownrj   r  r  r   r   rk   	r-   r  r  mod2r  mod3res3mod4res4s	            r.   %test_manual_stationary_initializationr    s   %%E ??5	2D;;)*D ??5	2DHHd11??"11CCE;;)*D ??Y))77--??	AD
 ;;)*D ??5	,OD;;)*D $((+++::++::< $((+++::++::< $((+++::++::<r0   c                     t         j                  } t        j                  | d      }|j                  j                  d       |j                  g d      }t        j                  | d      }|j                  j                  |j                  j                  |j                  j                         |j                  g d      }t        j                  | dd|j                  j                  |j                  j                        }|j                  g d      }t        j                  | ddd      }|j                  g d      }t        |j                  |j                         t        |j                  j                  |j                  j                         t        |j                  |j                         t        |j                  j                  |j                  j                         t        |j                  |j                         t        |j                  j                  |j                  j                         y )	Nr  r  r  r  r  r  r   )r   r   r   )r   rf  r   r(   r  initialize_approximate_diffuserd   r  rj   r  r  r   r   rk   r  s	            r.   .test_manual_approximate_diffuse_initializationr    s   %%E ??5	2DHH++C0;;)*D ??5	2DHHd11??"11CCE;;)*D ??Y))77--??	AD
 ;;)*D ??5	*?,/1D ;;)*D $((+++::++::< $((+++::++::< $((+++::++::<r0   c                  (   t         j                  } t        j                  | d      }|j	                  g dd      }t        |j                  d       t        |j                  d       t        |j                  t        j                  dd      dt        j                  z  z         t        |j                  t        j                  dd      dt        j                  z  z         t        |j                  d	g       t        |j                  d
g       y )Nr  r  )rF         r   oim)r          @r   r   rF   r  )r   rf  r   r(   rd   r   arrootsmarootsarfreqr#   arctan2pimafreqr  r  )r-   r  r  s      r.   r  r  #  s    %%E
//%y
1C
**^e*
4CR(R(

BJJq!$4"%%$@A

BJJq!$4"%%$@Ase,tf-r0   c                  @   d} d}t         j                  j                  d       t         j                  j                  | |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d      t        j                  ||d      t        j                  ||d      t        j                  ||dd      g}	|	D ]J  }
|
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)        t*        |j$                  d|       t         j                  j                  d|
j"                  dz   f      }t)        t*        |j$                  d|       M t)        t*        t        j                  |t        j,                  d      d       y )Nr  r   i  sizerw   r   r   z
1970-01-01QSfreqperiodsindexr   r   r   r  F)r  r   r   r   TrM  )stepsr  )ro  rw   )r#   randomseednormalr  pd
date_range	DataFrameSeriessqueezer   r(   rs  r*   r  rI  get_predictionr  r[  get_forecastr   r  zeros)r  k_endogr-   exog1exog2r  endog_pdexog1_pdexog2_pdmodelsr  r  oos_exogs                r.   test_misc_exogr  3  sb   DGIINN4II4/2E66E"1"a%LII4),EII4),EMM,T4@E||E/Hyy6H||E/H 	E;E;E,1	3xyAxyAxy,1	3	F  Hgg5g!D!99##!SZZ#918,qx0 99##!SZZ#9j#,,ahG99##!SZZ!^)<#=j#,,ahG%H* *goou288G;L!#r0   c                     t         j                  j                  d       t         j                  j                  ddd      } t         j                  j                  ddd      }t	        j
                  | |d      }|j                  d	       y )
Ni r   rF   r  r  r   r   r   r  r   r   )r#   r  r  binomialr   r(   r*   )r-   r  r  s      r.   test_datasetsr  f  sj     IINN6IIq#C0E99a3/D
//%d)
<CGGGr0   c                     t         j                  j                  d       t        j                  t         j                  j                  d            } t        j                  | d      }|j                  |j                        }|j                  dddg      }t        |j                  j                  t        j                  dg            d	       y )
N r  r  r  r  r   a)r  rZ  r  T)r#   r  r  r  r  r  r   r(   smoothrs  rI  r   r  equalsIndex)r-   r  r  outs       r.   test_predict_custom_indexr!  q  s    IINN6LL))r)23E
//%y
1C
**S%%
&C
++A1SE+
2C!!"((C5/2D9r0   c                     t         j                  j                  d       d} t        j                  t         j                  j                  |             }t        j                  |dd      }|j                  |j                        }t        |j                  |j                         t        j                  |dd      }|j                  |j                        }t        |j                  dd dd f   |j                         dd  j                         t         j                  j                  |       }t        j                  |       d	z  |z   }t        j                  |       }t        j                  |d|
      }d|j                  _        |j                  ddg      }t        |j                  d   |d       t        j                  |d|d      }d|j                  _        |j#                  ddgt        j$                  ddg             |j                  dg      }t        |j                  d   |d       t        |j                  d   d	d       t        j                  |d|dd      }d|j                  _        |j#                  dgt        j$                  dg             |j                  ddg      }t        |j                  d   d	d       y )Nr  r  r  r>  F)r   measurement_error)r   r   r   r   ro  )r   r  Tr/  r  r   g|=r>   )r   r  r3          )r   r  r3  r  )r#   r  r  r  r  r  r   r(   r  rs  r   smoothed_stateTra   r$  r  filter_univariater  diag)r  r-   r  r  errorr  s         r.   test_arima000r*  z  sB    IINN6DLL))t)45E
//%yE
JC
**S%%
&CC&&0 //%yE
JC
**S%%
&CC&&qr12v.

QR0@0B0BC II$'EGGDMB&E774=D //%yt
<C $CGG
**c2Y
CC&&q)5u= //%yt).0C $CGG"cBGGRH$56
**bT
CC&&q)5u=C&&q)2E: //%yt).NC $CGG#.
**b"X
CC&&q)2E:r0   c           	      *   t        j                  t        j                        }ddg}ddg}ddg}d t        j                  |      g}d dg}ddg}ddg}dd l}	g d	}
|	j                  |||||||      D ]  }t        t        |
|            }|j                  d
d      rd|d<   d|d<   t        j                  |fi |}t        j                  |fddi|}| |j                  _        | |j                  _        |j                  }|j                  |      }t         j                   |df   }d}|d
   r
|d   |dz  }|d   r|dz  }d}|d   s|d
   rd}t         j                   |d |  |j"                  || d  z  f   }|j                  |      }t%        |j&                  |j&                  |       |j                  j(                  D ]<  }|dk(  r	t%        t+        |j,                  |      t+        |j,                  |             > |j.                  }g d}|D ]<  }t+        |j,                  |      }t+        |j,                  |      }t%        |||       > g d}|j,                  j0                  j3                         |j                  j4                  k(  }t         j6                  | | d d f   }|D ]h  }t+        |j,                  |      d|d f   }t+        |j,                  |      d|d f   }|dv r|d
   rt%        ||   ||   |       [t%        |||       j g d}|D ]h  }t+        |j,                  |      d|d f   }t+        |j,                  |      d|d f   }|dv r|d
   rt%        ||   ||   |       [t%        |||       j g d}|D ](  }t+        ||      }t+        ||      }t%        |||       * |j9                  d      }|j9                  d      }t%        ||d|       |j;                  d      }|j;                  d      }t%        ||d|       |j=                  d       }|j=                  d       }t%        ||d|       d }|d   't        j>                  d!|j@                  z
  dz   df      }|jC                  d"d!d#|$      }|jC                  d"d!d#|$      }t%        |jD                  |jD                  |       t%        |jF                  |jF                  |       t         jH                  jK                  d%       |j                  jL                  rt         jH                  jO                  d#&      } t         jH                  jO                  d#&      }!t         jH                  jO                  |jP                  df&      }"|jS                  d#| |!|"      }|jS                  d#| |!|"      }t%        |||       |j                  jL                  so|jU                  d#      }|jU                  d#      }t%        |||        y )'Nr  r   r   r   r   r   r   r   r   r   r   rw   TFtr   r  r   r   r   r#  r  r   r  r3  	toleranceconcentrate_scaler   r  r#  rG   rp   r>   obs)predicted_staterk   	forecastsforecasts_errorkalman_gain)llf_obsrq   predicted_state_covfiltered_state_covtmp1tmp2tmp3tmp4.)r9  r:  )r%  smoothed_state_covsmoothed_state_autocovsmoothed_state_disturbancesmoothed_state_disturbance_cov smoothed_measurement_disturbance$smoothed_measurement_disturbance_covscaled_smoothed_estimatorscaled_smoothed_estimator_covsmoothing_errorsmoothed_forecastssmoothed_forecasts_errorsmoothed_forecasts_error_cov)r?  r@  )r    r!   r"   r  
jarquebera)r  )r#  r?   breakvarljungbox   r  ro  r  i6  r  )+r#   ra   r   rf  	ones_like	itertoolsproductr4  zipgetr   r(   r  r'  rs  r  r   scaler   r   shapesgetattrrj   r  r  rI   r   s_test_normalitytest_heteroskedasticitytest_serial_correlationr$  r  r
  predicted_meanse_meanr  r  time_invariantr  k_statessimulateimpulse_responses)#r'  r-   ordersseasonal_orderssimple_differencingsexogstrendstime_varying_regressionsmeasurement_errorsrP  nameselementr   mod_origmod_concconc_paramsres_concorig_paramsk_snrr?   res_orignamedfilter_attractualdesiredfilter_attr_burndiffuse_maskixsmoothed_attroutputr  measurement_shocksstate_shocksr  s#                                      r.   check_concentrated_scaler}    sE   GGO--.E#F#\2O %=2<<&'EC[F $e}?E$$UFOV%7%=%9; o8 c%)*::/7',F#$  {??53F3??5KDKFK):&):& ++??;/ eeKN+ +,1KQJE %&QJE%&&1J*KDeeK%0$NN[%-AAB C??;/ 	hll> LL'' 	DDu}GH$;$;TB#H$;$;TBD	D ''9   	8DX44d;Fh55t<GFG$7	8<
 !//AAJJL 556UUL=<-23$ 
	<DX44d;CGDFh55t<S!"WEG EE45r
GBKdCd;
	<	9 " 	<DX44d;CGDFh55t<S!"WEGHH45r
GBKdCd;	< > 	8DXt,Fh-GFG$7	8 (((=)))>d>111D22*2Ed>111D22*2Ed> &>%77C(--/!3Q78D((sR.2 ) 4))b/3 * 5--w/E/E!	#dC
 			u<<&&!#!1!1r!1!:99+++4LII,,83D3Da2H,IM&&r+=|'46F'',>(57GFG$7 <<&&//3F004GFG$7_o8r0   c                  4    t        d       t        d       y )NF)r'  T)r}  rX   r0   r.   test_concentrated_scaler  i	  s    u5t4r0   c            	      j   d} t        j                  |       dz  }t        j                  |       }t        j                  ||d      }|j	                  g d      }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   )r   r   r  ro  r   )	r#   r$  r   r(   r  r   r[  r   r  )	r  r-   r  r  r  exog_fcast_scalarexog_fcast_1dimexog_fcast_2dimhs	            r.   test_forecast_exogr  o	  sI   DGGDMCE774=D
//%d)
<C
**_
%C 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Dr0   c                 >   g d}g d}|D ]-  }t        |       t        t        ||      t        | |             / |D ]6  }t        t        |j                  |      t        | j                  |             8 t        |j	                         | j	                                y )N)r#  state_errorr3  state_regressionr  r   rq  rr  r   r   ry  r~  rz  r  polynomial_trendr|  k_ar_paramsk_diffr  k_ma_paramsseasonal_periodsk_seasonal_ark_seasonal_ar_paramsk_seasonal_diffk_seasonal_mak_seasonal_ma_paramsk_trendr  )r  r  r^  k_posdefobs_interceptdesignobs_covstate_intercept
transition	selection	state_cov)printr   rV  r  r  )r  r  attrs	ssm_attrsattrs        r.   check_equivalent_modelsr  	  s    	ENI  >dWT4('#t*<=>  FWTXXt,gcggt.DEF $$&(:(:(<=r0   c            	         d} t        j                  |       dz  }t        j                  |       }ddg}ddg}ddg}d t        j                  |      g}d d	g}ddg}ddg}	d
d l}
g d}|
j	                  |||||	||      D ]  }t        t        ||            }|j                  dd      rd|d<   |j                  dd       }t        j                  |fd|i|}t        j                  |fd|i|j                         }t        ||        y )Nr  r  r  r,  r-  r.  TFr/  r   r0  r  r3  r  )r#   r$  rO  rP  rQ  r4  rR  rS  popr   r(   r  r  )r  r-   r  ra  rb  rc  rd  re  rf  rg  rP  rh  ri  r   r  r  s                   r.   test_recreate_modelr  	  s)   DGGDMCE774=D#F#\2O %=2<<&'EC[F $e}?E$$UFOV%7%=%9; + c%)*::/7',F#$zz&$'ooe9$9&9uH4H33E3E3GHT*+r0   c            	         t        j                  d      } t        j                  |       }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
                   t        j                  t         d      5  |j                  | dd         d d d        y # 1 sw Y   y xY w)Nr  r  r  r   r  r  r/  r  r   r   r  r  r  r   r8  r  rk   r:  r4  r9  r5  r6  forecasts_error_covrq   forecasts_error_diffuse_covpredicted_diffuse_state_covrE  rF  rG  r%  r?  r@  rC  rA  rD  rB  ro  !Cloning a model with an exogenousmatch)r#   r  rO  r   r(   r  appendr   specificationr   r  rV  r[  r$  r  raisesr  	r-   r  r%   r  r  r  r  r  r  s	            r.   test_append_resultsr  	  s   IIcNE<<DF??5t9CHD;;vD??5":D"IY!$&D;;vD;;uRSzRS	;2D##T%7%78D++T-D-DE@ ?WT4('$*=>?. ? 	WT4('$*=>? DMM"2772;M7MM"2772;M79 
z)L	M  E"#J     s   F==Gc            	      $   t        j                  d      } t        j                  |       }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
                   t        j                  t        d      5  |j                  | dd         d d d        y # 1 sw Y   y xY w)Nr  r  r  r/  r  r  r  r  .ro  r  r  r#   r  rO  r   r(   r  extendr   r8  rV  r   r[  r$  r  r  r  
r-   r  r%   r  r  r  r  r  r  ru  s
             r.   test_extend_resultsr  	  sc   IIcNE<<DF??5t9CHD;;vD??5":D"IY!$&D;;vD;;uRSzRS	;2DDLL$,,rs"34. 3 $%c23h'GWT4('2!3$ DMM"2772;M7MM"2772;M79 
z)L	M  E"#J     s   (FFc            	      0   t        j                  d      } t        j                  |       }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      dz        |j                  dt        j                  d      dz               t        j                  t        d      5  |j                  | dd         d d d        y # 1 sw Y   y xY w)Nr  r  r  r/  r  r   r  r  .r  ro  r   r  r  r  r  s
             r.   test_extend_by_oner  
  sk   IIcNE<<DF??5t9CHD;;vD??5":D"IY!$&D;;vD;;uRSzRS	;2DDLL$,,rs"34. 3 $%c23h'GWT4('2!3$ DMM"2772;?M;MM"2772;?M;= 
z)L	M  E"#J     s   .FFc            	         t        j                  d      } t        j                  |       }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
                   t        j                  t         d      5  |j                  | dd         d d d        y # 1 sw Y   y xY w)Nr  r  r  r  r/  r  r  r  r  ro  r  r  )r#   r  rO  r   r(   r  applyr   r  r   r  rV  r[  r$  r  r  r  r  s	            r.   test_apply_resultsr  H
  s   IIcNE<<DF??5":D"IY!$&D;;vD??5:DIY!$&D;;vD::eCRjtCRy:1D##T%7%78D++T-D-DE@ ?WT4('$*=>?. ? 	WT4('$*=>? DMM"2772;M7MM"2772;M79 
z)L	M 

5:  s   %GGc                  j   t        j                  t        d         j                         dd  j                  } t        j                  | d d d      }d}t        j                  t        |      5  |j                  }t        |ddddt        j                  | d d       g       d d d        t        j                  | d d d	d
      }d}t        j                  t        |      5  |j                  }t        |dt        j                  | d d       g       d d d        y # 1 sw Y   {xY w# 1 sw Y   y xY w)Nr\   r   rw   )rw   r   r   r  zHToo few observations to estimate starting parameters for ARMA and trend.r  r   r>  )r   r   r   rw   )r   r   zGToo few observations to estimate starting parameters for seasonal ARMA.)r#   r_   r`   ra   rb   r   r(   r  warnsUserWarningrs  r   var)r-   r  r  rs  s       r.   test_start_params_small_nobsr  t
  s    FF?7+,113AB7>>E //%)9
5CE	k	/ G''q!Q266%)3D&EFG
 //%)9)57CE	k	/ >''q"&&r*;&<=> >G G> >s   /4D#1D)D&)D2c            
      Z   t        j                  t        d         j                  } t	        j
                  | t	        j                  t        t        |                         }t        j                  |dd      }t        |j                  j                  |j                  dd               y )Nr\   r  r   Tr   r   r   )r#   r_   r`   rb   r  r  r  rh   rP  r   r(   r
   _indexr  r  rb   r-   r  s      r.   #test_simple_differencing_int64indexr  
  sp    VVOG,-44FIIfBHHU3v;-?$@AE
//%yd
KCCJJekk!"o./r0   c            	      L   t        j                  t        d         j                  } t	        j
                  | t	        j                  dt        |                   }t        j                  |dd      }t        |j                  j                  |j                  dd               y )	Nr\   r   r  stopr  r   Tr  r   )r#   r_   r`   rb   r  r  
RangeIndexrP  r   r(   r
   r  r  r  r  s      r.   #test_simple_differencing_rangeindexr  
  sm    VVOG,-44FIIfBMMF$LME
//%yd
KCCJJekk!"o./r0   c            	      N   t        j                  t        d         j                  } t	        j
                  | t	        j                  dt        |       d            }t        j                  |dd      }t        |j                  j                  |j                  d	d               y )
Nr\   2000M)r  r  r  r  r   Tr  r   )r#   r_   r`   rb   r  r  period_rangerP  r   r(   r
   r  r  r  r  s      r.   "test_simple_differencing_dateindexr  
  st    VVOG,-44FIIfBOOc&k%5 6E
//%yd
KCCJJekk!"o./r0   c            
      j   t        j                  t        d         j                  } t	        j
                  t        t        |                   j                  t              }t	        j                  | |      }t        j                  t              5  t        j                  |dd      }d d d        t!        j"                  j%                  t	        j&                  dt        |       dz
                     t!        |j(                  j*                  j%                  |dd               y # 1 sw Y   xY w)	Nr\   r  r   Tr  r   r   r  )r#   r_   r`   rb   r  r  rh   rP  mapstrr  r  r  r  r   r(   r
   r  r  r  r   
row_labels)rb   r  r-   r  s       r.   !test_simple_differencing_strindexr  
  s    VVOG,-44FHHU3v;'(,,S1EIIfE*E	k	" Pooe9$OP CJJbmm!#f+/JKLCHH&&uQRy12	P Ps   D))D2c                  B   t        j                  d      } t        j                  t              5  t        j                  | d       d d d        t        j                  t              5  t        j                  | d       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)Nro  r  r  )r   r   rz   rw   r#   r  r  r  r  r   r(   r-   s    r.   test_invalid_orderr  
  sr    HHRLE	z	" +T*+	z	" 3\23 3+ +3 3s   B	(B	BBc                  l   t        j                  d      } t        j                  t              5  t        j                  | d       d d d        t        j                  t              5  t        j                  | d       d d d        t        j                  t              5  t        j                  | d       d d d        t        j                  t              5  t        j                  | d       d d d        t        j                  t              5  t        j                  | d       d d d        t        j                  t              5  t        j                  | d       d d d        y # 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   xY w# 1 sw Y   txY w# 1 sw Y   y xY w)	Nro  r  )r   )r   r   rz   rw   r!  )r   r   r   r   )r   r   r   r   )r   r   r   r   r  r  r  s    r.   test_invalid_seasonal_orderr  
  s.   HHRLE	z	" 4d34	z	" ?o>?	z	" <l;<	z	" <l;<	z	" <l;<	z	" <l;< <4 4? ?< << << << <sG   E-(E:!FFFF*-E7:FFFF'*F3c                     t         j                  d   } t        j                  ddt	        |             }t        j
                  | |      }t        j                  |dd      }|j                         }|d	   }|j                  |d
   d      }|j                  |d
   |      }t        |j                  |j                         |j                  |d
   |j                               }t        |j                  |j                         |j                  |d
   |j                  d            }t        |j                  |j                         y )Nr   z1980-1-1MSr  r  r   r   r   iir]   rM  z%Y-%m-%d)r   r   r  r  rP  r  r   r(   r*   r
  r   r[  to_pydatetimestrftime)r   r  seriesr  r  rN  ru  rt  s           r.   test_dynamic_strr  
  s   **62DMM*4TCEYYt5)F
//&	
=C
'')CCjG  sR 8Gc
G<FF))7+A+ABc
G4I4I4KLFF))7+A+ABc
(/(8(8(D   FFF))7+A+ABr0   c                    t        j                  t        j                  j	                  d      dd      }t        j                  t        d      5  |j                         }d d d        t        j                  t        d      5  j                  d	
       d d d        t        j                  j                  d      }t        j                  |dddd      }t        j                  t        d      5  |j                         }d d d        t        j                  t        d      5  j                  d
       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   y xY w)Nro  r  )ro  r   r   F)r   rq  zToo fewr  zLength of endogenous)rL  r!  )figsizer  r   )r   r   r   r]   )r   r   rq  rr  )r[  rL  )r   r(   r#   r  r  r  r  r  r*   r  r  r  standard_normal)reset_randomstater  r   ys       r.   test_plot_too_few_obsr  
  s+   
 //
		b!%C 
k	3 '')	z)?	@ 2   12
		!!!$A
//	$"#C 
k	3 '')	z)?	@ 3   23 3 2 2 3 3s0   EE5E)E)EEE&)E2c           
      4   t         j                  j                  d      }t        j                  |ddd      j                  d      }t        j                  t        j                  |j                  t        |      t        |      dz   	                  sJ y )
Nr  r   )r   r   r   r]   r^   )r-   r   r   r   Fr   r  r  
r#   r  r  r   r(   r*   allisfiniterI  rP  r  r  sarimax_models      r.   ,test_sarimax_starting_values_few_obsevationsr  
  s{    
		!!"%AOOyc	cuco  66
M))ACFRK)HI  r0   c           
      :   t         j                  j                  d      }g d}t        j                  |dd      j                  d      }t        j                  t        j                  |j                  t        |      t        |      dz   	                  sJ y )
Nr  )g@gfffffx@gfffff@g33333@g     @g@g2@g33333t@g     L@g@g33333V@g     @g     @@g     @gfffff@g)@g@gfffffE@g33333@)r   r   r!  r^   )r-   r   r   Fr   r  r  r  r  s      r.   4test_sarimax_starting_values_few_obsevations_long_mar  
  s    
		!!!$A	A OOy	cuco  66
M))ACFRK)HI  r0   c                 *   t        j                  d      }t        j                  d      }t        j                  ||dd      }|j	                  g d      }t        |j                  dd      d       t        |j                  d	d
d
g      dd       y )Nro  r  r   )r-   r  r   r   )r7  g?rF   r  r   r  g433333?r   r  g?)r#   r  r   r(   r  r   r[  )r  r  rm  r  r  s        r.    test_sarimax_forecast_exog_trendr    sy     	A
A
//#
FC
**)
*C CLLL+Y7 CLL"bL2IOr0   )F)rV   osr   statsmodels.compat.platformr   numpyr#   pandasr  r  statsmodels.tsa.statespacer   r   r   r   statsmodels.toolsr   statsmodels.tools.toolsr	   numpy.testingr
   r   r   r   r   pathdirnameabspath__file__current_pathjoinrealgdp_pathread_csvsepr`   coverage_pathrg  r   rZ   rt   r   r   r   r   r   r   r   r  r	  r  r  r-  rB  rS  rb  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r&  r*  r.  r4  r8  r<  rB  rE  rK  rO  rT  rY  r]  rc  rh  rm  rp  rt  rx  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  smoker  r!  r*  r}  slowr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rX   r0   r.   <module>r     s   
  4    5 $ * ) 
 wwrwwx89ww||I'DE"++lRVV3lBCY(FG2;;rww||L-HI ;/ ;/|#
 #
L"0 "0J
 
B>L% >LB5Cu 5Cp
( 
D5E+ 5Ep   F7P' 7Pt7P 7PtFP7 FPR.  .4CC CCLhC( hCV)
( )
X>
8 >
B[7 [7|0! 00/ 0;) ;=* ==2 =0& 00/ 0	0) 	07, 7B	0+ 	0#
!4 #
L0! 00/ 00) 01* 112 11& 11/ 1	1) 	1	1+ 	11# 1=+ ==, ==!4 =1( 111 1	!#6 	!	1+ 	1	1- 	11* 1	!%8 	!=2 = = 3 ==(; ="1/ 1	!%8 	!
12 
1
1!4 
11* 1	!%8 	!
12 
1	1 3 	1!(; !1/ 1	!%8 	!
12 
1
1!4 
11, 1=!4 = ="5 ="#*= #B11 1	!': 	!#,? #61!4 1!#6 !I0 I(!*= ! !%8 !$;.A ;4O4&$<N(<V. 0#f  :);X@8F 5 5
E@>4+B' T' T' T)X>.00033< C" 3 32
$Pr0   