U
    mdC                     @   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   gCl
   g  B@gCl?)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{Gz)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 rt 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:   gGz)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    ||  ||< qt|| 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}|rdnd }t
|d	| d	f|d}| }	t |	}
|rdnd}|
jj|kst|
jj|kstd S )Nrq   r   r:   g{GzĿrZ   g{Gzi  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