a
    /'a"                    @   s  d Z ddl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	 ddl
m  mZ ddlmZ ddlmZ ddlZddlmZ dd	lmZmZmZmZmZmZmZ dd
lmZ ddlmZ G dd dZdAddZ dBddZ!G dd dZ"G dd dZ#G dd dZ$G dd dZ%G dd dZ&G dd dZ'G dd  d Z(G d!d" d"Z)G d#d$ d$Z*d%d& Z+d'd( Z,d)d* Z-d+d, Z.G d-d. d.Z/G d/d0 d0Z0G d1d2 d2Z1G d3d4 d4Z2G d5d6 d6Z3G d7d8 d8Z4G d9d: d:Z5G d;d< d<Z6G d=d> d>Z7G d?d@ d@Z8dS )Cz?
Tests for the stats.mstats module (support for masked arrays)
    N)nan)maskednomask)stats   )check_named_results)raises)assert_equalassert_almost_equalassert_array_almost_equalassert_array_almost_equal_nulpassert_assert_allcloseassert_array_equal)suppress_warnings)mstats_basicc                   @   s   e Zd Zdd ZdS )TestMquantilesc                 C   s   t g dg dg dg dg dg dg dg dg d	g d
g dg}g dg dg dg}tj|ddd}t|| d S )N)      @      @      ?)g     G@      .@       @)g     H@      B@      @)r        C@      @)      E@      D@     8)     D@r   r   )r   r   r   )r   r   r   )g     E@r   r   )r   r   r   )r   r   r   )g3333333@g333333-@g333333?)r   g     B@      @)gffffffE@gfffffD@gffffff@r   )r   2   )axislimit)nparraymstatsZ
mquantilesr
   )selfdatadesiredZquants r*   Blib/python3.9/site-packages/scipy/stats/tests/test_mstats_basic.pytest_mquantiles_limit_keyword   s$    
z,TestMquantiles.test_mquantiles_limit_keywordN)__name__
__module____qualname__r,   r*   r*   r*   r+   r      s   r   Hz>c                 C   s.   t j| ||d}t|||d t|j| d S N)r"   dtypertol)r&   gmeanr   r	   r2   Z
array_liker)   r"   r2   r4   xr*   r*   r+   check_equal_gmean,   s    r8   c                 C   s.   t j| ||d}t|||d t|j| d S r1   )r   hmeanr   r	   r2   r6   r*   r*   r+   check_equal_hmean2   s    r:   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
eed dddd Zdd ZdS )TestGeoMeanc                 C   s&   g d}t dd}t||dd d S )Nr                     ?+=r3   )r$   powerr8   r'   ar)   r*   r*   r+   test_1d9   s    zTestGeoMean.test_1dc                 C   sP   t g d}d}t|| t jg dg dd}tdd}t||dd	 d S )
N

         (   r!   <   F   P   Z   d   gsŤF@r<   r   r   r   r   mask   UUUUUU?rB   r3   )mar%   r8   r$   rC   rD   r*   r*   r+   
test_1d_ma>   s    
zTestGeoMean.test_1d_mac                 C   s*   t jjg dg dd}d}t|| d S )NrG   
r   r   r   r   r   r   r   r   r   r   rR   dq_D@)r$   rV   r%   r8   rD   r*   r*   r+   test_1d_ma_valueH   s    zTestGeoMean.test_1d_ma_valuec                 C   sN   t jg d}d}t jdd t|| W d    n1 s@0    Y  d S )N)
rH   rI   rJ   rK   r!   rL   rM   rN   rO   r   rY   ignore)Zdivider$   rV   r%   errstater8   rD   r*   r*   r+   test_1d_ma0N   s    zTestGeoMean.test_1d_ma0c                 C   sN   t jg d}d}t jdd t|| W d    n1 s@0    Y  d S )N)
rH   rI   rJ   rK   r!   rL   rM   rN   rO   rY   r[   )Zinvalidr\   rD   r*   r*   r+   test_1d_ma_infU   s    zTestGeoMean.test_1d_ma_inffloat96cannot find float96 so skippingreasonc                 C   s@   t jg dg dd}tddtj}t||tjdd d S )Nr<   rQ   rR   rT   rU   rB   )r2   r4   )rV   r%   r$   rC   astypera   r8   r'   rE   Z
desired_dtr*   r*   r+   test_1d_float96\   s    zTestGeoMean.test_1d_float96c                 C   s   t jg dg dg dgg dg dg dgd}tg d}t||ddd t td	d
tddtddg}t||ddd g dg dg dg}d}ttj || d S )Nr<   r   r   r   r   r   r   r   r   r   r   r   r   rR   r   rB   r"   r4   r@   rA   rT         ?r?   r_   rH   rI   rJ   rK   r!   rL   rM   rN   rO   rP   n   x   g/,$qJ@)rV   r%   r$   r8   rC   rD   r*   r*   r+   
test_2d_mab   s    

