U
    ÃmœdàC  ã                   @   sÜ  d dl Zd dlZd dlmZmZmZmZm	Z	m
Z
 d dlZd dlZd dlmZ d dlmZ d dlmZ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gd	d
gd	dgd	d
dggZ dgd	dgd	d
gd	ddggZ!dZ"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd„ Z'dd„ Z(ej) *de ¡ej) *de!¡ej) *dej+j,g¡dd„ ƒƒƒZ-d d!„ Z.d"d#„ Z/ej) *de ¡ej) *de!¡d$d%„ ƒƒZ0ej) *de ¡ej) *de!¡d&d'„ ƒƒZ1d(d)„ Z2G d*d+„ d+ƒZ3ej) *d,d d	g¡ej) *d-d.g¡d/d0„ ƒƒZ4dS )1é    N)Úassert_Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_equalÚassert_raises)ÚArmaFft)ÚARIMA)	ÚArmaProcessÚarma_acfÚ
arma_acovfÚarma_generate_sampleÚarma_impulse_responseÚ
index2lpolÚ
lpol2indexÚ	lpol_fiarÚ	lpol_fima)Úresults_arma_acf)Úarmarepç      ð?é   çÍÌÌÌÌÌì¿çÍÌÌÌÌÌì?ç333333Ó?g333333Ó¿é   c                     sF   d} d‰ d‰t dˆ  gdg| ƒ}‡ ‡fdd„t| ƒD ƒ}t||ƒ d S )Né   r   r   c                    s(   g | ] }d ˆ ˆ |  dˆ d   ‘qS ©r   r   é   © ©Ú.0Úi©ÚphiÚsigmar   úa/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tsa/tests/test_arima_process.pyÚ
<listcomp>5   s     z#test_arma_acovf.<locals>.<listcomp>)r   Úranger   )ÚNÚrep1Úrep2r   r"   r%   Útest_arma_acovf-   s    r+   c                  C   sb   t  ddg¡} t  dg¡}t| |ƒ}| d¡}d}dt  d¡ }|| }t|jdƒ t||ƒ d S )Nr   g–C‹lçûï¿é
   g¤¹Æ  B�@g–C‹lçûï?)ÚnpÚarrayr
   ÚacovfÚaranger   Úndimr   )ÚarÚmaÚprocessÚresZsig2ZcorrsÚexpectedr   r   r%   Útest_arma_acovf_persistent9   s    

