
    M/Ph                       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j                            ej                            e                    Zej                            d
d          Z ej         eej!        z   ez             Z"ej                            d
d          Z# ej         e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	jy        jz        d             Z{d Z|d Z}ddZ~e	jy        j        d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdÄ Ze	jy        j        dĄ             Zdń ZdƄ ZdǄ ZdS )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                   R    e Zd ZdZed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
S )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                            d          | _        d S )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      m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/statespace/tests/test_sarimax.pysetup_classz"TestSARIMAXStatsmodels.setup_class+   s    "2  77)((*(#H#H#HIIx D D DEEoe9C:>>BD D D {B//    c                 N    t          | j        j        | j        j                   d S N)r   r+   r   r'   selfs    r.   test_loglikez#TestSARIMAXStatsmodels.test_loglike?   "    )4=+<=====r0   c                 N    t          | j        j        | j        j                   d S r2   )r   r+   r    r'   r3   s    r.   test_aiczTestSARIMAXStatsmodels.test_aicB   r6   r0   c                 N    t          | j        j        | j        j                   d S r2   )r   r+   r!   r'   r3   s    r.   test_biczTestSARIMAXStatsmodels.test_bicE   r6   r0   c                 N    t          | j        j        | j        j                   d S r2   )r   r+   r"   r'   r3   s    r.   	test_hqicz TestSARIMAXStatsmodels.test_hqicH   s"    *DM,>?????r0   c                     | j         j                                        }d|d         z
  |d         z  |d<   t          | j        j        d d         |d           d S )Nr   r   r   g-C6
?atol)r'   r%   copyr   r+   )r4   params_as     r.   test_mlezTestSARIMAXStatsmodels.test_mleK   s]     =',,..8A;(1+5,SbS18$GGGGGGr0   c                     | j                             d          }|                                dz  }t          |dd         | j        j        dd          d           d S )NTapprox_complex_step      ?r   r   h㈵>r>   )r+   _cov_params_approxdiagonalr   r'   r&   )r4   cpar&   s      r.   test_bsezTestSARIMAXStatsmodels.test_bseR   s]    m..4.HHllnnc!AbD	4=#4QRR#8tDDDDDDr0   c                     dd l mc m} |                    | j                   |                    | j                   d S )Nr   )statsmodels.tools._testingr   _testingcheck_ttest_tvaluesr+   check_ftest_pvalues)r4   smts     r.   test_t_testz"TestSARIMAXStatsmodels.test_t_testX   sQ    000000000 	........r0   N)__name__
__module____qualname____doc__classmethodr/   r5   r8   r:   r<   rB   rK   rR    r0   r.   r   r   "   s          0 0 [0&> > >> > >> > >@ @ @H H HE E E/ / / / /r0   r   c                   4    e Zd ZdZed             Zd Zd ZdS )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                                                   dd          j        }t          j        |ddd          | _        g d}| j                            |          | _	        d S )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   s    w/005577;BOE3<@B B B	
 
 

 i&&v..r0   c                     t          d          D ]G}t          t          j        dd          d|dz   z           | j        j        j        |         d           Hd S )Nr]   r   zu%dư>r>   )ranger   r`   ilocr   filter_resultsfiltered_state)r4   is     r.   test_filtered_statez&TestRealGDPARStata.test_filtered_statev   sl    r 	 	A$QRR(!A#7+:1=    	 	r0   c                     t          t          j        dd          d         | j        j        j        d         d           d S )Nr   rstdr   MbP?r>   )r   r`   ri   r   rj   standardized_forecasts_errorr3   s    r.   !test_standardized_forecasts_errorz4TestRealGDPARStata.test_standardized_forecasts_error~   sJ     $V,L'DQG	
 	
 	
 	
 	
 	