zTestGeoMean.test_2d_maN)r-   r.   r/   rF   rW   rZ   r^   r`   pytestmarkskipifhasattrr$   rg   rr   r*   r*   r*   r+   r;   8   s   

r;   c                   @   s<   e Zd Zdd Zejjeed dddd Z	dd	 Z
d
S )TestHarMeanc                 C   sp   t jg dg dd}d}t||dd tj g d}d}t|| tj jg dg d	d}d
}t|| d S )Nr<   rQ   rR   /袋.?rB   r3   rG   g=b#A@rX   gO?@rV   r%   r:   r$   rD   r*   r*   r+   rF   t   s    
zTestHarMean.test_1dra   rb   rc   c                 C   s:   t jg dg dd}tjdtjd}t||tjd d S )Nr<   rQ   rR   rx   r2   )rV   r%   r$   asarrayra   r:   rf   r*   r*   r+   rg      s    zTestHarMean.test_1d_float96c                 C   s   t jg dg dg dgg dg dg dgd}t g d}t||ddd g d	}t||d
dd g dg dg dg}d}ttj || d S )Nr<   rh   ri   rj   rR   r   rB   rk   )gQ?g433333@g?r_   rm   rn   ro   gmWUC@ry   rD   r*   r*   r+   test_2d   s    zTestHarMean.test_2dN)r-   r.   r/   rF   rs   rt   ru   rv   r$   rg   r|   r*   r*   r*   r+   rw   s   s   
rw   c                   @   s   e Zd Zdd ZdS )TestRankingc                 C   s   t g d}tt|g d t|ddg< tt|g d ttj|ddg d t g d	}tt|g d
 t g dg dg}tt|g dg dg ttj|ddg dg dg ttj|ddg dg dg d S )N)
r   r   r   r   r=   r>   r?      r~   rT   )
r   r>   r>   r>   r~   rT            !@r   rH   r>   r?   )
r   r    r    r   r   r?   r~         @r      T)Zuse_missing)
r   r    r          @r   r?   r~   r   r   r   )
r   r   r~   r   r=   r?   r>   r~   r   rT   )
r   r>   r   r>   r~   r   rT   r   r>   rH   )r   r   r   r   r=   )r>   r?   r~   r~   rT   )r   r>   r>   r>   r~   )rT   r   r   r   rH   r   r"   )r   r=         @r   r~   r   r   r   r   r   r   r=   r=   r=   r=   r=   )rV   r%   r
   r&   rankdatar   r'   r7   r*   r*   r+   test_ranking   s2    



zTestRanking.test_rankingN)r-   r.   r/   r   r*   r*   r*   r+   r}      s   r}   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zejj	e
 d	kd
ddd Zejj	e
 d	kd
dejjdd Zdd Zdd Zejjdd Zdd ZdS )TestCorrc           
   	   C   sV  t d}t  tdt tt||d d tt||d d d d d t j	|dd}t||}t
|d tu  t
|d	 tu  W d    n1 s0    Y  t 	g d
}t 	g d}t||\}}t|tdd  t|d g d}t j	g d|d}t j	g d|d}	t||	\}}t|tdd  t|d d S )NrH   errorr   r   r_         TrR   r   )r           r   )r   r   r>   r>   r=   rU   )FFFT)r   r   r   g     X@)r   r   r>   r_   )rV   arangewarningscatch_warningssimplefilterRuntimeWarningr
   r&   pearsonrr%   r   r   r$   sqrt)
r'   r7   ZprZx1Zy1rprS   Zx2Zy2r*   r*   r+   test_pearsonr   s(    

 .
zTestCorr.test_pearsonrc           	      C   s   t jjg dg dd}t jjg dg dd}t g d}t g d}t||\}}t||\}}t|| t|| d S )Nr   r=   r>   r?   r~   rT   )r   r   r   r   r   r   rR   )	   r   r   rT   r~   r   )r   r   r   r   r   r   )r   r?   r~   rT   )r   rT   r~   r   )r$   rV   masked_arrayr%   r&   r   r   r	   )	r'   ZmxZmyr7   yZmrZmpr   r   r*   r*   r+   test_pearsonr_misaligned_mask   s    
z&TestCorr.test_pearsonr_misaligned_maskc                 C   s  g dg d }}t t||d d ddddtjgd	d
d
dtjg }}t|t| }}t t||d d g d}g d}t t||d d dddddddddddddddtjg}dddd d!d"d#d$d%d"dd&dd'dtjg}t|t| }}t t||d d ttd(}ttd(}|d) |d  |d< |d)< |d* |d+  |d+< |d*< |d, |d-  |d-< |d,< t t||d d. t||}d/}t	||d0d1 d S )2N)333333@      @Gz	@HzG@)ffffff?Q@r   @r   gIQ=r   r   r   r   r   r   r   r   33333G@r   皙%@N@333333?      P@̌O@r   ffffff?皙@333333?333333@r   @皙6@皙 @333333F@'@皙8@333333?@D@r   r   r   ffffff@r   333333?r   gI
?r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     r   i  rH   i  i  gV-?ZcorrelationpvalueTrV   )
r
   r&   	spearmanrr$   r   rV   fix_invalidlistranger   r'   r7   r   res
attributesr*   r*   r+   test_spearmanr   s2    "zTestCorr.test_spearmanrc                 C   sh  g d}g d}d}t ||\}}t|| t|d t j||dd\}}t|| t|d t j||dd\}}t|| t|d	 d
}tdd|}d| tj| }t ||\}}t j||dd\}	}
t|
|d  t j||dd\}}t|d|d   ||	  kr|ks$n J tjt	dd  t j||dd W d    n1 sZ0    Y  d S )Nr   r   g+;
?gr?greateralternativegb?lessgcH}?rP   r   r~   皙?r=   r   zalternative must be 'less'...)matchz	ekki-ekki)
r&   r   r   r$   linspacerandomZrandrs   r   
ValueError)r'   r7   r   Zr_expr   r   nZstat1p1Zstat2p2Zstat3p3r*   r*   r+   test_spearmanr_alternative   s.    





z#TestCorr.test_spearmanr_alternativeZppc64lezfails/crashes on ppc64lerc   c                 C   s  t tg d}t tg d}ddg}ttt||| t td}t td}ddg}ttt||| tt	tj||dd |d	 }|d
 |d	< ||d
< ddg}ttt||| |d }|d |d< ||d< ddg}ttt||| t td}t tdd d d }ddg}ttt||| |d	 }|d
 |d	< ||d
< ddg}ttt||| |d }|d |d< ||d< ddg}ttt||| t 
ddddtjg}t 
ddddtjg}t 
ddddtjg}ttt||dd g tttj||d!ddd"g ttt||d#d$g t 
d%d%d%d%d&d&d%d'd%d&ddd%d(d%d&d%d%d%d%d%tjg}t 
d%d)d)d)dd*d'd%d+d,d-d)d)d)d)d)d)d%dd.tjd%g}t||}tt|d/d0g d1}t||d2d3 d S )4N)r   r=   r~   rT   )r?   r   r      r   r   rH   gxO~>Zbananamethodr   r=   g?>?gaV>r~   rT   g}'}'?go&5>r_   r   g?>g}'}'r   r   r   r   r   g     :@gQgףp=
@r   r   g1UU?      ?Z
asymptoticglgN?g~ȋgQM?r   rI   rL   rK   rN   !   C         -   gXJĿgvPwTk?r   Tr   )rV   r%   r$   r
   r{   r&   
kendalltaur   assert_raisesr   r   r   r   )r'   r7   r   expectedbzresultr   r*   r*   r+   test_kendalltau)  sn    zTestCorr.test_kendalltauc                 C   sd   t jdtd}t|d}t jdtd}t |dd  |d d f}tt t	||d  d S )Nr   rz   i    r   )
r$   r   floatrV   Zmasked_greaterZconcatenater   Zisfiniter&   r   )r'   r7   r   r*   r*   r+   test_kendalltau_large  s
    zTestCorr.test_kendalltau_largec                 C   s   t t dddddddddddgg ddddd	d
ddddt ddt gt d	dddt d	ddddddgg}t|j}t|}t|d dd t|d dg d d S )Nr?   r=         r~   r   r>   r?   r>   r~   r>   r=   r   r>   r   r   r=   r>   r~   r>   rT      r   r      zglobal p-value (indep)gMb?zseasonal p-value)g
ףp=
?g(\?皙?g{Gz?)r   rV   r   Tr&   Zkendalltau_seasonalr
   round)r'   r7   outputr*   r*   r+   test_kendalltau_seasonal  s    
z!TestCorr.test_kendalltau_seasonalc              	   C   sJ   ddddddddd}|  D ]&\}}t|d |d	 }t|| qd S )
Ng遣m?g:4W?g,
:H r   gK?g(6?))rP   iY	  )e   i	  )   r   )   r   )r   r   )   r   )   iE&  )   i%  r   r   itemsr   Z_kendall_p_exactr
   r'   ZexpectationsZncr   r   r*   r*   r+   test_kendall_p_exact_medium  s    z$TestCorr.test_kendall_p_exact_mediumc                 C   sF   ddddddd}|  D ]&\}}t|d |d	 }t|| qd S )
NgE?gU`Ux<?gve?gZ?g=?gG?))i  i5  )i  i\  )i   idd )i!  ih )i@  i 	 )iA  i 	 r   r   r   r   r*   r*   r+   test_kendall_p_exact_large  s    z#TestCorr.test_kendall_p_exact_largec              #   C   s   g 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t jg#}tt||d d d! t||}d"}t||d#d$ d S )%N)#r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_   g-@g+@g(@g333333$@gffffff@gffffff@g333333@gffffff@g333333@r   gffffff
@g	@r   gffffff@r    g333333@gffffff@g @r   g      ?g?r   g?皙?gffffff?r   rl   r   r   r   g/"?r~   r   Tr   )r$   r   r
   r&   Zpointbiserialrr   r   r*   r*   r+   test_pointbiserial  s    zTestCorr.test_pointbiserialN)r-   r.   r/   r   r   r   r   rs   rt   ru   platformmachiner   Zslowr   r   r   r   r   r*   r*   r*   r+   r      s$   
