U
    Kvf1                    @   s  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 eej! e Z"ejd
dZ#e ejee#Z$G dd dZ%G dd dZ&G dd dZ'G dd de'Z(G dd de(Z)G dd de(Z*G dd de'Z+G dd de+Z,G dd de'Z-G dd  d e-Z.G d!d" d"e-Z/G d#d$ d$e-Z0G d%d& d&e'Z1G d'd( d(e1Z2G d)d* d*e1Z3G d+d, d,e1Z4G d-d. d.e1Z5G d/d0 d0Z6G d1d2 d2e6Z7G d3d4 d4e6Z8G d5d6 d6e6Z9G d7d8 d8e6Z:G d9d: d:e6Z;G d;d< d<e6Z<G d=d> d>e6Z=G d?d@ d@e6Z>G dAdB dBe6Z?G dCdD dDe6Z@G dEdF dFe6ZAG dGdH dHe6ZBG dIdJ dJe6ZCG dKdL dLe6ZDG dMdN dNe6ZEG dOdP dPe6ZFG dQdR dRe6ZGG dSdT dTe6ZHG dUdV dVe6ZIG dWdX dXe6ZJG dYdZ dZe6ZKG d[d\ d\e6ZLG d]d^ d^e6ZMG d_d` d`e6ZNG dadb dbe6ZOG dcdd dde6ZPG dedf dfe6ZQG dgdh dhe6ZRG didj dje6ZSG dkdl dle6ZTG dmdn dne6ZUG dodp dpe6ZVG dqdr dre6ZWG dsdt dte6ZXG dudv dve6ZYG dwdx dxe6ZZG dydz dze6Z[G d{d| d|e6Z\G d}d~ d~e6Z]G dd de6Z^G dd de6Z_G dd de6Z`G dd de6ZaG dd de6ZbG dd de6ZcG dd de6ZdG dd de6ZeG dd de6ZfG dd de6ZgG dd de6ZhG dd de6ZiG dd de6ZjG dd de6ZkG dd de6ZlG dd de6ZmG dd de6ZnG dd de6ZoG dd de6ZpG dd de6ZqG dd de6Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxe	jyjzdd Z{dd Z|dd Z}dddZ~e	jyjdd Zdd ZddÄ Zddń ZddǄ ZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zddӄ ZddՄ Zddׄ Zddل Zddۄ Zdd݄ Ze	jyjdd߄ Zdd Zdd Zdd 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                   @   sT   e Zd ZdZedd Zdd Zdd Zdd	 Zd
d Z	dd Z
dd Zd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                 C   s   t j| _| jd }t }d|_d|_d|_d|_t	dddg|_
t	d	d
dg|_|| _tj|ddddd| _| jjd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   SARIMAXZmodel_bfitresult_b)clsendogr$    r*   Q/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tsa/statespace/tests/test_sarimax.pysetup_class+   s    

z"TestSARIMAXStatsmodels.setup_classc                 C   s   t | jj| jj d S N)r   r'   r   r$   selfr*   r*   r+   test_loglike?   s    z#TestSARIMAXStatsmodels.test_loglikec                 C   s   t | jj| jj d S r-   )r   r'   r   r$   r.   r*   r*   r+   test_aicB   s    zTestSARIMAXStatsmodels.test_aicc                 C   s   t | jj| jj d S r-   )r   r'   r   r$   r.   r*   r*   r+   test_bicE   s    zTestSARIMAXStatsmodels.test_bicc                 C   s   t | jj| jj d S r-   )r   r'   r   r$   r.   r*   r*   r+   	test_hqicH   s    z TestSARIMAXStatsmodels.test_hqicc                 C   sB   | j j }d|d  |d  |d< t| jjd d |dd d S )Nr   r   r   g-C6
?atol)r$   r"   copyr   r'   )r/   Zparams_ar*   r*   r+   test_mleK   s    zTestSARIMAXStatsmodels.test_mlec                 C   s@   | j jdd}| d }t|dd | jjdd  dd d S )NTZapprox_complex_step      ?r   r   h㈵>r4   )r'   _cov_params_approxdiagonalr   r$   r#   )r/   Zcpar#   r*   r*   r+   test_bseR   s    zTestSARIMAXStatsmodels.test_bsec                 C   s.   dd l m  m} || j || j d S )Nr   )Zstatsmodels.tools._testingr   Z_testingZcheck_ttest_tvaluesr'   Zcheck_ftest_pvalues)r/   Zsmtr*   r*   r+   test_t_testX   s    z"TestSARIMAXStatsmodels.test_t_testN)__name__
__module____qualname____doc__classmethodr,   r0   r1   r2   r3   r7   r=   r>   r*   r*   r*   r+   r   "   s   
r   c                   @   s,   e Zd ZdZedd Zdd Zd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                 C   s`   t td  dd  j}tj|dddd| _ddd	d
dddddddddg}| 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(   Zdlgdpr"   r*   r*   r+   r,   i   s&    
          zTestRealGDPARStata.setup_classc                 C   s@   t dD ]2}ttjdd  d|d   | jjj| dd qd S )NrF   r   zu%dư>r4   )ranger   rI   ilocr   filter_resultsfiltered_state)r/   ir*   r*   r+   test_filtered_statev   s    z&TestRealGDPARStata.test_filtered_statec                 C   s*   t tjdd  d | jjjd dd d S )Nr   Zrstdr   MbP?r4   )r   rI   rP   r   rQ   standardized_forecasts_errorr.   r*   r*   r+   !test_standardized_forecasts_error~   s
    z4TestRealGDPARStata.test_standardized_forecasts_errorN)r?   r@   rA   rB   rC   r,   rT   rW   r*   r*   r*   r+   rD   `   s
   
rD   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )SARIMAXStataTestsc                 C   s   t | jj| jd d d S )NZloglike   )r   resultr   r   r.   r*   r*   r+   r0      s
     zSARIMAXStataTests.test_loglikec                 C   s   t | jj| jd d d S )Nr      )r   rZ   r   r   r.   r*   r*   r+   r1      s
     zSARIMAXStataTests.test_aicc                 C   s   t | jj| jd d d S )Nr   r[   r   rZ   r   r   r.   r*   r*   r+   r2      s
     zSARIMAXStataTests.test_bicc                 C   sF   d| j j dtt| j j | j jjd   }t| j j|d d S )N   r   r[   )	rZ   r   r    rH   Znobs_effectiver"   shaper   r   )r/   r   r*   r*   r+   r3      s    
 zSARIMAXStataTests.test_hqicc                 C   s&   | j j}d | j _| j j}t|| d S r-   )rZ   rV   Z_standardized_forecasts_errorr   )r/   Z
cython_sfeZ
python_sfer*   r*   r+   rW      s    z3SARIMAXStataTests.test_standardized_forecasts_errorN)r?   r@   rA   r0   r1   r2   r3   rW   r*   r*   r*   r+   rX      s
   rX   c                   @   s$   e Zd ZdZedd Zdd ZdS )ARIMAz?
    ARIMA model

    Stata arima documentation, Example 1
    c                 O   s   || _ |d }|dd |dd tj|f|ddd|| _d|d	 d
  |d d
  }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%   rL   r    r_rM   rZ   r(   r   argskwargsr)   Z	interceptr"   r*   r*   r+   r,      s    
