U
    KvfD                     @   s  d dl mZ 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" Z0d#d$ Z1ej+,de"ej+,de#d%d& Z2ej+,de"ej+,de#d'd( Z3d)d* Z4G d+d, d,Z5ej+,d-d d
gej+,d.d/gd0d1 Z6dS )2    )QUARTER_ENDN)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   L/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tsa/tests/test_arima_process.py
<listcomp>7   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_persistent;   s    

r8   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'   W   s     z!test_arma_acf.<locals>.<listcomp>r   r   )r   r.   r/   r(   r   )r)   r*   r0   r+   r   r#   r&   test_arma_acfN   s    r9   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leadsr:   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)r3   r4   rF   Znobs_irr0   r   rC   r&   arma_acovf_historicalw   s     zKtest_arma_acov_compare_theoretical_arma_acov.<locals>.arma_acovf_historicalr         r;   gGz)r-   )r   r   )rL   r   r   r&   ,test_arma_acov_compare_theoretical_arma_acovq   s    
rN   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 )Nr:   r   )rK   rJ   r(   r.   rA   listappendr/   )	r3   r4   etaTpqr+   rB   Zytr   r   r&   _manual_arma_generate_sample   s    4rU   r3   r4   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distrvsr:   r      )r.   randomseedr   r/   rU   r   )	rV   r3   r4   rR   rQ   r*   Z	ar_paramsZ	ma_paramsr+   r   r   r&   test_arma_generate_sample   s    rZ   c                  C   s2   d} t td| ddg| }t|td| dd d S )Nr?   皙?)nr   rW   )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   r4   r3   r   marepZravelarrep)ra   r`   r   r   r&   test_arma_impulse_response   s    rb   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)re   err_msgzspdr spdp not equal for %s, %s)	r.   linspacepir	   ZspdrootsZspdpolyZ	spddirectr   r   )r3   r4   nfreqwarmaZspdrwrZspdpZwpZspddwdr   r   r&   test_spectrum   s*    




ro   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   Frc   i   r-   gV瞯<zacovf not equal for %s, %s)Zatolrg   )r.   rh   ri   r	   Zinvpowerspdr0   r   )r3   r4   rj   rk   rl   Zac1Zac2r   r   r&   test_armafft   s       
rp   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   )r5   ZcoefsZlocsr3   r   r   r&   test_lpol2index_index2lpol   s    
rt   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   rq   rr   r4   )r   r   rs   r.   r/   macoefs)selfr5   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   r:   r   )r3   )arrootsrv   )maroots)insertr.   r/   r   Z
from_rootsr|   r{   r   rs   rw   rF   isinvertibleisstationary)rx   r3   r4   ar_pma_pprocess_directr5   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 )Nrz   r   r   r   r:   r   )r   from_coeffsr.   r/   r}   r   rs   rw   rF   r|   r{   r~   r   )rx   r3   r4   r5   r   r   r   r   r   r&   test_from_coeffE  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   rs   r.   r/   rw   r   	TypeError__mul__)rx   process1process2Zprocess3r   r   r&   test_process_multiplicationX  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]r:   zMA: [1.0, 0.2]znobs=100zat )
r   r   __str__printr   find__repr__strhexid)rx   r   outr   r   r&   test_str_reprl  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/   r1   r   r   shaperF   )rx   r   r   r7   r   r   r&   test_acfw  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   rF   )rx   r   r   r7   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?Frz   r   Tg      ?rM   )r   r   r   r   r   r.   rH   r{   )rx   r   r   r   r&   test_isstationary  s    z!TestArmaProcess.test_isstationaryc                 C   s0   t g dg}|d}t|dtd  d S )Nrr   r?   rq   g      Y@)r   r   Zarma2arr   r.   r1   )rx   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   r[   Fr   )r   r   Zinvertrootsr   r4   r.   r/   r   )rx   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burninrd   )r?      )Znsample)r   r   r.   rX   rY   generate_sampleZrandnr(   r   r   r   )rx   r5   sampler7   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.   r1   )rx   r5   rE   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.   rh   ri   sqrtZones)rx   r5   Zpgr   r   r&   test_periodogram  s    z TestArmaProcess.test_periodogramN)__name__
__module____qualname__ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   ru     s   5		&ru   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t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 )Nrr   r   r;   g{GzĿr[   g{Gzi  il  r   )Zperiodsfreq)index)r   r   r   r   )orderseasonal_order)r   )r   )r   r   pdZ
date_rangedtdatetimer   r   r.   ZcumsumZSeriesr
   ZfitZfrom_estimationrs   r   AssertionErrorrw   )r   r   r3   r4   Zapidxdatar   modr6   Zap_fromr   r   r   r&   test_from_estimation  s    


r   )7Zstatsmodels.compat.pandasr   r   r   Z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,   r8   r9   r>   rN   rU   markZparametrizerX   Zstandard_normalrZ   r]   rb   ro   rp   rt   ru   r   r   r   r   r&   <module>   sR    ,% X