&-
V

r   c                   @   sD   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S )TestTrimmingc                 C   s  t d}tt|g d t d}tt|dg d t d}ttj|dddg d t d}ttj|dd	d
g d t d}t |ddg< |d< tt|dg d t ddd}dgd dgd  dgd  }tj|dd	d d}t|j | tj|dd	dd}t|j | tj|dd	dd}t|jj	 | t ddd}t|d< dgd dgd  dgd  }tj|dd	d d}t|j | tj|dd	dd}t|j | tj|j	dd	dd}t|j	j | d S )NrH   
r   r   r=   r>   r?   r~   rT   r   r   r   )r=   r   )
NNr=   r>   r?   r~   rT   r   r   NFFlimitsZ	inclusive)
NNNr>   r?   r~   rT   r   NN)r   r   T)r  relative)
Nr   r=   r>   r?   r~   rT   r   NN   r   r_   r~   )NNr=   r>   r?   NrT   r   r   NNNrP   r   rM   rI   )r  r"   rp   r   )
rV   r   r	   r&   Ztrimr   reshape_maskZravelr   )r'   rE   r7   r   trimxr*   r*   r+   	test_trim  sD    




zTestTrimming.test_trimc                 C   s   t d}tt| d ttj|dd d t|dd< t|}t| d t|jd	gd
 dgd  d	gd  dgd  d	gd
   t	|_d|_
tt| d tt| d d S )NrP   rL   r   )tailrN   r!   rM   0   r   r   r   "   rI      )rH   rH   )rV   r   r	   r&   trimbothcountZtrimtailr   r
  r   shape)r'   r7   r  r*   r*   r+   test_trim_old  s    

:zTestTrimming.test_trim_oldc                 C   sL   t d}tj|ddd}t jg dg dd}t|| t|j|j d S )NrH   )g333333?gQ?r  r  r  )
r   r   r   r   r   r   r   r   r   r   rR   )rV   r   r&   Ztrimrr%   r	   rS   )r'   r7   r   r   r*   r*   r+   
test_trimr  s    


zTestTrimming.test_trimrc                 C   sN   t g d}tt|ddd tt|ddd tt|ddd d S )NM   W   X   r                  i  i(  i+  i2  ix  i  i  i  i  i3
  r   iW  r   )r   r   r   r   i  )rV   r%   r
   r&   Ztrimmed_meanr'   r(   r*   r*   r+   test_trimmedmean  s    zTestTrimming.test_trimmedmeanc                 C   s:   t g d}tt|ddd tt|ddd d S )Nr  r   g>L@r~   r   )rV   r%   r
   r&   Ztrimmed_stder!  r*   r*   r+   test_trimmed_stde
  s    zTestTrimming.test_trimmed_stdec                 C   sl   t g d}tt|djdddd tt|ddjdddd t|d< t|}t|j|j d S )	Nr  r   r   ddofg@r  gffff7@r~   )	rV   r%   r
   r&   	winsorizevarr   r	   rS   )r'   r(   Z
winsorizedr*   r*   r+   test_winsorization  s    
zTestTrimming.test_winsorizationc              	   C   s   t tjtjdddg}tttj|ddd tt|dt g d tt|d	t tjtjtjtjtjg ttj|dd
dt tjtjdddg ttj|d	d
dt tjtjdddg d S )Nr   r   r=   )皙?r)  raise)Z
nan_policy)皙?r+  r   )r   r   Zomit)	rV   r%   r$   r   r   r   r&   r&  r	   r!  r*   r*   r+   test_winsorization_nan  s     z#TestTrimming.test_winsorization_nanN)
r-   r.   r/   r  r  r  r"  r#  r(  r,  r*   r*   r*   r+   r    s   %r  c                	   @   s   e Zd Zg dZedddddejgZej	e	g dg dg d	g d
g dgej	g dg dg dg dg dge
ddZddd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 )%TestMomentsr<   gp=
ף?g?߾?gD9?gQI?g}?5^I)gq2۪?g{!3?gr!fa?gk?gY?)gSH*:/?g#R/?g>y}zd?gV߯<?gF?)ggˠw?gyZf?g=?g!@Vyȧ?g#1?)geY(9?gD$?g;?gJX<q0?g#d?)g?gA]?g_.?g?g2^9?)TFFTF)TTTFT)FFFFF)TTTTT)FFTFFrz   rR   Nr  r2   c                C   sH   t |}|d urt ||}t|| |d u r6|j}|j|ksDJ d S N)r$   r{   Zbroadcast_tor   r2   )r'   actualZexpectr  r2   r*   r*   r+   _assert_equalA  s    

zTestMoments._assert_equalc                 C   s  t | jd}t|dd t | jd}t|d t | jd}t|d t | jd}t|d t | jg d	}t|g d
 t | jd}t|d ttt j| jd t | jg d}t|g d
 t g }| j|tj	tj
d t tjg tjd}| j|tj	tjd t jtddd}| j|g dtj
d t jg gdd}| j|tj	dtj
d t jg gddgdd}| j|g dd td}tj	|d< tt |dtj d S )Nr   r   rH   r=         ?r>   r?        @r<   )r   r2  r   r3  r   r   )r   r=   r>   r   rz   )r   r   r   r   )r   r.  )r   )momentr"   )r=   r   )r  g      $@r   )r&   r4  testcaser
   r   r   r   r1  r$   r   Zfloat64r%   Zfloat32zerosr   r	   rV   r   )r'   r   r7   r*   r*   r+   test_momentJ  s8    






zTestMoments.test_momentc                 C   s   t | j}t|dd d S )N%?rH   )r&   	variationr5  r
   r'   r   r*   r*   r+   test_variationo  s    zTestMoments.test_variationc                 C   s*   t g d}tj|dd}t|d d S )N)r   r=   r>   r?   r~   r   r$  g<<'?)r$   r%   r&   r9  r
   )r'   rE   r   r*   r*   r+   test_variation_ddofs  s    zTestMoments.test_variation_ddofc                 C   sP   t | j}t|dd t j| jdd}t|dd t | j}t|dd d S )Ng7l*ҿrH   r   biasg2۠ۿr   )r&   skewtestmathworksr
   r5  r:  r*   r*   r+   test_skewnessz  s    zTestMoments.test_skewnessc                 C   s`  t j| jdddd}t|dd t j| jddd}t|dd t | jdd}t|d tjtg dtjg d	td
d}t	t | j
d| t| j
D ]\}}tt |||  qtjtg dtjg d	td
d}t	t j| j
ddd| t| j
D ]"\}}tt j|dd||  qtt | j
dd d f t| j
dd d f dd d S )Nr   r   )Zfisherr>  gO߻S@rH   gx|N@g=
ףp=?)            g'@=r   gt
Q)FFFTFrz   rR   )rB  rC  g?<r   g`@7Fr=  r=   r?   )Znulp)r&   kurtosisr@  r
   r5  rV   r%   r$   boolr   testcase_2d	enumerater   r   )r'   r   Z
correct_2dirowZcorrect_2d_bias_correctedr*   r*   r+   test_kurtosis  sB    

