U
    Kvf,                     @   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_vOgBiqg o_y?g/$g47ؿg^K=Ϳg}?5^gZӼ˿gׁsF?g6<R?gGr׿g	?gz6ÿg7[ Ag2U0*g$~?gea?gJY8Ϳgc]KgCl?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.Bk?   g      ?g?g?gP|?g?Zaxisr   )r   r	   xnparrayT)Zst_RX r   K/tmp/pip-unpacked-wheel-2v6byqio/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ͰHa?g{Ӯ_?gr䭏?g^ZTc?r   r   r      gpBA@g/%?ѷ@gEi@g   (a>g  >g ?   )	Zscipyr   r   r   r   r   r   ZskewtestZkurtosistest)r   st_pv_RntstZ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$   gVl@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   ?gw3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    r2   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?gVd?r   g\d@g+ww>r   r   gsO?gD>0?gY[?g!.،D?r   r   )
r   r   r   r   r   appendr+   r,   Zcolumn_stackr   )Zst_pvr   adr   r   r   test_adnorm   s*    



.r5   c                 C   s0   t jd}t|}tt|t|dd d S )N2   r$   r%   )r   r'   r(   pdZSeriesr   r	   )r)   r   Zx_seriesr   r   r   test_durbin_watson_pandas   s    
r8   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f975rA   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@r6   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 )NrJ   rK   )r   rL   rM   r   
ValueErrorr
   rN   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   rM   r   rN   rO   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      	         $@g1UUտ)r   r   r   r   rT   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   rV   rW   
   rX   )r   r   r   r   )rN   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 )Nd   r   )r   r'   r?   r   r   )rN   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#   r/   gUUUUUU?)r   r   r   r   )rN   r)   r   rO   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	   )rN   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   rZ   r\   r_   r   r'   r?   r`   ra   rb   tiler   Zsqueezeonesr	   rN   r)   shaper   rc   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)rZ   r   rZ   r\   r_   r   r   rd   rg   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@r/   )r   rM   r   r   r   zeros)rN   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   )rN   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   r/   )r   r'   r?   hstackrk   r   r   r   )rN   r)   r   rl   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   rZ   rZ   r   r   r   rZ   rZ   )r   r'   r?   rq   rk   re   r   r   )rN   r)   r   Zsk_3dresultrl   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medianrB   rA   r   r   )rN   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   )rN   r)   r   ro   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)rC   r   r   r   r   rD   rR   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 )Nrs   r   r   rt   )	r   re   rC   r   r   	enumeraterD   r   rf   )rN   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)rC   rD   rE   r   r   r   r   )rN   r   ry   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rX   g     F@F)abr   rJ   r   )rC   r   r   rA   r@   r   )rN   r   alphabetar   numZ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)Zdgr   rJ   r#   r   r   r   )rC   r   r   r@   r   )rN   r   deltagammar   qr   r   r   test_robust_kurtosis_dg6  s
    z%TestStattools.test_robust_kurtosis_dgN)__name__
__module____qualname__classmethodrI   rP   rS   rU   rY   r[   r]   r^   r   ri   rj   rm   rp   rr   rv   r{   r|   r}   r   r   r   r   r   r   r   r   r9      s.   
			r9   )Znumpyr   Zpandasr7   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-   r2   r5   r8   r9   r   r   r   r   <module>   s6   $           "!
