U
    Kvf:                     @   s  d Z ddlmZ ddlZddlZddlZddlZddl	m
Z
mZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ e jZej dddd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 d! Z*dEd"d#Z+d$d% Z,d&d' Z-d(d) Z.d*d+ Z/d,d- Z0d.d/ Z1d0d1 Z2d2d3 Z3d4d5 Z4d6d7 Z5ej67d8d9d9i fd9d9d:difd;d<d=d;d>fdd9gdd?difd9d@gddd9gdAd@dBfgdCdD Z8dS )FaA  
Tests for ARIMA model.

Tests are primarily limited to checking that the model is constructed correctly
and that it is calling the appropriate parameter estimators correctly. Tests of
correctness of parameter estimation routines are left to the individual
estimators' test functions.

Author: Chad Fulton
License: BSD-3
    )PLATFORM_WIN32N)assert_equalassert_allcloseassert_raisesassert_)	macrodata)ARIMA)yule_walker)burg)hannan_rissanen)innovationsinnovations_mle)
statespacez
1959-01-01z
2009-07-01ZQS)startendfreqc                  C   sj   t d jd d } t| }t|jjd t|jt	|j
df t| dd}t|jjd  t|jd  d S )Ninfl2   r      )r   r   r   order)dtailocr   r   Z_spec_arimaZtrend_orderr   exognponesnobsendogmod r    J/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tsa/arima/tests/test_model.pytest_default_trend$   s    r"   c               	   C   s   t d jd d } t| dd}tt|jdd |ddi tt|jd	d W 5 Q R X tt|jd
ddid tt|jd	ddgd t| ddd}tt|jd	dd ttdd ddd}tt|jdd ttdd ddd}tt|jdd d S )Nr   r   r   r   r   r   Znot_a_methodmethodar.L1g      ?r	   r   enforce_stationarityF)r%   Zmethod_kwargs      ?)r%   start_paramscr   trend)r%   Zglsd   nr      )r   r   r   )	r   r   r   r   
ValueErrorfit
fix_paramsr   arange)r   r   mod2Zmod3r    r    r!   test_invalid5   s$    
 
r5   c                  C   sP   t d jd d } t| ddd\}}t| ddd}|jd	d
}t|j|j d S )Nr   r      Far_orderdemeanr6   r   r   r.   r+   r	   r$   )r   r   r	   r   r1   r   paramsr   	desired_p_r   resr    r    r!   test_yule_walkerY   s
    r@   c                  C   sP   t d jd d } t| ddd\}}t| ddd}|jd	d
}t|j|j d S )Nr   r   r6   Fr7   r:   r.   r+   r
   r$   )r   r   r
   r   r1   r   r;   r<   r    r    r!   	test_burgd   s
    rA   c                  C   sV   t d  jdd } t| dddd\}}t| ddd}|jd	d
}t|j|j d S )Nr   r   e   F)r8   ma_orderr9   r   r   r   r.   r+   r   r$   )r   diffr   r   r   r1   r   r;   r<   r    r    r!   test_hannan_rissaneno   s       
rF   c                  C   sT   t d jd d } t| ddd\}}t| ddd}|jd	d
}t|j|d j d S )Nr   r   r6   F)rC   r9   )r   r   r6   r.   r+   r   r$   )r   r   r   r   r1   r   r;   r<   r    r    r!   test_innovations{   s
    rH   c                  C   s   t d jd d } t| ddd\}}t| ddd}|jdd	}t|j|jd
d t| dddd\}}t| dddd}|jdd	}t|j|jd
d d S )Nr   r-   rD   F)r   r9   r.   r+   r   r$   gh㈵>atolr#   r   r   r      )r   seasonal_orderr9   r   rM   r,   )r   r   r   r   r1   r   r;   r<   r    r    r!   test_innovations_mle   s$      
   
rO   c                  C   s   t d jd d } t| ddd\}}t| ddd}|jdd	}tsFd
nd}t|j|j|dd t| ddd\}}t| ddd}|jdd	}t|j|jdd t| dddd\}}t| dddd}|jdd	}t|j|jdd d S )Nr   r-   rD   F)r   include_constantr.   r+   r   r$   gHz>gMbP?g-C6?)rtolrJ   )r   r   r6   Tr*   rI   r#   rK   )r   rM   rP   rN   )r   r   r   r   r1   r   r   r;   )r   r=   r>   r   r?   rQ   _specr    r    r!   test_statespace   s*    


