U
    HvfD                    @   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dKddZ dLd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*G d%d& d&Z+d'd( Z,d)d* Z-d+d, Z.d-d. Z/d/d0 Z0d1d2 Z1d3d4 Z2d5d6 Z3G d7d8 d8Z4G d9d: d:Z5G d;d< d<Z6G d=d> d>Z7G d?d@ d@Z8G dAdB dBZ9G dCdD dDZ:G dEdF dFZ;G dGdH dHZ<G dIdJ dJZ=dS )Mz?
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 dddgdddgddd	gdd
dgdddgdddgdddgd
ddgdddgdddgdddgg}dddgdddgdddgg}tj|ddd}t|| d S )N      @      @      ?g     G@g      .@       @g     H@g      B@      @g     C@      @      E@g      D@g     8g     D@g     E@g3333333@g333333-@g333333?g     B@      @gffffffE@gfffffD@gffffff@r   )r   2   )axislimit)nparraymstatsZ
mquantilesr
   )selfdatadesiredZquants r$   G/tmp/pip-unpacked-wheel-96ln3f52/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	   r,   Z
array_liker#   r   r,   r.   xr$   r$   r%   check_equal_gmean,   s    r2   c                 C   s.   t j| ||d}t|||d t|j| d S r+   )r   hmeanr   r	   r,   r0   r$   r$   r%   check_equal_hmean2   s    r4   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*   ddddg}t dd}t||dd d S )	Nr                     ?+=r-   )r   powerr2   r!   ar#   r$   r$   r%   test_1d9   s    zTestGeoMean.test_1dc                 C   sh   t ddddddddd	d
g
}d}t|| t jddddgddddgd}tdd}t||dd d S )N
         (   r   <   F   P   Z   d   gsŤF@r   r6   r7   r8   r   mask   UUUUUU?r;   r-   )mar   r2   r   r<   r=   r$   r$   r%   
test_1d_ma>   s    
zTestGeoMean.test_1d_mac                 C   sJ   t jjddddddddd	d
g
ddddddddddg
d}d}t|| d S )Nr@   rA   rB   rC   r   rD   rE   rF   rG   rH   r   r   rI   gdq_D@r   rM   r   r2   r=   r$   r$   r%   test_1d_ma_valueH   s    8zTestGeoMean.test_1d_ma_valuec                 C   s2   t jddddddddd	d
g
}d
}t|| d S )Nr@   rA   rB   rC   r   rD   rE   rF   rG   r   rO   r=   r$   r$   r%   test_1d_ma0N   s     zTestGeoMean.test_1d_ma0c                 C   sL   t jddddddddd	d
g
}t j}t jdd t|| W 5 Q R X d S )Nr@   rA   rB   rC   r   rD   rE   rF   rG   ignore)invalid)r   rM   r   r   errstater2   r=   r$   r$   r%   test_1d_ma_infT   s     zTestGeoMean.test_1d_ma_inffloat96cannot find float96 so skippingreasonc                 C   sH   t jddddgddddgd}tddtj}t||tjd	d
 d S )Nr   r6   r7   r8   r   rI   rK   rL   r;   )r,   r.   )rM   r   r   r<   astyperW   r2   r!   r>   Z
desired_dtr$   r$   r%   test_1d_float96[   s    zTestGeoMean.test_1d_float96c                 C   s   t jddddgddddgddddggddddgddddgddddggd}tddddg}t||ddd t td	d
tddtddg}t||ddd ddddgddddgddddgg}d}ttj || d S )Nr   r6   r7   r8   r   rI   r;   r   r.   r9   r:   rK         ?rR   r@   rA   rB   rC   r   rD   rE   rF   rG   rH   n   x   g/,$qJ@)rM   r   r   r2   r<   r=   r$   r$   r%   
test_2d_maa   s    $ 

"zTestGeoMean.test_2d_maN)r'   r(   r)   r?   rN   rP   rQ   rV   pytestmarkskipifhasattrr   r]   rb   r$   r$   r$   r%   r5   8   s   

