U
    Kvf+                  	   @   s  d dl mZ d dlmZ d dlZd dlmZ d dlZd dlZ	d dl
mZmZ d dlZd dlZd dlmZmZ d dlmZmZmZmZmZmZmZmZ d dlmZ d d	lm Z  d d
l!m"Z" zd dl#m$Z% W n e&k
r   Y nX ej'j#dd Z(ej'j#dd Z)ej'j#dd Z*ej'j#dd Z+ej'j#dd Z,ej'j#dd Z-ej'j#dd Z.ej'j#dd Z/ej'j#dd Z0ej'j#dd Z1ej'j#d d! Z2ej'j#d"d# Z3ej'j#ej'4d$e e5d%d&d'fe"e5d(d)fgej'4d*d+d&gej'4d,dd-gd.d/ Z6ej'j#d0d1 Z7dS )2    )	MONTH_END)lmapN)BytesIO)assert_assert_equal)elnino	macrodata)
month_plotplot_accf_gridplot_acfplot_ccf	plot_pacfplot_predictquarter_plotseasonal_plot)arima_process)AutoReg)ARIMA)pyplotc                 C   sz   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t||dd t||d	 t||d d
 d S )No         ?g쿩r   ?  d   Zdistrvs
   axlagsr   r   alpha)pltfigureadd_subplotnpr_tspArmaProcessrandomRandomStategenerate_samplestandard_normalr   close_figuresfigr   armaarmaprocessrsacf r7   L/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/graphics/tests/test_tsaplots.pytest_plot_acf"   s    


r9   c                 C   s   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t||tddd	 t||d
dd t||d dd d S Nr   r   r   r   r   r         r   r   F)r   r    zero)r   r#   r=   )r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r   aranger/   r7   r7   r8   test_plot_acf_irregular2   s    


r?   c                 C   sl   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t||d t||d d d S )	Nr   r   r   r   r   r   r!   r"   )r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r   r0   r1   r   r2   r3   r4   r5   pacfr7   r7   r8   test_plot_pacfB   s    


rB   c                 C   s<  t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t }t||d |j|dd	 t }	t  }
|
d}t||d
d |
j|	dd	 t }t  }|d}ddi}t|||d |j|dd	 |d |	d |d | }|	 }| }t||k t||k t||k d S )Nr   r   r   r   r   r   r!   rgbaformat-)r   Zls
linestylesdashdotr   vlines_kwargsr   )r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r   r   savefigseekreadr   )r0   r1   r   r2   r3   r4   r5   rA   buffZbuff_linestyleZfig_linestylebuff_with_vlinesfig_with_vlinesrJ   plainZ	linestylewith_vlinesr7   r7   r8   test_plot_pacf_kwargsQ   s<    







rS   c                 C   s   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t }t||d |j|dd	 t }	t  }
|
d}d
di}t|||d |
j|	dd	 |d |	d | }|	 }t||k d S )Nr   r   r   r   r   r   r!   rC   rD   rG   rH   rI   r   )r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r   r   rK   rL   rM   r   )r0   r1   r   r2   r3   r4   r5   r6   rN   rO   rP   rJ   rQ   rR   r7   r7   r8   test_plot_acf_kwargsz   s*    





rT   c           
      C   s   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}tj|d d d< t }t||dd	 |j|d
d |d t  }|d}t }	t||dd	 |j|	d
d |	d t| |	 k d S )Nr   r   r   r   r   r      Zdrop)r   missingrC   rD   r   Zconservative)r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   nanr   r   rK   rL   r   rM   )
r0   r1   r   r2   r3   r4   r5   r6   rN   Zbuff_conservativer7   r7   r8   test_plot_acf_missing   s&    





rX   c                 C   s   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}t||tddd	 t||d
dd t||d dd d S r:   )r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r   r>   r@   r7   r7   r8   test_plot_pacf_irregular   s    


rY   c           	      C   s   t  }|d}tjd }tjd }t||}tjd}|j	d|j
d}|j	d|j
d}t|| t|||dd t|||d	 t|||d d
 t|||dd t|||dd t|||dd t|||dd t|||dd t|||dd d S )Nr   r   r   r   r   r   r   r   r!   r"   T)r   negative_lags)r   adjusted)r   fftZCCF)r   title)r   
auto_ylimsF)r   
use_vlines)r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r   )	r0   r1   r   r2   r3   r4   r5   x1Zx2r7   r7   r8   test_plot_ccf   s$    



ra   c                 C   s  t  }tjd }tjd }t||}tjd}t|j	d|j
d|j	d|j
dgj}t| tt|d d df |d d df d t||d	d
 t||d t||dd t||d d t||dd t||dd t||dd t||dd d S )Nr   r   r   r   r   r   r;   )xyr   )r1   r    )r1   F)r1   rZ   )r1   r#   T)r1   r[   )r1   r\   )r1   r^   )r1   r_   )r$   r%   r'   r(   r)   r*   r+   r,   Zvstackr-   r.   Tr
   pd	DataFrame)r0   r1   r2   r3   r4   r5   rb   r7   r7   r8   test_plot_accf_grid   s&    

