U
    Ãmœd¯,  ã                   @   sÔ   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mZmZmZmZmZmZ e ddddd	d
ddddddddddddddg¡Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ ZG d'd(„ d(ƒZdS ))é    N)Úassert_almost_equalÚassert_raisesÚassert_equalÚassert_allclose)Ú	normal_ad)Úomni_normtestÚjarque_beraÚdurbin_watsonÚ_medcouple_1dÚ	medcoupleÚrobust_kurtosisÚrobust_skewnessg¬­Ø_vO¾¿gÄB­iÞqõ¿g Òo_Îy?g/Ý$�•ã¿g4¢´7øÂØ¿g^KÈ=›Í¿g}?5^ºÉÀg”‡…ZÓ¼Ë¿gÜ×�sF”Ú?g6<½R–ý?gGrùé·×¿gÞ	Šï?g¼–�z6Ã¿g7À[ A¡¿g2U0*©÷¿g$—ÿ�~ûó?g‹ýe÷äaí?gõJY†8ÖÍ¿gñcÌ]KÈã¿g�•C‹lÇ?c                  C   s  d} t ttƒ| dƒ d} t ttd ƒ| dƒ d} t ttdd … dtd d…   ƒ| dƒ d	} t ttdd … d
td d…   ƒ| dƒ d} t ttdd … dtd d…   ƒ| dƒ t ttg¡}d} t t|dd�t | | g¡dƒ t t|jdd�t | | g¡dƒ d S )NgÒ{r?ÿ?é   gF@bÓ±”ý?é   g€.Bûk•ñ?é   g      à?éÿÿÿÿgæÇ­âýí?gš™™™™™é?g�æPÖ|í?gÍÌÌÌÌÌì?©Zaxisr   )r   r	   ÚxÚnpÚarrayÚT)Zst_RÚX© r   ú`/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/stats/tests/test_statstools.pyÚtest_durbin_watson   s    (((r   c                  C   s  ddl m}  t dddgdddgg¡}ttƒ}t||d d …df d	ƒ |  t¡}t||d d …d
f d	ƒ |  t¡}t||d d …df dƒ t dddgdddgg¡}td }t|ƒ}t||d d …df dƒ |  |¡}t||d d …d
f dƒ |  |¡}t||d d …df dƒ d S )Nr   )Ústatsg<NÊÊþó@gÉ?Pc¡ò¿gÍ°HŠÑaú?g¨{ôÓ®_Á?g¼rŸä­�Ð?g^ZóµTc¹?r   r   r   é   gñpñŽøBA@g/%ù?Ñ·@gÓEãiâ@g   ç(a>g  ° Îã>g ƒò¬?é   )	Zscipyr   r   r   r   r   r   ZskewtestZkurtosistest)r   Úst_pv_RÚntÚstÚktZx2r   r   r   Útest_omni_normtest5   s0    ÿÿ

ÿÿ

r"   c                 C   sP   t j dd¡}t|ƒ}t|dd�}t|jdd�}t||dd� t||dd� d S )Né   é   r   r   r   é   ©Údecimal)r   ÚrandomÚrandnr   r   r   )Úreset_randomstater   Znt1Znt2Znt3r   r   r   Útest_omni_normtest_axisV   s    r+   c                  C   sÆ   t  ddg¡} ttƒd d… }t|| dƒ t  ddg¡} ttd ƒd d… }t|| dƒ t  dd	g¡} tt  td ¡ƒd d… }t|| dƒ t  d
dg¡} tt  td  ¡ƒd d… }t|| dƒ d S )Ng@áÁ$Õuÿ?gƒ–VÛñ×?r   r   gS]ƒ•S@g        r%   gV´ùl³Ú@gë5Ç{j­?gÎ�š	1@g1‡%>Ñ?)r   r   r   r   r   ÚlogÚexp)r   Zjbr   r   r   Útest_jarque_bera`   s    r.   c                  C   sÀ   ddl m}  t ddg¡}| tƒ}t||dƒ t ddg¡}| td ƒt d	d
g¡ }t||dƒ t ddg¡}| t td ¡ƒ}t||dƒ t ddg¡}| t td  ¡ƒ}t||dƒ d S )Nr   )Úshapirog  úZî?gU¡¨+î«Î?é   g   à�â?gwÛ3gÓ’?r   r   g     ˆÃ@é   g   ÐŽZí?g¾
ƒ¶?g   80ê?gYd=
òZ?)Zscipy.statsr/   r   r   r   r   r,   r-   )r/   r   Úshr   r   r   Útest_shapiros   s    r3   c               
   C   s  g } t  ddg¡}ttƒ}t||dƒ |  |¡ t  ddg¡}ttd ƒ}t||dƒ |  |¡ t  dd	g¡}tt  td ¡ƒ}t||dƒ |  |¡ t  d