r5   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   s   t jddddgddddgd}d}t||dd	 tj d
dddddddddg
}d}t|| tj jd
dddddddddg
ddddddddddg
d}d}t|| d S )Nr   r6   r7   r8   r   rI   /袋.?r;   r-   r@   rA   rB   rC   r   rD   rE   rF   rG   rH   g=b#A@gO?@rM   r   r4   r   r=   r$   r$   r%   r?   s   s     
zTestHarMean.test_1drW   rX   rY   c                 C   sB   t jddddgddddgd}tjdtjd}t||tjd d S )	Nr   r6   r7   r8   r   rI   rh   r,   )rM   r   r   asarrayrW   r4   r\   r$   r$   r%   r]      s    zTestHarMean.test_1d_float96c                 C   s   t jddddgddddgddddggddddgddddgddddggd}t ddddg}t||ddd d	d
dg}t||ddd ddddgddddgddddgg}d}ttj || d S )Nr   r6   r7   r8   r   rI   r;   r^   gQ?g433333@g?rR   r@   rA   rB   rC   r   rD   rE   rF   rG   rH   r`   ra   gmWUC@ri   r=   r$   r$   r%   test_2d   s    $ 
"zTestHarMean.test_2dN)r'   r(   r)   r?   rc   rd   re   rf   r   r]   rl   r$   r$   r$   r%   rg   r   s   
rg   c                   @   s   e Zd Zdd ZdS )TestRankingc                 C   s  t ddddddddddg
}tt|dddddddd	d	d
g
 t|ddg< tt|ddddddddddg
 ttj|ddddddddddddg
 t ddddddddddg
}tt|ddd	ddddd	dd
g
 t dddddgdddddgg}tt|dddddgddd	d	d
gg ttj|dddddddgdddddgg ttj|dddddddgdddddgg d S )Nr   r   r6   r7   r8      rK            !@r@   r         @   T)Zuse_missingg      @r         @)rM   r   r
   r    rankdatar   r!   r1   r$   r$   r%   test_ranking   s2    


"
zTestRanking.test_rankingN)r'   r(   r)   rw   r$   r$   r$   r%   rm      s   rm   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ejddejdddd Zdd Zejjdd Zdd ZdS )TestCorrc           
   	   C   sR  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k t
|d	 tk W 5 Q R X t 	dd
dg}t 	dddg}t||\}}t|tdd  t|d ddddg}t j	dd
ddg|d}t j	ddddg|d}	t||	\}}t|tdd  t|d d S )Nr@   errorr   r   rR         TrI   r           r7   r6   rL   Fg     X@)rM   arangewarningscatch_warningssimplefilterRuntimeWarningr
   r    pearsonrr   r   r   r   sqrt)
r!   r1   prx1y1rprJ   Zx2y2r$   r$   r%   test_pearsonr   s(    

 
zTestCorr.test_pearsonrc           	      C   s   t jjddddddgddddddgd}t jjd	d
dddd	gddddddgd}t ddddg}t d	ddd	g}t||\}}t||\}}t|| t|| d S )Nr   r6   r7   r8   rn   rK   r   rI   	   rr   ro   )r   rM   masked_arrayr   r    r   r   r	   )	r!   ZmxZmyr1   ymrmpr   r   r$   r$   r%   test_pearsonr_misaligned_mask   s    ((
z&TestCorr.test_pearsonr_misaligned_maskc                 C   s  ddddgddddg }}t t||d d	 ddddtjgddddtjg }}t|t| }}t t||d d	 d
ddddddddddddddg}ddddddddd ddd!dd"dg}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	||d,d- d S ).N333333@      @Gz	@HzG@ffffff?Q@@r   gIQ=r   33333G@r   皙%@N@333333?      P@̌O@r   ffffff?皙@333333?333333@@皙6@皙 @333333F@'@皙8@333333?@D@r{   ffffff@333333?gI
?  r   i  r@   i  i  gV-?ZcorrelationpvalueTrM   )
r
   r    	spearmanrr   r   rM   fix_invalidlistranger   r!   r1   r   res
attributesr$   r$   r%   test_spearmanr   sn    "                          zTestCorr.test_spearmanrc                 C   s  ddddddddd	d
dddddg}ddddddddddddd	dd
g}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rR|ksXn ttj	t
d'd( t j||d)d W 5 Q R X d S )*Nr   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r?greateralternativegb?lessgcH}?rH   r   rn   皙?r6   r   zalternative must be 'less'...matchz	ekki-ekki)r    r   r   r   linspacerandomrandAssertionErrorrc   r   
ValueError)r!   r1   r   Zr_expr   r   nZstat1p1Zstat2p2Zstat3p3r$   r$   r%   test_spearmanr_alternative   sN                





z#TestCorr.test_spearmanr_alternativeppc64lezfails/crashes on ppc64lerY   c                 C   s  t tddddg}t tddddg}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
d0tjd'g}t||}tt|d1d2g d3}t||d4d5 d S )6Nr   r6   rn   rK   r8   ro      r{   r   r@   gxO~>Zbananamethodr   g?>?gaV>g}'}'?go&5>rR   rz   g?>g}'}'r   r   r   r   r   g     :@gQgףp=
@r   r   g1UU?      ?
asymptoticglgN?g~ȋgQM?r   rA   rD   rC   rF   !   C         -   gXJĿgvPwTk?r   Tr   )rM   r   r   r
   rk   r    
kendalltaur|   assert_raisesr   r   r   r   )r!   r1   r   expectedbzresultr   r$   r$   r%   test_kendalltau(  s                          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   rj   i    r   )
r   r|   floatrM   Zmasked_greaterZconcatenater   isfiniter    r   )r!   r1   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dddddddddddddg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ddddg d S )Nr8   r6         rn   r   r7   ro   rK      r   r      zglobal p-value (indep)gMb?zseasonal p-valueg
ףp=
?g(\?皙?g{Gz?)r   rM   r   Tr    Zkendalltau_seasonalr
   round)r!   r1   outputr$   r$   r%   test_kendalltau_seasonal  s    

z!TestCorr.test_kendalltau_seasonalr   )exactr   r   	two-sidedr   r   c                 C   s   t jd d}t j|}t j|}t j|dk}tj||d}tj||d}tj||||d}	| }
| }t	j|
|||d}t j
||< t j
||< t	j|||d|d}t|	| t|| d S )Nr   r   r_   rI   )r   r   omit)r   
nan_policyr   )r   r   seedr   rM   r   r    r   
compressedr   r   r   )r!   r   r   r   r1   r   rJ   Zx_maskedZy_maskedZ
res_maskedZx_compressedZy_compressedZres_compressedZres_nanr$   r$   r%   test_kendalltau_mstats_vs_stats  s@          

    
z(TestCorr.test_kendalltau_mstats_vs_statsc              	   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?))rH   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   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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 t jg#}tt||d d!d" t||}d#}t||d$d% d S )&Nr   r   rR   g-@g+@g(@g333333$@gffffff@gffffff@g333333@gffffff@g333333@rt   gffffff
@g	@r   gffffff@r   g333333@gffffff@g @r   g      ?g?r   g?皙?gffffff?r   r_   r   r   g/"?rn   r   Tr   )r   r   r
   r    Zpointbiserialrr   r   r$   r$   r%   test_pointbiserial  sX    ,                                 zTestCorr.test_pointbiserialN)r'   r(   r)   r   r   r   r   rc   rd   re   platformmachiner   Zslowr   r   parametrizer   r   Zxslowr   r   r$   r$   r$   r%   rx      s*   
&-
V	
rx   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   sL  t d}tt|dddddddd	d
dg
 t d}tt|dd d dddddd	d
d g
 t d}ttj|dddd d d ddddd	d d g
 t d}ttj|dddd ddddddd	d d g
 t d}t |ddg< |d< tt|dd d dddd dd	d
d d d g 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 )Nr@   r   r   r6   r7   r8   rn   rK   ro   rr   r   )r6   rr   FFlimitsZ	inclusive)r   r   T)r  relative   rR   rH   rE   rA   )r  r   r`   r   )
rM   r|   r	   r    Ztrimr   reshape_maskZravelr   )r!   r>   r1   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 )NrH   rD   r   )tailrF   r   rE   0   r   r   r   "   rA      )r@   r@   )rM   r|   r	   r    trimbothcountZtrimtailr   r  r   shape)r!   r1   r  r$   r$   r%   test_trim_old
  s    