rS   c                  C   s   t d jd d } t| ddd}| }|jdd}t|j|j t|j|j t|jj	d t
|jd k t
|jd k t
|jd k t
|jd k d S )Nr   r   r#   T)r   concentrate_scale)
low_memoryr   )r   r   r   r1   r   r;   llfr   ZssmZmemory_conserver   Zllf_obsZpredicted_stateZfiltered_stateZsmoothed_state)r   r   Zres1res2r    r    r!   test_low_memory   s    rX   c                 C   sx   | j ||d}t| j|j t| j|j t| j|j t| j|j | j}t| 	||	| t| j
|j
 d S )Nr   )cloner   r   r   _indexequalsr   Zk_paramsr)   ZloglikerT   )r   r   r   Zmod_cpr    r    r!   check_cloned   s    r^   c               	   C   s
  t d jd d } t| jd }tt| |  tt| j| j tt| dd|  tt| dd|  tt| dd|  tt| |d| |d tt| |dd	| |d tt| |dd
d| |d t d jd d } t| jd }tt| dd|dddgd
d| |d d S )Nr   r   r   r*   r,   tctrY   r   r,   T)r   r,   rT   Zrealgdpr-   )r6   r   r   )r   r   r6   rL   r   )r   rM   r   r,   rT   )r   r   r   r3   shaper^   r   values)r   r   r    r    r!   
test_clone   s.     
   re   c                	   C   s   t jtdd ttdddd W 5 Q R X t jtdd ttddddd	 W 5 Q R X t jtdd ttdd
dd W 5 Q R X t jtdd ttddddd	 W 5 Q R X d S )NzIn models with integrationmatchr-   r   r   r   r*   r+   r#   )r   r   r      rN   )r   r6   r   r`   )pytestraisesr0   r   r   r   r    r    r    r!   $test_constant_integrated_model_error   s    rl   c                  C   s   t d jd d j} t| d d ddd}|ddd	g}|  }tj|dd < ||}||j	}t
|d|jd
d   d S )Nr   r-   r   rh   r`   r+   皙?333333?r(   )r   r   rd   r   filtercopyr   nanrZ   r;   r   forecastfittedvalues)r   r   r?   endog2r4   rW   r    r    r!   test_forecast  s    
rv   c                  C   s   t d jd d j} tt| d }t| d d d|d d dd}|dd	d
dg}|  }tj	|dd < |j
||d}t|j t|j ||j}t|jd|dd  d|jdd   d S )Nr   r-   r6   r   rh   r`   )r   r   r,   rm   g?rn   r(   rY   ro   )r   r   rd   r   r3   lenr   rp   rq   rr   rZ   printZparam_namesr;   r   rs   rt   )r   r   r   r?   ru   r4   rW   r    r    r!   test_forecast_with_exog  s     

ry   c                  C   sh   t d jd d j} t| d d dd}| }|| dd  }t| }||j}t|j	|j	 d S )Nr   r-   r   r*   r_   )
r   r   rd   r   r1   appendrp   r;   r   rV   )r   r   r?   res_er4   rW   r    r    r!   test_append(  s    r|   c                  C   s   t d jd d j} tt| }t| d d |d d dd}| }|j| dd  |dd  d}t| |dd}|	|j
}t|j|j d S )Nr   r-   r   r*   rb   rY   r   r   rd   r   r3   rw   r   r1   rz   rp   r;   r   rV   r   r   r   r?   r{   r4   rW   r    r    r!   test_append_with_exog3  s    r   c                  C   s   t d jd d j} tt| d }t| d d |d d dd}| }|j| dd  |dd  d}t| |dd}|	|j
}t|j|j d S )Nr   r-   r6   r   ra   rb   rY   r}   r~   r    r    r!   test_append_with_exog_and_trend@  s    r   c                  C   s   t d jd d } tjtt| | jd}t| jd d |jd d dd}|	 }|j
| jdd  |jdd  d}t| |dd}||j}t|j|j d S )Nr   r-   )indexr   r*   rb   rY   )r   r   pdZSeriesr   r3   rw   r   r   r1   rz   rp   r;   r   rV   r~   r    r    r!   test_append_with_exog_pandasM  s    ""r   c                  C   sH   t d jd d j} t| d d dd}|jdd}t| tj d S )Nr   r-   r   r*   r_   none)cov_type)	r   r   rd   r   r1   r   Z
cov_paramsr   rr   )r   r   r?   r    r    r!   test_cov_type_noneZ  s    r   c               	   C   sR   t jtdd d} t| dddd}tjtdd |jdd	d
d W 5 Q R X d S )Na  data

