U
    Ãmœd¦:  ã                   @   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j6 7d8d9d9i 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Úinflé2   r   é   )r   r   r   ©Úorder)ÚdtaÚilocr   r   Z_spec_arimaZtrend_orderr   ÚexogÚnpÚonesÚnobs©ÚendogÚmod© r    ú_/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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glséd   Ú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$   gñhãˆµøä>©Ú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$   gH¯¼šò×z>gü©ñÒMbP?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Š   Ú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   
$
&ûþ