zARIMA.setup_classc                 C   s&   | j jdd}t|j| jjdd d S Nr   r   rU   r4   rL   r&   r   r"   rZ   r/   rZ   r*   r*   r+   r7      s     zARIMA.test_mleNr?   r@   rA   rB   rC   r,   r7   r*   r*   r*   r+   r`      s   
r`   c                       sD   e Zd ZdZe fddZdd Zdd Zdd	 Zd
d Z	  Z
S )TestARIMAStationaryr
    Notes
    -----

    Standard errors are very good for the OPG and complex step approximation
    cases.
    c                    s   t t| tj d S r-   )superro   r,   r   r   r(   	__class__r*   r+   r,      s    
zTestARIMAStationary.setup_classc                 C   sf   t | jjd t | jjd t | jjd t| jjd | jd dd t| jjd | jd	 dd d S 
NopgTFr   	se_ar_opgHz>r4   r^   	se_ma_opgr
   rZ   cov_typeZ_cov_approx_complex_stepZ_cov_approx_centeredr   r#   r   r.   r*   r*   r+   r=      s
    zTestARIMAStationary.test_bsec                 C   sJ   | j jdd d }t|d | jd dd t|d | jd	 dd d S )
NTr8   r9   r   	se_ar_oimrx   r4   r^   	se_ma_oimrZ   r;   r<   r   r   r/   r#   r*   r*   r+   test_bse_approx   s    z#TestARIMAStationary.test_bse_approxc                 C   sD   | j j d }t|d | jd dd t|d | jd dd d S )	Nr9   r   r|   rU   r4   r^   r}   {Gz?rZ   cov_params_oimr<   r   r   r/   Zoim_bser*   r*   r+   test_bse_oim   s    z TestARIMAStationary.test_bse_oimc                 C   sn   | j j d }| j j}| d }tj| jd | jd f }t|dd |dd t|dd |dd d S )	Nr9   Zse_ar_robustZse_ma_robustr   r[   r   r4   rU   )rZ   cov_params_robust_oimr<   cov_params_robust_approxr    rg   r   r   )r/   Zrobust_oim_bseZcpraZrobust_approx_bseZtrue_robust_bser*   r*   r+   test_bse_robust  s    z#TestARIMAStationary.test_bse_robust)r?   r@   rA   rB   rC   r,   r=   r   r   r   __classcell__r*   r*   rs   r+   ro      s   	ro   c                       s<   e Zd ZdZe fddZdd Zdd Zdd	 Z  Z	S )
TestARIMADiffuse
    Notes
    -----

    Standard errors are very good for the OPG and quite good for the complex
    step approximation cases.
    c                    s0   d|d< t jd |d< tt| jt jf| d S )Napproximate_diffuseinitializationinitial_variance)r   Zwpi1_diffuserq   r   r,   )r(   rj   rs   r*   r+   r,     s    zTestARIMADiffuse.setup_classc                 C   sf   t | jjd t | jjd t | jjd t| jjd | jd dd t| jjd | jd	 dd d S ru   rz   r.   r*   r*   r+   r=     s
    zTestARIMADiffuse.test_bsec                 C   sJ   | j jdd d }t|d | jd dd t|d | jd	 dd d S )
NTr8   r9   r   r|   -C6?r4   r^   r}   r~   r   r*   r*   r+   r   '  s    z TestARIMADiffuse.test_bse_approxc                 C   sF   | j   d }t|d | jd dd t|d | jd dd d S )	Nr9   r   r|   r   r4   r^   r}   皙?rZ   Z_cov_params_oimr<   r   r   r   r*   r*   r+   r   ?  s    zTestARIMADiffuse.test_bse_oim
r?   r@   rA   rB   rC   r,   r=   r   r   r   r*   r*   rs   r+   r     s   	r   c                   @   s$   e Zd ZdZedd Zdd ZdS )AdditiveSeasonalz^
    ARIMA model with additive seasonal effects

    Stata arima documentation, Example 2
    c                 O   s   || _ t|d }|dd |dd tj|f|ddd|| _d|d	 d
  |d d
  }tj||d	 |d |d f }| j|| _	d S )Nr   r   Tr   )r   r   )r   r   r   r   r   ra   r   rb   r   rc   rd   re   
r   r    rH   rf   r   r%   rL   rg   rM   rZ   rh   r*   r*   r+   r,   L  s&     zAdditiveSeasonal.setup_classc                 C   s&   | j jdd}t|j| jjdd d S rk   rl   rm   r*   r*   r+   r7   `  s     zAdditiveSeasonal.test_mleNrn   r*   r*   r*   r+   r   F  s   
r   c                       s<   e Zd ZdZe fddZdd Zdd Zdd	 Z  Z	S )
TestAdditiveSeasonalr   c                    s   t t| tj d S r-   )rq   r   r,   r   Zwpi1_seasonalrr   rs   r*   r+   r,   p  s    
z TestAdditiveSeasonal.setup_classc                 C   sj   t | jjd t | jjd t | jjd t| jjd | jd dd t| jjdd	 | jd
 dd d S )Nrv   TFr   rw   rN   r4   r^   rY   ry   r:   rz   r.   r*   r*   r+   r=   v  s    zTestAdditiveSeasonal.test_bsec                 C   sN   | j jdd d }t|d | jd dd t|dd	 | jd
 dd d S )NTr8   r9   r   r|   r   r4   r^   rY   r}   r~   r   r*   r*   r+   r     s    z$TestAdditiveSeasonal.test_bse_approxc                 C   sJ   | j   d }t|d | jd dd t|dd | jd d	d d S )