:zTestTrimming.test_trim_oldc                 C   sl   t d}tj|ddd}t jddddd	d
ddddg
ddddddddddg
d}t|| t|j|j d S )Nr@   )g333333?gQ?r  r  r   r   r6   r7   r8   rn   rK   ro   rr   r   rI   )rM   r|   r    Ztrimrr   r	   rJ   )r!   r1   r   r   r$   r$   r%   
test_trimr  s    

zTestTrimming.test_trimrc                 C   sp   t ddddddddd	d
dddddddddg}tt|ddd tt|ddd tt|ddd d S )NM   W   X   r                    (  +  2  x          3
  r   iW  r   )r   r   r   r   i  )rM   r   r
   r    Ztrimmed_meanr!   r"   r$   r$   r%   test_trimmedmean  s            zTestTrimming.test_trimmedmeanc                 C   s\   t ddddddddd	d
dddddddddg}tt|ddd tt|ddd d S )Nr  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  g>L@rn   r   )rM   r   r
   r    Ztrimmed_stder'  r$   r$   r%   test_trimmed_stde&  s            zTestTrimming.test_trimmed_stdec                 C   s   t ddddddddd	d
dddddddddg}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  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r   ddofg@r  gffff7@rn   )	rM   r   r
   r    	winsorizevarr   r	   rJ   )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 dddddg 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   r6   )皙?r/  raise)r   )皙?r1  )r   r   r   )	rM   r   r   r   r   r   r    r,  r	   r'  r$   r$   r%   test_winsorization_nan8  s     z#TestTrimming.test_winsorization_nanN)
r'   r(   r)   r	  r  r  r(  r)  r.  r2  r$   r$   r$   r%   r     s   %r   c                   @   s   e Zd ZddddgZeddddd	ejgZej	e	d
ddddgdddddgdddddgdddddgddd d!d"ggej	d#d$d$d#d$gd#d#d#d$d#gd$d$d$d$d$gd#d#d#d#d#gd$d$d#d$d$gge
d%d&Zd'd'd(d)d*Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd'S )5TestMomentsr   r6   r7   r8   gp=
ף?g?߾?gD9?gQI?g}?5^Igq2۪?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?TFrj   rI   Nr  r,   c                C   sH   t |}|d k	rt ||}t|| |d kr6|j}|j|ksDtd S N)r   rk   Zbroadcast_tor   r,   r   )r!   actualexpectr  r,   r$   r$   r%   _assert_equal]  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ddddg}t|d	dd	dg t | jd}t|d
 ttt j| jd t | jd
dddg}t|d	dd	dg 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{   r@   r6   g      ?r7   r8   g     @r   r   r   r   rj   )r   r   rs   )r   r4  )r   )momentr   )r6   r   )r  g      $@r   )r    r9  testcaser
   r   r   r   r8  r   r   Zfloat64r   Zfloat32zerosr|   r	   rM   r   )r!   r   r1   r$   r$   r%   test_momentf  s8    






zTestMoments.test_momentc                 C   s   t | j}t|dd d S )N%?r@   )r    	variationr:  r
   )r!   r   r$   r$   r%   test_variation  s    zTestMoments.test_variationc                 C   s0   t dddddg}tj|dd}t|d d S )Nr   r6   r7   r8   rn   r*  g<<'?)r   r   r    r>  r
   )r!   r>   r   r$   r$   r%   test_variation_ddof  s    zTestMoments.test_variation_ddofc                 C   sh  t | j}t|dd t j| jdd}t|dd t | j}t|dd tjtddddd	gtjd