r7   c                     s`   d} d‰ d‰t dˆ  gdg| ƒ}t ‡ ‡fdd„t| ƒD ƒ¡}|ddˆ d    }t||ƒ d S )Nr   r   r   c                    s(   g | ] }d ˆ ˆ |  dˆ d   ‘qS r   r   r   r"   r   r%   r&   U   s     z!test_arma_acf.<locals>.<listcomp>r   r   )r   r-   r.   r'   r   )r(   r)   r/   r*   r   r"   r%   Útest_arma_acfL   s    ÿr8   c                  C   s*  t dddgddgƒ} t| tjƒ t dddgdddgƒ}t|tjƒ t dddgddddgƒ}t|tjƒ t dddgdddddgƒ}t|tjƒ t dddgddddddgƒ}t|tjƒ t ddddgdddgƒ}t|tjƒ t dddddgdddgƒ}t|tj	ƒ t dddddd	gdddgƒ}t|tj
ƒ d S )
Nr   éÿÿÿÿg      Ð?çš™™™™™É?r   gffffffÖ¿çš™™™™™¹¿gš™™™™™©?g{®Gáz”¿)r   r   r   Úbd_example_3_3_2Zcustom_example_1Zcustom_example_2Zcustom_example_3Zcustom_example_4Zcustom_example_5Zcustom_example_6Zcustom_example_7)r<   Z	example_1Z	example_2Z	example_3Z	example_4Z	example_5Z	example_6Z	example_7r   r   r%   Útest_arma_acf_compare_R_ARMAacf[   s     r=   c                  C   sZ   ddd„} t tddgddgƒ| ddgddgƒƒ t tddgddgƒ| ddgddgƒƒ d S )	Nr,   c                    sÌ   t  t  | ¡d ¡dkr(tddˆ ƒ}ntddˆ ƒ}t| ||d�‰ˆd dkrh|d	9 }t| ||d�‰qD|d
kr¢ˆdk r¢tˆƒ‰ t  ‡ ‡‡fdd„tˆƒD ƒ¡}nt  ˆˆd¡tˆƒd d … }|d ˆ… S )Nr   r   iè  r   éd   ©Zleadsr9   g-Cëâ6
?r,   iPÃ  ié  c              	      s4   g | ],}t  ˆd ˆ ˆ | … ˆ|ˆ ˆ … ¡‘qS )N)r-   Údot)r    Út©ÚendÚirÚnobsr   r%   r&   �   s   ÿz_test_arma_acov_compare_theoretical_arma_acov.<locals>.arma_acovf_historical.<locals>.<listcomp>Úfull)	r-   ÚabsÚsumÚmaxr   Úlenr.   r'   Z	correlate)r2   r3   rE   Znobs_irr/   r   rB   r%   Úarma_acovf_historicalu   s     þÿzKtest_arma_acov_compare_theoretical_arma_acov.<locals>.arma_acovf_historicalr   ç      à¿r:   g®Gáz®ï¿)r,   )r   r   )rK   r   r   r%   Ú,test_arma_acov_compare_theoretical_arma_acovo   s    
þþrM   c           	      C   sÔ   t |ƒ}| d d d… } |d d d… }t | ƒt |ƒ }}dgt||ƒ }t|ƒD ]l}|| }|rx|t || d … | ¡7 }|r°|t dg||  t|td|| ƒ|… ƒ |¡7 }| |¡ qNt |t||ƒd … ¡S )Nr9   r   )rJ   rI   r'   r-   r@   ÚlistÚappendr.   )	r2   r3   ÚetaÚTÚpÚqr*   rA   Zytr   r   r%   Ú_manual_arma_generate_sample”   s    4rT   r2   r3   Údistc           	      C   sx   d}t j d¡ | |ƒ}t j d¡ t|||| d�}dt  |dd … ¡ }t  |dd … ¡}t|||ƒ}t||dƒ d S )Nr>   iÒ  )Zdistrvsr9   r   é   )r-   ÚrandomÚseedr   r.   rT   r   )	rU   r2   r3   rQ   rP   r)   Z	ar_paramsZ	ma_paramsr*   r   r   r%   Útest_arma_generate_sample¥   s    rY   c                  C   s2   d} t td| d�dg| ƒ}t|td| d�dƒ d S )Nr>   çš™™™™™Ù?)Únr   rV   )r   r   r   r   )r[   Zmafromarr   r   r%   Útest_fi¹   s    r\   c                  C   s^   t tjtjdd�dd … } t tjtjdd�dd … }ttj ¡ |dƒ ttj ¡  | dƒ d S )Né   r?   r   é   )r   r   r3   r2   r   ÚmarepZravelÚarrep)r`   r_   r   r   r%   Útest_arma_impulse_responseÀ   s    ra   c                 C   sº   d}t jdt j|dd�}t| |dƒ}| |¡\}}| |d¡\}}| |d ¡\}	}
t||ƒ t||ƒ t||
d |… dd� t||	d |… d	d
| |f d� t||d	d| |f d� d S )Nr   r   F©ZendpointéÈ   r   r^   )Údecimalé   zspdr spdd not equal for %s, %s)rd   Úerr_msgzspdr spdp not equal for %s, %s)	r-   ÚlinspaceÚpir   ZspdrootsZspdpolyZ	spddirectr   r   )r2   r3   ÚnfreqÚwÚarmaZspdrÚwrZspdpZwpZspddÚwdr   r   r%   Útest_spectrumÈ   s*    



ü
ürn   c                 C   sd   d}t jdt j|dd�}t| |dƒ}| d¡d d… }| d¡d d… }t||dd| |f d	� d S )
Nr   r   Frb   i   r,   gVçž¯Ò<zacovf not equal for %s, %s)Zatolrf   )r-   rg   rh   r   Zinvpowerspdr/   r   )r2   r3   ri   rj   rk   Zac1Zac2r   r   r%   Útest_armafftã   s       
ÿro   c                  C   sŽ   t ddddgƒ} t| jƒ\}}t|dgƒ t|dgƒ t ddddgƒ} t| jƒ\}}t|dddgƒ t|dddgƒ t||ƒ}t| j|ƒ d S )Nr   r   çš™™™™™é¿çš™™™™™é?r   gš™™™™™¹?r;   )r
   r   Úarcoefsr   r   r   )r4   ZcoefsZlocsr2   r   r   r%   Útest_lpol2index_index2lpolò   s    