zTestMoments.test_kurtosisc                 C   s&  g d}t |d}t g d}t |d}tt|dk|}t|dk|}t|dk |}tt|dk |}ttj|d dd ttj|ddd ttj|d dd	 ttj|d dd ttj|d dd	 ttj|d dd
 ttj|d dd ttj|ddg dgg dgf ttj|ddg dgg dgf ttj|dddgdgdggdgdgdggf ttj|dddgdgdggdgdgdggf ttj|ddddggddggf ttj|dddgdgdggdgdgdggf tj|d d}	d}
t|	|
dd d S )N)r   r   r   r   r   r   r=   r>   r>   r>   r>   r?   r~   rT   r   )r>   r~   r   )r>   r=   r=   r   )r>   r?   r   )r   r>   )r   r   )r=   r   )r   r   r   r   r   r   r_   r>   r   r~   )moder  Tr   )	r$   r	  r%   rV   Zmasked_wherer	   r&   rK  r   )r'   a1a2a3Za4Zma1Zma2Zma3Zma4Za1_resr   r*   r*   r+   	test_mode  s0    $$00$0zTestMoments.test_modec                 C   sd   t d}|d dd d f  d7  < |d d d df  d7  < | }t|d  t|| d S )N)rP   rP   r!   r   )r$   r6  copyr&   rK  r	   )r'   ZimZcpr*   r*   r+   test_mode_modifies_input  s    
z$TestMoments.test_mode_modifies_input)r-   r.   r/   r5  rV   r   r$   r   r@  r%   rE  rF  r1  r7  r;  r<  rA  rJ  rO  rQ  r*   r*   r*   r+   r-  *  s8   

	%'r-  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestPercentilec                 C   s"   g d| _ g d| _g d| _d S )N)r>   r?   r~   rH   rT   )r>   r   r   r?   r=   r   )r   r?   r~   rH   rS  rT  rU  r   )rL  rM  rN  r'   r*   r*   r+   setup_method  s    

zTestPercentile.setup_methodc                 C   sH   t dd }tt|dd tt|dd tt|dd d S )	Nr   rl   r   r   rP   r   r!   g      ?)r$   r   r	   r&   scoreatpercentiler   r*   r*   r+   test_percentile  s    zTestPercentile.test_percentilec                 C   sB   t g dg dg dg dg dg}tt|dg d d S )Nr   r   r   )r?   r?   r>   r!   )rV   r%   r	   r&   rY  r   r*   r*   r+   test_2D  s    
zTestPercentile.test_2DN)r-   r.   r/   rX  rZ  r\  r*   r*   r*   r+   rR    s   rR  c                   @   s>   e Zd ZdZeddddejgZdd Z	dd	 Z
d
d ZdS )TestVariabilityz[  Comparison numbers are found using R v.1.5.1
         note that length(testcase) = 4
    r   r=   r>   r?   c                 C   sX   t | j}t|d | j }tt j| jddt||d   t j| jdd d S )Ng㝎?r   r$  r=   )r&   semr5  r
   r  r   r$   r   )r'   r   r   r*   r*   r+   test_sem  s    

"zTestVariability.test_semc                 C   s6   t | j| j}g d}t||j|jdk dd d S )N)OT\w%ܿr8  OT\w?Fr  Zdecimal)r&   zmapr5  r   r(   rS   )r'   r   Zdesired_unmaskedvalsr*   r*   r+   	test_zmap  s
    zTestVariability.test_zmapc                 C   s4   t | j}tddddtjg}t||dd d S )Nr`  ra  r8  rb  r  rc  )r&   zscorer5  rV   r   r$   r   r
   )r'   r   r)   r*   r*   r+   test_zscore  s
    zTestVariability.test_zscoreN)r-   r.   r/   __doc__rV   r   r$   r   r5  r_  re  rg  r*   r*   r*   r+   r]    s
   	r]  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestMiscc                 C   s   dgd dgd  dgd  dgd  dgd  d	gd  dgdgd  dgd
  dgd  d	gd  g}ddg ddg  ddg  ddg  ddg  ddg  dgddg  d
dg  ddg  ddg  g}t ttj| jd
|d
 d S )Nr~   rT   r   r   r   r   r>   r=   rH   r?   r   g_v	@g1%?g"u?gZӼ?g!u @gq&@g;pΈ$@gTR'p@g9#?gHPx?gQI?)r
   r$   r   r&   obrientransformr   )r'   argsr   r*   r*   r+   test_obrientransform  s    :,:,zTestMisc.test_obrientransformc                 C   s   t t dddddddddddgg ddddd	d
ddddt ddt gt d	dddt d	ddddddgg}t|j}|j\}}}}ttt||dd ttt||ddd ttt||ddd d S )Nr?   r=   r   r   r~   r   r>   r   rT   r   r   r   r   )48E?gsA?g)g%䃞?g 	?l)rm  g46<?)	r   rV   r   r   r
   r$   r   r&   ks_2samp)r'   r7   ZwinterZspringZsummerZfallr*   r*   r+   test_ks_2samp  s     zTestMisc.test_ks_2sampc                 C   s   g dg dg df}t j| }t|d dd t|d dd	 ttdd
ddddddd
ddgg ddd
dd	dddddtddtgtd	dddtd	ddd
dddgg}t|}t j| }t|d dd t|d dd d}t||dd d S )N)
g      "@      #@      @      @rr  rt         @r   r   r   )
r   r   r   rt  rs  ru  r   r   r   r   )
r   ru  r   r   r   r   r   r   r   r   r   g:pΈ$@r?   r   g(QGu?rT   r=   r   r   r~   r>   r   r   r   r   r   gr @g-C6?	statisticr   Tr   )r&   Zfriedmanchisquarer
   r   rV   r   r   )r'   rk  r   r7   r   r*   r*   r+   test_friedmanchisq  s$    


zTestMisc.test_friedmanchisqN)r-   r.   r/   rl  rq  rx  r*   r*   r*   r+   ri    s   ri  c                  C   s   t ddd} dt ddd d }|t t ddd7 }t| |}tjj}tt	|| d}t
||dd d	t|v sJ t|jd
 t|jd t|jd t|jd d S )Nr   rP   r   rH   rI   )slope	interceptZrvaluer   stderrTr   intercept_stderrg5E%?g +l$@g4_Qc?g8?)r$   r   Zsinr&   
linregressr   Z_stats_mstats_commonZLinregressResultr   
isinstancer   dirr
   ry  rz  r{  r|  )r7   r   r   Zlrr   r*   r*   r+   test_regress_simple6  s    r  c                  C   s   t g d\} }}}t| d t|d tjjg dg dd}t |\} }}}t| d t|d g d}g d	}t ||d
\} }}}t| d t|ddd t|ddd d S )N)r   r   r   rl   )r   r   rP   r   )FFTFrR   rU   gUUUUUU?)r   r=   r>   r?   rH   r  r   )r         rI   r   7   N   gQ?r?   gQ@r=   rc  gGz@)r&   Ztheilslopesr
   r$   rV   r%   )ry  rz  lowerupperr   r7   r*   r*   r+   test_theilslopesK  s    




r  c                  C   s2  dt d d } tt| d ttj| ddd dt d }d| d } tt| |d	 ttj| |ddd	 d
| d d< tt| |d	 t d}dd|  tjjddd } t|| \}}}}}t| |\}}t	||dd t	||dd tj| |dd\}}t	||dd t	||dd d S )Nr=   rH   rl   )r   rl   Zseparater   r~   r   )rs  rC  r   r?   gffffffr      )sizeZrandom_stater   r3   )
r$   r   r	   r&   Zsiegelslopesr   normZrvsr}  r   )r   r7   Z	slope_olsZintercept_ols_ry  rz  r*   r*   r+   test_siegelslopes`  s$    
r  c                  C   s.   t tddd} t| jtg d d S )Nr>   r   )rA   rl   r   )r&   Zplotting_positionsr$   r   r   r(   r%   )posr*   r*   r+   test_plotting_positions}  s    r  c                   @   sD   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S )TestNormalitytestsc                 C   s   t dd }tt|t| tt|t| tt|t| tjtjtjg}tjtjtjg}g d}t||D ] \}}t	t
|| t	t
|| qd S )NrV  r_   r   r   r=   r>   rV  r_   r   r   r=   r>   rV  r_   r   r   r=   r>   rV  r_   r   r   r=   r>   r=   r<   )r$   r%   r   r&   
normaltestr   skewtestkurtosistestzipr   r   )r'   r7   ZfuncsZmfuncsfuncZmfuncr*   r*   r+   test_vs_nonmasked  s     