d
d
dd
gtdd}t	t | j
d| t| j
D ]\}}tt |||  qtjtdddddgtjd
d
d
dd
g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 S )Ng7l*ҿr@   r   biasg2۠ۿr{   gҽr?g>HÛe?gIǮFTrj   rI   r   g`٨?gn?g0r6   )r    skewtestmathworksr
   r:  rM   r   r   boolr   testcase_2d	enumerater   r!   r   Z
correct_2dirowZcorrect_2d_bias_correctedr$   r$   r%   test_skewness  s@    
 zTestMoments.test_skewnessc                 C   sx  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dd	d
ddgtjdddddgtdd}t	t | j
d| t| j
D ]\}}tt |||  qtjtdd	dddgtjdddddg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fisherrB  gO߻S@r@   gx|N@g=
ףp=?g            g'@=r{   gt
QFTrj   rI   g?<g`@7rA  r6   r8   )Znulp)r    kurtosisrD  r
   r:  rM   r   r   rE  r   rF  rG  r   r   rH  r$   r$   r%   test_kurtosis  sJ    
zTestMoments.test_kurtosis)r'   r(   r)   r:  rM   r   r   r   rD  r   rE  rF  r8  r<  r?  r@  rK  rN  r$   r$   r$   r%   r3  F  s4   	%!r3  c                   @   s   e Zd Zdd Zdd ZdS )TestModec                 C   s`  dddddddddddddddg}t |d	}t ddddddg}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dddddggdddddggf ttj|dddddddggddd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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 )Nr   r   r6   r7   r8   rn   rK   ro   )r7   rn   )r7   r6   rs   )r7   r8   )r   r7   )r   r   )r6   r   rR   )moder  Tr   )	r   r  r   rM   Zmasked_wherer	   r    rP  r   )r!   a1a2a3Za4Zma1Zma2Zma3Zma4Za1_resr   r$   r$   r%   	test_mode  s0    "0000$0zTestMode.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)rH   rH   r   r   )r   r;  copyr    rP  r	   )r!   Zimcpr$   r$   r%   test_mode_modifies_input  s    
z!TestMode.test_mode_modifies_inputN)r'   r(   r)   rT  rW  r$   r$   r$   r%   rO    s   rO  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestPercentilec                 C   sD   dddddddg| _ ddd	d
ddddg| _ddddddddg| _d S )Nr7   r8   rn   r@   rK   irr   ro   r6   r   r   r   )rQ  rR  rS  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 )	Nrr   r_   r   r{   rH   rt   r   g      ?)r   r|   r	   r    scoreatpercentilerv   r$   r$   r%   test_percentile  s    zTestPercentile.test_percentilec              	   C   sN   t dddgdddgdddgdddgdddgg}tt|ddddg d S )Nr   r8   r7   r   )rM   r   r	   r    r^  rv   r$   r$   r%   test_2D  s    zTestPercentile.test_2DN)r'   r(   r)   r]  r_  r`  r$   r$   r$   r%   rX    s   rX  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   r6   r7   r8   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*  r6   )r    semr:  r
   r  r   r   r   )r!   r   r   r$   r$   r%   test_sem#  s    

"zTestVariability.test_semc                 C   s:   t | j| j}ddddg}t||j|jdk dd d S )NOT\w%ܿr=  OT\w?Fr  decimal)r    zmapr:  r   r"   rJ   )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 )Nrd  re  r=  rf  r  rg  )r    zscorer:  rM   r   r   r   r
   )r!   r   r#   r$   r$   r%   test_zscore4  s      zTestVariability.test_zscoreN)r'   r(   r)   __doc__rM   r   r   r   r:  rc  rj  rl  r$   r$   r$   r%   ra    s
   	ra  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 )Nrn   rK   r   ro   r   rr   r7   r6   r@   r8   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dddddddddddddg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 )Nr8   r6   r   r   rn   r   r7   ro   rK   r   r   r   r   )48E?gsA?g)g%䃞?g 	?l)rr  g46<?)	r   rM   r   r   r
   r   r   r    ks_2samp)r!   r1   ZwinterZspringZsummerZfallr$   r$   r%   test_ks_2sampG  s     zTestMisc.test_ks_2sampc                 C   s.  ddddddddddg
dd	dddddd	ddg
ddd
ddd	dd
d	dg
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dddddddddddddg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 )!Ng      "@g      #@      @g      @g       @r   rp   r   rq   r   r   r   g:pΈ$@r8   r   g(QGu?rK   r6   r   r   rn   r7   ro   r   r   r   r   gr @g-C6?	statisticr   Tr   )r    Zfriedmanchisquarer
   r   rM   r   r   )r!   rp  r   r1   r   r$   r$   r%   test_friedmanchisqV  s$    


zTestMisc.test_friedmanchisqN)r'   r(   r)   rq  rv  rz  r$   r$   r$   r%   rn  =  s   rn  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|kstt|jd
 t|jd t|jd t|jd d S )Nr   rH   r   r@   rA   )slope	interceptZrvaluer   stderrTr   intercept_stderrg5E%?g +l$@g4_Qc?g8?)r   r   sinr    