Nr9   r   r|   r   r4   r^   rY   r}   r   r   r   r*   r*   r+   r     s    z!TestAdditiveSeasonal.test_bse_oimr   r*   r*   rs   r+   r   h  s   
r   c                   @   s$   e Zd ZdZedd Zdd ZdS )Airlinez`
    Multiplicative SARIMA model: "Airline" model

    Stata arima documentation, Example 3
    c                 O   sz   || _ t|d }|dd |dd tj|f|dddd|| _tj|d	 |d
 |d f }| j|| _	d S )Nr   r   Tr   )r   r   r   )r   r   r   rF   rG   )r   seasonal_orderr   rd   Zparams_seasonal_mare   r   )r(   r   ri   rj   r)   r"   r*   r*   r+   r,     s&     zAirline.setup_classc              	   C   sD   t  2 t d | jjdd}t|j| jjdd W 5 Q R X d S )Nignorer   r   r   r4   )warningscatch_warningssimplefilterrL   r&   r   r"   rZ   rm   r*   r*   r+   r7     s    

 zAirline.test_mleNrn   r*   r*   r*   r+   r     s   
r   c                       s<   e Zd ZdZe fddZdd Zdd Zdd	 Z  Z	S )
TestAirlineHamiltonrp   c                    s   t t| tj d S r-   )rq   r   r,   r   air2_stationaryrr   rs   r*   r+   r,     s    
zTestAirlineHamilton.setup_classc                 C   sf   t | jjd t | jjd t | jjd t| jjd | jd dd t| jjd | jd	 dd d S 
Nrv   TFr   ry   rN   r4   r   Zse_seasonal_ma_opgrz   r.   r*   r*   r+   r=     s    zTestAirlineHamilton.test_bsec                 C   sJ   | j jdd d }t|d | jd dd t|d | jd	 dd d S 
NTr8   r9   r   r}   rN   r4   r   se_seasonal_ma_oimr~   r   r*   r*   r+   r     s    z#TestAirlineHamilton.test_bse_approxc                 C   sD   | j j d }t|d | jd dd t|d | jd dd d S Nr9   r   r}   r   r4   r   r   r   r   r*   r*   r+   r     s    z TestAirlineHamilton.test_bse_oimr   r*   r*   rs   r+   r     s   
r   c                       s<   e Zd ZdZe fddZdd Zdd Zdd	 Z  Z	S )
TestAirlineHarveyrp   c                    s   t t| jtjdd d S )NF)r   )rq   r   r,   r   r   rr   rs   r*   r+   r,     s    
 zTestAirlineHarvey.setup_classc                 C   sf   t | jjd t | jjd t | jjd t| jjd | jd dd t| jjd | jd	 dd d S r   rz   r.   r*   r*   r+   r=     s    zTestAirlineHarvey.test_bsec                 C   sJ   | j jdd d }t|d | jd dd t|d | jd	 dd d S r   r~   r   r*   r*   r+   r     s    z!TestAirlineHarvey.test_bse_approxc                 C   sD   | j j d }t|d | jd dd t|d | jd dd d S r   r   r   r*   r*   r+   r   0  s    zTestAirlineHarvey.test_bse_oimr   r*   r*   rs   r+   r     s   
r   c                       sL   e Zd ZdZe fddZdd Zdd Zdd	 Zd
d Z	dd Z
  ZS )TestAirlineStateDifferencingr   c                    s   t t| jtjddd d S )NF)r   r   )rq   r   r,   r   r   rr   rs   r*   r+   r,   ?  s
    
 z(TestAirlineStateDifferencing.setup_classc                 C   s   t | jj| jd d d S )Nr   r   r\   r.   r*   r*   r+   r2   F  s
     z%TestAirlineStateDifferencing.test_bicc                 C   s*   | j jdddd}t|j| jjdd d S )Nnmi  r   )methodmaxiterr   rU   r4   rl   rm   r*   r*   r+   r7   O  s     z%TestAirlineStateDifferencing.test_mlec                 C   sf   t | jjd t | jjd t | jjd t| jjd | jd dd t| jjd | jd	 dd d S r   rz   r.   r*   r*   r+   r=   U  s    z%TestAirlineStateDifferencing.test_bsec                 C   sJ   | j jdd d }t|d | jd dd t|d | jd	 dd d S )
NTr8   r9   r   r}   r   r4   r   r   r~   r   r*   r*   r+   r   _  s    z,TestAirlineStateDifferencing.test_bse_approxc                 C   sD   | j j d }t|d | jd dd t|d | jd dd d S r   r   r   r*   r*   r+   r   y  s    z)TestAirlineStateDifferencing.test_bse_oim)r?   r@   rA   rB   rC   r,   r2   r7   r=   r   r   r   r*   r*   rs   r+   r   7  s   	
r   c                   @   s   e Zd ZdZedddZdS )Friedmanzb
    ARMAX model: Friedman quantity theory of money

    Stata arima documentation, Example 4
    Nc                 O   s   || _ tj|d d  }|d kr0t|d d }|dd |dd tj|f||dd|| _tj|d	 |d
 |d |d f }| j|| _	d S )Nr   consumpm2r   Tr   r   r   r   exogr   params_exogrb   rd   re   )
r   r    rg   r   rf   r   r%   rL   rM   rZ   )r(   r   r   ri   rj   r)   r"   r*   r*   r+   r,     s*      zFriedman.setup_class)N)r?   r@   rA   rB   rC   r,   r*   r*   r*   r+   r     s   r   c                       sD   e Zd ZdZe fddZdd Zdd Zdd	 Zd
d Z	  Z
S )TestFriedmanMLERegressionrp   c                    s   t t| tj d S r-   )rq   r   r,   r   friedman2_mlerr   rs   r*   r+   r,     s    
z%TestFriedmanMLERegression.setup_classc                 C   s6   | j jdd}|j| jj }t|tdddd d S )Nr   r      r   rU   r5   rtol)rL   r&   r"   rZ   r   r    ones)r/   rZ   Zratior*   r*   r+   r7     s    z"TestFriedmanMLERegression.test_mlec                 C   s   t | jjd t | jjd t | jjd t| jjdd | jd dd t| jjd | jd	 d
d t| jjd | jd d
d d S )Nrv   TFr   r^   se_exog_opgr   r4   rw   rN   r[   ry   rz   r.   r*   r*   r+   r=     s    z"TestFriedmanMLERegression.test_bsec                 C   sf   | j jdd d }t|dd | jd dd t|d | jd	 d
d t|d | jd d
d d S )NTr8   r9   r   r^   se_exog_oimr   r4   r|   rN   r[   r}   r~   r   r*   r*   r+   r     s    z)TestFriedmanMLERegression.test_bse_approxc                 C   s|   | j j d }t|d | jd d dd t|d | jd d dd t|d | jd	 dd t|d
 | jd dd d S )Nr9   r   r   r   r   r   r4   r^   r|   r[   r}   r   r   r*   r*   r+   r     s
    z&TestFriedmanMLERegression.test_bse_oim)r?   r@   rA   rB   rC   r,   r7   r=   r   r   r   r*   r*   rs   r+   r     s   r   c                       sd   e Zd ZdZe fddZdd Zdd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd Z  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                    s   t tj}t|d d d }|d d d  |d< |d d d  |d< g |d< g |d< tt| j||d	d
 tj|d |d |d |d f | _	| j
| j	| _d S )Nr   r         $@r   mle_params_exogr   Zmle_se_exogZse_exogF)r   mle_regressionrb   rd   re   )dictr   r   r   rq   r   r,   r    rg   true_paramsrL   rM   rZ   )r(   r   r   rs   r*   r+   r,     s     

   z'TestFriedmanStateRegression.setup_classc                 C   s(   | j jdd}t|j| jjddd d S )Nr   r   r   皙?r   rl   rm   r*   r*   r+   r7     s      z$TestFriedmanStateRegression.test_mlec                 C   s,   t | jjjdd df d | jd d d S )Nr]   r   r   r   r   )r   rZ   rQ   rR   r   r.   r*   r*   r+   test_regression_parameters	  s
    	 z6TestFriedmanStateRegression.test_regression_parametersc                 C   s   d S r-   r*   r.   r*   r*   r+   r0     s    z(TestFriedmanStateRegression.test_loglikec                 C   s   d S r-   r*   r.   r*   r*   r+   r1     s    z$TestFriedmanStateRegression.test_aicc                 C   s   d S r-   r*   r.   r*   r*   r+   r2     s    z$TestFriedmanStateRegression.test_bicc                 C   sf   t | jjd t | jjd t | jjd t| jjd | jd dd t| jjd | jd	 dd d S )
Nrv   TFr   rw   r   r4   r   ry   rz   r.   r*   r*   r+   r=   "  s
    z$TestFriedmanStateRegression.test_bsec                 C   sJ   | j jdd d }t|d | jd dd t|d | jd	 dd d S )
NTr8   r9   r   r|   r   r4   r   r}   r~   r   r*   r*   r+   r   +  s    z+TestFriedmanStateRegression.test_bse_approxc                 C   sF   | j   d }t|d | jd dd t|d | jd dd d S )Nr9   r   r|   r   r4   r   r}   r   r   r*   r*   r+   r   D  s    z(TestFriedmanStateRegression.test_bse_oim)r?   r@   rA   rB   rC   r,   r7   r   r0   r1   r2   r=   r   r   r   r*   r*   rs   r+   r     s   	r   c                       sL   e Zd ZdZe fddZdd Zdd Zdd	 Zd
d Z	dd Z
  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                    s   t t| tj d S r-   )rq   r   r,   r   friedman2_predictrr   rs   r*   r+   r,   W  s    
zTestFriedmanPredict.setup_classc                 C   s   d S r-   r*   r.   r*   r*   r+   r0   `  s    z TestFriedmanPredict.test_loglikec                 C   s   d S r-   r*   r.   r*   r*   r+   r1   c  s    zTestFriedmanPredict.test_aicc                 C   s   d S r-   r*   r.   r*   r*   r+   r2   f  s    zTestFriedmanPredict.test_bicc                 C   s   t | j | jd d d S )Npredictr[   )r   rZ   r   r   r.   r*   r*   r+   test_predicti  s
     z TestFriedmanPredict.test_predictc                 C   s:   t | jd d d d }t| jj|d| jd d d S )Nr   r      r   dynamicZdynamic_predictr[   )lenr   r   rZ   r   )r/   r   r*   r*   r+   test_dynamic_predicto  s     z(TestFriedmanPredict.test_dynamic_predict)r?   r@   rA   rB   rC   r,   r0   r1   r2   r   r   r   r*   r*   rs   r+   r   K  s   r   c                       sL   e Zd ZdZe fddZdd Zdd Zdd	 Zd
d Z	dd Z
  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                    s   t tj}|d d dd  |d d dd  d|d< |d d d d |d d d d d|d< tt| | | j| jj	| _d S )Nr   r   ir   )r   r   forecast_data)
r   r   r   rq   r   r,   rL   rM   rZ   r"   )r(   r   rs   r*   r+   r,     s    


z TestFriedmanForecast.setup_classc                 C   s   d S r-   r*   r.   r*   r*   r+   r0     s    z!TestFriedmanForecast.test_loglikec                 C   s   d S r-   r*   r.   r*   r*   r+   r1     s    zTestFriedmanForecast.test_aicc                 C   s   d S r-   r*   r.   r*   r*   r+   r2     s    zTestFriedmanForecast.test_bicc                 C   sN   t | jd d d d }t| jd d }t| jj||d| jd d	 d S )
Nr   r   r   r   r   r   )endr   forecastr[   r   r   r   r   rZ   r   )r/   r   r   r*   r*   r+   test_forecast  s     z"TestFriedmanForecast.test_forecastc                 C   sf   t | jd d d d }t | jd d d }t| jd d }t| jj|||d| jd d	 d S )
Nr   r   r   r   r   r   )r   r   r   Zdynamic_forecastr[   r   )r/   r   r   r   r*   r*   r+   test_dynamic_forecast  s     z*TestFriedmanForecast.test_dynamic_forecast)r?   r@   rA   rB   rC   r,   r0   r1   r2   r   r   r   r*   r*   rs   r+   r   w  s   r   c                   @   sZ   e Zd ZedddZdd Zdd Zd	d
 Zdd Ze	j
jdd Zdd Zdd ZdS )SARIMAXCoverageTestrY   Nc                 O   s   |d krt j}tj| d | _tdd tj| d dD | _| jd d | jd< || _	|
dd	 |
d
d	 tj|f||| _d S )Nr   c                 S   s   g | ]}t |qS r*   )float).0xr*   r*   r+   
<listcomp>  s    z3SARIMAXCoverageTest.setup_class.<locals>.<listcomp>
parameters,r   r^   r   Tr   )r   	wpi1_datacoverage_resultsloctrue_logliker    r!   splitr   decimalrf   r   r%   rL   )r(   rS   r   r)   ri   rj   r*   r*   r+   r,     s    

zSARIMAXCoverageTest.setup_classc                 C   s4   | j | j| _t| jj| jdd| j   d d S )Ngffffff?
   r4   )rL   rM   r   rZ   r   r   r   r   r.   r*   r*   r+   r0     s    z SARIMAXCoverageTest.test_loglikec                 C   s<   | j j}| j j}d| j _d| j _| j j || j _|| j _d S )NF)rL   enforce_stationarityenforce_invertibilitystart_params)r/   statinvr*   r*   r+   test_start_params  s    z%SARIMAXCoverageTest.test_start_paramsc                 C   s*  | j }|j|j }}| j}|| j |j}|j}||  }|jdksft	
tjd|dd   f ot|dkpt	
tjd|dd   f |_|j}|j}	|	|	  }
|jdkst	
tjd|dd  f ot|
dkpt	
tjd|
dd  f |_||}||}t||d ||_||_d S )Nr   r   rY   )rL   r   r   r   updatepolynomial_arpolynomial_seasonal_arZnonzerok_arr   Zis_invertibler    rg   r   polynomial_mapolynomial_seasonal_mak_maZuntransform_paramsZtransform_paramsr   )r/   rL   r   r   Ztrue_constrainedparZpsarZcontracted_psarZpmaZpsmaZcontracted_psmaZunconstrainedZconstrainedr*   r*   r+   test_transform_untransform  s.    (&

z.SARIMAXCoverageTest.test_transform_untransformc                 C   sN   | j | j| _| j  | jj | jj | jj | jj | jj	 | jj
 d S r-   )rL   rM   r   rZ   summarycov_params_defaultZcov_params_approxr   cov_params_opgr   r   r.   r*   r*   r+   test_results  s    