z$TestNormalitytests.test_vs_nonmaskedc                 C   s`   t dd }ttj|d dt| ttj|d dt| ttj|d dt| d S )Nr  r=   r   )r$   r%   r   r&   r  r  r  r   r*   r*   r+   test_axis_None  s    z!TestNormalitytests.test_axis_Nonec                 C   s   t dd }t jjt jt j|df t jddg|j df d}tt|t	| tt
|t	
| tt|t	| d S )Nr  r=   rH   TFrR   )r$   r%   rV   Zr_infr  r   r&   r  r   r  r  )r'   r7   xmr*   r*   r+   test_maskedarray_input  s    z)TestNormalitytests.test_maskedarray_inputc                 C   sz   t dd }t |gd j}tjtjtjfD ]D}||}||}t|d |d gd  t|d |d gd  q0d S )Nr  r=   r   r   )	r$   r%   Zvstackr   r&   r  r  r  r   )r'   r7   Zx_2dr  Zres_1dZres_2dr*   r*   r+   test_nd_input  s    z TestNormalitytests.test_nd_inputc                 C   s.   t dd }t|}d}t||dd d S Nr  r=   rv  Tr   )r$   r%   r&   r  r   r'   r7   r   r   r*   r*   r+   !test_normaltest_result_attributes  s    
z4TestNormalitytests.test_normaltest_result_attributesc                 C   s.   t dd }t|}d}t||dd d S r  )r$   r%   r&   r  r   r  r*   r*   r+   #test_kurtosistest_result_attributes  s    
z6TestNormalitytests.test_kurtosistest_result_attributesc                 C   s<   g d}t dd t|D }tt|d dk d d S )N)
   r   :   r   r   )   r   r   r      c                 S   s   g | ]\}}t ||qS r*   )r$   full).0rH  cr*   r*   r+   
<listcomp>      z;TestNormalitytests.regression_test_9033.<locals>.<listcomp>r   g{Gz?T)r$   ZhstackrG  r	   r&   r  )r'   countsr7   r*   r*   r+   regression_test_9033  s    z'TestNormalitytests.regression_test_9033N)
r-   r.   r/   r  r  r  r  r  r  r  r*   r*   r*   r+   r    s   		r  c                   @   s   e Zd Zdd ZdS )TestFOnewayc                 C   sJ   t jddgt jd}t jddgt jd}t||}d}t||dd d S )	Ni  i  rz   i  i  rv  Tr   )r$   r%   Zuint16r&   Zf_onewayr   )r'   rE   r   r   r   r*   r*   r+   test_result_attributes  s
    z"TestFOneway.test_result_attributesNr-   r.   r/   r  r*   r*   r*   r+   r    s   r  c                   @   s8   e Zd Zeg dZeg dZdd Zdd ZdS )TestMannwhitneyu)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                 C   s&   t | j| j}d}t||dd d S )Nrv  Tr   )r&   mannwhitneyur7   r   r   )r'   r   r   r*   r*   r+   r    s    z'TestMannwhitneyu.test_result_attributesc                 C   sB   t | j| j}t| j| j}|j|jks0J t|j|j d S r/  )r&   r  r7   r   r   rw  r   r   )r'   res1res2r*   r*   r+   test_against_stats  s    z#TestMannwhitneyu.test_against_statsN)	r-   r.   r/   r$   r%   r7   r   r  r  r*   r*   r*   r+   r    s   r  c                   @   s   e Zd Zdd ZdS )TestKruskalc                 C   s2   g d}g d}t ||}d}t||dd d S )N)r   r>   r~   r   r   )r=   r?   rT   r   rH   rv  Tr   )r&   Zkruskalr   r   r*   r*   r+   r    s
    z"TestKruskal.test_result_attributesNr  r*   r*   r*   r+   r    s   r  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestTtest_relc                 C   sr  t jd t jddg d }t|d d df |d d df }t|d d df |d d df }t|| tj|d d df |d d df d d}tj|d d df |d d df d d}t|| tj|d d d df |d d dd f dd}tj|d d d df |d d dd f dd}t|| t|d d d df |d d dd f }t|| d S )	N rI   r?   r   r   r   r=   r   r   r   r=   )r$   r   seedrandnr   	ttest_relr&   r   r'   outcomer  r  res3r*   r*   r+   r  	  s    $$
((
00
,zTestTtest_rel.test_vs_nonmaskedc                 C   s   t jd tjt jddg dg dgd}t }|td |d d df |d d d	f ft j	t j	gd
dgffD ]6}t
j| \}}t|t j	t j	f t|t j	t j	f qxW d    n1 s0    Y  d S Nr  r>   r=   r[  r   r   r   rR   %invalid value encountered in absoluter   r   r   r   )r$   r   r  rV   r   r  r   filterr   r   r&   r  r   r'   r  suppairtr   r*   r*   r+   test_fully_masked  s    8zTestTtest_rel.test_fully_maskedc                 C   s\   t jd t jddg d }t|d d df |d d df }d}t||dd	 d S 
Nr  rI   r?   r  r   r   rv  Tr   )r$   r   r  r  r&   r  r   r'   r  r   r   r*   r*   r+   r  )  s
    $z$TestTtest_rel.test_result_attributesc              	   C   sz   t ttjtdtd td}t ttj|ddd|ddddd t ttj|ddd|ddddd d S )	NrH   r   r@   r=   r>   r?   r   r   )r   r   r&   r  r$   r   r	  r   r*   r*   r+   test_invalid_input_size1  s    
z%TestTtest_rel.test_invalid_input_sizec                 C   s$   t g g }ttt| d S r/  )r&   r  r   r$   allisnanr'   r  r*   r*   r+   
test_empty:  s    zTestTtest_rel.test_emptyc                 C   s   t g dg d\}}tt||ftjdf t d}|td t g dg d\}}t	|t
tjtjg t	|t
tjtjg W d    n1 s0    Y  d S )Nr  r[  r   r  )r&   	ttest_indr	   r$   absr  r   r  r   r   r%   r   r'   r  r   r  r*   r*   r+   test_zero_division>  s    z TestTtest_rel.test_zero_divisionN)	r-   r.   r/   r  r  r  r  r  r  r*   r*   r*   r+   r    s   	r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestTtest_indc                 C   s&  t jd t jddg d }t|d d df |d d df }t|d d df |d d df }t|| tj|d d df |d d df d d}tj|d d df |d d df d d}t|| tj|d d d df |d d dd f dd}tj|d d d df |d d dd f dd}t|| t|d d d df |d d dd f }t|| tj|d d df |d d df d	d
}tj|d d df |d d df d	d
}t|| tj|d d df |d d df dd
}tj|d d df |d d df dd
}t|| d S )Nr  rI   r?   r  r   r   r   r=   TZ	equal_varF)r$   r   r  r  r   r  r&   r   )r'   r  r  r  r  Zres4Zres5r*   r*   r+   r  J  s&    $$
((
00
,
((
((zTestTtest_ind.test_vs_nonmaskedc                 C   s   t jd tjt jddg dg dgd}t }|td |d d df |d d d	f ft j	t j	gd
dgffD ]6}t
j| \}}t|t j	t j	f t|t j	t j	f qxW d    n1 s0    Y  d S r  )r$   r   r  rV   r   r  r   r  r   r   r&   r  r   r  r*   r*   r+   r  g  s    $8zTestTtest_ind.test_fully_maskedc                 C   s\   t jd t jddg d }t|d d df |d d df }d}t||dd	 d S r  )r$   r   r  r  r&   r  r   r  r*   r*   r+   r  q  s
    $z$TestTtest_ind.test_result_attributesc                 C   s$   t g g }ttt| d S r/  )r&   r  r   r$   r  r  r  r*   r*   r+   r  y  s    zTestTtest_ind.test_emptyc                 C   s   t g dg d\}}tt||ftjdf t X}|td t g dg d\}}t	|tj
tj
f t	|tj
tj
f W d    n1 s0    Y  t jg dg ddd\}}tt||ftjdf t	t jg dg dddtj
tj
f d S )Nr  r[  r   r  Fr  )r&   r  r	   r$   r  r  r   r  r   r   r   r  r*   r*   r+   r  }  s    0
z TestTtest_ind.test_zero_divisionNr-   r.   r/   r  r  r  r  r  r*   r*   r*   r+   r  I  s
   
r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestTtest_1sampc                 C   s^  t jd t jddg d }t|d d df d}t|d d df d}t|| tj|d d df |d d df d d}tj|d d df |d d df d d}t|| tj|d d d df |d d dd f dd}tj|d d d df |d d dd f dd}t||d	d
 t|d d d df |d d dd f }t|| d S )Nr  rI   r?   r  r   r   r   r=   gV瞯<Zatol)r$   r   r  r  r   ttest_1sampr&   r   r  r*   r*   r+   r    s    
((
00,z!TestTtest_1samp.test_vs_nonmaskedc                 C   s   t jd tjt jdg dd}t jt jf}t \}|t	d t jt jfdf|dffD ]&}t
j| \}}t|| t|| q^W d    n1 s0    Y  d S )Nr  r>   r[  rR   r  r   )r$   r   r  rV   r   r  r   r   r  r   r&   r  r   )r'   r  r   r  r  r  r   r*   r*   r+   r    s    
z!TestTtest_1samp.test_fully_maskedc                 C   sP   t jd t jddg d }t|d d df d}d}t||dd	 d S r  )r$   r   r  r  r&   r  r   r  r*   r*   r+   r    s
    z&TestTtest_1samp.test_result_attributesc                 C   s$   t g d}ttt| d S )Nr   )r&   r  r   r$   r  r  r  r*   r*   r+   r    s    zTestTtest_1samp.test_emptyc                 C   s   t g dd\}}tt||ftjdf t P}|td t g dd\}}t	t
| t|tjtjf W d    n1 s0    Y  d S )Nr  r   r   r  )r&   r  r	   r$   r  r  r   r  r   r   r  r   r   r  r*   r*   r+   r    s    z"TestTtest_1samp.test_zero_divisionNr  r*   r*   r*   r+   r    s
   r  c                   @   s   e Zd ZdZdd ZdS )TestDescribez
    Tests for mstats.describe.

    Note that there are also tests for `mstats.describe` in the
    class TestCompareWithStats.
    c                 C   s   t jjg dg dgg dg dgd}tj|dd}t|jdd	g |j\}}t|d
dg t|d	dg t|jddg t|j	ddg t|j
ddg t|jddg d S )N)r   r   r=   r>   r?   r   )r~   r~   r   r   r>   r>   )r   r   r   r   r   r   )r   r   r   r   r   r   rR   r   r   r~   r?   r   r>   r   r   r   r   g       )r$   rV   r   r&   describer	   nobsminmaxmeanvarianceskewnessr   rD  )r'   rE   r   ZaminZamaxr*   r*   r+   test_basic_with_axis  s     
z!TestDescribe.test_basic_with_axisN)r-   r.   r/   rh  r  r*   r*   r*   r+   r    s   r  c                   @   s@  e Zd 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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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dJdK Z(dLdM Z)dNS )OTestCompareWithStatsa  
    Class to compare mstats results with stats results.

    It is in general assumed that scipy.stats is at a more mature stage than
    stats.mstats.  If a routine in mstats results in similar results like in
    scipy.stats, this is considered also as a proper validation of scipy.mstats
    routine.

    Different sample sizes are used for testing, as some problems between stats
    and mstats are dependent on sample size.

    Author: Alexander Loew

    NOTE that some tests fail. This might be caused by
    a) actual differences or bugs between stats and mstats
    b) numerical inaccuracies
    c) different definitions of routine interfaces

    These failures need to be checked. Current workaround is to have disabled these tests,
    but issuing reports on scipy-dev

    c                 C   s   g dS )z9 Returns list of sample sizes to be used for comparison. )r   rP   rH   r~   r*   rW  r*   r*   r+   get_n  s    zTestCompareWithStats.get_nc                 C   s   t jd t j|}|t j| }t t|d d}t t|d d}||dt|< ||dt|< |dk}t jj||d}t jj||d}||||fS )Nr  r~   g 7yACr   g s?CrR   )r$   r   r  r  r  lenrV   r%   )r'   r   r7   r   r  ymrS   r*   r*   r+   generate_xy_sample  s    z'TestCompareWithStats.generate_xy_samplec           
      C   s   t ||ft j}t ||ft j}t |d |ft j}t |d |ft j}t|D ].}| |\|d d |f< |d d |f< }}	qX|d| |d|d d f< |d| |d|d d f< t jj|t |d}t jj|t |d}||||fS )Nr~   r   rR   )r$   r  r   r   r  rV   r%   r  )
r'   r   nxr7   r   r  r  rH  ZdxZdyr*   r*   r+   generate_xy_sample2D  s    ,z)TestCompareWithStats.generate_xy_sample2Dc                 C   sT   |   D ]F}| |\}}}}t||}tj||}tt|t| qd S r/  )r  r  r   r}  r&   r   r$   r{   )r'   r   r7   r   r  r  Zresult1result2r*   r*   r+   test_linregress  s
    z$TestCompareWithStats.test_linregressc           
      C   sb   |   D ]T}| |\}}}}t||\}}tj||\}}	t||dd t||	dd qd S )Nr  rc  )r  r  r   r   r&   r
   
r'   r   r7   r   r  r  r   r   rmZpmr*   r*   r+   r     s    z"TestCompareWithStats.test_pearsonrc           
      C   s^   |   D ]P}| |\}}}}t||\}}tj||\}}	t||d t||	d qd S Nr  )r  r  r   r   r&   r
   r  r*   r*   r+   r   '  s    z#TestCompareWithStats.test_spearmanrc                 C   s    t d}tttj||d d S )NrT   F)r$   r   r   r   r&   r   r   r*   r*   r+   !test_spearmanr_backcompat_useties/  s    
z6TestCompareWithStats.test_spearmanr_backcompat_usetiesc                 C   s|   |   D ]n}| |\}}}}tt|}tjt|}t||dd tt|}tjt|}t||dd qd S )NgvIh%<=r3   )r  r  r   r5   r  r&   r   r'   r   r7   r   r  r  r   r  r*   r*   r+   
test_gmean5  s    zTestCompareWithStats.test_gmeanc                 C   sx   |   D ]j}| |\}}}}tt|}tjt|}t||d tt|}tjt|}t||d qd S NrH   )r  r  r   r9   r  r&   r
   r  r*   r*   r+   
test_hmean@  s    zTestCompareWithStats.test_hmeanc                 C   sh   |   D ]Z}| |\}}}}t|}tj|}t||d t|}tj|}t||d qd S r  )r  r  r   r?  r&   r
   r  r*   r*   r+   	test_skewL  s    

zTestCompareWithStats.test_skewc                 C   sh   |   D ]Z}| |\}}}}t|}tj|}t||d t|}tj|}t||d qd S r  )r  r  r   r4  r&   r
   r  r*   r*   r+   r7  X  s    

z TestCompareWithStats.test_momentc              	   C   s   |   D ]}| |\}}}}||  |  }||  |  }tt||dd tt||dd tt|tj|dt| dd tt|tj|dt| dd qd S )N绽|=r3   r   )	r  r  r  Zstdr   r   rf  r&   r  )r'   r   r7   r   r  r  ZzxZzyr*   r*   r+   rg  d  s      z TestCompareWithStats.test_zscorec                 C   sh   |   D ]Z}| |\}}}}t|}tj|}t||d t|}tj|}t||d qd S r  )r  r  r   rD  r&   r
   r  r*   r*   r+   rJ  v  s    

z"TestCompareWithStats.test_kurtosisc           
      C   s  t ddd}t j|}tj|dd}tjj|dd}t|ddd t|ddd | 	 D ]}| 
|\}}}}	ttjj|d d	d
tj|d d	d
dd ttjj|	d d	d
tj|d d	d
dd ttjj|d dd
tj|d dd
dd ttjj|	d dd
tj|d dd
dd q`d S )NrI   r~   r?   r   r$  g'e@gh㈵>r  r   )r"   r%     rc  )r$   r   r	  rV   r%   r   r^  r&   r   r  r  r
   )