linregressr   Z_stats_mstats_commonZLinregressResultr   
isinstancer   dirr   r
   r{  r|  r}  r~  )r1   r   r   lrr   r$   r$   r%   test_regress_simplem  s    r  c               	   C   sB   t d} t jd}d}tt|d t| | W 5 Q R X d S )Nr@   zBCannot calculate a linear regression if all x values are identicalr   )r   r;  r   r   r   r    r  )r1   r   msgr$   r$   r%   test_linregress_identical_x  s
    
r  c                  C   s  t dddg\} }}}t| d t|d t jdddgdd\} }}}t| d t|d tjjddddgddd	dgd
}t |\} }}}t| d t|d t j|dd\} }}}t| d t|d dddddddg}dddddddg}t ||d\} }}}t| d t|d t|ddd t|ddd t j||ddd\} }}}t| d t|d t|ddd t|ddd d S ) Nr   r   r_   Zjointr   r{   rH   FTrI   rL   gUUUUUU?r6   r7   r8   r@   r  r   r         rA   r   7   N   gQ?r   gQ@rg  gGz@r   )r    theilslopesr
   r   rM   r   )r{  r|  lowerupperr   r1   r$   r$   r%   test_theilslopes  s>    



 








r  c               	   C   s   t jtdd. tddgddg} tt| s8tW 5 Q R X t	 @}|
td tdddgdddg} t| ddtjtjf W 5 Q R X d S )NzAll `x` coordinates are...r   r   r   zinvalid value encountered...)rc   Zwarnsr   r    r  r   allisnanr   r   filterr   r   )r   supr$   r$   r%   test_theilslopes_warnings  s    r  c                  C   sh   dddg} dddg}t | |\}}}}t | |}t||j t||j t||j t||j dS )zj
    Simple test to ensure tuple backwards-compatibility of the returned
    TheilslopesResult object
    r   r6   r8   rK   rr   N)r    r  r	   r{  r|  	low_slope
high_slope)r   r1   r{  r|  r  r  r   r$   r$   r%   'test_theilslopes_namedtuple_consistency  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 )Nr6   r@   r_   )r   r_   Zseparater   rn   r   )rw  rL  r   r8   gffffffr      sizerandom_stater   r-   )
r   r|   r	   r    siegelslopesr   normrvsr  r   )r   r1   Z	slope_olsZintercept_ols_r{  r|  r$   r$   r%   test_siegelslopes  s$    
r  c                  C   sL   dddg} dddg}t | |\}}t | |}t||j t||j dS )zl
    Simple test to ensure tuple backwards-compatibility of the returned
    SiegelslopesResult object.
    r   r6   r8   rK   rr   N)r    r  r	   r{  r|  )r   r1   r{  r|  r   r$   r$   r%   (test_siegelslopes_namedtuple_consistency  s    

r  c                  C   s0   t tddd} t| jtdddg d S )Nr7   r   r:   r_   r   )r    Zplotting_positionsr   r|   r   r"   r   )posr$   r$   r%   test_plotting_positions  s    r  c                   @   sx   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	e
jdddge
jdddg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}ddddg}t||D ] \}}t	t
|| t	t
|| qd S )Nr[  rR   r   r   r6   r7   r[  rR   r   r   r6   r7   r[  rR   r   r   r6   r7   r[  rR   r   r   r6   r7   r6   r   r7   r8   )r   r   r   r    
normaltestr   skewtestkurtosistestzipr   r   )r!   r1   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  r6   rs   )r   r   r   r    r  r  r  rv   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  r6   r@   TFrI   )r   r   rM   Zr_infr  r   r    r  r   r  r  )r!   r1   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  r6   r   r   )	r   r   Zvstackr   r    r  r  r  r   )r!   r1   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  r6   rx  Tr   )r   r   r    r  r   r!   r1   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_attributes2  s    
z6TestNormalitytests.test_kurtosistest_result_attributesc              
   C   sL   ddddddddddg
}t dd	 t|D }tt|d
 dk d d S )N   r   :   ro   )   r      c                 S   s   g | ]\}}t ||qS r$   )r   full).0rI  cr$   r$   r%   
<listcomp><  s     z;TestNormalitytests.regression_test_9033.<locals>.<listcomp>r   g{Gz?T)r   ZhstackrG  r	   r    r  )r!   countsr1   r$   r$   r%   regression_test_90338  s    z'TestNormalitytests.regression_test_9033testr  r  r   r   r   c           
      C   s   t jjddddd}tt |}tt|}|||d\}}|||d\}}	t||dd t|	|dd tj|d	d
< tjj	|t
|d}|| |d\}}|||d\}}	t||dd t|	|dd d S )Nr@   r   rB   {   locZscaler  r  r   g-q=Zatolr   rn   rI   )r   r  r  getattrr    r   r   r   rM   r   r  r   )
r!   r  r   r1   Z
stats_testZmstats_testZz_exp_exr   r   r$   r$   r%   test_alternative?  s    