9.112
9.102
9.103
9.099
9.094
9.090
9.108
9.088
9.091
9.083
9.095

9.090
9.098
9.093
9.087
9.088
9.083
9.095
9.077
9.082
9.082
9.081

9.081
9.079
9.088
9.096
9.081
9.098
9.081
9.094
9.091
9.095
9.097

9.108
9.104
9.098
9.085
9.093
9.094
9.092
9.093
9.106
9.097
9.108

9.100
9.106
9.114
9.111
9.097
9.099
9.108
9.108
9.110
9.101
9.111

9.114
9.111
9.126
9.124
9.112
9.120
9.142
9.136
9.131
9.106
9.112

9.119
9.125
9.123
9.138
9.133
9.133
9.137
9.133
9.138
9.136
9.128

9.127
9.143
9.128
9.135
9.133
9.131
9.136
9.120
9.127
9.130
9.116

9.132
9.128
9.119
9.119
9.110
9.132
9.130
9.124
9.130
9.135
9.135

9.119
9.119
9.136
9.126
9.122
9.119
9.123
9.121
9.130
9.121
9.119

9.106
9.118
9.124
9.121
9.127
9.113
9.118
9.103
9.112
9.110
9.111

9.108
9.113
9.117
9.111
9.100
9.106
9.109
9.113
9.110
9.101
9.113

9.111
9.101
9.097
9.102
9.100
9.110
9.110
9.096
9.095
9.090
9.104

9.097
9.099
9.095
9.096
9.085
9.097
9.098
9.090
9.080
9.093
9.085

9.075
9.067
9.072
9.062
9.068
9.053
9.051
9.049
9.052
9.059
9.070

9.058
9.074
9.063
9.057
9.062
9.058
9.049
9.047
9.062
9.052
9.052

9.044
9.060
9.062
9.055
9.058
9.054
9.044
9.047
9.050
9.048
9.041

9.055
9.051
9.028
9.030
9.029
9.027
9.016
9.023
9.031
9.042
9.035

)Z	index_col)   r   '   F)r   r'   enforce_invertibilityzRoots of the autoregressiverf   r   Tr   )r%   rU   r   )	r   Zread_csvioStringIOr   rj   rk   r0   r1   r   r    r    r!   test_nonstationary_gls_errora  s    r   z ar_order, ma_order, fixed_paramsr   r&   r6      rG   )ar.L2zma.L1r      i)zar.L5zma.L3c              	   C   sx   t d  jdd }t|| |d|d\}}t|| d|fdddd}|| |jd	d
}W 5 Q R X t|j|j d S )Nr   r   rB   F)r8   rC   r9   fixed_paramsr   r.   )r   r,   r'   r   r   r$   )	r   rE   r   r   r   r2   r1   r   r;   )r8   rC   r   r   r=   r>   r   r?   r    r    r!   &test_hannan_rissanen_with_fixed_params  s       
 r   )N)9__doc__Zstatsmodels.compat.platformr   r   Znumpyr   Zpandasr   rj   Znumpy.testingr   r   r   r   Zstatsmodels.datasetsr   Zstatsmodels.tsa.arima.modelr   Z,statsmodels.tsa.arima.estimators.yule_walkerr	   Z%statsmodels.tsa.arima.estimators.burgr
   Z0statsmodels.tsa.arima.estimators.hannan_rissanenr   Z,statsmodels.tsa.arima.estimators.innovationsr   r   Z+statsmodels.tsa.arima.estimators.statespacer   Zload_pandasdatar   Z
date_ranger   r"   r5   r@   rA   rF   rH   rO   rS   rX   r^   re   rl   rv   ry   r|   r   r   r   r   r   markZparametrizer   r    r    r    r!   <module>   sZ   
$
&
