U
    Kvf                  
   @   s  d dl Zd dlmZmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZ e	jdZe	jdddd	 Zd
d ZddddgddddgddddggZejdddgdefdefddgdZejdd d!gdefdefgdZejd"d#d$d$gd#d%d%d%gd#d$d$d%ggedZed"d#d%d$d&d'gd'd&d$d%d#d"gd(d(d(d(d(d(ggZd)d* Zd+d, Zd-d. Z d/d0 Z!d1d2 Z"d3d4d5d6e#d7d8 e$d"d'D fd9e#d:d8 e$d"d'D ffZ%e	jj&d;e%d<d8 e%D d=d>d? Z'd@dA Z(e	jj)e*edB dCdDdEdF Z+dGdH Z,dIdJ Z-dS )K    N)assert_almost_equalassert_equal)SimpleTable)Descriptiondescribe	sign_testz=ignore::DeprecationWarning:statsmodels.stats.descriptivestatsfunction)Zscopec                  C   s:   t jdd} tjt dd dd}t| |dS )Nr   d   
   categoryZdtypeab)nprandomZRandomStateZstandard_normalpdSeriesarange	DataFramer    r   Q/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/stats/tests/test_descriptivestats.pydf   s    r   c                  C   sD   ddddddddd	d
dg} t | dd\}}t|dd t|d d S )Ng333333@gffffff@g      @g@g333333@      @g@gffffff@g@gffffff@g333333@)Zmu0gf?      )r   r   r   )xMpr   r   r   test_sign_test   s    r      ZBobTg333333?)   ZJohnFg      ?   ZAliceg333333?)      r   Zaa)r$      r   Zbb)r$   r   r   ccalphabeta)gammaz|S1)deltaz|S2r   )r#   r$   )r$   r%   )r$   r   r#   r$   r   r%   r      	   c               	   C   s
  t jtdt tdd ddd} tt t	| dgd W 5 Q R X tt t	| dd	 W 5 Q R X tt t	| d
dgd W 5 Q R X tt t	| ddddgd W 5 Q R X tt t	| dd W 5 Q R X tt t	| ddd W 5 Q R X d S )Nr	   r
   r   r   r   unknownstatsg333333ӿ)r'   r   percentiles   r"   ZntopF)numericcategorical)
r   r   r   emptyr   r   pytestZraises
ValueErrorr   r   r   r   r   test_description_exceptions<   s     r;   c                 C   sv  t | }t|jtjstt|jtjs,tt|jtjs>tt| t	sPtt| 
 tsftdt|ksvtt | j}t|jtjstt|jtjstt|jtjstt| t	stt| 
 tstdt|kstt | j}t|jtjstt|jtjs tt|jtjs4tt| t	sHtt| 
 ts`tdt|ksrtd S )NZDescriptive)r   
isinstanceframer   r   AssertionErrorr5   r6   summaryr   Zas_textstrr   r   r   resr   r   r   test_description_basicO   s*    

rC   c              .   C   s   t ddd}t| |d}ddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2g.}t|jj | d S )3Nr   g     @W@   r0   nobsmissingZmeanstd_errupper_cilower_ciZstdZiqrZ
iqr_normalZmadZ
mad_normalZcoef_varrangemaxminZskewZkurtosisjarque_berajarque_bera_pvalmode	mode_freqZmedianZdistinctZtop_1Ztop_2Ztop_3Ztop_4Ztop_5Zfreq_1Zfreq_2Zfreq_3Zfreq_4Zfreq_5z7.0%z14.1%z21.3%z28.5%z35.6%z42.8%z50.0%z57.1%z64.3%z71.5%z78.6%z85.8%z93.0%)r   Zlinspacer   r   r=   indextolist)r   r1   rB   r/   r   r   r   test_odd_percentilesi   sd                                           rS   c                 C   s    t | dd}d|jjkstd S )N   r4   Ztop_15)r   r=   rQ   r>   rA   r   r   r   test_large_ntopw   s    rU   c                 C   sH   t | }t | dd}|jjj|jjjk s,t|jjj|jjjksDtd S )NT)Zuse_t)r   r=   r   rI   r>   rH   )r   rB   Zres_tr   r   r   
test_use_t|   s    rV   )ci)rI   rH   )rM   )rM   rN   )rO   )rO   rP   topc                 C   s   g | ]}d | qS )Ztop_r   .0ir   r   r   
<listcomp>   s     r\   freqc                 C   s   g | ]}d | qS )Zfreq_r   rY   r   r   r   r\      s     statc                 C   s   g | ]}|d  qS )r   r   )rZ   sr   r   r   r\      s     )idsc                 C   sL   dd t jD }||d  t | |d}|d D ]}||jjks2tq2d S )Nc                 S   s   g | ]}|qS r   r   )rZ   str   r   r   r\      s     z&test_special_stats.<locals>.<listcomp>r   r.   r#   )r   Zdefault_statisticsremover=   rQ   r>   )r   r^   Z	all_statsrB   valr   r   r   test_special_stats   s
    rd   c                 C   s|   t j| d< t| }|jj }|jd dks0td|ks<td|ksHtt j| d< t| j}|j }|jd dksxtd S )Ncr   r$   rF   rE   )r   nanr   r=   re   Zdropnashaper>   )r   rB   Zdroppedr   r   r   test_empty_columns   s    



rh   NAzMust support NA)reasonc                 C   s   t td| d< t jtdt  d| d< tj| j| jd d d df< t j| j| jd d d df< t	| }tj
|jj|jj d S )Ng      Y@re   r	   r   dr$   )r   r   r   r   Z
Int64Dtyperf   locrQ   ri   r   testingassert_allcloser=   re   rk   rA   r   r   r   test_extension_types   s    ro   c                 C   s.   t jt| d jjd tj| d  dS )zQ
    Test the standard error of the mean matches result from scipy.stats.sem
    r   rG   N)	r   rm   rn   r   r=   rl   scipyr/   Zsemr:   r   r   r   test_std_err   s    rq   c                 C   s   t jt| t| j d S )N)r   rm   Zassert_frame_equalr   r   r=   r:   r   r   r   test_describe   s    rr   ).Znumpyr   Znumpy.testingr   r   Zpandasr   Zscipy.statsrp   r8   Zstatsmodels.iolib.tabler   Z"statsmodels.stats.descriptivestatsr   r   r   markfilterwarningsZ
pytestmarkZfixturer   r   Zdata5arrayfloatintZdata1Zdata2Zdata3Zdata4r;   rC   rS   rU   rV   tuplerJ   ZSPECIALZparametrizerd   rh   Zskipifhasattrro   rq   rr   r   r   r   r   <module>   s`   




	 ,4	

	