z#TestNormalitytests.test_alternativec              	   C   sh   t jjddd}d}tjt|d tj|dd W 5 Q R X tjt|d tj|dd W 5 Q R X d S )NrA   r  r  4alternative must be 'less', 'greater' or 'two-sided'r   ry   r   )	r   r  r  rc   r   r   r    r  r  )r!   r1   r  r$   r$   r%   test_bad_alternativeT  s    z'TestNormalitytests.test_bad_alternativeN)r'   r(   r)   r  r  r  r  r  r  r  rc   rd   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  rj   i  i  rx  Tr   )r   r   Zuint16r    Zf_onewayr   )r!   r>   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                   @   sT  e Zd Ze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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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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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ddddddddddddddddddddddddgZe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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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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gZdd Zdd ZdS )	TestMannwhitneyur   r   r   c                 C   s&   t | j| j}d}t||dd d S )Nrx  Tr   )r    mannwhitneyur1   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s0tt|j|j d S r5  )	r    r  r1   r   r   ry  r   r   r   )r!   res1res2r$   r$   r%   test_against_stats  s    z#TestMannwhitneyu.test_against_statsN)	r'   r(   r)   r   r   r1   r   r  r  r$   r$   r$   r%   r  h  s                                                                                                                                                                                                                                                                                                                                                              r  c                   @   s   e Zd Zdd ZdS )TestKruskalc                 C   s>   dddddg}dddd	d
g}t ||}d}t||dd d S )Nr   r7   rn   ro   r   r6   r8   rK   rr   r@   rx  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d Z	e
jdddgdd ZdS )TestTtest_relc                 C   sv  t jd t jddddddg }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 rA   r8   r   r   r6   rs   )r   r   r   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dddgdddg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 q|W 5 Q R X d S 
Nr  r7   r6   r   r   rI   %invalid value encountered in absoluter   r   )r   r   r   rM   r   r  r   r  r   r   r    r  r   r!   r  r  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ddddg }t|d d df |d d df }d}t||dd	 d S 
Nr  rA   r8   r   r   r6   rx  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 )	Nr@   r   r9   r6   r7   r8   r   rs   )r   r   r    r  r   r|   r  rv   r$   r$   r%   test_invalid_input_size  s     
    z%TestTtest_rel.test_invalid_input_sizec                 C   s$   t g g }ttt| d S r5  )r    r  r   r   r  r  r!   r  r$   r$   r%   
test_empty  s    zTestTtest_rel.test_emptyc              	   C   s   t dddgdddg\}}tt||ftjdf t ^}|td t dddgdddg\}}t	|t
tjtjg t	|t
tjtjg W 5 Q R X d S Nr   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_divisionc              	   C   s>   d}t jt|d" tjdddgdddgd	d
 W 5 Q R X d S Nr  r   r   r6   r7   r8   rn   rK   foor   rc   r   r   r    r  r!   r  r$   r$   r%   r    s    z"TestTtest_rel.test_bad_alternativer   r   r   c                 C   s  t jjddddd}t jjddddd}t j|||d\}}tj|||d\}}t||d	d
 t||d	d
 tj|dd< tj|dd< tjj	|t
|d}tjj	|t
|d}tj|||d\}}t j| | |d\}}t||d	d
 t||d	d
 d S )Nr@   rn   r   *   r  rr   r6   r   r;   r-   r   rI   )r   r  r  r  r    r   r   r   rM   r   r  r   r!   r   r1   r   t_exr  r  r   r$   r$   r%   r    s     