z SARIMAXCoverageTest.test_resultsc                 C   s   | j | j| _| j  d S r-   )rL   rM   r   rZ   plot_diagnostics)r/   Zclose_figuresr*   r*   r+   test_plot_diagnostics  s    z)SARIMAXCoverageTest.test_plot_diagnosticsc                 C   sz  | j | j}| }t|j| j jf |jddd}t|jd |jdddd}t|jd | j jdkr|j| j j| j jd dd}t|jd |j| j j| j jd dd}| }t|jd |d}t|jd	 n| j j}t	j
dg| d
  d
|}|j| j j| j jd d|d}t|jd |j| j j| j jd d|d}t	j
dg|  d|}|j|d}t|jd d S )Nr      startr   )   )r   r   r   r   ir   )r   r   r   r   r   r   r   r   )rL   rM   r   r   r
   r_   nobsk_exogr   r    rg   Zreshape)r/   rZ   r   r   r   r   r*   r*   r+   r     sJ    

 

 


 

 z SARIMAXCoverageTest.test_predictc           	      C   sl   | j }| j  }|jj}|jj}tj||f|}| j | j}|| j}t	rRdnd}t
|j|j|d d S NrN   gvIh%<=r   )rL   _get_init_kwdsr   
orig_endog	orig_exogr   r%   rM   r   r   r   r   	r/   mod1rj   r)   r   Zmodel2res1res2r   r*   r*   r+   test_init_keys_replicateH  s    
z,SARIMAXCoverageTest.test_init_keys_replicate)rY   N)r?   r@   rA   rC   r,   r0   r   r   r   pytestmark
matplotlibr   r   r  r*   r*   r*   r+   r     s   	#
,r   c                       s    e Zd Ze fddZ  ZS )Test_arc                    s"   d|d< t t| jd|| d S )Nr[   r   r   r   r   )r   )rq   r  r,   r(   ri   rj   rs   r*   r+   r,   Z  s    zTest_ar.setup_classr?   r@   rA   rC   r,   r   r*   r*   rs   r+   r  V  s   r  c                       s    e Zd Ze fddZ  ZS )Test_ar_as_polynomialc                    s.   dddgddf|d< t t| jd|| d S )Nr   r   r   )r   )rq   r  r,   r	  rs   r*   r+   r,   d  s    z!Test_ar_as_polynomial.setup_classr
  r*   r*   rs   r+   r  `  s   r  c                       s    e Zd Ze fddZ  ZS )Test_ar_trend_cc                    sR   d|d< d|d< t t| jd|| | j}d|dd   |d  | jd< d S )	Nr  r   r   r   r   rY   r   )r   )rq   r  r,   r   sumr(   ri   rj   tpsrs   r*   r+   r,   n  s
    zTest_ar_trend_c.setup_classr
  r*   r*   rs   r+   r  j  s   r  c                       s    e Zd Ze fddZ  ZS )Test_ar_trend_ctc                    sZ   d|d< d|d< t t| jd|| | j}d|dd   |d d  | jd d< d S )	Nr  r   ctr   r^   r   r   )r^   )rq   r  r,   r   r  r  rs   r*   r+   r,   }  s
    zTest_ar_trend_ct.setup_classr
  r*   r*   rs   r+   r  y  s   r  c                       s    e Zd Ze fddZ  ZS )Test_ar_trend_polynomialc                    sb   d|d< ddddg|d< t t| jd	|| | j}d|dd   |d d  | jd d< d S )
Nr  r   r   r   r   r[   r^   r   )r[   )rq   r  r,   r   r  r  rs   r*   r+   r,     s
    z$Test_ar_trend_polynomial.setup_classr
  r*   r*   rs   r+   r    s   r  c                       s    e Zd Ze fddZ  ZS )Test_ar_diffc                    s"   d|d< t t| jd|| d S )N)r[   r^   r   r   rY   )rY   )rq   r  r,   r	  rs   r*   r+   r,     s    zTest_ar_diff.setup_classr
  r*   r*   rs   r+   r    s   r  c                       s    e Zd Ze fddZ  ZS )Test_ar_seasonal_diffc                    s*   d|d< d|d< t t| jd|| d S )Nr  r   r   r^   r   rY   r   r   )r   )rq   r  r,   r	  rs   r*   r+   r,     s    z!Test_ar_seasonal_diff.setup_classr
  r*   r*   rs   r+   r    s   r  c                       s    e Zd Ze fddZ  ZS )Test_ar_diffusec                    s2   d|d< d|d< d|d< t t| jd|| d S )	Nr  r   r   r       eAr      )r  )rq   r  r,   r	  rs   r*   r+   r,     s    zTest_ar_diffuse.setup_classr
  r*   r*   rs   r+   r    s   r  c                       s(   e Zd Ze fddZdd Z  ZS )Test_ar_no_enforcec                    sL   d|d< d|d< d|d< d|d< d|d	< t t| jd|| d| jj_d S )Nr  r   Fr   r   r  r   r   loglikelihood_burnr  )r  )rq   r  r,   rL   ssmr  r	  rs   r*   r+   r,     s    zTest_ar_no_enforce.setup_classc           	      C   sx   | j }| j  }|jj}|jj}tj||f|}|jj|j_| j 	| j
}|	| j
}tr^dnd}t|j|j|d d S r   )rL   r   r   r   r   r   r%   r  r   rM   r   r   r   r   r   r*   r*   r+   r    s    
z+Test_ar_no_enforce.test_init_keys_replicate)r?   r@   rA   rC   r,   r  r   r*   r*   rs   r+   r    s   r  c                       s    e Zd Ze fddZ  ZS )Test_ar_exogenousc                    s>   d|d< t j}|t| d |d< tt| jd|| d S )Nr  r   r^   r      )r  )r   r   r    floorrq   r  r,   r(   ri   rj   r)   rs   r*   r+   r,     s    zTest_ar_exogenous.setup_classr
  r*   r*   rs   r+   r    s   r  c                       s0   e Zd Ze fddZdd Zdd Z  ZS )Test_ar_exogenous_in_statec                    sb   d|d< t j}|t| d |d< d|d< tt| jd
|| | jd | _| jd	d  | _d S )Nr  r   r^   r   Fr   r  r   r   )r  )	r   r   r    r  rq   r   r,   r   true_regression_coefficientr  rs   r*   r+   r,     s    z&Test_ar_exogenous_in_state.setup_classc                 C   s(   | j | j| _t| jj| jdd d S )Nr^   r4   )rL   rM   r   rZ   r   r   r   r.   r*   r*   r+   r0     s    z'Test_ar_exogenous_in_state.test_loglikec                 C   s2   | j | j| _t| jjjd d | j| j d S )Nr[   r   )	rL   rM   r   rZ   r   rQ   rR   r!  r   r.   r*   r*   r+   test_regression_coefficient  s    z6Test_ar_exogenous_in_state.test_regression_coefficient)r?   r@   rA   rC   r,   r0   r"  r   r*   r*   rs   r+   r     s   	r   c                       s    e Zd Ze fddZ  ZS )Test_mac                    s"   d|d< t t| jd|| d S )Nr   r   r[   r      )r%  )rq   r#  r,   r	  rs   r*   r+   r,     s    zTest_ma.setup_classr
  r*   r*   rs   r+   r#    s   r#  c                       s    e Zd Ze fddZ  ZS )Test_ma_as_polynomialc                    s.   dddddgf|d< t t| jd|| d S )Nr   r   r   r%  )r%  )rq   r&  r,   r	  rs   r*   r+   r,     s    z!Test_ma_as_polynomial.setup_classr
  r*   r*   rs   r+   r&    s   r&  c                       s    e Zd Ze fddZ  ZS )Test_ma_trend_cc                    s*   d|d< d|d< t t| jd|| d S )Nr$  r   r   r   	   )r(  )rq   r'  r,   r	  rs   r*   r+   r,   #  s    zTest_ma_trend_c.setup_classr
  r*   r*   rs   r+   r'    s   r'  c                       s    e Zd Ze fddZ  ZS )Test_ma_trend_ctc                    s*   d|d< d|d< t t| jd|| d S )Nr$  r   r  r   r   )r   )rq   r)  r,   r	  rs   r*   r+   r,   .  s    zTest_ma_trend_ct.setup_classr
  r*   r*   rs   r+   r)  *  s   r)  c                       s    e Zd Ze fddZ  ZS )Test_ma_trend_polynomialc                    s2   d|d< ddddg|d< t t| jd|| d S )Nr$  r   r   r   r   r   )r   )rq   r*  r,   r	  rs   r*   r+   r,   9  s    z$Test_ma_trend_polynomial.setup_classr
  r*   r*   rs   r+   r*  5  s   r*  c                       s    e Zd Ze fddZ  ZS )Test_ma_diffc                    s"   d|d< t t| jd|| d S )N)r   r^   r[   r   rF   )rF   )rq   r+  r,   r	  rs   r*   r+   r,   D  s    zTest_ma_diff.setup_classr
  r*   r*   rs   r+   r+  @  s   r+  c                       s    e Zd Ze fddZ  ZS )Test_ma_seasonal_diffc                    s*   d|d< d|d< t t| jd|| d S )Nr$  r   r  r      )r-  )rq   r,  r,   r	  rs   r*   r+   r,   N  s    z!Test_ma_seasonal_diff.setup_classr
  r*   r*   rs   r+   r,  J  s   r,  c                       s    e Zd Ze fddZ  ZS )Test_ma_diffusec                    s2   d|d< d|d< d|d< t t| jd|| d S )	Nr$  r   r   r   r  r      )r/  )rq   r.  r,   r	  rs   r*   r+   r,   Y  s    zTest_ma_diffuse.setup_classr
  r*   r*   rs   r+   r.  U  s   r.  c                       s    e Zd Ze fddZ  ZS )Test_ma_exogenousc                    s>   d|d< t j}|t| d |d< tt| jd|| d S )Nr$  r   r^   r   r   )r   )r   r   r    r  rq   r0  r,   r  rs   r*   r+   r,   e  s    zTest_ma_exogenous.setup_classr
  r*   r*   rs   r+   r0  a  s   r0  c                       s    e Zd Ze fddZ  ZS )	Test_armac                    s"   d|d< t t| jd|| d S )N)r[   r   r[   r      )r2  )rq   r1  r,   r	  rs   r*   r+   r,   q  s    zTest_arma.setup_classr
  r*   r*   rs   r+   r1  m  s   r1  c                       s    e Zd Ze fddZ  ZS )Test_arma_trend_cc                    sZ   d|d< d|d< t t| jd|| | j}d|dd   |d d  | jd d< d S )	Nr[   r   r^   r   r   r      r   rY   )r5  )rq   r3  r,   r   r  r  rs   r*   r+   r,   {  s
    zTest_arma_trend_c.setup_classr
  r*   r*   rs   r+   r3  w  s   r3  c                       s    e Zd Ze fddZ  ZS )Test_arma_trend_ctc                    sZ   d|d< d|d< t t| jd	|| | j}d|dd   |d d  | jd d< d S )
Nr4  r   r  r      r   r^   r   )r7  )rq   r6  r,   r   r  r  rs   r*   r+   r,     s
    zTest_arma_trend_ct.setup_classr
  r*   r*   rs   r+   r6    s   r6  c                       s    e Zd Ze fddZ  ZS )Test_arma_trend_polynomialc                    sb   d|d< ddddg|d< t t| jd	|| | j}d|dd   |d d  | jd d< d S )
Nr4  r   r   r   r      r^   r   )r9  )rq   r8  r,   r   r  r  rs   r*   r+   r,     s
    z&Test_arma_trend_polynomial.setup_classr
  r*   r*   rs   r+   r8    s   r8  c                       s    e Zd Ze fddZ  ZS )Test_arma_diffc                    s"   d|d< t t| jd|| d S )Nr[   r^   r^   r   r   )r   )rq   r:  r,   r	  rs   r*   r+   r,     s    zTest_arma_diff.setup_classr
  r*   r*   rs   r+   r:    s   r:  c                       s    e Zd Ze fddZ  ZS )Test_arma_seasonal_diffc                    s*   d|d< d|d< t t| jd|| d S )Nr4  r   r  r      )r=  )rq   r<  r,   r	  rs   r*   r+   r,     s    z#Test_arma_seasonal_diff.setup_classr
  r*   r*   rs   r+   r<    s   r<  c                       s    e Zd Ze fddZ  ZS )Test_arma_diff_seasonal_diffc                    s*   d|d< d|d< t t| jd|| d S )Nr;  r   r  r      )r?  )rq   r>  r,   r	  rs   r*   r+   r,     s    
 z(Test_arma_diff_seasonal_diff.setup_classr
  r*   r*   rs   r+   r>    s   r>  c                       s    e Zd Ze fddZ  ZS )Test_arma_diffusec                    s2   d|d< d|d< d|d< t t| jd|| d S )	Nr4  r   r   r   r  r      )rA  )rq   r@  r,   r	  rs   r*   r+   r,     s    zTest_arma_diffuse.setup_classr
  r*   r*   rs   r+   r@    s   r@  c                       s    e Zd Ze fddZ  ZS )Test_arma_exogenousc                    s>   d|d< t j}|t| d |d< tt| jd|| d S )Nr4  r   r^   r      )rC  )r   r   r    r  rq   rB  r,   r  rs   r*   r+   r,     s    zTest_arma_exogenous.setup_classr
  r*   r*   rs   r+   rB    s   rB  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_arc                    s*   d|d< d|d< t t| jd|| d S )Nr   r   r   r   r[   r   r   rY   r      )rG  )rq   rD  r,   r	  rs   r*   r+   r,     s    zTest_seasonal_ar.setup_classr
  r*   r*   rs   r+   rD    s   rD  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ar_as_polynomialc                    s8   d|d< dddgdddf|d< t t| jd|| d S )	NrE  r   r   r   rY   r   rG  )rG  )rq   rH  r,   r	  rs   r*   r+   r,     s    
 z*Test_seasonal_ar_as_polynomial.setup_classr
  r*   r*   rs   r+   rH    s   rH  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ar_trend_cc                    sb   d|d< d|d< d|d< t t| jd
|| | j}d|dd	   |d d  | jd d< d S )NrE  r   rF  r   r   r      r   rY   )rJ  )rq   rI  r,   r   r  r  rs   r*   r+   r,     s    z$Test_seasonal_ar_trend_c.setup_classr
  r*   r*   rs   r+   rI    s   rI  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ar_trend_ctc                    sb   d|d< d|d< d|d< t t| jd|| | j}d|d	d
   |d d	  | jd d	< d S )NrE  r   rF  r   r  r      r   r^   r   )rL  )rq   rK  r,   r   r  r  rs   r*   r+   r,     s    z%Test_seasonal_ar_trend_ct.setup_classr
  r*   r*   rs   r+   rK    s   rK  c                       s    e Zd Ze fddZ  ZS )!Test_seasonal_ar_trend_polynomialc                    sj   d|d< d|d< ddddg|d< t t| jd|| | j}d|d	d
   |d d	  | jd d	< d S )NrE  r   rF  r   r   r   r      r^   r   )rN  )rq   rM  r,   r   r  r  rs   r*   r+   r,     s    
 z-Test_seasonal_ar_trend_polynomial.setup_classr
  r*   r*   rs   r+   rM    s   rM  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ar_diffc                    s*   d|d< d|d< t t| jd|| d S )Nr   r^   r   r   rF  r      )rQ  )rq   rO  r,   r	  rs   r*   r+   r,   (  s    z!Test_seasonal_ar_diff.setup_classr
  r*   r*   rs   r+   rO  $  s   rO  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ar_seasonal_diffc                    s*   d|d< d|d< t t| jd|| d S )NrE  r   )r[   r^   r   rY   r      )rS  )rq   rR  r,   r	  rs   r*   r+   r,   3  s    
 z*Test_seasonal_ar_seasonal_diff.setup_classr
  r*   r*   rs   r+   rR  /  s   rR  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ar_diffusec                    s:   d|d< d|d< d|d< d|d< t t| jd
|| d S )NrE  r   rF  r   r   r   r  r      )rU  )rq   rT  r,   r	  rs   r*   r+   r,   ?  s
    z$Test_seasonal_ar_diffuse.setup_classr
  r*   r*   rs   r+   rT  ;  s   rT  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ar_exogenousc                    sF   d|d< d|d< t j}|t| d |d< tt| jd|| d S )	NrE  r   rF  r   r^   r       )rW  )r   r   r    r  rq   rV  r,   r  rs   r*   r+   r,   L  s
    z&Test_seasonal_ar_exogenous.setup_classr
  r*   r*   rs   r+   rV  H  s   rV  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_mac                    s*   d|d< d|d< t t| jd|| d S )NrE  r   r   r   r[   rY   r   !   )rZ  )rq   rX  r,   r	  rs   r*   r+   r,   Y  s    zTest_seasonal_ma.setup_classr
  r*   r*   rs   r+   rX  U  s   rX  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ma_as_polynomialc                    s8   d|d< dddddgdf|d< t t| jd|| d S )	NrE  r   r   r   rY   r   rZ  )rZ  )rq   r[  r,   r	  rs   r*   r+   r,   d  s    
 z*Test_seasonal_ma_as_polynomial.setup_classr
  r*   r*   rs   r+   r[  `  s   r[  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ma_trend_cc                    s:   d|d< d|d< d|d< d|d< t t| jd
|| d S )NrE  r   rY  r   r   r   r[   r   "   )r]  )rq   r\  r,   r	  rs   r*   r+   r,   p  s
    z$Test_seasonal_ma_trend_c.setup_classr
  r*   r*   rs   r+   r\  l  s   r\  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ma_trend_ctc                    s2   d|d< d|d< d|d< t t| jd|| d S )	NrE  r   rY  r   r  r   #   )r_  )rq   r^  r,   r	  rs   r*   r+   r,   }  s    z%Test_seasonal_ma_trend_ct.setup_classr
  r*   r*   rs   r+   r^  y  s   r^  c                       s    e Zd Ze fddZ  ZS )!Test_seasonal_ma_trend_polynomialc                    sB   d|d< d|d< ddddg|d< d|d	< t t| jd|| d S )NrE  r   rY  r   r   r   r   r[   r   $   )ra  )rq   r`  r,   r	  rs   r*   r+   r,     s    
 z-Test_seasonal_ma_trend_polynomial.setup_classr
  r*   r*   rs   r+   r`    s   r`  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ma_diffc                    s*   d|d< d|d< t t| jd|| d S )NrP  r   rY  r   %   )rc  )rq   rb  r,   r	  rs   r*   r+   r,     s    z!Test_seasonal_ma_diff.setup_classr
  r*   r*   rs   r+   rb    s   rb  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ma_seasonal_diffc                    s*   d|d< d|d< t t| jd|| d S )NrE  r   )r   r^   r[   rY   r   &   )re  )rq   rd  r,   r	  rs   r*   r+   r,     s    
 z*Test_seasonal_ma_seasonal_diff.setup_classr
  r*   r*   rs   r+   rd    s   rd  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ma_diffusec                    s:   d|d< d|d< d|d< d|d< t t| jd
|| d S )NrE  r   rY  r   r   r   r  r   '   )rg  )rq   rf  r,   r	  rs   r*   r+   r,     s
    z$Test_seasonal_ma_diffuse.setup_classr
  r*   r*   rs   r+   rf    s   rf  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_ma_exogenousc                    sF   d|d< d|d< t j}|t| d |d< tt| jd|| d S )	NrE  r   rY  r   r^   r   (   )ri  )r   r   r    r  rq   rh  r,   r  rs   r*   r+   r,     s
    z&Test_seasonal_ma_exogenous.setup_classr
  r*   r*   rs   r+   rh    s   rh  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_armac                    s*   d|d< d|d< t t| jd|| d S )NrE  r   r[   r   r^   rY   r   )   )rl  )rq   rj  r,   r	  rs   r*   r+   r,     s    zTest_seasonal_arma.setup_classr
  r*   r*   rs   r+   rj    s   rj  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_arma_trend_cc                    sb   d|d< d|d< d|d< t t| jd
|| | j}d|dd	   |d d  | jd d< d S )NrE  r   rk  r   r   r   *   r   rY   )rn  )rq   rm  r,   r   r  r  rs   r*   r+   r,     s    z&Test_seasonal_arma_trend_c.setup_classr
  r*   r*   rs   r+   rm    s   rm  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_arma_trend_ctc                    sb   d|d< d|d< d|d< t t| jd|| | j}d|d	d
   |d d	  | jd d	< d S )NrE  r   rk  r   r  r   +   r   r^   r   )rp  )rq   ro  r,   r   r  r  rs   r*   r+   r,     s    
 z'Test_seasonal_arma_trend_ct.setup_classr
  r*   r*   rs   r+   ro    s   ro  c                       s(   e Zd Ze fddZdd Z  ZS )#Test_seasonal_arma_trend_polynomialc                    sr   d|d< d|d< ddddg|d< d|d	< t t| jd|| | j}d|dd   |d d  | jd d< d S )NrE  r   rk  r   r   r   r   r[   r   ,   r^   r   )rr  )rq   rq  r,   r   r  r  rs   r*   r+   r,     s    
 z/Test_seasonal_arma_trend_polynomial.setup_classc                 C   s6   | j | j| _| j  | jj | jj | jj d S r-   rL   rM   r   rZ   r   r   r   r   r.   r*   r*   r+   r     s
    
z0Test_seasonal_arma_trend_polynomial.test_resultsr?   r@   rA   rC   r,   r   r   r*   r*   rs   r+   rq    s   rq  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_arma_diffc                    s*   d|d< d|d< t t| jd|| d S )NrP  r   rk  r   -   )rv  )rq   ru  r,   r	  rs   r*   r+   r,     s    z#Test_seasonal_arma_diff.setup_classr
  r*   r*   rs   r+   ru    s   ru  c                       s    e Zd Ze fddZ  ZS ) Test_seasonal_arma_seasonal_diffc                    s*   d|d< d|d< t t| jd|| d S )NrE  r   r[   r^   r^   rY   r   .   )ry  )rq   rw  r,   r	  rs   r*   r+   r,      s    
 z,Test_seasonal_arma_seasonal_diff.setup_classr
  r*   r*   rs   r+   rw    s   rw  c                       s(   e Zd Ze fddZdd Z  ZS )%Test_seasonal_arma_diff_seasonal_diffc                    s*   d|d< d|d< t t| jd|| d S )NrP  r   rx  r   /   )r{  )rq   rz  r,   r	  rs   r*   r+   r,   ,  s    
 z1Test_seasonal_arma_diff_seasonal_diff.setup_classc                 C   s6   | j | j| _| j  | jj | jj | jj d S r-   rs  r.   r*   r*   r+   r   3  s
    
z2Test_seasonal_arma_diff_seasonal_diff.test_resultsrt  r*   r*   rs   r+   rz  (  s   rz  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_arma_diffusec                    sB   d|d< d|d< d|d< d|d< d	|d
< t t| jd|| d S )NrE  r   rk  r   r[   r   r   r   r  r   0   )r}  )rq   r|  r,   r	  rs   r*   r+   r,   G  s    z&Test_seasonal_arma_diffuse.setup_classr
  r*   r*   rs   r+   r|  C  s   r|  c                       s    e Zd Ze fddZ  ZS )Test_seasonal_arma_exogenousc                    sF   d|d< d|d< t j}|t| d |d< tt| jd|| d S )	NrE  r   rk  r   r^   r   1   )r  )r   r   r    r  rq   r~  r,   r  rs   r*   r+   r,   U  s    
 z(Test_seasonal_arma_exogenous.setup_classr
  r*   r*   rs   r+   r~  Q  s   r~  c                       s(   e Zd Ze fddZdd Z  ZS )Test_sarimax_exogenousc                    sF   d|d< d|d< t j}|t| d |d< tt| jd|| d S )	Nr;  r   rx  r   r^   r   2   )r  )r   r   r    r  rq   r  r,   r  rs   r*   r+   r,   c  s
    z"Test_sarimax_exogenous.setup_classc                 C   sj   | 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   rY   r  r(  r   )rL   rM   r   r   arparamsmaparamsZseasonalarparamsZseasonalmaparamsrm   r*   r*   r+   test_results_paramsk  s
    z*Test_sarimax_exogenous.test_results_params)r?   r@   rA   rC   r,   r  r   r*   r*   rs   r+   r  _  s   r  c                       s    e Zd Ze fddZ  ZS )#Test_sarimax_exogenous_not_hamiltonc                    sV   d|d< d|d< t j}|t| d |d< d|d< d|d	< tt| jd|| d S )Nr;  r   rx  r   r^   r   Fr   r   r  )r  )r   r   r    r  rq   r  r,   r  rs   r*   r+   r,   w  s    
 z/Test_sarimax_exogenous_not_hamilton.setup_classr
  r*   r*   rs   r+   r  s  s   r  c                       s    e Zd Ze fddZ  ZS )Test_sarimax_exogenous_diffusec                    s^   d|d< d|d< t j}|t| d |d< d|d< d|d	< d
|d< tt| jd|| d S )Nr;  r   rx  r   r^   r   r   r   r   r  r   3   )r  )r   r   r    r  rq   r  r,   r  rs   r*   r+   r,     s    
 z*Test_sarimax_exogenous_diffuse.setup_classr
  r*   r*   rs   r+   r    s   r  c                       s    e Zd Ze fddZ  ZS )'Test_arma_exog_trend_polynomial_missingc                    s   t jtj }|t | d dd  |d< t j|dd< |dd  |d d  }t j|d< d|d< d	d	d	dg|d
< d|d< tt| jd|d|i| | j	}d|dd 
  |d	  | j	d	< d S )Nr^   r   r   r(  r9  r   r4  r   r   r   r   4   r)   r   )r  )r    rg   r   r   r  nanrq   r  r,   r   r  )r(   ri   rj   r)   r  rs   r*   r+   r,     s&    

 z3Test_arma_exog_trend_polynomial_missing.setup_classr
  r*   r*   rs   r+   r    s   r  c               	   C   s   t dd } d|  }tj| |dddd}t  td |jd	d
}W 5 Q R X t|j	ddgd t|j
jd dd  dgd d d S )Nd         ?r^   rE  TF)r   r   time_varying_regressionr   r   r   r   r   r   r   r9   c   r(  )r    aranger   r%   r   r   r   r&   r   r"   rQ   rR   )r)   r   modresr*   r*   r+   test_simple_time_varying  s    

r  c                   C   s   t ttjdddgddd d S )Nr   r^   r[   T)r)   r   r  )r   
ValueErrorr   r%   r*   r*   r*   r+   test_invalid_time_varying  s    r  c            	      C   s  t j} tj| dd}|ddddg}tj| dd}|j|jj|jj	 |ddddg}tj| dd|jj|jj	d}|ddddg}tj| dd	d
}|ddddg}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   r9   r   r   r   knownr   r   initial_stateinitial_state_covZ
stationary)r   r   )r   r   r   r%   rM   r  initialize_knownrQ   r  r  r   r   rR   	r)   r   r  mod2r  Zmod3res3Zmod4Zres4r*   r*   r+   %test_manual_stationary_initialization  s<     r  c            	      C   s  t j} tj| dd}|jd |ddddg}tj| dd}|j|jj	|jj
 |ddddg}tj| dd|jj	|jj
d	}|ddddg}tj| dd
dd}|ddddg}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  r9   r   r   r   r  r  r   )r   r   r   )r   r   r   r%   r  Zinitialize_approximate_diffuserM   r  rQ   r  r  r   r   rR   r  r*   r*   r+   .test_manual_approximate_diffuse_initialization  sD     r  c                  C   s   t j} tj| dd}|jdddgdd}t|jd t|jd t|jt	
d	d
d
t	j   t|jt	
d	d
d
t	j   t|jdg t|jdg d S )Nr   r  r9   g      r   Zoim)r{          @r   r^   )r   r   r   r%   rM   r   ZarrootsZmarootsZarfreqr    Zarctan2piZmafreqr  r  )r)   r  r  r*   r*   r+   r   $  s    r   c                  C   s  d} d}t jd t jj| |fd}t j|d ddf< t jj| dfd}t jj| dfd}tjdd	| d
}tj||d}tj|	 |d}tj||d}t
j||ddt
j||ddt
j||dddt
j||ddt
j||ddt
j||dddg}	|	D ]}
|
j |
jdd}|  |  |jdd |  t jjd|
jfd}|jd|d |jd|d t jjd|
jfd}tt|jd|d t jjd|
jd fd}tt|jd|d qttt
j|t ddd d S )Nr   r   i  sizerY   r   r^   z
1970-01-01ZQSfreqperiodsindexr   r   r   r   F)r   r   r   r   Tr   )Zstepsr   )r   rY   )r    randomseednormalr  pd
date_range	DataFrameSeriesZsqueezer   r%   r   r&   r   r   get_predictionr   r   Zget_forecastr   r  zeros)r   k_endogr)   Zexog1Zexog2r  Zendog_pdZexog1_pdZexog2_pdmodelsr  r  Zoos_exogr*   r*   r+   test_misc_exog4  sN    

r  c                  C   sP   t jd t jjdddd} t jjdddd}tj| |dd}|jdd	 d S )
Ni r   r9   r  r  r   r   r   r   r   r   )r    r  r  Zbinomialr   r%   r&   )r)   r   r  r*   r*   r+   test_datasetsg  s
    r  c                  C   sj   t jd tt jjdd} tj| dd}||j	}|j
dddgd}t|jtdgd	 d S )
N r  r  r  r  r   a)r   r   r  T)r    r  r  r  r  r  r   r%   smoothr   r   r
   r  equalsIndex)r)   r  r  outr*   r*   r+   test_predict_custom_indexr  s    r  c                  C   s  t jd d} tt jj| d}tj|ddd}||j	}t
|j|j tj|ddd}||j	}t
|jdd dd f | dd  j t jj| d}t | d	 | }t | }tj|d|d
}d|j_|ddg}t
|jd |dd tj|d|dd}d|j_|ddgt ddg |dg}t
|jd |dd t
|jd d	dd tj|d|ddd}d|j_|dgt dg |ddg}t
|jd d	dd d S )Nr  r  r  rE  F)r   measurement_error)r   r   r   r   r   )r   r   Tr   r  r   g|=r4   )r   r   r           )r   r   r   r  )r    r  r  r  r  r  r   r%   r  r   r   smoothed_stateTrJ   r   r  filter_univariater  Zdiag)r   r)   r  r  errorr   r*   r*   r+   test_arima000{  s@    *


 r  Fc           #      C   s"  t tj}ddg}ddg}ddg}d t |g}d dg}ddg}ddg}dd l}	d	d
dddddg}
|	|||||||D ]}tt|
|}|	ddrd|d< d|d< t
j|f|}t
j|fddi|}| |j_| |j_|j}||}t j|df }d}|d r |d	 d k	r |d7 }|d r2|d7 }d}|d sJ|d rNd}t j|d |  |j|| d   f }||}t|j|j|d |jjD ].}|dkrqtt|j|t|j| q|j}dddddg}|D ],}t|j|}t|j|}t|||d qdddd d!d"d#d$g}|jj |jjk}t j| | d d f }|D ]p}t|j|d%|d f }t|j|d%|d f }|d&kr|d rt|| || |d nt|||d qTd'd(d)d*d+d,d-d.d/d0d1d2d3g}|D ]p}t|j|d%|d f }t|j|d%|d f }|d4krH|d rHt|| || |d nt|||d qd5d6d7d8g}|D ](}t||}t||}t|||d qj|jd9d:}|jd9d:}t||d|d; |jd<d:}|jd<d:}t||d|d; |jd=d:}|jd=d:}t||d|d; d }|d	 d k	r6t d>|j  d df}|j!d?d>d@|dA}|j!d?d>d@|dA}t|j"|j"|d t|j#|j#|d t j$%dB |jj&rt j$j'd@dC} t j$j'd@dC}!t j$j'|j(dfdC}"|)d@| |!|"}|)d@| |!|"}t|||d |jj&rz|*d@}|*d@}t|||d qzd S )DNr  r^   r^   r^   r   r   r   r   r   r   r   rY   TFtr   r   r   r   r   r  r  r   r   Z	toleranceZconcentrate_scaler   r:   rU   r4   Zobspredicted_staterR   	forecastsforecasts_errorZkalman_gainllf_obsrV   predicted_state_covfiltered_state_covZtmp1Ztmp2Ztmp3Z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_errorZsmoothed_forecastsZsmoothed_forecasts_errorZsmoothed_forecasts_error_cov)r  r  r   r   r   r  Z
jarquebera)r   )r   r5   ZbreakvarZljungbox   r  r   r   i6  r  )+r    rJ   r   r   	ones_like	itertoolsproductr   zipgetr   r%   r  r  r   r  rg   Zscaler   r   ZshapesgetattrrQ   r  r  r<   r   Zs_Ztest_normalityZtest_heteroskedasticityZtest_serial_correlationr   r   r  predicted_meanZse_meanr  r  Ztime_invariantr  k_statesZsimulateZimpulse_responses)#r  r)   ordersseasonal_orderssimple_differencingsexogstrendstime_varying_regressionsmeasurement_errorsr  nameselementrj   Zmod_origZmod_concZconc_paramsZres_concZorig_paramsZk_snrr5   Zres_orignamedZfilter_attractualdesiredZfilter_attr_burnZdiffuse_maskixZsmoothed_attroutputr   Zmeasurement_shocksZstate_shocksr  r*   r*   r+   check_concentrated_scale  s   
 

	




     

  










r  c                   C   s   t dd t dd d S )NF)r  T)r  r*   r*   r*   r+   test_concentrated_scalej	  s    
r  c            	      C   s  d} t | d }t | }tj||dd}|dddg}d}t d}t d}t|jd|d	d t|jd|d	d t|jd|d	d d
}t |}t |df}t|j||d	d t|j||d	d tt|j|dd	 tt|j|ddgd	 tt|j|t |dfd	 d S )Nr  r  r  r   r  r  r   )r   r   r   r   r^   )	r    r   r   r%   r  r   r   r   r  )	r   r)   r   r  r  Zexog_fcast_scalarZexog_fcast_1dimZexog_fcast_2dimhr*   r*   r+   test_forecast_exogp	  s&    



r  c                 C   s   ddddddddd	d
ddddddddddddddddddg}dddd d!d"d#d$d%d&d'g}|D ]"}t | tt||t| | qZ|D ]}tt|j|t| j| qt| |   d S )(Nr  Zstate_errorr   Zstate_regressionr  r   r   r   r   r   r   r   r   r   Zpolynomial_trendr   Zk_ar_paramsZk_diffr   Zk_ma_paramsZseasonal_periodsZk_seasonal_arZk_seasonal_ar_paramsZk_seasonal_diffZk_seasonal_maZk_seasonal_ma_paramsZk_trendr   r   r  r  Zk_posdefZobs_interceptZdesignZobs_covZstate_interceptZ
transitionZ	selectionZ	state_cov)printr
   r  r  r   )r  r  attrsZ	ssm_attrsattrr*   r*   r+   check_equivalent_models	  s^                                r  c               	   C   s   d} t | d }t | }ddg}ddg}ddg}d t |g}d d	g}ddg}ddg}	d
d l}
dddddddg}|
|||||	||D ]l}tt||}|ddrd|d< |dd }t	j
|fd|i|}t	j
|fd|i| }t|| qd S )Nr  r  r  r  r  r  TFr  r   r   r   r   r   r  r  r   r   )r    r   r  r  r  r   r  r  popr   r%   r   r  )r   r)   r   r  r  r  r  r  r  r  r  r  r  rj   r  r  r*   r*   r+   test_recreate_model	  s6    

 r  c            	   	   C   s<  t d} t | }ddddg}tj| |ddd}||}tj| d d |d d ddd}||}|j| dd  |dd  d}t|j|j t	|j
|j
 d	D ]}tt||t|| qd
D ]}tt||t|| qt	|jdt dd|jdt dd tjtdd || dd   W 5 Q R X d S )Nr  r  r   r  r  r   r   r   r  r   r   r   r  r  rR   r  r  r  r  r  Zforecasts_error_covrV   Zforecasts_error_diffuse_covZpredicted_diffuse_state_covr  r  r  r  r  r  r  r  r  r  r   !Cloning a model with an exogenousmatch)r    r  r  r   r%   r  appendr
   specificationr   r   r  r   r   r  raisesr  	r)   r   r"   r   r  r  r  r  r  r*   r*   r+   test_append_results	  s*    



r  c            
   	   C   s2  t d} t | }ddddg}tj| |ddd}||}tj| d d |d d ddd}||}|j| dd  |dd  d}t|j|jdd   d	D ]6}t	||}	|	d k	r|	d
dd f }	t
t	|||	 qt|jdt dd|jdt dd tjtdd || dd   W 5 Q R X d S )Nr  r  r   r  r  r  r  r   r  .r   r  r  r    r  r  r   r%   r  extendr   r  r  r
   r   r   r  r  r  
r)   r   r"   r   r  r  r  r  r  r  r*   r*   r+   test_extend_results	  s*    




r	  c            
   	   C   s:  t d} t | }ddddg}tj| |ddd}||}tj| d d |d d ddd}||}|j| dd  |dd  d}t|j|jdd   d	D ]6}t	||}	|	d k	r|	d
dd f }	t
t	|||	 qt|jdt dd d|jdt dd d tjtdd || dd   W 5 Q R X d S )Nr  r  r   r  r  r  r   r   r  .r  r   r^   r  r  r  r  r*   r*   r+   test_extend_by_one
  s*    




r
  c            	   	   C   sL  t d} t | }ddddg}tj| d d |d d ddd}||}tj| dd  |dd  ddd}||}|j| d d |d d d}t|j|j t	|j
|j
 d	D ]}tt||t|| qd
D ]}tt||t|| qt	|jdt dd|jdt dd tjtdd || dd   W 5 Q R X d S )Nr  r  r   r  r  r  r  r   r  r  r   r  r  )r    r  r  r   r%   r  applyr
   r  r   r   r  r   r   r  r  r  r  r*   r*   r+   test_apply_resultsI
  s.    



r  c                  C   s   t td  dd  j} tj| d d dd}d}tjt	|d. |j
}t|ddddt | d d g W 5 Q R X tj| d d d	d
d}d}tjt	|d( |j
}t|dt | d d g W 5 Q R X d S )NrE   r   rY   )rY   r   r   r  zHToo few observations to estimate starting parameters for ARMA and trend.r  r   rE  )r   r   r   rY   )r   r   zGToo few observations to estimate starting parameters for seasonal ARMA.)r    rH   rI   rJ   rK   r   r%   r  warnsUserWarningr   r   var)r)   r  r   r   r*   r*   r+   test_start_params_small_nobsu
  s    ,r  c                  C   sZ   t td j} tj| ttt| d}t	j
|ddd}t|j|jdd   d S )NrE   r  r  Tr   r   r   )r    rH   rI   rK   r  r  r  rO   r   r   r%   r	   _indexr  r  rK   r)   r  r*   r*   r+   #test_simple_differencing_int64index
  s    r  c                  C   sZ   t td j} tj| tjdt| dd}tj	|ddd}t
|j|jdd   d S )	NrE   r   r   stopr  r  Tr  r   )r    rH   rI   rK   r  r  
RangeIndexr   r   r%   r	   r  r  r  r  r*   r*   r+   #test_simple_differencing_rangeindex
  s    r  c                  C   s\   t td j} tj| tjdt| ddd}tj	|ddd}t
|j|jd	d   d S )
NrE   2000M)r   r  r  r  r  Tr  r   )r    rH   rI   rK   r  r  Zperiod_ranger   r   r%   r	   r  r  r  r  r*   r*   r+   "test_simple_differencing_dateindex
  s    
  
r  c               	   C   s   t td j} ttt| t	}tj
| |d}tt tj|ddd}W 5 Q R X t|jtjdt| d d t|jj|dd   d S )	NrE   r  r  Tr  r   r   r  )r    rH   rI   rK   r  r  rO   r   mapstrr  r  r  r  r   r%   r	   r  r  r  r   Z
row_labels)rK   r  r)   r  r*   r*   r+   !test_simple_differencing_strindex
  s    "r  c               	   C   sV   t d} tt tj| dd W 5 Q R X tt tj| dd W 5 Q R X d S )Nr   r   r  )r   r^   r[   rY   r    r  r  r  r  r   r%   r)   r*   r*   r+   test_invalid_order
  s
    
r!  c               	   C   s   t d} tt tj| dd W 5 Q R X tt tj| dd W 5 Q R X tt tj| dd W 5 Q R X tt tj| dd W 5 Q R X tt tj| dd W 5 Q R X tt tj| dd W 5 Q R X d S )	Nr   r   )r   )r   r^   r[   rY   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r  r   r*   r*   r+   test_invalid_seasonal_order
  s    
r"  c                  C   s   t jd } tjddt| d}tj| |d}tj|ddd}| }|d	 }|j	|d
 dd}|j	|d
 |d}t
|j|j |j	|d
 | d}t
|j|j |j	|d
 |dd}t
|j|j d S )Nr   z1980-1-1ZMSr  r  r  r   ra   iirF   r   z%Y-%m-%d)r   r   r  r  r   r  r   r%   r&   r  r   r  Zto_pydatetimestrftime)r   r  Zseriesr  r  r   r  r  r*   r*   r+   test_dynamic_str
  s    

r$  c              	   C   s   t jtjjddddd}tjtdd | }W 5 Q R X tj	t
dd |jd	d
 W 5 Q R X tjd}t j|ddddd}tjtdd | }W 5 Q R X tj	t
dd |jdd
 W 5 Q R X d S )Nr   r  )r   r   r   F)r   r   zToo fewr  zLength of endogenous)r   r   )Zfigsizer(  r   )r   r   r   rF   )r   r   r   r   )rS  r   )r   r%   r    r  r  r  r  r  r&   r  r  r   standard_normal)reset_randomstater  r   yr*   r*   r+   test_plot_too_few_obs
  s*      r(  c                 C   sT   t jd}tj|ddddjdd}t t |jt	|t	|d d	sPt
d S )
Nr5  r   )r   r   r   rF   rG   )r)   r   r   r   Fr   r   r   r    r  r%  r   r%   r&   allisfiniter   r   AssertionErrorr&  r'  Zsarimax_modelr*   r*   r+   ,test_sarimax_starting_values_few_obsevations
  s       r.  c                 C   s|   t jd}dddddddd	d
ddddddddddg}tj|dddjdd}t t |jt	|t	|d dsxt
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   rG   )r)   r   r   Fr   r   r   r)  r-  r*   r*   r+   4test_sarimax_starting_values_few_obsevations_long_ma   s>                      r/  c                 C   sj   t d}t d}tj||ddd}|ddddg}t|jd	d	d
d t|jdddgd
dd d S )Nr   r  r   )r)   r   r   r   r   g?r9   r  r   r   g433333?r^   g?)r    r  r   r%   r  r   r   )r&  r'  r   r  r  r*   r*   r+    test_sarimax_forecast_exog_trend  s    

r0  )F)rB   osr   Zstatsmodels.compat.platformr   Znumpyr    Zpandasr  r  Zstatsmodels.tsa.statespacer   r   r   r   Zstatsmodels.toolsr   Zstatsmodels.tools.toolsr   Znumpy.testingr	   r
   r   r   r   pathdirnameabspath__file__current_pathjoinZrealgdp_pathZread_csvseprI   Zcoverage_pathr   r   rD   rX   r`   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r   r#  r&  r'  r)  r*  r+  r,  r.  r0  r1  r3  r6  r8  r:  r<  r>  r@  rB  rD  rH  rI  rK  rM  rO  rR  rT  rV  rX  r[  r\  r^  r`  rb  rd  rf  rh  rj  rm  ro  rq  ru  rw  rz  r|  r~  r  r  r  r  r  r  r  r  r   r  r  Zsmoker  r  r  r  Zslowr  r  r  r  r  r	  r
  r  r  r  r  r  r  r!  r"  r$  r  r(  r.  r/  r0  r*   r*   r*   r+   <module>   s  >&%!A9"8#::IFk,A 


!&




!	'+3

	,
 D
 !***,	