r'   rE   Zamr   r  r   r7   r   r  r  r*   r*   r+   r_    s(    zTestCompareWithStats.test_semc           	      C   sr   |   D ]d}| |\}}}}tj|dd}tjj|dd}tdD ]&}tt|| t|| dd qDqd S )Nr   r$  rT   r  rc  )	r  r  r   r  r&   r   r
   r$   r{   )	r'   r   r7   r   r  r  r   r  Ziir*   r*   r+   test_describe  s    z"TestCompareWithStats.test_describec                 C   s&   t td}d}t||dd d S )Nr~   )r  r  r  r  r  rD  Tr   )r&   r  r$   r   r   )r'   r0  r   r*   r*   r+   test_describe_result_attributes  s    z4TestCompareWithStats.test_describe_result_attributesc                 C   sD   |   D ]6}| |\}}}}t|}tj|}t|| qd S r/  )r  r  r   r   r&   r   r  r*   r*   r+   test_rankdata  s
    
z"TestCompareWithStats.test_rankdatac                 C   sX   |   D ]J}| |\}}}}tt|tj|d tt|tj|d qd S r  )r  r  r
   r   Ztmeanr&   r'   r   r7   r   r  r  r*   r*   r+   
test_tmean  s    zTestCompareWithStats.test_tmeanc                 C   s   |   D ]}| |\}}}}tt|dtj|dd tt|dtj|dd ttj|ddtjj|ddd ttj|ddtjj|ddd qd S )Nr   rH   r   )Z
upperlimit)r  r  r
   r   Ztmaxr&   r  r*   r*   r+   	test_tmax  s    zTestCompareWithStats.test_tmaxc                 C   s   |   D ]}| |\}}}}tt|tj| tt|tj| ttj|ddtjj|ddd ttj|ddtjj|ddd qd S )Nr   )Z