zTestTtest_rel.test_alternativeN)r'   r(   r)   r  r  r  r  r  r  r  rc   rd   r   r  r$   r$   r$   r%   r    s   	
r  c                   @   sV   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dddgdd ZdS )TestTtest_indc                 C   s*  t jd t jddddddg }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  rA   r8   r   r   r6   rs   TZ	equal_varF)r   r   r   r  r   r  r    r   )r!   r  r  r  r  Zres4Zres5r$   r$   r%   r     s&    $$
((
00
,
((
((zTestTtest_ind.test_vs_nonmaskedc              	   C   s   t jd tjt jdddddgdddg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 q|W 5 Q R X d S r  )r   r   r   rM   r   r  r   r  r   r   r    r  r   r  r$   r$   r%   r    s    (8zTestTtest_ind.test_fully_maskedc                 C   s`   t jd t jddddddg }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  '  s
    $z$TestTtest_ind.test_result_attributesc                 C   s$   t g g }ttt| d S r5  )r    r  r   r   r  r  r  r$   r$   r%   r  /  s    zTestTtest_ind.test_emptyc              	   C   s   t dddgdddg\}}tt||ftjdf t R}|td t dddgdddg\}}t	|tj
tj
f t	|tj
tj
f W 5 Q R X t jdddgdddgdd\}}tt||ftjdf t	t jdddgdddgddtj
tj
f d S )Nr   r   r  Fr  )r    r  r	   r   r  r  r   r  r   r   r   r  r$   r$   r%   r  3  s     
z TestTtest_ind.test_zero_divisionc              	   C   s>   d}t jt|d" tjdddgdddgd	d
 W 5 Q R X d S r  r  r  r$   r$   r%   r  B  s    z"TestTtest_ind.test_bad_alternativer   r   r   c                 C   s  t jjddddd}t jjddddd}t j|||d\}}tj|||d\}}t||dd	 t||dd	 tj|d
d< tj|dd< tjj	|t
|d}tjj	|t
|d}t j| | |d\}}tj|||d\}}t||dd	 t||dd	 d S )Nr@   r6   rH   r  r  rr   r   r;   r-   r   rF   rG   rI   )r   r  r  r  r    r   r   r   rM   r   r  r   r  r$   r$   r%   r  G  s     
zTestTtest_ind.test_alternativeNr'   r(   r)   r  r  r  r  r  r  rc   rd   r   r  r$   r$   r$   r%   r    s   
r  c                   @   sV   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dddgdd ZdS )TestTtest_1sampc                 C   sd   t jd t jddddddg }t|d d df d}t|d d df d}t|| d S )Nr  rA   r8   r   r   r6   )r   r   r   r  r   ttest_1sampr    r   )r!   r  r  r  r$   r$   r%   r  ^  s
    z!TestTtest_1samp.test_vs_nonmaskedc              	   C   s   t jd tjt jddddgd}t jt jf}t R}|t	d t jt jfdf|dffD ]&}t
j| \}}t|| t|| q`W 5 Q R X d S )Nr  r7   r   rI   r  r{   )r   r   r   rM   r   r  r   r   r  r   r    r  r   )r!   r  r   r  r  r  r   r$   r$   r%   r  g  s    
z!TestTtest_1samp.test_fully_maskedc                 C   sT   t jd t jddddddg }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  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  z  s    zTestTtest_1samp.test_emptyc              	   C   s   t dddgd\}}tt||ftjdf t H}|td t dddgd\}}t	t
| t|tjtjf W 5 Q R X d S 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_divisionc              	   C   s8   d}t jt|d tjdddgddd W 5 Q R X d S )	Nr  r   r   r6   r7   r8   r  r   )rc   r   r   r    r  r  r$   r$   r%   r    s    z$TestTtest_1samp.test_bad_alternativer   r   r   c                 C   s   t jjddddd}t j|d|d\}}tj|d|d\}}t||dd	 t||dd	 tj|d
d< tjj	|t
|d}t j| d|d\}}tj|d|d\}}t||dd	 t||dd	 d S )Nr@   r6   rH   r  r  r   r   r;   r-   r   rI   )r   r  r  r  r    r   r   r   rM   r   r  r   )r!   r   r1   r  r  r  r   r$   r$   r%   r    s    
z TestTtest_1samp.test_alternativeNr  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ddddddgddddddggddddddgddddddg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 )Nr   r   r6   r7   r8   r   rn   rI   rs   r   r   r   r{   g       )r   rM   r   r    describer	   nobsminmaxmeanvarianceskewnessr   rM  )r!   r>   r   ZaminZamaxr$   r$   r%   test_basic_with_axis  s     
z!TestDescribe.test_basic_with_axisN)r'   r(   r)   rm  r  r$   r$   r$   r%   r    s   r  c                   @   s8  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(dLS )M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   ddddgS )z9 Returns list of sample sizes to be used for comparison. r   rH   r@   rn   r$   r\  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  rn   g 7yACr   g s?CrI   )r   r   r   r  r  lenrM   r   )r!   r   r1   r   r  ymrJ   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 )Nrn   r   rI   )r   r  r   r   r  rM   r   r  )
r!   r   nxr1   r   r  r   rI  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 r5  )r  r  r   r  r    r   r   rk   )r!   r   r1   r   r  r   Zresult1Z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  rg  )r  r  r   r   r    r
   
r!   r   r1   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 )NrK   F)r   r|   r   r   r    r   rv   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%<=r-   )r  r  r   r/   r  r    r   r!   r   r1   r   r  r   r   r  r$   r$   r%   
test_gmean  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 Nr@   )r  r  r   r3   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   rC  r    r
   r	  r$   r$   r%   	test_skew&  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   r9  r    r
   r	  r$   r$   r%   r<  2  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绽|=r-   r   )	r  r  r  Zstdr   r   rk  r    r  )r!   r   r1   r   r  r   ZzxZzyr$   r$   r%   rl  >  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   rM  r    r
   r	  r$   r$   r%   rN  P  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 )NrA   rn   r8   r   r*  g'e@gh㈵>r  r   )r   r+     rg  )r   r|   r  rM   r   r   rb  r    r   r  r  r
   )
r!   r>   amr   r  r   r1   r   r  r   r$   r$   r%   rc  [  s0        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*  rK   r  rg  )	r  r  r   r  r    r   r
   r   rk   )	r!   r   r1   r   r  r   r   r  iir$   r$   r%   test_describep  s    z"TestCompareWithStats.test_describec                 C   s&   t td}d}t||dd d S )Nrn   )r  r  r  r  r  rM  Tr   )r    r  r   r|   r   )r!   r6  r   r$   r$   r%   test_describe_result_attributesz  s    z4TestCompareWithStats.test_describe_result_attributesc                 C   sD   |   D ]6}| |\}}}}t|}tj|}t|| qd S r5  )r  r  r   ru   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   r1   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   r@   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 )Nrz   )Z
lowerlimitr@   )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   ri  r    r   r  )r!   r   r1   r   r  r   r   Zzmr$   r$   r%   rj    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  rg  )r  r  r
   r   r>  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   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 )NrA   r   )	r   r|   r   r  r    r   sortr"   rJ   )r!   r>   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  rg  )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 )Nrr   )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)rA   r6   g      4@)r   r   r   r  r    r   rk   )r!   r1   r   r  r$   r$   r%   test_skewtest_2D_notmasked  s    