r0   N)rS   rT   rU   rV   rW   r/   rm   rr   rX   r0   r.   rZ   rZ   `   sW          
/ 
/ [
/  
 
 
 
 
r0   rZ   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )SARIMAXStataTestsc                 R    t          | j        j        | j        d         d           d S )Nloglike   )r   resultr   r   r3   s    r.   r5   zSARIMAXStataTests.test_loglike   s1    KOIi !	
 	
 	
 	
 	
r0   c                 R    t          | j        j        | j        d         d           d S )Nr       )r   rx   r    r   r3   s    r.   r8   zSARIMAXStataTests.test_aic   1    KOIea	
 	
 	
 	
 	
r0   c                 R    t          | j        j        | j        d         d           d S )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           d S )N   r   rz   )	rx   r   r#   r_   nobs_effectiver%   shaper   r"   )r4   r"   s     r.   r<   zSARIMAXStataTests.test_hqic   sy    t{bfRVDK677888K$Q'(( 	
 	K!	
 	
 	
 	
 	
r0   c                 n    | j         j        }d | j         _        | j         j        }t          ||           d S 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_        
 
 

 
 

 
 
	
 	
 	
0 0 0 0 0r0   rt   c                   .    e Zd ZdZed             Zd ZdS )ARIMAz?
    ARIMA model

    Stata arima documentation, Example 1
    c                    || _         |d         }|                    dd           |                    dd           t          j        |g|R ddd|| _        d|d	         d
         z
  |d         d
         z  }t
          j        ||d	         |d         |d         f         }| j                            |          | _        d S )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663T:::OE 5%)5 5# 5 5-35 5	
 k*1--m1DQ1GG	y${"3T+5F-./ 0 Y%%f--


r0   c                 ~    | j                             d          }t          |j        | j        j        d           d S Nr   r   rp   r>   rc   r*   r   r%   rx   r4   rx   s     r.   rB   zARIMA.test_mle   G    R((M4;-	
 	
 	
 	
 	
 	
r0   NrS   rT   rU   rV   rW   r/   rB   rX   r0   r.   r   r      sH         
 . . [.$
 
 
 
 
r0   r   c                   J     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                   d S r2   )superr/   r   r   r,   	__class__s    r.   r/   zTestARIMAStationary.setup_class   /    +	
 	
 	
 	
 	
r0   c                 V   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           d S 
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11T[94@@@T[5u===*DIk,BNNNN*DIk,BNNNNNNr0   c                     | j                             d                                          dz  }t          |d         | j        d         d           t          |d         | j        d	         d           d S )
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   w    k,, $ - & &&.hjj#6A	+ 6TBBBBA	+ 6TBBBBBBr0   c                     | j         j                                        dz  }t          |d         | j        d         d           t          |d         | j        d         d           d S )	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   sc    +,5577<
DIk$:FFFF
DIk$:FFFFFFr0   c                 J   | j         j                                        dz  }| j         j        }|                                dz  }t          j        | j        d         | j        d         f         }t          |dd         |d           t          |dd         |d           d S )	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EEsJ{3 MMOOS0%In%ty'@@
 	qs+_4HHHH)!A#.dKKKKKKr0   )rS   rT   rU   rV   rW   r/   rK   r   r   r   __classcell__r   s   @r.   r   r      s          
 
 
 
 [

O O OC C C0G G G	L 	L 	L 	L 	L 	L 	Lr0   r   c                   D     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                     d|d<   t           j        d         |d<    t                      j        t           j        fi | d S )Napproximate_diffuseinitializationinitial_variance)r   wpi1_diffuser   r/   )r,   r   r   s     r.   r/   zTestARIMADiffuse.setup_class  sO    #8 ();< 	!" 	O8CCFCCCCCr0   c                 V   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           d S r   r   r3   s    r.   rK   zTestARIMADiffuse.test_bse  r   r0   c                     | j                             d                                          dz  }t          |d         | j        d         d           t          |d         | j        d	         d           d S )
NTrD   rF   r   r   -C6?r>   r   r   r   r   s     r.   r   z TestARIMADiffuse.test_bse_approx&  r   r0   c                     | j                                                                         dz  }t          |d         | j        d         d           t          |d         | j        d         d           d S )	NrF   r   r   r   r>   r   r   皙?rx   _cov_params_oimrI   r   r   r   s     r.   r   zTestARIMADiffuse.test_bse_oim>  l    k))++4466;A	+ 6TBBBBA	+ 6TBBBBBBr0   
rS   rT   rU   rV   rW   r/   rK   r   r   r   r   s   @r.   r   r     s          D D D D [DO O OC C C0C C C C C C Cr0   r   c                   .    e Zd ZdZed             Zd ZdS )AdditiveSeasonalz^
    ARIMA model with additive seasonal effects

    Stata arima documentation, Example 2
    c                    || _         t          j        |d                   }|                    dd           |                    dd           t	          j        |g|R ddd|| _        d|d	         d
         z
  |d         d
         z  }t          j        ||d	         |d         |d         f         }| j                            |          | _	        d S )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663T:::O
;?
 
-S
 
CI
 
	 k*1--m1DQ1GG	y${"3T+5F-./ 0 Y%%f--


r0   c                 ~    | j                             d          }t          |j        | j        j        d           d S r   r   r   s     r.   rB   zAdditiveSeasonal.test_mle_  r   r0   Nr   rX   r0   r.   r   r   E  sH         
 . . [.&
 
 
 
 
r0   r   c                   D     e Zd ZdZe fd            Zd Zd Zd Z xZ	S )TestAdditiveSeasonalr   c                 ^    t                                          t          j                   d S r2   )r   r/   r   wpi1_seasonalr   s    r.   r/   z TestAdditiveSeasonal.setup_classo  /    )	
 	
 	
 	
 	
r0   c                 Z   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           d S )Nr   TFr   r   rg   r>   r   rw   r   rG   r   r3   s    r.   rK   zTestAdditiveSeasonal.test_bseu  s    T[)5111T[94@@@T[5u===*DIk,BNNNN!,di.D!	# 	# 	# 	# 	# 	#r0   c                     | j                             d                                          dz  }t          |d         | j        d         d           t          |dd	         | j        d
         d           d S )NTrD   rF   r   r   r   r>   r   rw   r   r   r   s     r.   r   z$TestAdditiveSeasonal.test_bse_approx  s{    k,, $ - & &&.hjj#6A	+ 6TBBBBAaC$)K"8tDDDDDDr0   c                     | j                                                                         dz  }t          |d         | j        d         d           t          |dd         | j        d         d	           d S )
NrF   r   r   r   r>   r   rw   r   r   r   r   s     r.   r   z!TestAdditiveSeasonal.test_bse_oim  sp    k))++4466;A	+ 6TBBBBAaC$)K"8tDDDDDDr0   r   r   s   @r.   r   r   g  s          
 
 
 
 [

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

    Stata arima documentation, Example 3
    c                 h   || _         t          j        |d                   }|                    dd           |                    dd           t	          j        |g|R dddd|| _        t          j        |d	         |d
         |d         f         }| j                            |          | _	        d S )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663T:::O

 
"=
 
 &
 
	
 tK($/C*D-./ 0 Y%%f--


r0   c                     t          j                    5  t          j        d           | j                            d          }t          |j        | j        j        d           d d d            d S # 1 swxY w Y   d S )Nignorer   r   r   r>   )warningscatch_warningssimplefilterrc   r*   r   r%   rx   r   s     r.   rB   zAirline.test_mle  s    $&& 	 	!(+++Z^^^,,Ft{1   		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA22A69A6Nr   rX   r0   r.   r   r     sH         
 . . [."    r0   r   c                   D     e Zd ZdZe fd            Zd Zd Zd Z xZ	S )TestAirlineHamiltonr   c                 ^    t                                          t          j                   d S r2   r   r/   r   air2_stationaryr   s    r.   r/   zTestAirlineHamilton.setup_class  r   r0   c                 V   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           d S 
Nr   TFr   r   rg   r>   r   se_seasonal_ma_opgr   r3   s    r.   rK   zTestAirlineHamilton.test_bse      T[)5111T[94@@@T[5u===*DIk,BNNNN*DI6J,K!	# 	# 	# 	# 	# 	#r0   c                     | j                             d                                          dz  }t          |d         | j        d         d           t          |d         | j        d	         d           d S 
NTrD   rF   r   r   rg   r>   r   se_seasonal_ma_oimr   r   s     r.   r   z#TestAirlineHamilton.test_bse_approx  x    k,, $ - & &&.hjj#6A	+ 6TBBBBA	*> ?dKKKKKKr0   c                     | j         j                                        dz  }t          |d         | j        d         d           t          |d         | j        d         d           d S NrF   r   r   r   r>   r   r   r   r   s     r.   r   z TestAirlineHamilton.test_bse_oim  d    +,5577<
DIk$:FFFF
DI.B$C$OOOOOOr0   r   r   s   @r.   r   r               
 
 
 
 [

# # #L L L6P P P P P P Pr0   r   c                   D     e Zd ZdZe fd            Zd Zd Zd Z xZ	S )TestAirlineHarveyr   c                 b    t                                          t          j        d           d S )NF)r   r   r   s    r.   r/   zTestAirlineHarvey.setup_class  s6    +U 	 	
 	
 	
 	
 	
r0   c                 V   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           d S r   r   r3   s    r.   rK   zTestAirlineHarvey.test_bse
  r   r0   c                     | j                             d                                          dz  }t          |d         | j        d         d           t          |d         | j        d	         d           d S r   r   r   s     r.   r   z!TestAirlineHarvey.test_bse_approx  r   r0   c                     | j         j                                        dz  }t          |d         | j        d         d           t          |d         | j        d         d           d S r   r   r   s     r.   r   zTestAirlineHarvey.test_bse_oim/  r   r0   r   r   s   @r.   r  r    r  r0   r  c                   P     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                 d    t                                          t          j        dd           d S )NF)r   r   r   r   s    r.   r/   z(TestAirlineStateDifferencing.setup_class>  s9    +$) 	 	
 	
 	
 	
 	
r0   c                 R    t          | j        j        | j        d         d           d S )Nr!   r   r}   r3   s    r.   r:   z%TestAirlineStateDifferencing.test_bicE  s3     	KOIea	
 	
 	
 	
 	
r0   c                     | j                             ddd          }t          |j        | j        j        d           d S )Nnmi  r   )methodmaxiterr   rp   r>   r   r   s     r.   rB   z%TestAirlineStateDifferencing.test_mleN  sK    tTBBM4;-	 	 	 	 	 	r0   c                 V   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           d S r   r   r3   s    r.   rK   z%TestAirlineStateDifferencing.test_bseT  r   r0   c                     | j                             d                                          dz  }t          |d         | j        d         d           t          |d         | j        d	         d           d S )
NTrD   rF   r   r   r   r>   r   r   r   r   s     r.   r   z,TestAirlineStateDifferencing.test_bse_approx^  r   r0   c                     | j         j                                        dz  }t          |d         | j        d         d           t          |d         | j        d         d           d S 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  s          
 
 
 
 [

 
 
  # # #L L L4P P P P P P Pr0   r	  c                   *    e Zd ZdZedd            ZdS )Friedmanzb
    ARMAX model: Friedman quantity theory of money

    Stata arima documentation, Example 4
    Nc                    || _         t          j        |d         d                  }|t          |d         d                   }|                    dd           |                    dd           t          j        |g|R |dd|| _        t          j        |d	         |d
         |d         |d         f         }| j                            |          | _	        d S )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33D/6663T:::O
04
 
I
 
8>
 
	 tM*D,=K($/@*AB C Y%%f--


r0   r2   )rS   rT   rU   rV   rW   r/   rX   r0   r.   r  r    s>         
 . . . [. . .r0   r  c                   J     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                   d S r2   )r   r/   r   friedman2_mler   s    r.   r/   z%TestFriedmanMLERegression.setup_class  r   r0   c                     | j                             d          }|j        | j        j        z  }t	          |t          j        d          dd           d S )Nr   r      r   rp   r?   rtol)rc   r*   r%   rx   r   r#   ones)r4   rx   ratios      r.   rB   z"TestFriedmanMLERegression.test_mle  sM    R(( 22rwqzz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
           d S )Nr   TFr   r   se_exog_opgr   r>   r   rg   rz   r   r   r3   s    r.   rK   z"TestFriedmanMLERegression.test_bse  s    T[)5111T[94@@@T[5u===!,di.F!	# 	# 	# 	#*DIk,BNNNN*DIk,BNNNNNNr0   c                 <   | j                             d                                          dz  }t          |dd         | j        d         d           t          |d         | j        d	         d
           t          |d         | j        d         d
           d S )NTrD   rF   r   r   se_exog_oimr   r>   r   rg   rz   r   r   r   s     r.   r   z)TestFriedmanMLERegression.test_bse_approx  s    k,, $ - & &&.hjj#6AaC$)M":FFFFA	+ 6TBBBBA	+ 6TBBBBBBr0   c                 x   | 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           d S )NrF   r   r)  r   r#  r   r>   r   r   rz   r   r   r   s     r.   r   z&TestFriedmanMLERegression.test_bse_oim  s    k(1133S8A	- 8 ;!DDDDA	- 8 ;$GGGGA	+ 6TBBBBA	+ 6TBBBBBBr0   )rS   rT   rU   rV   rW   r/   rB   rK   r   r   r   r   s   @r.   r  r    s          
 
 
 
 [

A A A	O 	O 	OC C C<C C C C C C Cr0   r  c                   b     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                    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                  | _        d S )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22DL.//#5"&}"5aaa"8"=1!!!4] ]YtE 	 	
 	
 	
 %] 3T+5F $[ 148I3J!K L Y%%co66


r0   c                     | j                             d          }t          |j        | j        j        dd           d S )Nr   r   r   皙?r"  r   r   s     r.   rB   z$TestFriedmanStateRegression.test_mle  sI    R((M4;-D	
 	
 	
 	
 	
 	
r0   c                 v    t          | j        j        j        dd df         dz  | j        d         d           d S )Nr   r   r/  r0  r   )r   rx   rj   rk   r   r3   s    r.   test_regression_parametersz6TestFriedmanStateRegression.test_regression_parameters  sJ     	K&5bcc2g>DI'(!	
 	
 	
 	
 	
r0   c                     d S r2   rX   r3   s    r.   r5   z(TestFriedmanStateRegression.test_loglike      r0   c                     d S r2   rX   r3   s    r.   r8   z$TestFriedmanStateRegression.test_aic  r;  r0   c                     d S r2   rX   r3   s    r.   r:   z$TestFriedmanStateRegression.test_bic  r;  r0   c                 V   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           d S )
Nr   TFr   r   r   r>   r   r   r   r3   s    r.   rK   z$TestFriedmanStateRegression.test_bse!  r   r0   c                     | j                             d                                          dz  }t          |d         | j        d         d           t          |d         | j        d	         d           d S )
NTrD   rF   r   r   r   r>   r   r   r   r   s     r.   r   z+TestFriedmanStateRegression.test_bse_approx*  r   r0   c                     | j                                                                         dz  }t          |d         | j        d         d           t          |d         | j        d         d           d S )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-    s        
 
 7 7 7 7 [7*
 
 

 
 
       O O OC C C2C C C C C C Cr0   r-  c                   P     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                   d S r2   )r   r/   r   friedman2_predictr   s    r.   r/   zTestFriedmanPredict.setup_classV  s/    -	
 	
 	
 	
 	
r0   c                     d S r2   rX   r3   s    r.   r5   z TestFriedmanPredict.test_loglike_  r;  r0   c                     d S r2   rX   r3   s    r.   r8   zTestFriedmanPredict.test_aicb  r;  r0   c                     d S r2   rX   r3   s    r.   r:   zTestFriedmanPredict.test_bice  r;  r0   c                 l    t          | j                                        | j        d         d           d S )Npredictrz   )r   rx   rI  r   r3   s    r.   test_predictz TestFriedmanPredict.test_predicth  s;    K!!Ii !	
 	
 	
 	
 	
r0   c                     t          | j        d         d                   dz
  dz
  }t          | j                            |          | j        d         d           d S )Nr   r     r   dynamicdynamic_predictrz   )lenr   r   rx   rI  )r4   rN  s     r.   test_dynamic_predictz(TestFriedmanPredict.test_dynamic_predictn  sd    di'	233B6q8K00I'(!	
 	
 	
 	
 	
r0   )rS   rT   rU   rV   rW   r/   r5   r8   r:   rJ  rQ  r   r   s   @r.   rB  rB  J  s        
 
 
 
 
 
 [
      
 
 

 
 
 
 
 
 
r0   rB  c                   P     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                  | _        d S )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66 F|I.stt4v,t$STT*!
 !
_
 F|I.tt4v,t$TcT*
 
V
 	D!!!Y%%cj&788


r0   c                     d S r2   rX   r3   s    r.   r5   z!TestFriedmanForecast.test_loglike  r;  r0   c                     d S r2   rX   r3   s    r.   r8   zTestFriedmanForecast.test_aic  r;  r0   c                     d S 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        d         d	           d S )
Nr   r  rL  r   rU  r  )endr  forecastrz   rP  r   r   r   rx   rI  )r4   rZ  r  s      r.   test_forecastz"TestFriedmanForecast.test_forecast  s~    $)F#I.//214DIo6t<==KCd33Ij!1	
 	
 	
 	
 	
r0   c                 F   t          | j        d         d                   dz   dz
  }t          | j        d         d                   dz
  }t          | j        d         d                   }t          | j                            |||          | j        d         d	           d S )
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di'	233A5DIo6t<==KCtDDI()1	
 	
 	
 	
 	
r0   )rS   rT   rU   rV   rW   r/   r5   r8   r:   r]  r`  r   r   s   @r.   rS  rS  v  s         " 9 9 9 9 [9&      
 
 

 
 
 
 
 
 