dg¡}tt  td  ¡ƒ}t||dƒ |  |¡ tt  ttd t  td ¡t  td  ¡f¡j	dd�}t|t  | ¡dƒ d S )Ng ÞÍopÆâ?gËV²dÂ�¼?r   g°\°dÏ@gá+w²w>r   r   g€sª÷Oß?g÷Dì>à0É?g Y–£Á[÷?g!.ØŒðçD?r   r   )
r   r   r   r   r   Úappendr,   r-   Zcolumn_stackr   )Zst_pvr   Úadr   r   r   Útest_adnorm‹   s*    



.ÿr6   c                 C   s0   t j d¡}t |¡}tt|ƒt|ƒdd� d S )Né2   r%   r&   )r   r(   r)   ÚpdZSeriesr   r	   )r*   r   Zx_seriesr   r   r   Útest_durbin_watson_pandas§   s    
r9   c                   @   sÀ   e Zd Z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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 ).ÚTestStattoolsc                 C   s  t j d¡}t  |d¡\}}}}}}}t  |d¡\}	}
}t  |d¡\}}}}t j}||||ƒ t  |¡ d ƒd }|| ||  ||  d }||||k ƒ||||	k  ƒ ||||
k ƒ||||
k  ƒ  d }|| ||  d	 }|| _t  ||||g¡| _t  dddd	g¡| _	d S )
Néè  )g      )@ç      9@g     ÀB@ç      I@g     @O@ç     ÀR@g     àU@)ç      @r=   g     ÀW@)g      @r<   r>   g     `X@g      @g      @g“Ü�ñÁºó?gÀ²ËŽ‹®@gQÖÄ¯,?@)
r   r(   Ústandard_normalÚ
percentileÚmeanÚstdÚ
kurtosis_xr   Úexpected_kurtosisÚkurtosis_constants)Úclsr   Úe1Úe2Ze3Ze4Ze5Ze6Ze7Zc05Zc50Zc95Zf025Zf25Zf75Zf975rB   Zkr1Zkr2Zkr3Zkr4r   r   r   Úsetup_class®   s    "DzTestStattools.setup_classc                 C   s4   t  t  d¡d¡}t|d d�}t|t| ¡ ƒƒ d S )Nç      Y@©r7   r   r   )r   ÚreshapeÚaranger   r   Zravel)Úselfr   Úmcr   r   r   Útest_medcouple_no_axis½   s    z$TestStattools.test_medcouple_no_axisc                 C   s"   t  t  d¡d¡}ttt|ƒ d S )NrK   rL   )r   rM   rN   r   Ú
ValueErrorr
   ©rO   r   r   r   r   Útest_medcouple_1dÂ   s    zTestStattools.test_medcouple_1dc                 C   s   t t d¡ƒ}t|dƒ d S )Nr?   r   )r   r   rN   r   ©rO   rP   r   r   r   Útest_medcouple_symmetricÆ   s    z&TestStattools.test_medcouple_symmetricc                 C   s&   t t dddddg¡ƒ}t|dƒ d S )Nr   r   é   é	   ç      $@g‡¼Š1UUÕ¿)r   r   r   r   rU   r   r   r   Útest_medcouple_nonzeroÊ   s    z$TestStattools.test_medcouple_nonzeroc                 C   s>   t t dddddg¡ƒ}t t dddddg¡ƒ}t||ƒ d S )Nr   r   rW   rX   é
   rY   )r   r   r   r   )rO   Zmc1Zmc2r   r   r   Útest_medcouple_intÎ   s    z TestStattools.test_medcouple_intc                 C   s0   t j d¡}t|ƒ}t| ƒ}t|| dƒ d S )Néd   r   )r   r(   r@   r   r   )rO   r*   r   ZmcpZmcnr   r   r   Útest_medcouple_symmetryÔ   s    
z%TestStattools.test_medcouple_symmetryc                 C   s*   t  dddddg¡}t|ƒ}t|dƒ d S )Nr   r   r$   r0   gUUUUUUÅ?)r   r   r   r   )rO   r*   r   rP   r   r   r   Útest_medcouple_tiesÚ   s    z!TestStattools.test_medcouple_tiesc                 C   s<   t j d¡}tt  |¡d ƒt  ||¡ }t|t|ƒƒ d S )Nr]   ç       @)r   r(   r@   ÚsumÚdiffÚdotr   r	   )rO   r*   r   Údwr   r   r   r   ß   s    z TestStattools.test_durbin_watsonc                 C   sh   d}t j d¡}tt  |¡d ƒt  ||¡ }t  |d d …d f |¡}tt  |t  	|¡ ¡t
|ƒƒ d S )N)r   r[   r]   r`   ©r   r(   r@   ra   rb   rc   Útiler   ZsqueezeÚonesr	   ©rO   r*   Úshaper   rd   r   r   r   Útest_durbin_watson_2dä   s
    z#TestStattools.test_durbin_watson_2dc                 C   sn   d}t j d¡}tt  |¡d ƒt  ||¡ }t  |d d d …d f |¡}tt  |t  	|¡ ¡t
|dd�ƒ d S )N)r[   r   r[   r]   r`   r   r   re   rh   r   r   r   Útest_durbin_watson_3dë   s
    z#TestStattools.test_durbin_watson_3dc                 C   s,   t  d¡}t|ƒ}tt  |¡t  d¡ƒ d S )Ng      5@r0   )r   rN   r   r   r   Úzeros)rO   r   Úskr   r   r   Útest_robust_skewness_1dò   s    
z%TestStattools.test_robust_skewness_1dc                 C   sJ   t j d¡}|d d …d f }t|ƒ}t|d d�}tt  |¡t  |¡ƒ d S )Né   r   )r   r(   r)   r   r   r   )rO   r*   r   ÚyZsk_xZsk_yr   r   r   Útest_robust_skewness_1d_2d÷   s
    z(TestStattools.test_robust_skewness_1d_2dc                 C   sF   t j d¡}t  |t  d¡| g¡}t|ƒ}tt  |¡t  d¡ƒ d S )Nr]   r   r0   )r   r(   r@   Úhstackrl   r   r   r   )rO   r*   r   rm   r   r   r   Útest_robust_skewness_symmetricþ   s    z,TestStattools.test_robust_skewness_symmetricc                 C   s^   t j d¡}t  |t  d¡| g¡}t  |d¡}t|dd�}t  d¡}|D ]}t||ƒ qJd S )Nr]   r   ©r[   r[   r   r   r   ©r[   r[   )r   r(   r@   rr   rl   rf   r   r   )rO   r*   r   Zsk_3dÚresultrm   r   r   r   Útest_robust_skewness_3d  s    
z%TestStattools.test_robust_skewness_3dc                 C   sd   t j d¡}||dk  d9  < t  |¡}|jdd�}| ¡ | | }t|ƒ\}}}}t||ƒ d S )Nr;   r   r$   )Zddof)r   r(   r@   ZmedianrC   rB   r   r   )rO   r*   r   ÚmÚsÚexpectedÚ_Zsk4r   r   r   Útest_robust_skewness_4  s    
z$TestStattools.test_robust_skewness_4c                 C   sJ   t j d¡}|d d …d f }t  t|ƒ¡}t  t|d d�¡}t||ƒ d S )Nr]   r   )r   r(   r)   r   r   r   )rO   r*   r   rp   Zkr_xZkr_yr   r   r   Útest_robust_kurtosis_1d_2d  s
    z(TestStattools.test_robust_kurtosis_1d_2dc                 C   s    | j }tt t|ƒ¡| jƒ d S )N)rD   r   r   r   r   rE   rS   r   r   r   Útest_robust_kurtosis  s    z"TestStattools.test_robust_kurtosisc                 C   sP   t  | jd¡}t  t|dd�¡}t| jƒD ] \}}t|t  d¡ || ƒ q*d S )Nrt   r   r   ru   )	r   rf   rD   r   r   Ú	enumeraterE   r   rg   )rO   r   ÚkurtosisÚiÚrr   r   r   Útest_robust_kurtosis_3d!  s    z%TestStattools.test_robust_kurtosis_3dc                 C   s2   | j }| j| j }t t|dd�¡}t||ƒ d S )NF)Úexcess)rD   rE   rF   r   r   r   r   )rO   r   rz   r€   r   r   r   Ú!test_robust_kurtosis_excess_false'  s    z/TestStattools.test_robust_kurtosis_excess_falsec              	   C   s¨   | j }d\}}t| j ||fdd�}t ||t |d| ¡k ¡t ||t ||¡k  ¡ }t ||t |d| ¡k ¡t ||t ||¡k  ¡ }t|d || ƒ d S )N©rY   g     €F@F)Úabr„   rK   r   )rD   r   r   rB   rA   r   )rO   r   ÚalphaÚbetar€   ÚnumÚdenomr   r   r   Útest_robust_kurtosis_ab-  s    88z%TestStattools.test_robust_kurtosis_abc                 C   sl   | j }d\}}t| j ||fdd�}t ||d| |d| g¡}t|d |d |d  |d |d   ƒ d S )	Nr†   F)Údgr„   rK   r$   r   r   r   )rD   r   r   rA   r   )rO   r   ÚdeltaÚgammar€   Úqr   r   r   Útest_robust_kurtosis_dg6  s
    z%TestStattools.test_robust_kurtosis_dgN)Ú__name__Ú
__module__Ú__qualname__ÚclassmethodrJ   rQ   rT   rV   rZ   r\   r^   r_   r   rj   rk   rn   rq   rs   rw   r|   r}   r~   rƒ   r…   rŒ   r‘   r   r   r   r   r:   ­   s.   
			r:   )Únumpyr   Zpandasr8   Znumpy.testingr   r   r   r   Zstatsmodels.stats._adnormr   Zstatsmodels.stats.stattoolsr   r   r	   r
   r   r   r   r   r   r   r"   r+   r.   r3   r6   r9   r:   r   r   r   r   Ú<module>   s6   $           þ"!