z/TestCompareWithStats.test_skewtest_2D_notmaskedc           	      C   s   d}|   D ]r}|dkr| ||\}}}}t|}tj|}t|d d |d d dd t|d d |d d dd qd S )Nr6   rr   r   r;   r-   r   )r  r  r   r  r    r   )	r!   r  r   r1   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x t f}|td |  D ]J}|dkr*| |\}}}}t|}tj	|}t
t |t | q*W 5 Q R X W 5 Q R X d S )Nr0  )Zoverz!kurtosistest only valid for n>=20rr   )r   rU   r   r  UserWarningr  r  r   r  r    r   rk   )	r!   r  r   r1   r   r  r   r   r  r$   r$   r%   test_normaltest  s    
z$TestCompareWithStats.test_normaltestc                 C   s   t dddddddddddgd}t dddddddddddddddg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 )Nr   r6   r7   r8   r   rn   rw  rI   r   rj   )r   rk   r[   rM   r   rU  r   Zfind_repeatsr    r	   Zintp)r!   r1   tmprJ   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   r@   rg  r   ro   )r  r  r   r   r    r
   r	  r$   r$   r%   r     s    z$TestCompareWithStats.test_kendalltauc                 C   sR   |   D ]D}| |\}}}}t|}tj|}t|j|dt|  qd S )Nr   )r  r  r   ro  r    r
   r   r  r	  r$   r$   r%   rq    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 5 Q R X qdS )zFChecks that mstats.ks_1samp and stats.ks_1samp agree on masked arrays.autor   asympr   r   r   r   rP  N)r   r  r  r   Zks_1sampr  Zcdfr    r	   r   rk   r!   rP  r  r   r   r1   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 5 Q R X 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   rk   r,  r$   r$   r%   test_kstest_1samp'  s    z&TestCompareWithStats.test_kstest_1sampc              
   C   s   dD ]}t  }|dkr(d}|t| dD ]}|  D ]z}| |\}}}}	tj||||d}
tjj||	||d}tt	
|
t	
| tj||||d}tt	
|
t	
| q8q,W 5 Q R X qdS )zVChecks that mstats.ks_2samp and stats.ks_2samp agree on masked arrays.
        gh-8431r'  r(  r   )ks_2samp: Exact calculation unsuccessful.r*  r+  N)r   r  r   r  r  r   ru  r    r	   r   rk   r!   rP  r  messager   r   r1   r   r  r   r  r  r  r$   r$   r%   rv  4  s    z"TestCompareWithStats.test_ks_2sampc              
   C   s   dD ]}t  }|dkr(d}|t| dD ]}|  D ]z}| |\}}}}	tj||||d}
tjj||	||d}tt	
|
t	
| tj||||d}tt	
|
t	
| q8q,W 5 Q R X qdS )zKChecks that 2-sample mstats.kstest and stats.kstest agree on masked arrays.r'  r0  r1  r*  r+  N)r   r  r   r  r  r   r.  r    r	   r   rk   r2  r$   r$   r%   test_kstest_2sampE  s    z&TestCompareWithStats.test_kstest_2sampN))r'   r(   r)   rm  r  r  r  r  r   r   r  r
  r  r  r<  rl  rN  rc  r  r  r  r  r  r  rj  r?  r  r  r  r  r   r!  r"  r$  r&  r   rq  r-  r/  rv  r4  r$   r$   r$   r%   r    sL   	
	
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   r6   r8   r7   rn   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   rg  |	&	@|	&	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   rg  r6  r7   ҏGw?r    r8  r9  r:  r
   r;  r!   r<  r   r=  r   r$   r$   r%   test_brunnermunzel_two_sidedt  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 )Nrg  r6  r7  r@  rA  rB  r$   r$   r%   test_brunnermunzel_default  s    z,TestBrunnerMunzel.test_brunnermunzel_defaultc                 C   s0   d}d}t |dk tttj| j| j|| d S )Nry   r  r   r   r   r   r    r8  r9  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)rG  rg  r6  r7  g "H[?rA  rB  r$   r$   r%   $test_brunnermunzel_distribution_norm  s    z6TestBrunnerMunzel.test_brunnermunzel_distribution_normc                 C   s0   d}d}t |dk tttj| j| j|| d S )Nr   ry   )r  rI  rE  rF  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 r5  )r    r8  r9  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   rM   Zmasked_invalidr   r9  r:  r;  r?  rC  rD  rH  rJ  rK  rL  r$   r$   r$   r%   r5  V  s&          &r5  )NNr*   )NNr*   )>rm  r}   r   Znumpyr   r   Znumpy.marM   r   r   Zscipy.stats.mstatsr   r    ZscipyZcommon_testsr   rc   r   r   Znumpy.ma.testutilsr	   r
   r   r   r   r   r   Znumpy.testingr   Zscipy.statsr   r   r2   r4   r5   rg   rm   rx   r   r3  rO  rX  ra  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r5  r$   r$   r$   r%   <module>   sf   $

:#  :c ) 0'_	1[^C   !