r0   rS  c                   t    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dS )SARIMAXCoverageTestrw   Nc                    |t           j        }t          j        |         d         | _        t          j        d t          j        |         d                             d          D                       | _        | j        d         dz  | j        d<   || _	        |
                    dd           |
                    d	d           t          j        |g|R i || _        d S )
Nr   c                 ,    g | ]}t          |          S rX   )float).0xs     r.   
<listcomp>z3SARIMAXCoverageTest.setup_class.<locals>.<listcomp>  s1     $P $P $PE!HH$P $P $Pr0   
parameters,r   r   r   Tr   )r   	wpi1_datacoverage_resultsloctrue_logliker#   r$   splitr5  decimalr   r   r(   rc   )r,   rl   rp  r-   r   r   s         r.   r/   zSARIMAXCoverageTest.setup_class  s     =#-E ,/259( $P $P.215lCII#NN$P $P $P 
 
 "ob114  	/6663T:::OE;D;;;F;;			r0   c                     | j                             | j                  | _        t	          | j        j        | j        dd| j         z  z             d S )Ngffffff?
   r>   )rc   rd   r5  rx   r   r   rn  rp  r3   s    r.   r5   z SARIMAXCoverageTest.test_loglike  s[    j''(899KOrT\M**	
 	
 	
 	
 	
 	
r0   c                     | j         j        }| j         j        }d| j         _        d| j         _        | j         j         || j         _        || j         _        d S )NF)rc   enforce_stationarityenforce_invertibilitystart_params)r4   statinvs      r.   test_start_paramsz%SARIMAXCoverageTest.test_start_params  sQ     z.j.*/
'+0
(
*.
'+.
(((r0   c                    | j         }|j        |j        }}| j        }|                    | j                   |j        }|j        }||                                         }|j        dk    s/t          j
        t          j        d|dd           f                   oAt          |          dk    p.t          j
        t          j        d|dd           f                   |_        |j        }|j        }	|	|	                                         }
|j        dk    s.t          j
        t          j        d|dd          f                   o@t          |
          dk    p-t          j
        t          j        d|