rs   c                   @   st   e Z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
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestArmaProcessc                 C   s”   t ƒ }t|jt g ¡ƒ t|jt g ¡ƒ t ddgƒ}t|jt dg¡ƒ t|jt g ¡ƒ t ddgd�}t|jt g ¡ƒ t|jt dg¡ƒ d S )Nr   rp   rq   ©r3   )r
   r   rr   r-   r.   Úmacoefs)Úselfr4   r   r   r%   Útest_empty_coeff  s    z TestArmaProcess.test_empty_coeffc                 C   s4  ddg}dg}|  dd¡ |  dd¡ dt |¡ }|}t||ƒ}t t |j¡t |j¡¡}t|j|jƒ t|j	|j	ƒ t|j
|j
ƒ t|j|jƒ t|j|jƒ t|j|jƒ t|j|jƒ t|d�}tjt |j¡d�}t|j|jƒ t|j	|j	ƒ t|j
|j
ƒ t|j|jƒ t|j|jƒ t|j|jƒ t|j|jƒ t|d	�}tjt |j¡d
�}t|j|jƒ t|j	|j	ƒ t|j
|j
ƒ t|j|jƒ t|j|jƒ t|j|jƒ t|j|jƒ tƒ }t ¡ }t|j|jƒ t|j	|j	ƒ t|j
|j
ƒ t|j|jƒ t|j|jƒ t|j|jƒ t|j|jƒ d S )NçÍÌÌÌÌÌü?r   r   r   r9   r   )r2   )Úarrootsru   )Úmaroots)Úinsertr-   r.   r
   Z
from_rootsr{   rz   r   rr   rv   rE   ÚisinvertibleÚisstationary)rw   r2   r3   Úar_pÚma_pÚprocess_directr4   r   r   r%   Útest_from_roots  sT    


zTestArmaProcess.test_from_rootsc                 C   sÀ   ddg}dg}t  t |¡t |¡¡}| dd¡ | dd¡ dt |¡ }|}t ||ƒ}t|j|jƒ t|j|jƒ t|j|jƒ t|j	|j	ƒ t|j
|j
ƒ t|j|jƒ t|j|jƒ d S )Nry   r   r   r   r9   r   )r
   Úfrom_coeffsr-   r.   r|   r   rr   rv   rE   r{   rz   r}   r~   )rw   r2   r3   r4   r   r€   r�   r   r   r%   Útest_from_coeffC  s    
zTestArmaProcess.test_from_coeffc                 C   sî   t  dg¡}t  dg¡}|| }t|jt ddg¡ƒ t|jt g ¡ƒ t  dgdg¡}t  dg¡}|| }t|jt ddg¡ƒ t|jt dg¡ƒ t  dgdg¡}|t ddg¡t dg¡f }t|jt ddg¡ƒ tt|j	dgƒ d S )	Nr   gffffffæ?çš™™™™™ù?g)\�Âõ(ä¿r:   r   gffffffæ¿é   )
r
   rƒ   r   rr   r-   r.   rv   r   Ú	TypeErrorÚ__mul__)rw   Úprocess1Úprocess2Zprocess3r   r   r%   Útest_process_multiplicationV  s    z+TestArmaProcess.test_process_multiplicationc                 C   s„   t  dgdg¡}| ¡ }t|ƒ t| d¡dkƒ t| d¡dkƒ | ¡ }t| d¡dkƒ t| dttt	|ƒƒƒ ¡dkƒ d S )Nr   r:   zAR: [1.0, -0.9]r9   zMA: [1.0, 0.2]znobs=100zat )
r
   rƒ   Ú__str__Úprintr   ÚfindÚ__repr__ÚstrÚhexÚid)rw   r‰   Úoutr   r   r%   Útest_str_reprj  s    zTestArmaProcess.test_str_reprc                 C   sT   t  dg¡}| d¡}t d¡t d¡ }t||ƒ | ¡ }t|jd |j	kƒ d S )Nr   r,   g      $@r   )
r
   rƒ   Úacfr-   r.   r0   r   r   ÚshaperE   )rw   r‰   r•   r6   r   r   r%   Útest_acfu  s    

zTestArmaProcess.test_acfc                 C   sX   t  dg¡}| d¡}t ddgdgd  ¡}t||ƒ | ¡ }t|jd |jkƒ d S )Nr   r,   r   r   é   )	r
   rƒ   Úpacfr-   r.   r   r   r–   rE   )rw   r‰   r™   r6   r   r   r%   Ú	test_pacf~  s    