,rg   c                 C   sX  t  j}|jtt|d< |dj	
 }tdd |jjD }t|j|dd}t||_t|}tj|dd|_t|}tj|dd|_t|}ztd	~ t|}d
d |jd  D }ddddddddddddg}t||D ]0\}}t|tr||ks tq||kstqW 5 Q R X W n$ tjk
rR   tjdd Y nX d S )NYEARc                 S   s"   g | ]}d  |d |d gqS )rF   r;   r   )join).0rb   r7   r7   r8   
<listcomp>   s     z#test_plot_month.<locals>.<listcomp>zel nino)datesZylabelZMSfreqMZDE_dec                 S   s   g | ]}|  qS r7   Zget_text)rj   _r7   r7   r8   rk     s     r   JanFeb)u   MärZMrzAprZMaiJunJulAugSepZOktNovZDezz!Failure due to unsupported locale)reason)r   load_pandasdatarh   astypeintapplystr	set_indexrd   Zunstackre   Zto_datetimeindexvaluesr	   DatetimeIndexPeriodIndexcalendardifferent_localeZaxesget_xticklabelszip
isinstancetupleAssertionErrorlocaleErrorpytestZxfail)r0   dtarl   r1   labelsexpectedZlblexpr7   r7   r8   test_plot_month   sD    
r   c                 C   s   t  j}tdjt|jt	t
|jt	t
}t|jj| |jtj|dddd t|j tj|dd|_t|j tj|dd|_t|j d S )Nz-QzQS-Octrm   T)ZinplaceQ)r   r{   r|   r   ri   r   yearr}   r~   r   r   Zquarterr   Zunempr   r   re   r   r   r   )r0   r   rl   r7   r7   r8   test_plot_quarter'  s    
 

r   c           
      C   s   t jd}|dd}|dt t dd t j d d d f  7 }| }t t ddd	}| }t	j
||gd
dgdj}|dd
 }ddddddddddddg}t||}| d }dd | D }	t||	 d S )Nr            g      (@r<   r;   rU   )r   r;   r|   monthsr   rr   rs   Marrt   Mayru   rv   rw   rx   Octry   Decr   c                 S   s   g | ]}|  qS r7   rp   )rj   tlr7   r7   r8   rk   [  s     z&test_seasonal_plot.<locals>.<listcomp>)r'   r+   r,   Zrandnsinr>   piZravelZtilere   rf   rd   groupbyr   Zget_axesr   r   )
r0   r5   r|   r   dfZgroupedr   r1   r   outputr7   r7   r8   test_seasonal_plotA  s2    .
r   model_and_args   F)r    Z	old_names)r   r   r   )order
use_pandasTr#   g?c              	   C   s  |\}}t jd}|d}tddD ]0}||  d||d   d||d    7  < q(|dd  }| rtjdt|jd d	 d
}||jd d  }	|d }
tj	||d d d}n|jd d }	|jd d	 }
||f|
 }t||	|
|d}t|tjstd S )Nr   i  r   g?r;   r   r   z1960-1-1   )rn   Zperiodsir   )r#   )r'   r+   r,   r.   rangere   Z
date_ranger   shapeZSeriesZfitr   r   r$   ZFigurer   )r   r   r#   modelkwargsr5   rc   ir   startendresr1   r7   r7   r8   test_predict_plot_  s(    
.  r   c                  C   s8   dd t dD } tj| dgtt dd}t| d S )Nc                 S   s"   g | ]}t j t j|d  qS ))seconds)re   Z	TimestampnowZ	Timedelta)rj   r   r7   r7   r8   rk   ~  s     z/test_plot_pacf_small_sample.<locals>.<listcomp>r   a)r   columnsr|   )r   re   rf   listr   )idxr   r7   r7   r8   test_plot_pacf_small_sample|  s    
r   )8Zstatsmodels.compat.pandasr   Zstatsmodels.compat.pythonr   r   ior   r   Znumpyr'   Znumpy.testingr   r   Zpandasre   r   Zstatsmodels.datasetsr   r   Zstatsmodels.graphics.tsaplotsr	   r
   r   r   r   r   r   r   Zstatsmodels.tsar   r)   Zstatsmodels.tsa.ar_modelr   Zstatsmodels.tsa.arima.modelr   Z
matplotlibr   r$   ImportErrormarkr9   r?   rB   rS   rT   rX   rY   ra   rg   r   r   r   Zparametrizedictr   r   r7   r7   r7   r8   <module>   sf   (




(





1