lowerlimitrH   )r  r  r	   r   Ztminr&   r
   r  r*   r*   r+   	test_tmin  s    zTestCompareWithStats.test_tminc                 C   sX   |   D ]J}| |\}}}}t||}tj||}t||dt| dd qd S )Nr   r  r  )r  r  r   rd  r&   r   r  )r'   r   r7   r   r  r  r   Zzmr*   r*   r+   re    s
    zTestCompareWithStats.test_zmapc                 C   s\   |   D ]N}| |\}}}}tt|tj|dd tt|tj|dd qd S Nr  rc  )r  r  r
   r   r9  r&   r  r*   r*   r+   r;    s    z#TestCompareWithStats.test_variationc                 C   s\   |   D ]N}| |\}}}}tt|tj|dd tt|tj|dd qd S r  )r  r  r
   r   Ztvarr&   r  r*   r*   r+   	test_tvar  s    zTestCompareWithStats.test_tvarc                 C   sB   t d}t|d}tj|d}tt ||j|j   d S )NrI   r   )	r$   r   r   r  r&   r   sortr(   rS   )r'   rE   r   Zbmr*   r*   r+   test_trimboth  s    
z"TestCompareWithStats.test_trimbothc                 C   s   |   D ]r}| |\}}}}tt|tj|dd tt|tj|dd ttj|ddtjj|dddd qd S )Nr  rc  )r  r   )r  )r  r  r
   r   Ztsemr&   r  r*   r*   r+   	test_tsem  s    zTestCompareWithStats.test_tsemc                 C   sL   |   D ]>}|dkr| |\}}}}t|}tj|}t|| qd S )Nr   )r  r  r   r  r&   r   r  r*   r*   r+   test_skewtest  s    
z"TestCompareWithStats.test_skewtestc                 C   s.   t dd }t|}d}t||dd d S r  )r$   r%   r&   r  r   r  r*   r*   r+   test_skewtest_result_attributes  s    
z4TestCompareWithStats.test_skewtest_result_attributesc                 C   s@   t jdd }t|}tj|}tt |t | d S )N)rI   r=   g      4@)r$   r   r   r  r&   r   r{   )r'   r7   r   r  r*   r*   r+   test_skewtest_2D_notmasked  s    
z/TestCompareWithStats.test_skewtest_2D_notmaskedc           	      C   s|   d}|   D ]j}|dkr| ||\}}}}t|}tj|}t|d d |d d  t|d d |d d  qd S )Nr=   r   r   r   )r  r  r   r  r&   r	   )	r'   r  r   r7   r   r  r  r   r  r*   r*   r+   test_skewtest_2D_WithMask	  s    
z.TestCompareWithStats.test_skewtest_2D_WithMaskc           	   	   C   s   t jdd t p}|td |  D ]J}|dkr*| |\}}}}t|}tj	|}t
t |t | q*W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr*  )Zoverz!kurtosistest only valid for n>=20r   )r$   r]   r   r  UserWarningr  r  r   r  r&   r   r{   )	r'   r  r   r7   r   r  r  r   r  r*   r*   r+   test_normaltest  s    
z$TestCompareWithStats.test_normaltestc                 C   s   t g dd}t g dd}|dk}t jj||d}| |  }}t|}tj|}t	|| t	|| t	|| tjg \}	}
t	|
t jdt j
d d S )N)r   r   r=   r=   r>   r>   r>   r?   r?   r?   r?   r   )r   r   r=   r=   r>   r>   r>   r?   r?   r?   r?   r~   r~   r~   r~   rs  rR   r   rz   )r$   r{   re   rV   r%   rP  r   Zfind_repeatsr&   r	   Zintp)r'   r7   tmprS   r  Zx_origZxm_origr   r  r  r  r*   r*   r+   test_find_repeats  s    