zTestArmaProcess.test_pacfc                 C   s`   t  dg¡}t|jdƒ t  ddg¡}t|jdƒ t  ddg¡}tt |j¡ƒ t|jdƒ d S )Ngš™™™™™ñ?Fry   r   Tg      ø?rL   )r
   rƒ   r   r~   r�   r-   rG   rz   )rw   r‰   r   r   r%   Útest_isstationary‡  s    z!TestArmaProcess.test_isstationaryc                 C   s0   t  g dg¡}| d¡}t|dt d¡ ƒ d S )Nrq   r>   rp   g      Y@)r
   rƒ   Zarma2arr   r-   r0   )rw   r‰   Úvalsr   r   r%   Útest_arma2ar’  s    
zTestArmaProcess.test_arma2arc                 C   sš   t  g dg¡}| d¡}t|jt ddg¡ƒ t  g dg¡}| d¡}t|jt ddg¡ƒ t  g dg¡}| d¡\}}t|dƒ t|t ddg¡ƒ d S )Ng      @Tr   rZ   Fr   )r
   rƒ   Zinvertrootsr   r3   r-   r.   r   )rw   r‰   rŠ   ÚrootsZ
invertabler   r   r%   Útest_invertroots—  s    


z TestArmaProcess.test_invertrootsc                 C   sÔ  t  dg¡}tj d¡ | ¡ }tj d¡ tj d¡}tddƒD ] }d||d   ||  ||< qBt||ƒ t  ddg¡}tj d¡ | ¡ }tj d¡ tj d¡}d|d  |d  |d< tddƒD ]0}d||d   d||d    ||  ||< qÊt||ƒ t  ddg¡}tj d¡ |jdd	�}tj d¡ tj d
¡}d|d  |d  |d< tdd
ƒD ]2}d||d   d||d    ||  ||< �qft||dd … ƒ tj d¡ |jdd�}t	|j
dƒ d S )Nr   i90  r>   r   r…   r   r   r   )Zburninrc   )r>   é   )Znsample)r
   rƒ   r-   rW   rX   Úgenerate_sampleZrandnr'   r   r   r–   )rw   r4   Úsampler6   r!   r   r   r%   Útest_generate_sample¥  s>    
&ÿ
&ÿ
z$TestArmaProcess.test_generate_samplec                 C   s.   t  dg¡}| d¡}t|dt d¡ ƒ d S )Nr   r,   )r
   rƒ   Zimpulse_responser   r-   r0   )rw   r4   rD   r   r   r%   Útest_impulse_responseË  s    
z%TestArmaProcess.test_impulse_responsec                 C   sV   t ƒ }| ¡ }t|d t dtjdd¡ƒ t|d t dtj ¡d t d¡ ƒ d S )Nr   r>   Fr   r   )r
   Zperiodogramr   r-   rg   rh   ÚsqrtZones)rw   r4   Zpgr   r   r%   Útest_periodogramÐ  s    z TestArmaProcess.test_periodogramN)Ú__name__Ú
__module__Ú__qualname__rx   r‚   r„   r‹   r”   r—   rš   r›   r�   rŸ   r£   r¤   r¦   r   r   r   r%   rt      s   5		&rt   ÚdÚseasonalTc                 C   sä   |s
dgndddddg}|s"dgndddddg}t  ||d¡}tjt dd	d	¡dd
d�}| d¡}| d	krtt |¡}tj	||d�}|rŠdnd }t
|d	| d	f|d�}| ¡ }	t  |	¡}
|r¼dnd}|
jj|ksÐt‚|
jj|ksàt‚d S )Nrq   r   r:   g{®GázÄ¿rZ   g{®Gáz´¿iô  il  r   ÚQ)ZperiodsÚfreq)Úindex)r   r   r   r   )ÚorderÚseasonal_order)r    )r   )r
   rƒ   ÚpdZ
date_rangeÚdtÚdatetimer¡   r-   ZcumsumZSeriesr	   ÚfitZfrom_estimationrr   r–   ÚAssertionErrorrv   )rª   r«   r2   r3   ZapÚidxÚdatar°   Úmodr5   Zap_fromr–   r   r   r%   Útest_from_estimation×  s    


r¹   )5r³   r²   Únumpyr-   Znumpy.testingr   r   r   r   r   r   Zpandasr±   ZpytestZstatsmodels.sandbox.tsa.fftarmar   Zstatsmodels.tsa.arima.modelr	   Zstatsmodels.tsa.arima_processr
   r   r   r   r   r   r   r   r   Zstatsmodels.tsa.tests.resultsr   Z-statsmodels.tsa.tests.results.results_processr   ZarlistZmalistZ	DECIMAL_4r+   r7   r8   r=   rM   rT   ÚmarkZparametrizerW   Zstandard_normalrY   r\   ra   rn   ro   rs   rt   r¹   r   r   r   r%   Ú<module>   sP    ,ü% X