U
    md                  
   @   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)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   f/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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   AssertionErrorr6   r7   summaryr   Zas_textstrr   r   r   resr   r   r   test_description_basicO   s*    

rD   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@   r1   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   r2   rC   r0   r   r   r   test_odd_percentilesi   sd                                           rT   c                 C   s    t | dd}d|jjkstd S )N   r5   Ztop_15)r   r>   rR   r?   rB   r   r   r   test_large_ntopw   s    rV   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   rJ   r?   rI   )r   rC   Zres_tr   r   r   
test_use_t|   s    rW   )ci)rJ   rI   )rN   )rN   rO   )rP   )rP   rQ   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   rZ   r   r   r   r]      s     statc                 C   s   g | ]}|d  qS )r   r   )r[   sr   r   r   r]      s     )Z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   )r[   str   r   r   r]      s     z&test_special_stats.<locals>.<listcomp>r   r/   r$   )r   Zdefault_statisticsremover>   rR   r?   )r   r_   Z	all_statsrC   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%   rG   rF   )r   nanr   r>   re   Zdropnashaper?   )r   rC   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   locrR   ri   r   testingassert_allcloser>   re   rk   rB   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   rH   N)	r   rm   rn   r   r>   rl   scipyr0   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   ).numpyr   Znumpy.testingr   r   Zpandasr   Zscipy.statsrp   r9   Zstatsmodels.iolib.tabler   Z"statsmodels.stats.descriptivestatsr   r   r   markfilterwarningsZ
pytestmarkZfixturer   r    Zdata5arrayfloatintZdata1Zdata2Zdata3Zdata4r<   rD   rT   rV   rW   tuplerK   ZSPECIALZparametrizerd   rh   Zskipifhasattrro   rq   rr   r   r   r   r   <module>   s`   




	 ,4	

	