dd          f                   |_        |                    |          }|                    |          }t'          ||d           ||_        ||_        d S )Nr   r   rw   )rc   rt  ru  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   rw  rx  true_constrainedparpsarcontracted_psarpmapsmacontracted_psmaunconstrainedconstraineds                r.   test_transform_untransformz.SARIMAXCoverageTest.test_transform_untransform  s   
.0Kc+
 	T%&&&!+t||~~.Z1_G 3BE!c!""gX+4F G G E!!Q& D#BE!oabb.A-A*A$BCC 	" !+t||~~.Z1_F 3BE!SW*4E F F D!!Q& C#BE!_QRR-@*@$ABB 	# 001ABB,,];;K)91===%)"&)###r0   c                    | j                             | j                  | _        | j                                         | j        j         | j        j         | j        j         | j        j         | j        j	         | j        j
         d S 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|    j''(899 	 	&&%%"""")),,,,r0   c                     | j                             | j                  | _        | j                                         d S r2   )rc   rd   r5  rx   plot_diagnostics)r4   close_figuress     r.   test_plot_diagnosticsz)SARIMAXCoverageTest.test_plot_diagnostics  s8     j''(899$$&&&&&r0   c                    | j                             | j                  }|                                }t	          |j        | j         j        f           |                    dd          }t	          |j        d           |                    ddd          }t	          |j        d           | j         j        dk    r|                    | j         j        | j         j        dz   d          }t	          |j        d           |                    | j         j        | j         j        dz   d          }|                                }t	          |j        d           |                    d          }t	          |j        d	           d S | j         j        }t          j
        dg|z  d
z                               d
|          }|                    | j         j        | j         j        dz   d|          }t	          |j        d           |                    | j         j        | j         j        dz   d|          }t          j
        dg|z                               d|          }|                    |          }t	          |j        d           d S )Nrr     startrZ  )   )r  rZ  rN  r   ir   )rr  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  sQ   ""4#344 ..""W]TZ_$6777..rr.22W]E***..rr2.>>W]E*** :!!nn4:?)-);S % J JG...nn4:?)-);S % J JG ((H...r**H/////Z&F5!VB'//F;;Dnn4:?)-);S*. % 0 0G ...nn4:?)-);S*. % 0 0G 5!V$,,Q77DD11H.....r0   c                 \   | j         }| j                                         }|j        j        }|j        j        }t          j        ||fi |}| j                             | j                  }|                    | j                  }t          rdnd}t          |j        |j        |           d S 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    z**,,	$y"7777z  !122}}T-..#.tt$(666666r0   )rw   N)rS   rT   rU   rW   r/   r5   ry  r  r  pytestmark
matplotlibr  rJ  r  rX   r0   r.   rb  rb    s        < < < [<,
 
 
	/ 	/ 	/!* !* !*F- - - [' ' '
*/ */ */X7 7 7 7 7r0   rb  c                   .     e Zd Ze fd            Z xZS )Test_arc                 L    d|d<    t                      j        dg|R i | d S )Nrz   r   r   r   r   r   r/   r,   r   r   r   s      r.   r/   zTest_ar.setup_classY  9    #wA/////////r0   rS   rT   rU   rW   r/   r   r   s   @r.   r  r  U  D         0 0 0 0 [0 0 0 0 0r0   r  c                   .     e Zd Ze fd            Z xZS )Test_ar_as_polynomialc                 V    g dddf|d<    t                      j        dg|R i | d S )Nr   r   r   r  r  s      r.   r/   z!Test_ar_as_polynomial.setup_classc  sD    $99a+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                      j        dg|R i | | j        }d|dd                                         z
  |d         z  | j        d<   d S )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  su    #wwA/////// o#ac(,,..0CF:r0   r  r   s   @r.   r  r  i  sD         ; ; ; ; [; ; ; ; ;r0   r  c                   .     e Zd Ze fd            Z xZS )Test_ar_trend_ctc                     d|d<   d|d<    t                      j        dg|R i | | j        }d|dd                                         z
  |d d         z  | j        d d<   d S )Nr  r   ctr   r   r   r!  r  r  s       r.   r/   zTest_ar_trend_ct.setup_class|  s}    #wwA/////// o 3qs8<<>>1S!W<r0   r  r   s   @r.   r  r  x  D         = = = = [= = = = =r0   r  c                   .     e Zd Ze fd            Z xZS )Test_ar_trend_polynomialc                     d|d<   g d|d<    t                      j        dg|R i | | j        }d|dd                                         z
  |d d         z  | j        d d<   d S )	Nr  r   r   r   rz   r   r   r!  r  r  s       r.   r/   z$Test_ar_trend_polynomial.setup_class  s    #w&,,wA/////// o 3qs8<<>>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                 L    d|d<    t                      j        dg|R i | d S )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                 V    d|d<   d|d<    t                      j        dg|R i | d S )Nr  r   r   r   r   rw   r   r!  r  r  s      r.   r/   z!Test_ar_seasonal_diff.setup_class  sD    #w#/ A/////////r0   r  r   s   @r.   r  r    D         0 0 0 0 [0 0 0 0 0r0   r  c                   .     e Zd Ze fd            Z xZS )Test_ar_diffusec                 `    d|d<   d|d<   d|d<    t                      j        dg|R i | d S )Nr  r   r   r       eAr      r  r  s      r.   r/   zTest_ar_diffuse.setup_class  sO    #w#8 %(!"A/////////r0   r  r   s   @r.   r  r    D         0 0 0 0 [0 0 0 0 0r0   r  c                   4     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                      j        d
g|R i | d| j        j        _        d S )Nr  r   Frt  ru  r  r   r   loglikelihood_burnr  )r   r/   rc   ssmr  r  s      r.   r/   zTest_ar_no_enforce.setup_class  ss    #w).%&*/&'%(!"'(#$A/////// ,-	(((r0   c                    | j         }| j                                         }|j        j        }|j        j        }t          j        ||fi |}|j        j        |j        _        | j         	                    | j
                  }|	                    | j
                  }t          rdnd}t          |j        |j        |           d S 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    z**,,	$y"7777$(H$;
!z  !122}}T-..#.tt$(666666r0   )rS   rT   rU   rW   r/   r  r   r   s   @r.   r  r    sS         	- 	- 	- 	- [	-7 7 7 7 7 7 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	                      j        dg|R i | d S )Nr  r   r   r     r   rk  r#   floorr   r/   r,   r   r   r-   r   s       r.   r/   zTest_ar_exogenous.setup_class  s\    #w)"(5//1A5vA/////////r0   r  r   s   @r.   r  r    r  r0   r  c                   :     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	                      j        dg|R i | | j        d         | _        | j        d	d          | _        d S )
Nr  r   r   r  Fr3  r  r   r   )r   rk  r#   r  r   r/   r5  true_regression_coefficientr  s       r.   r/   z&Test_ar_exogenous_in_state.setup_class  s    #w)"(5//1A5v#( A///////*-/!*<'/!""-r0   c                     | j                             | j                  | _        t	          | j        j        | j        d           d S )Nr   r>   )rc   rd   r5  rx   r   r   rn  r3   s    r.   r5   z'Test_ar_exogenous_in_state.test_loglike  sO     j''(899KO	
 	
 	
 	
 	
 	
r0   c                     | j                             | j                  | _        t	          | j        j        j        d         d         | j        | j                   d S )Nrz   r   )	rc   rd   r5  rx   r   rj   rk   r  rp  r3   s    r.   test_regression_coefficientz6Test_ar_exogenous_in_state.test_regression_coefficient  sZ     j''(899K&5a8<,L	
 	
 	
 	
 	
r0   )rS   rT   rU   rW   r/   r5   r  r   r   s   @r.   r  r    sb         . . . . [.	
 	
 	


 

 

 

 

 

 

r0   r  c                   .     e Zd Ze fd            Z xZS )Test_mac                 L    d|d<    t                      j        dg|R i | d S )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                 V    ddg df|d<    t                      j        dg|R i | d S )Nr   r   r   r  r  r  s      r.   r/   z!Test_ma_as_polynomial.setup_class  sD    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                 V    d|d<   d|d<    t                      j        dg|R i | d S )Nr  r   r   r   	   r  r  s      r.   r/   zTest_ma_trend_c.setup_class"  sB    #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                 V    d|d<   d|d<    t                      j        dg|R i | d S )Nr  r   r  r   rr  r  r  s      r.   r/   zTest_ma_trend_ct.setup_class-  sB    #wwB000000000r0   r  r   s   @r.   r  r  )  D         1 1 1 1 [1 1 1 1 1r0   r  c                   .     e Zd Ze fd            Z xZS )Test_ma_trend_polynomialc                 Z    d|d<   g d|d<    t                      j        dg|R i | d S )Nr  r   r   r   r  r  r  s      r.   r/   z$Test_ma_trend_polynomial.setup_class8  sF    #w&,,wB000000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                 L    d|d<    t                      j        dg|R i | d S )N)r   r   rz   r   r]   r  r  s      r.   r/   zTest_ma_diff.setup_classC  9    #wB000000000r0   r  r   s   @r.   r  r  ?  D         1 1 1 1 [1 1 1 1 1r0   r  c                   .     e Zd Ze fd            Z xZS )Test_ma_seasonal_diffc                 V    d|d<   d|d<    t                      j        dg|R i | d S )Nr  r   r  r      r  r  s      r.   r/   z!Test_ma_seasonal_diff.setup_classM  D    #w#/ B000000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                 `    d|d<   d|d<   d|d<    t                      j        dg|R i | d S )Nr  r   r   r   r  r      r  r  s      r.   r/   zTest_ma_diffuse.setup_classX  O    #w#8 %(!"B000000000r0   r  r   s   @r.   r  r  T  D         1 1 1 1 [1 1 1 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	                      j        dg|R i | d S )Nr  r   r   r  rL  r  r  s       r.   r/   zTest_ma_exogenous.setup_classd  \    #w)"(5//1A5vB000000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                 L    d|d<    t                      j        dg|R i | d S )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                      j        dg|R i | | j        }d|dd                                         z
  |d d         z  | j        d d<   d S )Nrz   r   r   r   r   r      r   rw   r  r  s       r.   r/   zTest_arma_trend_c.setup_classz  s}    #wwB0000000 o 3qs8<<>>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                      j        dg|R i | | j        }d|dd                                         z
  |d d         z  | j        d d<   d S )	Nr  r   r  r      r   r   r!  r  r  s       r.   r/   zTest_arma_trend_ct.setup_class  s}    #wwB0000000 o 3qs8<<>>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                      j        dg|R i | | j        }d|dd                                         z
  |d d         z  | j        d d<   d S )	Nr  r   r   r      r   r   r!  r  r  s       r.   r/   z&Test_arma_trend_polynomial.setup_class  s    #w&,,wB0000000 o 3qs8<<>>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                 L    d|d<    t                      j        dg|R i | d S )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                 V    d|d<   d|d<    t                      j        dg|R i | d S )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                 V    d|d<   d|d<    t                      j        dg|R i | d S )Nr+  r   r  r      r  r  s      r.   r/   z(Test_arma_diff_seasonal_diff.setup_class  Y    #w#/ 	!	! 	! 	!	! 	! 	! 	! 	!r0   r  r   s   @r.   r1  r1    D         ! ! ! ! [! ! ! ! !r0   r1  c                   .     e Zd Ze fd            Z xZS )Test_arma_diffusec                 `    d|d<   d|d<   d|d<    t                      j        dg|R i | d S )Nr  r   r   r   r  r      r  r  s      r.   r/   zTest_arma_diffuse.setup_class  r  r0   r  r   s   @r.   r7  r7    r  r0   r7  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	                      j        dg|R i | d S )Nr  r   r   r     r  r  s       r.   r/   zTest_arma_exogenous.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_arc                 V    d|d<   d|d<    t                      j        dg|R i | d S )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                 b    d|d<   g ddddf|d<    t                      j        dg|R i | d S )NrA  r   r   r   rw   r   rC  r  r  s      r.   r/   z*Test_seasonal_ar_as_polynomial.setup_class  sf    #w$-IIq!Q#7 	!	! 	! 	!	! 	! 	! 	! 	!r0   r  r   s   @r.   rE  rE    r5  r0   rE  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_ar_trend_cc                     d|d<   d|d<   d|d<    t                      j        dg|R i | | j        }d|dd	                                         z
  |d d         z  | j        d d<   d S )
NrA  r   rB  r   r   r      r   rw   r  r  s       r.   r/   z$Test_seasonal_ar_trend_c.setup_class      #w#/ wB0000000 o 3qs8<<>>1S!W<r0   r  r   s   @r.   rH  rH    D         = = = = [= = = = =r0   rH  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_ar_trend_ctc                     d|d<   d|d<   d|d<    t                      j        dg|R i | | j        }d|d	d
                                         z
  |d d	         z  | j        d d	<   d S )NrA  r   rB  r   r  r      r   r   r!  r  r  s       r.   r/   z%Test_seasonal_ar_trend_ct.setup_class  s    #w#/ wB0000000o 3qs8<<>>1S!W<r0   r  r   s   @r.   rN  rN    r  r0   rN  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                      j        dg|R i | | j        }d|d	d
                                         z
  |d d	         z  | j        d d	<   d S )NrA  r   rB  r   r   r      r   r   r!  r  r  s       r.   r/   z-Test_seasonal_ar_trend_polynomial.setup_class  s    #w#/ &,,w	!	! 	! 	!	! 	! 	! o 3qs8<<>>1S!W<r0   r  r   s   @r.   rR  rR    D         	= 	= 	= 	= [	= 	= 	= 	= 	=r0   rR  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_ar_diffc                 V    d|d<   d|d<    t                      j        dg|R i | d S )Nr   r   r   r   rB  r      r  r  s      r.   r/   z!Test_seasonal_ar_diff.setup_class'  r  r0   r  r   s   @r.   rW  rW  #  r  r0   rW  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_ar_seasonal_diffc                 V    d|d<   d|d<    t                      j        dg|R i | d S )NrA  r   )rz   r   r   rw   r      r  r  s      r.   r/   z*Test_seasonal_ar_seasonal_diff.setup_class2  r4  r0   r  r   s   @r.   r\  r\  .  r5  r0   r\  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_ar_diffusec                 j    d|d<   d|d<   d|d<   d|d<    t                      j        d	g|R i | d S )
NrA  r   rB  r   r   r   r  r      r  r  s      r.   r/   z$Test_seasonal_ar_diffuse.setup_class>  Z    #w#/ #8 %(!"B000000000r0   r  r   s   @r.   r`  r`  :  D         1 1 1 1 [1 1 1 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	                      j        dg|R i | d S )NrA  r   rB  r   r   r      r  r  s       r.   r/   z&Test_seasonal_ar_exogenous.setup_classK  g    #w#/ )"(5//1A5vB000000000r0   r  r   s   @r.   rf  rf  G  rd  r0   rf  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_mac                 V    d|d<   d|d<    t                      j        dg|R i | d S )NrA  r   r   r   rz   rw   r   !   r  r  s      r.   r/   zTest_seasonal_ma.setup_classX  r  r0   r  r   s   @r.   rk  rk  T  r  r0   rk  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_ma_as_polynomialc                 b    d|d<   ddg ddf|d<    t                      j        dg|R i | d S )NrA  r   r   r   rw   r   rn  r  r  s      r.   r/   z*Test_seasonal_ma_as_polynomial.setup_classc  sf    #w$%q)))Q#7 	!	! 	! 	!	! 	! 	! 	! 	!r0   r  r   s   @r.   rp  rp  _  r5  r0   rp  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_ma_trend_cc                 j    d|d<   d|d<   d|d<   d|d<    t                      j        d	g|R i | d S )
NrA  r   rm  r   r   r   rz   rp  "   r  r  s      r.   r/   z$Test_seasonal_ma_trend_c.setup_classo  sW    #w#/ wyB000000000r0   r  r   s   @r.   rs  rs  k  rd  r0   rs  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_ma_trend_ctc                 `    d|d<   d|d<   d|d<    t                      j        dg|R i | d S )NrA  r   rm  r   r  r   #   r  r  s      r.   r/   z%Test_seasonal_ma_trend_ct.setup_class|  sM    #w#/ wB000000000r0   r  r   s   @r.   rw  rw  x  r  r0   rw  c                   .     e Zd Ze fd            Z xZS )!Test_seasonal_ma_trend_polynomialc                 n    d|d<   d|d<   g d|d<   d|d<    t                      j        d	g|R i | d S )
NrA  r   rm  r   r   r   rz   rp  $   r  r  s      r.   r/   z-Test_seasonal_ma_trend_polynomial.setup_class  sp    #w#/ &,,wy	!	! 	! 	!	! 	! 	! 	! 	!r0   r  r   s   @r.   r{  r{    D         ! ! ! ! [! ! ! ! !r0   r{  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_ma_diffc                 V    d|d<   d|d<    t                      j        dg|R i | d S )NrY  r   rm  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                 V    d|d<   d|d<    t                      j        dg|R i | d S )NrA  r   )r   r   rz   rw   r   &   r  r  s      r.   r/   z*Test_seasonal_ma_seasonal_diff.setup_class  r4  r0   r  r   s   @r.   r  r    r5  r0   r  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_ma_diffusec                 j    d|d<   d|d<   d|d<   d|d<    t                      j        d	g|R i | d S )
NrA  r   rm  r   r   r   r  r   '   r  r  s      r.   r/   z$Test_seasonal_ma_diffuse.setup_class  rc  r0   r  r   s   @r.   r  r    rd  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	                      j        dg|R i | d S )NrA  r   rm  r   r   r  (   r  r  s       r.   r/   z&Test_seasonal_ma_exogenous.setup_class  ri  r0   r  r   s   @r.   r  r    rd  r0   r  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_armac                 V    d|d<   d|d<    t                      j        dg|R i | d S )NrA  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                      j        dg|R i | | j        }d|dd	                                         z
  |d d         z  | j        d d<   d S )
NrA  r   r  r   r   r   *   r   rw   r  r  s       r.   r/   z&Test_seasonal_arma_trend_c.setup_class  rK  r0   r  r   s   @r.   r  r    rL  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                      j        dg|R i | | j        }d|d	d
                                         z
  |d d	         z  | j        d d	<   d S )NrA  r   r  r   r  r   +   r   r   r!  r  r  s       r.   r/   z'Test_seasonal_arma_trend_ct.setup_class  s    #w#/ w	!	! 	! 	!	! 	! 	! o 3qs8<<>>1S!W<r0   r  r   s   @r.   r  r    rU  r0   r  c                   4     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                      j        d	g|R i | | j        }d
|dd                                         z
  |d d         z  | j        d d<   d S )NrA  r   r  r   r   r   rz   rp  ,   r   r   r!  r  r  s       r.   r/   z/Test_seasonal_arma_trend_polynomial.setup_class  s    #w#/ &,,wy	!	! 	! 	!	! 	! 	! o 3qs8<<>>1S!W<r0   c                     | j                             | j                  | _        | j                                         | j        j         | j        j         | j        j         d S r2   rc   rd   r5  rx   r  r  r   r  r3   s    r.   r  z0Test_seasonal_arma_trend_polynomial.test_results   ]    j''(899 	 	&& 	""""""r0   rS   rT   rU   rW   r/   r  r   r   s   @r.   r  r    sS         
= 
= 
= 
= [
=# # # # # # #r0   r  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_arma_diffc                 V    d|d<   d|d<    t                      j        dg|R i | d S )NrY  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                 V    d|d<   d|d<    t                      j        dg|R i | d S )NrA  r   rz   r   r   rw   r   .   r  r  s      r.   r/   z,Test_seasonal_arma_seasonal_diff.setup_class  r4  r0   r  r   s   @r.   r  r    r5  r0   r  c                   4     e Zd Ze fd            Zd Z xZS )%Test_seasonal_arma_diff_seasonal_diffc                 V    d|d<   d|d<    t                      j        dg|R i | d S )NrY  r   r  r   /   r  r  s      r.   r/   z1Test_seasonal_arma_diff_seasonal_diff.setup_class+  r4  r0   c                     | j                             | j                  | _        | j                                         | j        j         | j        j         | j        j         d S r2   r  r3   s    r.   r  z2Test_seasonal_arma_diff_seasonal_diff.test_results2  r  r0   r  r   s   @r.   r  r  '  sS         ! ! ! ! [!# # # # # # #r0   r  c                   .     e Zd Ze fd            Z xZS )Test_seasonal_arma_diffusec                 t    d|d<   d|d<   d|d<   d|d<   d	|d
<    t                      j        dg|R i | d S )NrA  r   r  r   rz   rp  r   r   r  r   0   r  r  s      r.   r/   z&Test_seasonal_arma_diffuse.setup_classF  sd    #w#/ y#8 %(!"B000000000r0   r  r   s   @r.   r  r  B  sD         1 1 1 1 [1 1 1 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	                      j        dg|R i | d S )NrA  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                   4     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	                      j        dg|R i | d S )Nr+  r   r  r   r   r  2   r  r  s       r.   r/   z"Test_sarimax_exogenous.setup_classb  ri  r0   c                 T   | j                             | j                  }t          | j        dd         |j                   t          | j        dd         |j                   t          | j        dd         |j                   t          | j        dd         |j                   d S )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44(1-v???(1-v???(1-v/FGGG(2.0GHHHHHr0   )rS   rT   rU   rW   r/   r  r   r   s   @r.   r  r  ^  sZ         1 1 1 1 [1I I I I I I 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	                      j        d
g|R i | d S )Nr+  r   r  r   r   r  Fr   r   r  r  r  s       r.   r/   z/Test_sarimax_exogenous_not_hamilton.setup_classv  s    #w#/ )"(5//1A5v,1()(-$%	!	! 	! 	!	! 	! 	! 	! 	!r0   r  r   s   @r.   r  r  r  sD         ! ! ! ! [! ! ! ! !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	                      j        dg|R i | d S )Nr+  r   r  r   r   r  rp  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    sD        
 	! 	! 	! 	! [	! 	! 	! 	! 	!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                      j        dg|R d|i| | j        }d|dd         	                                z
  |d         z  | j        d<   d S )Nr   r   r  r  r'  r   r  r   r   r   r   r   r   rp  4   r-   r!  r   )
r#   r   r   rk  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 28E??2Q6;vfadabb	E#2#J&6a#w&,,wy	."	. 	. 	.	.&,	. 	. 	. o#ac(,,..0CF:r0   r  r   s   @r.   r  r    sD         ; ; ; ; [; ; ; ; ;r0   r  c                     t          j        d          dz  } d| z  }t          j        | |ddd          }t	          j                    5  t	          j        d           |                    d	
          }d d d            n# 1 swxY w Y   t          |j	        ddgd           t          |j
        j        d         dd          dgdz  d           d S )Nd         ?r   rA  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    IcNN3EU7D
/ $  C 
	 	"	"  h'''gg2g               
QFA... *9!<QRR@3%(ANNNNNs   	+B  BBc                  P    t          t          t          j        g ddd           d S )N)r   r   rz   T)r-   r3  r  )r   
ValueErrorr   r(   rX   r0   r.   test_invalid_time_varyingr    s8    ii $& & & & & &r0   c                     t           j        } t          j        | d          }|                    g d          }t          j        | d          }|j                            |j        j        |j        j	                   |                    g d          }t          j        | dd|j        j        |j        j	                  }|                    g d          }t          j        | dd          }|                    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                   d S )Nr  r   rF   r7  r   r   knownr   r   initial_stateinitial_state_cov
stationary)r   r   )r   rk  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	222D;;)))**D ?5	222DHd1?"1CE E E;;)))**D ?Y)7-?	A A AD
 ;;)))**D ?5	,OOOD;;)))**D $(++++:+:< < < $(++++:+:< < < $(++++:+:< < < < <r0   c                     t           j        } t          j        | d          }|j                            d           |                    g d          }t          j        | d          }|j                            |j        j	        |j        j
                   |                    g d          }t          j        | dd|j        j	        |j        j
                  }|                    g d          }t          j        | ddd          }|                    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                   d S )	Nr  r  r  r  r  r  r   )r   r   r   )r   rk  r   r(   r  initialize_approximate_diffuserd   r  rj   r  r  r   r   rk   r  s	            r.   .test_manual_approximate_diffuse_initializationr    s   %E ?5	222DH++C000;;)))**D ?5	222DHd1?"1CE E E;;)))**D ?Y)7-?	A A AD
 ;;)))**D ?5	*?,/1 1 1D ;;)))**D $(++++:+:< < < $(++++:+:< < < $(++++:+:< < < < <r0   c                     t           j        } t          j        | d          }|                    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           d S )Nr  r  )rF         r   oim)r          @r   r   rF   r  )r   rk  r   r(   rd   r   arrootsmarootsarfreqr#   arctan2pimafreqr  r  )r-   r  r  s      r.   r  r  #  s    %E
/%y
1
1
1C
**^^^e*
4
4CR(((R(((
BJq!$4$4"%$@AAA
BJq!$4$4"%$@AAAse,,,tf-----r0   c                  :   d} d}t           j                            d           t           j                            | |f          }t           j        |d ddf<   t           j                            | df          }t           j                            | df          }t          j        dd	| 
          }t          j        ||          }t          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 ]R}
|
j         |
                    d          }|                                 |                                 |                    d           |                                 t           j                            d|
j        f          }|                    d|           |                    d|           t           j                            d|
j        f          }t)          t*          |j        d|           t           j                            d|
j        dz   f          }t)          t*          |j        d|           Tt)          t*          t          j        |t          j        d          d           d S )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  )rr  rw   )r#   randomseednormalr  pd
date_range	DataFrameSeriessqueezer   r(   rv  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  s   DGINN4I4/22E6E"1"a%LI4),,EI4),,EM,T4@@@E|E///Hy666H|E///H 	E;;;E;;;E,1	3 	3 	3xyAAAxyAAAxy,1	3 	3 	3	F  H Hgg5g!!D!!!9##!SZ#9918,,,qx000 9##!SZ#99j#,ahGGGG9##!SZ!^)<#==j#,ahGGGGG *gou28G;L;L!# # # # # #r0   c                  &   t           j                            d           t           j                            ddd          } t           j                            ddd          }t	          j        | |d          }|                    d	           d S )
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  s     INN6Iq#C00E9a3//D
/%d)
<
<
<CGGGr0   c                     t           j                            d           t          j        t           j                            d                    } t          j        | d          }|                    |j	                  }|
                    dddg          }t          |j                            t          j        dg                    d	           d S )
N r  r  r  r  r   a)r  rZ  r  T)r#   r  r  r  r
  r  r   r(   smoothrv  rI  r   r  equalsIndex)r-   r  r  outs       r.   test_predict_custom_indexr$  q  s    INN6L))r)2233E
/%y
1
1
1C
**S%
&
&C
++A1SE+
2
2C!!"(C5//22D99999r0   c                     t           j                            d           d} t          j        t           j                            |                     }t          j        |dd          }|                    |j	                  }t          |j        |j                   t          j        |dd          }|                    |j	                  }t          |j        dd dd f         |                                dd          j                   t           j                            |           }t          j        |           d	z  |z   }t          j        |           }t          j        |d|
          }d|j        _        |                    ddg          }t          |j        d         |d           t          j        |d|d          }d|j        _        |                    ddgt          j        ddg                     |                    dg          }t          |j        d         |d           t          |j        d         d	d           t          j        |d|dd          }d|j        _        |                    dgt          j        dg                     |                    ddg          }t          |j        d         d	d           d S )Nr  r  r  rA  F)r   measurement_error)r   r   r   r   rr  )r   r  Tr/  r  r   g|=r>   )r   r  r3          )r   r  r3  r  )r#   r  r  r  r
  r  r   r(   r   rv  r   smoothed_stateTra   r$  r  filter_univariater  diag)r  r-   r  r  errorr  s         r.   test_arima000r-  z  s    INN6DL))t)4455E
/%yE
J
J
JC
**S%
&
&CC&000 /%yE
J
J
JC
**S%
&
&CC&qrr122v.

QRR0@0BCCC I$''EGDMMB&E74==D /%yt
<
<
<C $CG
**c2Y

CC&q)5u==== /%yt).0 0 0C $CG"cBGRH$5$5666
**bT

CC&q)5u====C&q)2E:::: /%yt).N N NC $CG#...
**b"X

CC&q)2E::::::r0   Fc           	         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	}
|	                    |||||||          D ]}t          t          |
|                    }|	                    d
d          rd|d<   d|d<   t          j        |fi |}t          j        |fddi|}| |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         }|                    |          }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        j                                        |j        j        k    }t           j        | | d d f         }|D ]}}t+          |j        |          d|d f         }t+          |j        |          d|d f         }|dv r'|d
         rt%          ||         ||         |           kt%          |||           ~g d}|D ]}}t+          |j        |          d|d f         }t+          |j        |          d|d f         }|dv r'|d
         rt%          ||         ||         |           kt%          |||           ~g d}|D ]4}t+          ||          }t+          ||          }t%          |||           5|                    d          }|                    d          }t%          ||d|           |                    d          }|                    d          }t%          ||d|           |                    d           }|                    d           }t%          ||d|           d }|d         !t          j        d!|j         z
  dz   df          }|!                    d"d!d#|$          }|!                    d"d!d#|$          }t%          |j"        |j"        |           t%          |j#        |j#        |           t           j$        %                    d%           |j        j&        rt           j$        '                    d#&          } t           j$        '                    d#&          }!t           j$        '                    |j(        df&          }"|)                    d#| |!|"          }|)                    d#| |!|"          }t%          |||           |j        j&        r<|*                    d#          }|*                    d#          }t%          |||           d S )'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.)r<  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)rB  rC  )r    r!   r"   r  
jarquebera)r  )r#  r?   breakvarljungbox   r  rr  r  i6  r  )+r#   ra   r   rk  	ones_like	itertoolsproductr4  zipgetr   r(   r  r*  rv  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_errorsrS  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    s   GO-..E#F#\2O %=2<&&'EC[F $e}? ? ?E$$UFOV%7%=%9; ; o8 o8 c%))**::/77 	-',F#$  {?533F33?5KKDKFKK):&):& +??;// eKN+ +, 	1KQJE %& 	QJE%& 	&1J*K 	DeK%0$N[%-AAB C??;// 	hl>>>> L' 	D 	DDu}}GH$;TBB#H$;TBBD D D D '9 9 9   	8 	8DX4d;;Fh5t<<GFG$77777
< < <
 !/AJJLL 56UL=<-23$ 
	< 
	<DX4d;;CGDFh5t<<S!""WEG EEE45 Fr
GBKdCCCCCd;;;;;	9 	9 	9 " 	< 	<DX4d;;CGDFh5t<<S!""WEGHHH45 Ir
GBKdCCCCCd;;;;; >== 	8 	8DXt,,Fh--GFG$77777 (((==)))>>d>>>>111DD22*2EEd>>>>111DD22*2EEd>>>> &>%7C(-/!3Q788D((sR.2 ) 4 4))b/3 * 5 5-w/E!	# 	# 	# 	#dCCCC
 		u<& 	8!#!1!1r!1!:!:9+++44LI,,83Da2H,IIM&&r+=|'46 6F'',>(57 7GFG$7777 <& 	8//33F0044GFG$7777_o8 o8r0   c                  F    t          d           t          d           d S )NF)r*  T)r  rX   r0   r.   test_concentrated_scaler  i	  s*    u5555t444444r0   c            	         d} t          j        |           dz  }t          j        |           }t          j        ||d          }|                    g d          }d}t          j        d          }t          j        d          }t          |                    d|	          d           t          |                    d|	          d           t          |                    d|	          d           d
}t          j        |          }t          j        |df          }t          |                    ||	          d           t          |                    ||	          d           t          t          |j        |d	           t          t          |j        |ddg	           t          t          |j        |t          j        |df          	           d S )Nr  r  r  r  )r  r'  r  r  r   )r   r   r  rr  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	  s   DGDMMCE74==D
/%d)
<
<
<C
**___
%
%C gajjOgfooOCLL):L;;R@@@CLLL992>>>CLLL992>>> 	AgajjOgq!fooOCLLL992>>>CLLL992>>> *clAB7777*clAQF;;;;*clABGQFOODDDDDDr0   c                 t   g d}g d}|D ]=}t          |           t          t          ||          t          | |                     >|D ]8}t          t          |j        |          t          | j        |                     9t          |                                |                                            d S )N)r&  state_errorr3  state_regressionr  r   rt  ru  r   r   r|  r  r}  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  ra  k_posdefobs_interceptdesignobs_covstate_intercept
transition	selection	state_cov)printr   rY  r  r  )r  r  attrs	ssm_attrsattrs        r.   check_equivalent_modelsr  	  s    	 	 	EN N NI  > >dWT4(('#t*<*<==== F FWTXt,,gcgt.D.DEEEE$$&&(:(:(<(<=====r0   c            	      8   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}|
                    |||||	||          D ]}t          t          ||                    }|                    dd          rd|d<   |                    dd           }t          j
        |fd|i|}t          j
        |fd|i|                                }t          ||           d S )Nr  r  r  r/  r0  r1  TFr2  r   r3  r  r3  r  )r#   r$  rR  rS  rT  r4  rU  rV  popr   r(   r  r  )r  r-   r  rd  re  rf  rg  rh  ri  rj  rS  rk  rl  r   r  r  s                   r.   test_recreate_modelr  	  sq   DGDMMCE74==D#F#\2O %=2<&&'EC[F $e}? ? ?E$$UFOV%7%=%9; ; + + c%))**::/77 	-',F#$zz&$''oe99$9&99uHH4H33E3E3G3GHHT****+ +r0   c            	      
   t          j        d          } t          j        |           }g d}t          j        | |dd          }|                    |          }t          j        | d d         |d d         dd          }|                    |          }|                    | dd          |dd                    }t          |j        |j                   t          |j
        |j
                   dD ].}t          t          ||          t          ||                     /d	D ].}t          t          ||          t          ||                     /t          |                    d
t          j        d
                    |                    d
t          j        d
                               t          j        t           d          5  |                    | dd                     d d d            d S # 1 swxY w Y   d S )Nr  r  r  r   r  r  r2  r  r   r   r  r  r  r   r;  r  rk   r=  r7  r<  r8  r9  forecasts_error_covrq   forecasts_error_diffuse_covpredicted_diffuse_state_covrH  rI  rJ  r(  rB  rC  rF  rD  rG  rE  rr  !Cloning a model with an exogenousmatch)r#   r  rR  r   r(   r   appendr   specificationr   r  rY  r[  r$  r  raisesr  	r-   r  r%   r  r  r  r  r  r  s	            r.   test_append_resultsr  	  s0   IcNNE<DF?5t9CHHHD;;vD?5":D"IY!$& & &D;;vD;;uRSSzRSS	;22D#T%7888D+T-DEEE@ ? ?WT4(('$*=*=>>>>. ? ? 	WT4(('$*=*=>>>>DMM"272;;M77MM"272;;M779 9 9 
z)L	M	M	M    E"##J                                   s   G88G<?G<c            	         t          j        d          } t          j        |           }g d}t          j        | |dd          }|                    |          }t          j        | d d         |d d         dd          }|                    |          }|                    | dd          |dd                    }t          |j        |j        dd                     dD ]>}t          ||          }	|	|	d	dd f         }	t          t          ||          |	           ?t          |                    d
t          j        d
                    |                    d
t          j        d
                               t          j        t          d          5  |                    | dd                     d d d            d S # 1 swxY w Y   d S )Nr  r  r  r2  r  r  r  r  .rr  r  r  r#   r  rR  r   r(   r   extendr   r;  rY  r   r[  r$  r  r  r  
r-   r  r%   r  r  r  r  r  r  rx  s
             r.   test_extend_resultsr  	  s   IcNNE<DF?5t9CHHHD;;vD?5":D"IY!$& & &D;;vD;;uRSSzRSS	;22DDL$,rss"3444. 3 3 $%%c233h'GWT4(('2222DMM"272;;M77MM"272;;M779 9 9 
z)L	M	M	M    E"##J                                   s   GG	G	c            	         t          j        d          } t          j        |           }g d}t          j        | |dd          }|                    |          }t          j        | d d         |d d         dd          }|                    |          }|                    | dd          |dd                    }t          |j        |j        dd                     dD ]>}t          ||          }	|	|	d	d
d f         }	t          t          ||          |	           ?t          |                    dt          j        d          dz            |                    dt          j        d          dz                       t          j        t          d          5  |                    | dd                     d d d            d S # 1 swxY w Y   d S )Nr  r  r  r2  r  r   r  r  .r  rr  r   r  r  r  r  s
             r.   test_extend_by_oner  
  s   IcNNE<DF?5t9CHHHD;;vD?5":D"IY!$& & &D;;vD;;uRSSzRSS	;22DDL$,rss"3444. 3 3 $%%c233h'GWT4(('2222DMM"272;;?M;;MM"272;;?M;;= = = 
z)L	M	M	M    E"##J                                   s    GGGc            	      *   t          j        d          } t          j        |           }g d}t          j        | d d         |d d         dd          }|                    |          }t          j        | dd          |dd          dd          }|                    |          }|                    | d d         |d d                   }t          |j        |j                   t          |j
        |j
                   dD ].}t          t          ||          t          ||                     /d	D ].}t          t          ||          t          ||                     /t          |                    d
t          j        d
                    |                    d
t          j        d
                               t          j        t           d          5  |                    | dd                     d d d            d S # 1 swxY w Y   d S )Nr  r  r  r  r2  r  r  r  r  rr  r  r  )r#   r  rR  r   r(   r   applyr   r  r   r  rY  r[  r$  r  r  r  r  s	            r.   test_apply_resultsr  H
  sG   IcNNE<DF?5":D"IY!$& & &D;;vD?5:DIY!$& & &D;;vD::eCRCjtCRCy:11D#T%7888D+T-DEEE@ ? ?WT4(('$*=*=>>>>. ? ? 	WT4(('$*=*=>>>>DMM"272;;M77MM"272;;M779 9 9 
z)L	M	M	M  

5:                 s   HHHc                     t          j        t          d                                                   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            n# 1 swxY w Y   t          j        | d d         d	d
          }d}t          j        t          |          5  |j
        }t          |dt          j        | d d                   g           d d d            d S # 1 swxY w Y   d S )Nr\   r   rw   )rw   r   r   r  zHToo few observations to estimate starting parameters for ARMA and trend.r  r   rA  )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UserWarningrv  r   var)r-   r  r  rv  s       r.   test_start_params_small_nobsr  t
  s    F?7+,,1133ABB7>E /%)9
5
5
5CE	k	/	/	/ G G'q!Q26%)3D3D&EFFFG G G G G G G G G G G G G G G
 /%)9)57 7 7CE	k	/	/	/ > >'q"&rr*;*;&<===> > > > > > > > > > > > > > > > > >s$   :7B==CC4EE	E	c            
      h   t          j        t          d                   j        } t	          j        | t	          j        t          t          |                                         }t          j
        |dd          }t          |j                            |j        dd                               d S )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  
  s    VOG,--4FIfBHU3v;;-?-?$@$@AAAE
/%yd
K
K
KCCJek!""o../////r0   c            	      R   t          j        t          d                   j        } t	          j        | t	          j        dt          |                               }t          j	        |dd          }t          |j                            |j        dd                               d S )	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  
  s    VOG,--4FIfBMF$L$L$LMMME
/%yd
K
K
KCCJek!""o../////r0   c            	      T   t          j        t          d                   j        } t	          j        | t	          j        dt          |           d                    }t          j	        |dd          }t          |j                            |j        d	d                               d S )
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  
  s    VOG,--4FIfBOc&kk%5 %5 %5 6 6 6E
/%yd
K
K
KCCJek!""o../////r0   c            
         t          j        t          d                   j        } t	          j        t          t          |                                                   t                    }t	          j
        | |          }t          j        t                    5  t          j        |dd          }d d d            n# 1 swxY w Y   t!          |j                            t	          j        dt          |           dz
                                 t!          |j        j                            |dd                               d S )	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  
  sL   VOG,--4FHU3v;;''((,,S11EIfE***E	k	"	" P Poe9$OOOP P P P P P P P P P P P P P P CJbm!#f++/JJJKKLLLCH&&uQRRy1122222s   B>>CCc                  L   t          j        d          } t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d           d d d            d S # 1 swxY w Y   d S )Nrr  r  r  )r   r   rz   rw   r#   r  r  r  r  r   r(   r-   s    r.   test_invalid_orderr  
  s   HRLLE	z	"	" + +T****+ + + + + + + + + + + + + + +	z	"	" 3 3\22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s#   AAA5BB Bc                     t          j        d          } t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d           d d d            d S # 1 swxY w Y   d S )	Nrr  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   HRLLE	z	"	" 4 4d33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	z	"	" ? ?o>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	z	"	" < <l;;;;< < < < < < < < < < < < < < <	z	"	" < <l;;;;< < < < < < < < < < < < < < <	z	"	" < <l;;;;< < < < < < < < < < < < < < <	z	"	" < <l;;;;< < < < < < < < < < < < < < < < < <sk   AAA5BBB<CC#&C#D&&D*-D*
E--E14E1F55F9<F9c                     t           j        d         } t          j        ddt	          |                     }t          j        | |          }t          j        |dd          }|                                }|d	         }|	                    |d
         d          }|	                    |d
         |          }t          |j        |j                   |	                    |d
         |                                          }t          |j        |j                   |	                    |d
         |                    d                    }t          |j        |j                   d S )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  rx  rw  s           r.   test_dynamic_strr  
  sF   *62DM*4TCCCEYt5)))F
/&	
=
=
=C
''))CCjG  sR 88Gc
G<<FF)7+ABBBc
G4I4I4K4KLLFF)7+ABBBc
(/(8(8(D(D   F FFF)7+ABBBBBr0   c                 "   t          j        t          j                            d          dd          }t          j        t          d          5  |                                }d d d            n# 1 swxY w Y   t          j	        t          d          5  |                    d	
           d d d            n# 1 swxY w Y   t          j                            d          }t          j        |dddd          }t          j        t          d          5  |                                }d d d            n# 1 swxY w Y   t          j	        t          d          5  |                    d
           d d d            d S # 1 swxY w Y   d S )Nrr  r  )rr  r   r   F)r   rt  zToo fewr  zLength of endogenous)rL  r!  )figsizer  r   )r   r   r   r]   )r   r   rt  ru  )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  
  ss   
 /
	b!!%  C 
k	3	3	3  ''))              	z)?	@	@	@ 2 2   1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2
	!!!$$A
/	$"#  C 
k	3	3	3  ''))              	z)?	@	@	@ 3 3   2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3sH   A22A69A6B;;B?B?D::D>D> FFFc           
      P   t           j                            d          }t          j        |ddd                              d          }t          j        t          j        |                    t          |          t          |          dz   	                              sJ d S )
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Oyc  	cucoo  6
M))ACFFRK)HHII      r0   c           
      V   t           j                            d          }g d}t          j        |dd                              d          }t          j        t          j        |                    t          |          t          |          dz   	                              sJ d S )
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 Oy  	cucoo  6
M))ACFFRK)HHII      r0   c                 N   t          j        d          }t          j        d          }t          j        ||dd          }|                    g d          }t          |                    dd          d           t          |                    d	d
d
g          dd           d S )Nrr  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  rg  r  r  s        r.    test_sarimax_forecast_exog_trendr    s     	A
A
/#
F
F
FC
**)))
*
*C CLLL++Y777 CLL"bL22IOOOO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_pathrl  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-  r1  r7  r;  r?  rE  rH  rN  rR  rW  r\  r`  rf  rk  rp  rs  rw  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  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 4 4 4 4 4          5 5 5 5 5 5 5 5 $ $ $ $ $ $ * * * * * * ) ) ) ) ) )             
 wrwx8899w||I'DEE"+lRV3lBCCY(FGG2;rw||L-HHII ;/ ;/ ;/ ;/ ;/ ;/ ;/ ;/|#
 #
 #
 #
 #
 #
 #
 #
L"0 "0 "0 "0 "0 "0 "0 "0J
 
 
 
 
 
 
 
B>L >L >L >L >L% >L >L >LB5C 5C 5C 5C 5Cu 5C 5C 5Cp
 
 
 
 
( 
 
 
D5E 5E 5E 5E 5E+ 5E 5E 5Ep               F7P 7P 7P 7P 7P' 7P 7P 7Pt7P 7P 7P 7P 7P 7P 7P 7PtFP FP FP FP FP7 FP FP FPR. . . . .  . . .4CC CC CC CC CC CC CC CCLhC hC hC hC hC( hC hC hCV)
 )
 )
 )
 )
( )
 )
 )
X>
 >
 >
 >
 >
8 >
 >
 >
B[7 [7 [7 [7 [7 [7 [7 [7|0 0 0 0 0! 0 0 00 0 0 0 0/ 0 0 0; ; ; ; ;) ; ; ;= = = = =* = = == = = = =2 = = =0 0 0 0 0& 0 0 00 0 0 0 0/ 0 0 0	0 	0 	0 	0 	0) 	0 	0 	07 7 7 7 7, 7 7 7B	0 	0 	0 	0 	0+ 	0 	0 	0#
 #
 #
 #
 #
!4 #
 #
 #
L0 0 0 0 0! 0 0 00 0 0 0 0/ 0 0 00 0 0 0 0) 0 0 01 1 1 1 1* 1 1 11 1 1 1 12 1 1 11 1 1 1 1& 1 1 11 1 1 1 1/ 1 1 1	1 	1 	1 	1 	1) 	1 	1 	1	1 	1 	1 	1 	1+ 	1 	1 	11 1 1 1 1# 1 1 1= = = = =+ = = == = = = =, = = == = = = =!4 = = =1 1 1 1 1( 1 1 11 1 1 1 11 1 1 1	! 	! 	! 	! 	!#6 	! 	! 	!	1 	1 	1 	1 	1+ 	1 	1 	1	1 	1 	1 	1 	1- 	1 	1 	11 1 1 1 1* 1 1 1	! 	! 	! 	! 	!%8 	! 	! 	!= = = = =2 = = = = = = = = 3 = = == = = = =(; = = ="1 1 1 1 1/ 1 1 1	! 	! 	! 	! 	!%8 	! 	! 	!
1 
1 
1 
1 
12 
1 
1 
1
1 
1 
1 
1 
1!4 
1 
1 
11 1 1 1 1* 1 1 1	! 	! 	! 	! 	!%8 	! 	! 	!
1 
1 
1 
1 
12 
1 
1 
1	1 	1 	1 	1 	1 3 	1 	1 	1! ! ! ! !(; ! ! !1 1 1 1 1/ 1 1 1	! 	! 	! 	! 	!%8 	! 	! 	!
1 
1 
1 
1 
12 
1 
1 
1
1 
1 
1 
1 
1!4 
1 
1 
11 1 1 1 1, 1 1 1= = = = =!4 = = = = = = = ="5 = = ="# # # # #*= # # #B1 1 1 1 11 1 1 1	! 	! 	! 	! 	!': 	! 	! 	!# # # # #,? # # #61 1 1 1 1!4 1 1 1! ! ! ! !#6 ! ! !I I I I I0 I I I(! ! ! ! !*= ! ! ! ! ! ! ! !%8 ! ! !$; ; ; ; ;.A ; ; ;4O O O4& & &$< $< $<N(< (< (<V. . . 0# 0# 0#f   : : :); ); );X@8 @8 @8 @8F 5 5 5
E E E@> > >4+ + +B'  '  ' T'  '  ' T'  '  ' T) ) )X> > >.0 0 00 0 00 0 03 3 33 3 3< < < C C C" 3 3 32
 
 
  $P P P P Pr0   