z&TestCompareWithStats.test_find_repeatsc                 C   sj   |   D ]\}| |\}}}}t||}tj||}t|d |d dd t|d |d dd qd S )Nr   rH   rc  r   r   )r  r  r   r   r&   r
   r  r*   r*   r+   r   1  s    z$TestCompareWithStats.test_kendalltauc                 C   sR   |   D ]D}| |\}}}}t|}tj|}t|j|dt|  qd S )Nr   )r  r  r   rj  r&   r
   r   r  r  r*   r*   r+   rl  9  s
    
z)TestCompareWithStats.test_obrientransformc              
   C   s   dD ]}t  }dD ]}|  D ]}| |\}}}}tj|tjj||d}	tjj|tjj||d}
tt	
|	t	
|
 tj|tjj||d}tt	
|	t	
| q qW d   q1 s0    Y  qdS )zFChecks that mstats.ks_1samp and stats.ks_1samp agree on masked arrays.autoexactZasympr   r   	two-sidedr   rK  N)r   r  r  r   Zks_1sampr  Zcdfr&   r	   r$   r{   r'   rK  r  r   r   r7   r   r  r  r  r  r  r*   r*   r+   test_ks_1samp@  s    z"TestCompareWithStats.test_ks_1sampc              
   C   s   dD ]}t  }dD ]}|  D ]z}| |\}}}}tj|d||d}	tjj|d||d}
tt|	t|
 tj|d||d}tt|	t| q qW d   q1 s0    Y  qdS )zKChecks that 1-sample mstats.kstest and stats.kstest agree on masked arrays.r  r  r  r  N)	r   r  r  r   kstestr&   r	   r$   r{   r  r*   r*   r+   test_kstest_1sampM  s    z&TestCompareWithStats.test_kstest_1sampc              
   C   s   dD ]}t  }|dv r$|td dD ]}|  D ]z}| |\}}}}tj||||d}	tjj||||d}
tt	
|	t	
|
 tj||||d}tt	
|	t	
| q4q(W d   q1 s0    Y  qdS )zVChecks that mstats.ks_2samp and stats.ks_2samp agree on masked arrays.
        gh-8431r  r	  r
  Bks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.r  r  N)r   r  r   r  r  r   rp  r&   r	   r$   r{   r  r*   r*   r+   rq  Z  s    z"TestCompareWithStats.test_ks_2sampc              
   C   s   dD ]}t  }|dv r$|td dD ]}|  D ]z}| |\}}}}tj||||d}	tjj||||d}
tt	
|	t	
|
 tj||||d}tt	
|	t	
| q4q(W d   q1 s0    Y  qdS )zKChecks that 2-sample mstats.kstest and stats.kstest agree on masked arrays.r  r  r  r  r  N)r   r  r   r  r  r   r  r&   r	   r$   r{   r  r*   r*   r+   test_kstest_2sampk  s    z&TestCompareWithStats.test_kstest_2sampc                 C   sX   t ddgddg}tt|t j j t j |j|j}tt|t j j t|| d S )Nr   r=   r>   r?   )	r   r  r   r~  ZKstestResultZKs_2sampResultrw  r   r	   )r'   r   r  r*   r*   r+   test_nametuples_agree{  s
    z*TestCompareWithStats.test_nametuples_agreeN)*r-   r.   r/   rh  r  r  r  r  r   r   r  r  r  r  r7  rg  rJ  r_  r  r  r  r  r  r  re  r;  r  r  r  r   r  r  r  r  r  r   rl  r  r  rq  r  r  r*   r*   r*   r+   r    sN   	
	
r  c                   @   s   e Zd ZejdddddejdddddddddejgZejddddejdddddddg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S )TestBrunnerMunzelr   r=   r?   r>   r~   r  c           	      C   s   t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t||| jd t||| jd t||k t|d| jd t|d| jd t|d| jd t|d| jd t|d| jd t|d| jd d S )	Nr   r   r   rc  |	&	@|	&	gҏGg?g@-pL?)r&   brunnermunzelXYr
   significantr   )	r'   u1r   u2r   u3r   Zu4Zp4r*   r*   r+   test_brunnermunzel_one_sided  s2    z.TestBrunnerMunzel.test_brunnermunzel_one_sidedc                 C   st   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nr  r   rc  r  r   ҏGw?r&   r  r  r  r
   r  r'   r  r   r  r   r*   r*   r+   test_brunnermunzel_two_sided  s    z.TestBrunnerMunzel.test_brunnermunzel_two_sidedc                 C   sl   t | j| j\}}t | j| j\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nrc  r  r  r!  r"  r#  r*   r*   r+   test_brunnermunzel_default  s    z,TestBrunnerMunzel.test_brunnermunzel_defaultc                 C   s0   d}d}t |dv tttj| j| j|| d S )Nr   r  )r  r   r   r   r   r   r&   r  r  r  r'   r   distributionr*   r*   r+   $test_brunnermunzel_alternative_error  s    z6TestBrunnerMunzel.test_brunnermunzel_alternative_errorc                 C   st   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nnormal)r(  rc  r  r  g "H[?r"  r#  r*   r*   r+   $test_brunnermunzel_distribution_norm  s    z6TestBrunnerMunzel.test_brunnermunzel_distribution_normc                 C   s0   d}d}t |dv tttj| j| j|| d S )Nr  r   )r  r*  r&  r'  r*   r*   r+   %test_brunnermunzel_distribution_error  s    z7TestBrunnerMunzel.test_brunnermunzel_distribution_errorc                 C   s   t | jg \}}t g | j\}}t g g \}}tt| tt| tt| tt| tt| tt| d S r/  )r&   r  r  r  r   r$   r  )r'   r  r   r  r   r  r   r*   r*   r+   test_brunnermunzel_empty_imput  s    z0TestBrunnerMunzel.test_brunnermunzel_empty_imputN)r-   r.   r/   r$   rV   Zmasked_invalidr   r  r  r  r   r$  r%  r)  r+  r,  r-  r*   r*   r*   r+   r    s   &r  )NNr0   )NNr0   )9rh  r   r   Znumpyr$   r   Znumpy.marV   r   r   Zscipy.stats.mstatsr   r&   ZscipyZcommon_testsr   rs   r   r   Znumpy.ma.testutilsr	   r
   r   r   r   r   r   Znumpy.testingr   Zscipy.statsr   r   r8   r:   r;   rw   r}   r   r  r-  rR  r]  ri  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*   r*   r*   r+   <module>   s\   $

;#  c ( 0@	1AD9   (