B
    `                @   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 G dd deZd>ddZd?ddZ G dd deZ!G dd deZ"G dd deZ#G dd deZ$G dd deZ%G dd deZ&G dd deZ'G d d! d!eZ(G d"d# d#eZ)d$d% Z*d&d' Z+d(d) Z,d*d+ Z-G d,d- d-Z.G d.d/ d/Z/G d0d1 d1Z0G d2d3 d3Z1G d4d5 d5Z2G d6d7 d7Z3G d8d9 d9Z4G d:d; d;eZ5G d<d= d=eZ6dS )@z?
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_warningsc               @   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 )Ng      @g      @g      ?g     G@g      .@g       @g     H@g      B@g      @g     C@g      @g      E@g      D@g     8g     D@g     E@g3333333@g333333-@g333333?g     B@g      @gffffffE@gfffffD@gffffff@r   )r   2   )axislimit)nparraymstatsZ
mquantilesr
   )selfdatadesiredZquants r   R/home/dcms/DCMS/lib/python3.7/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	   r"   )
array_liker   r   r"   r#   xr   r   r   check_equal_gmean,   s    r'   c             C   s.   t j| ||d}t|||d t|j| d S )N)r   r"   )r#   )r   hmeanr   r	   r"   )r%   r   r   r"   r#   r&   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*   ddddg}t dd}t||dd d S )	Nr               g      ?g+=)r#   )r   powerr'   )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   r+   r,   r-   r   )mask   gUUUUUU?g+=)r#   )mar   r'   r   r/   )r   r0   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 )Nr2   r3   r4   r5   r   r6   r7   r8   r9   r:   r   r   )r;   gdq_D@)r   r=   r   r'   )r   r0   r   r   r   r   test_1d_ma_valueH   s    8zTestGeoMean.test_1d_ma_valuec             C   sJ   t jddddddddd	d
g
}d}t jdd t|| W d Q R X d S )Nr2   r3   r4   r5   r   r6   r7   r8   r9   r   gdq_D@ignore)all)r   r=   r   errstater'   )r   r0   r   r   r   r   test_1d_ma0N   s     zTestGeoMean.test_1d_ma0c             C   sJ   t jddddddddd	d
g
}d}t jdd t|| W d Q R X d S )Nr2   r3   r4   r5   r   r6   r7   r8   r9   gdq_D@r@   )rA   )r   r=   r   rB   r'   )r   r0   r   r   r   r   test_1d_ma_infU   s     zTestGeoMean.test_1d_ma_inffloat96z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   r+   r,   r-   r   )r;   r<   gUUUUUU?g+=)r"   r#   )r=   r   r   r/   astyperF   r'   )r   r0   
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   r+   r,   r-   r   )r;   g+=)r   r#   r.   g      ?r<   g      ?rD   r2   r3   r4   r5   r   r6   r7   r8   r9   r:   n   x   g/,$qJ@)r=   r   r   r'   r/   )r   r0   r   r   r   r   
test_2d_mab   s    $&
"zTestGeoMean.test_2d_maN)r   r   r    r1   r>   r?   rC   rE   pytestmarkskipifhasattrr   rJ   rM   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   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   r+   r,   r-   r   )r;   g/袋.?g+=)r#   r2   r3   r4   r5   r   r6   r7   r8   r9   r:   g=b#A@gO?@)r=   r   r)   r   )r   r0   r   r   r   r   r1   t   s     
zTestHarMean.test_1drF   zcannot find float96 so skipping)rG   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   r+   r,   r-   r   )r;   g/袋.?)r"   )r=   r   r   asarrayrF   r)   )r   r0   rI   r   r   r   rJ      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   r+   r,   r-   r   )r;   g+=)r   r#   gQ?g433333@g?rD   r2   r3   r4   r5   r   r6   r7   r8   r9   r:   rK   rL   gmWUC@)r=   r   r)   r   )r   r0   r   r   r   r   test_2d   s    $&
"zTestHarMean.test_2dN)r   r   r    r1   rN   rO   rP   rQ   r   rJ   rT   r   r   r   r   rR   s   s    rR   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   r+   r,   r-      r<      g      !@r2   g      @g      @   T)Zuse_missingg      @)r   g      @)r=   r   r
   r   rankdatar   )r   r&   r   r   r   test_ranking   s$    


"
zTestRanking.test_rankingN)r   r   r    rZ   r   r   r   r   rU      s   rU   c               @   sL   e Zd Zdd Zdd Zejje	 dkdddd	 Z
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 d 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 )Nr2   errorr   g      ?rD   g      T)r;   r   g        r,   r+   gUUUUUU?Fg     X@)r=   arangewarningscatch_warningssimplefilterRuntimeWarningr
   r   pearsonrr   r   r   r   sqrt)
r   r&   prx1y1rpr;   Zx2y2r   r   r   test_pearsonr   s(    

 
zTestCorr.test_pearsonrc             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 ).Ng333333@g      @gGz	@gHzG@gffffff?gQ@g@r   gIQ=g       @g33333G@g      E@g%@gN@g333333?g      P@ǧO@g      ?gffffff?g@g333333?g333333@g@g6@g @g333333F@g'@g8@g333333?g@gD@g        gffffff@g333333?gI
?i  	   i  r2   i  i  gV-?)correlationpvalueT)r=   )
r
   r   	spearmanrr   r   r=   fix_invalidlistranger   )r   r&   yres
attributesr   r   r   test_spearmanr   s2    "zTestCorr.test_spearmanrppc64lezfails/crashes on ppc64le)rG   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 tjd3td4}t |d5}tjd3td4}t|d6d  |d d6 f}ttt||d  t||}d7}t||d8d9 d S ):Nrk   r+   rV   r<   r-   rW      g        g      ?r2   gxO~>Zbanana)methodr   g?>?gaV>g}'}'?go&5>rD   g      g?>g}'}'g333333@g      @gGz	@gHzG@gffffff?g     :@gQgףp=
@gQ@g@g1UU?g      ?Z
asymptoticglgN?g~ȋgQM?r   r3   r6   r5   r8   !   C         -   gXJĿgvPwTk?i  )r"   i  i  )rl   rm   T)r=   )r=   r   r   r
   rS   r   
kendalltaur]   assert_raises
ValueErrorro   r   floatZmasked_greaterZconcatenater   isfiniter   )	r   r&   rr   expectedbzresultrs   rt   r   r   r   test_kendalltau   sp    


  zTestCorr.test_kendalltauc             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 )Nr-   r+         rV   r   r,   rW   r<      rk   rw      zglobal p-value (indep)gMb?zseasonal p-valueg
ףp=
?g(\?g?g{Gz?)r   r=   ro   Tr   Zkendalltau_seasonalr
   round)r   r&   outputr   r   r   test_kendalltau_seasonalR  s     
z!TestCorr.test_kendalltau_seasonalc          #   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   rD   g-@g+@g(@g333333$@gffffff@gffffff@g333333@gffffff@g333333@g      @gffffff
@g	@g      @gffffff@g      @g333333@gffffff@g @g333333?g      ?g?g333333?g?g?gffffff?g333333?g      ?g?g?g/"?rV   )rl   rm   T)r=   )r   r   r
   r   Zpointbiserialrr   )r   r&   rr   rs   rt   r   r   r   test_pointbiserial^  s    :zTestCorr.test_pointbiserialN)r   r   r    rj   ru   rN   rO   rP   platformmachiner   r   r   r   r   r   r   r[      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 )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 )Nr2   r   r   r+   r,   r-   rV   r<   rW   rX   rk   )r+   rX   )FF)limits	inclusive)g?g?T)r   relative   rD   r:   r7   r3   )r   r   rK   rw   )
r=   r]   r	   r   Ztrimr   reshape_maskZravelr   )r   r0   r&   r   trimxr   r   r   	test_trimn  s>    
$
&


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 )Nr:   r6   rg   )tailr8   r   r7   0   r   r   r   "   r3      )r2   r2   )r=   r]   r	   r   trimbothcountZtrimtailr   r   r   shape)r   r&   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 )Nr2   )g333333?gQ?)FF)r   r   r   r   r+   r,   r-   rV   r<   rW   rX   rk   )r;   )r=   r]   r   Ztrimrr   r	   r;   )r   r&   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                  i  i(  i+  i2  ix  i  i  i  i  i3
  g?iW  r   )g?g?)g?g?i  )r=   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   i  i(  i+  i2  ix  i  i  i  i  i3
  )g?g?g>L@rV   g?)r=   r   r
   r   Ztrimmed_stde)r   r   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   i  i(  i+  i2  ix  i  i  i  i  i3
  )g?g?r   )ddofg@)FFgffff7@rV   )	r=   r   r
   r   	winsorizevarr   r	   r;   )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   r+   )g?g?raise)Z
nan_policy)g?g?)g?g?Zomit)	r=   r   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   l  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( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3S )4TestMomentsr   r+   r,   r-   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?TF)r"   )r;   c             C   sf   t | jd}t|dd t | jd}t|d t | jd}t|d t | jd}t|d d S )	Nr   g        r2   r+   g      ?r,   r-   g     @)r   momenttestcaser
   )r   rr   r   r   r   test_moment  s    

zTestMoments.test_momentc             C   s   t | j}t|dd d S )Ng%?r2   )r   	variationr   r
   )r   rr   r   r   r   test_variation  s    zTestMoments.test_variationc             C   sP   t | j}t|dd t j| jdd}t|dd t | j}t|dd d S )Ng7l*ҿr2   r   )biasg2۠ۿg        )r   skewtestmathworksr
   r   )r   rr   r   r   r   test_skewness  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dd	d
ddgtjdddddgtdd}t	t | j
d| x*t| j
D ]\}}tt |||  qW t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| x0t| j
D ]"\}}tt j|dd||  q W tt | j
dd d f t| j
dd d f dd d S )Nr   r   )Zfisherr   gO߻S@r2   gx|N@g=
ףp=?g      g      g'@=g        gt
QFT)r"   )r;   g?<g`@7)r   r+   r-   )Znulp)r   kurtosisr   r
   r   r=   r   r   boolr   testcase_2d	enumerater   r   )r   rr   Z
correct_2dirowZcorrect_2d_bias_correctedr   r   r   test_kurtosis  s4    
zTestMoments.test_kurtosisc             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   r+   r,   r-   rV   r<   rW   )r,   rV   )r,   r+   )r   )r,   r-   )r   r,   )r   r   )r+   r   rD   )moder   T)r=   )	r   r   r   r=   Zmasked_wherer	   r   r   r   )r   a1a2a3Za4Zma1Zma2Zma3Zma4Za1_resrt   r   r   r   	test_mode#  s0    "00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)r:   r:   r   r   )r   zeroscopyr   r   r	   )r   Zimcpr   r   r   test_mode_modifies_input@  s    
z$TestMoments.test_mode_modifies_inputN)r   r   r    r   r=   ro   r   r   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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 )Nr,   r-   rV   r2   r<   irX   rW   r+   r   g      @g      @)r   r   r   )r   r   r   r   setup_methodL  s    zTestPercentile.setup_methodc             C   sH   t dd }tt|dd tt|dd tt|dd d S )	NrX   g      ?r   g        r:   g      @r   g      ?)r   r]   r	   r   scoreatpercentile)r   r&   r   r   r   test_percentileQ  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   r-   r,   r   )r=   r   r	   r   r   )r   r&   r   r   r   test_2DW  s    zTestPercentile.test_2DN)r   r   r    r   r   r   r   r   r   r   r   K  s   r   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   semr   r
   r   r   r   rc   )r   rr   nr   r   r   test_semf  s
    

"zTestVariability.test_semc             C   s:   t | j| j}ddddg}t||j|jdk dd d S )NgOT\wg%ܿg%?gOT\w?Fr   )decimal)r   zmapr   r   r   r;   )r   rr   Zdesired_unmaskedvalsr   r   r   	test_zmapn  s
    zTestVariability.test_zmapc             C   s4   t | j}tddddtjg}t||dd d S )NgOT\wg%ܿg%?gOT\w?r   )r   )r   zscorer   r=   ro   r   r   r
   )r   rr   r   r   r   r   test_zscorew  s    zTestVariability.test_zscoreN)r   r   r    __doc__r=   ro   r   r   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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 )NrV   r<   rw   rW   rk   rX   r,   r+   r2   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    :0:0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 )Nr-   r+   r   r   rV   r   r,   rW   r<   r   rk   rw   r   )g48E?gsA?g)g%䃞?g 	?l)g48E?g46<?)	r   r=   ro   r   r
   r   r   r   ks_2samp)r   r&   ZwinterZspringZsummerZfallr   r   r   test_ks_2samp  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      @g       @g      @g      !@g      @g      @g      @g      @r   g:pΈ$@r-   r   g(QGu?r<   r+   r   r   rV   r,   rW   r   rk   rw   r   gr @g-C6?)	statisticrm   T)r=   )r   Zfriedmanchisquarer
   r   r=   ro   r   )r   r   r   r&   rt   r   r   r   test_friedmanchisq  s     
 

zTestMisc.test_friedmanchisqN)r   r   r    r   r   r   r   r   r   r   r     s   r   c        	      C   s   t ddd} dt ddd d }|t t ddd7 }t| |\}}}}}t|d t|d t| |}d}t||d	d
 d S )Nr   r:   g?r2   r3   g5E%?g +l$@)slope	interceptZrvaluerm   stderrT)r=   )r   Zlinspacesinr   
linregressr
   r   )	r&   rr   r   r   Zr_valueZp_valueZsterrrs   rt   r   r   r   test_regress_simple  s    

r   c              C   s   t dddg\} }}}t| d t|d tjjddddgddddgd}t |\} }}}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d
d t|dd
d d S )Nr   r   g      ?r:   FT)r;   gUUUUUU?gUUUUUU?r+   r,   r-   r2   r   r   rk         r3   r}   7   N   gQ?gQ@)r   gGz@)r   Ztheilslopesr
   r   r=   r   )r   r   lowerupperrr   r&   r   r   r   test_theilslopes  s    

 


r   c              C   s<  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 jd t d}dd|  tjj	dd } t
|| \}}}}}t| |\}}t||dd t||dd tj| |dd\}}t||dd t||dd d S )Nr+   r2   g      ?)g       @g      ?Zseparate)rx   rV   g      @)g      @g      i  r-      gffffffg333333?)sizeg?)r#   )r   r]   r	   r   Zsiegelslopesrandomseedr   normZrvsr   r   )rr   r&   Z	slope_olsZintercept_ols_r   r   r   r   r   test_siegelslopes  s&    
r   c              C   s0   t tddd} t| jtdddg d S )Nr,   r   g      ?g      ?g      ?)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}ddddg}x.t||D ] \}}t	t
|| t	t
|| qW d S )N)r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r+   r   r,   r-   )r   r   r   r   
normaltestr   skewtestkurtosistestzipr   r   )r   r&   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 )N)r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r+   )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 )N)r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r+   r2   TF)r;   )r   r   r=   Zr_infr   r   r   r  r   r  r  )r   r&   xmr   r   r   test_maskedarray_input  s    z)TestNormalitytests.test_maskedarray_inputc             C   s~   t dd }t |gd j}xXtjtjtjgD ]D}||}||}t|d |d gd  t|d |d gd  q2W d S )N)r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r+   r   r   )	r   r   Zvstackr   r   r  r  r  r   )r   r&   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 )N)r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r+   )r   rm   T)r=   )r   r   r   r  r   )r   r&   rs   rt   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 )N)r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r+   )r   rm   T)r=   )r   r   r   r  r   )r   r&   rs   rt   r   r   r   #test_kurtosistest_result_attributes+  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   :   rW   )   r      c             S   s   g | ]\}}t ||qS r   )r   full).0r   cr   r   r   
<listcomp>5  s    z;TestNormalitytests.regression_test_9033.<locals>.<listcomp>r   g{Gz?T)r   Zhstackr   r	   r   r  )r   countsr&   r   r   r   regression_test_90331  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  )r"   i  i  )r   rm   T)r=   )r   r   Zuint16r   Zf_onewayr   )r   r0   r   rs   rt   r   r   r   test_result_attributes:  s
    z"TestFOneway.test_result_attributesN)r   r   r    r  r   r   r   r   r  9  s   r  c               @   s   e Zd Zdd ZdS )TestMannwhitneyuc             C   sZ  t dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd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}t dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd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}t||}d}t||dd d S )Ng      ?g       @g      @)r   rm   T)r=   )r   r   r   Zmannwhitneyur   )r   r&   rr   rs   rt   r   r   r   r  C  sB      z'TestMannwhitneyu.test_result_attributesN)r   r   r    r  r   r   r   r   r  B  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   r,   rV   rW   rk   r+   r-   r<   rX   r2   )r   rm   T)r=   )r   Zkruskalr   )r   r&   rr   rs   rt   r   r   r   r  j  s
    z"TestKruskal.test_result_attributesN)r   r   r    r  r   r   r   r   r  i  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   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 )Ni r3   r-   r   r   r+   )r   )r   r   r   randnr   	ttest_relr   r   )r   outcomeres1res2res3r   r   r   r	  u  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 xn|d d df |d d df ft j	t j	gdd	gfgD ]6}t
j| \}}t|t j	t j	f t|t j	t j	f q~W W d Q R X d S )
Ni r,   r+   r   r   )r;   z%invalid value encountered in absoluteg      ?g       @)r   r   r   r=   masked_arrayr   r   filterra   r   r   r!  r   )r   r"  suppairtrh   r   r   r   test_fully_masked  s    :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 )
Ni r3   r-   r   r   r+   )r   rm   T)r=   )r   r   r   r   r   r!  r   )r   r"  rs   rt   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 )	Nr2   rw   r.   r+   r,   r-   r   )r   )r   r   r   r!  r   r]   r   )r   r&   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 )N)r   r!  r   r   rA   isnan)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 d Q R X d S )Nr   r   z%invalid value encountered in absolute)r   	ttest_indr	   r   absr  r   r'  ra   r   r   r   )r   r*  rh   r(  r   r   r   test_zero_division  s    z TestTtest_rel.test_zero_divisionN)	r   r   r    r	  r+  r  r,  r.  r1  r   r   r   r   r  t  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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 )Ni r3   r-   r   r   r+   )r   T)	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 xn|d d df |d d df ft j	t j	gdd	gfgD ]6}t
j| \}}t|t j	t j	f t|t j	t j	f q~W W d Q R X d S )
Ni r,   r+   r   r   )r;   z%invalid value encountered in absoluteg      ?g       @)r   r   r   r=   r&  r   r   r'  ra   r   r   r/  r   )r   r"  r(  r)  r*  rh   r   r   r   r+    s    (: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 )
Ni r3   r-   r   r   r+   )r   rm   T)r=   )r   r   r   r   r   r/  r   )r   r"  rs   rt   r   r   r   r    s
    $z$TestTtest_ind.test_result_attributesc             C   s$   t g g }ttt| d S )N)r   r/  r   r   rA   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 d 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   z%invalid value encountered in absoluteF)r3  )r   r/  r	   r   r0  r  r   r'  ra   r   r   )r   r*  rh   r(  r   r   r   r1    s     z TestTtest_ind.test_zero_divisionN)r   r   r    r	  r+  r  r.  r1  r   r   r   r   r2    s
   
r2  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ddddg }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|| t|d d d df |d d dd f }t|| d S )Ni r3   r-   r   r   r+   )r   )r   r   r   r   r   ttest_1sampr   r   )r   r"  r#  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dddgd}t jt jf}t V}|t	d xBt jt jfdf|dfgD ]&}t
j| \}}t|| t|| qbW W d Q R X d S )Ni r,   r   )r;   z%invalid value encountered in absoluteg        )r   r   r   r=   r&  r   r   r   r'  ra   r   r5  r   )r   r"  r   r(  r)  r*  rh   r   r   r   r+    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 )
Ni r3   r-   r   r   r+   )r   rm   T)r=   )r   r   r   r   r   r5  r   )r   r"  rs   rt   r   r   r   r    s
    z&TestTtest_1samp.test_result_attributesc             C   s$   t g d}ttt| d S )Nr   )r   r5  r   r   rA   r-  )r   r#  r   r   r   r.  "  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 d Q R X d S )Nr   r   z%invalid value encountered in absolute)r   r5  r	   r   r0  r  r   r'  ra   r   r-  r   r   )r   r*  rh   r(  r   r   r   r1  &  s    z"TestTtest_1samp.test_zero_divisionN)r   r   r    r	  r+  r  r.  r1  r   r   r   r   r4    s
   r4  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   ddddgS )z9 Returns list of sample sizes to be used for comparison. i  r:   r2   rV   r   )r   r   r   r   get_nH  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 )Ni rV   g 7yACr   g s?C)r;   )r   r   r   r   r  lenr=   r   )r   r   r&   rr   r  ymr;   r   r   r   generate_xy_sampleL  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}x:t|D ].}| |\|d d |f< |d d |f< }}	qZW |d| |d|d d f< |d| |d|d d f< t jj|t |d}t jj|t |d}||||fS )NrV   r   )r;   )r   r  r   rq   r:  r=   r   r-  )
r   r   nxr&   rr   r  r9  r   ZdxZdyr   r   r   generate_xy_sample2D[  s    .z)TestCompareWithStats.generate_xy_sample2Dc             C   sX   xR|   D ]F}| |\}}}}t||}tj||}tt|t| q
W d S )N)r7  r:  r   r   r   r   r   rS   )r   r   r&   rr   r  r9  r#  r$  r   r   r   test_linregressj  s
    z$TestCompareWithStats.test_linregressc       
      C   sf   x`|   D ]T}| |\}}}}t||\}}tj||\}}	t||dd t||	dd q
W d S )Nr   )r   )r7  r:  r   rb   r   r
   )
r   r   r&   rr   r  r9  rg   rh   rmpmr   r   r   rj   q  s    z"TestCompareWithStats.test_pearsonrc       
      C   sb   x\|   D ]P}| |\}}}}t||\}}tj||\}}	t||d t||	d q
W d S )Nr   )r7  r:  r   rn   r   r
   )
r   r   r&   rr   r  r9  rg   rh   r>  r?  r   r   r   ru   z  s    z#TestCompareWithStats.test_spearmanrc             C   s    t d}tttj||d d S )Nr<   F)r   r]   r   r   r   rn   )r   r&   r   r   r   !test_spearmanr_backcompat_useties  s    
z6TestCompareWithStats.test_spearmanr_backcompat_usetiesc             C   s   xz|   D ]n}| |\}}}}tt|}tjt|}t||dd tt|}tjt|}t||dd q
W d S )NgvIh%<=)r#   )r7  r:  r   r$   r0  r   r   )r   r   r&   rr   r  r9  rg   r>  r   r   r   
test_gmean  s    zTestCompareWithStats.test_gmeanc             C   s|   xv|   D ]j}| |\}}}}tt|}tjt|}t||d tt|}tjt|}t||d q
W d S )Nr2   )r7  r:  r   r(   r0  r   r
   )r   r   r&   rr   r  r9  rg   r>  r   r   r   
test_hmean  s    zTestCompareWithStats.test_hmeanc             C   sl   xf|   D ]Z}| |\}}}}t|}tj|}t||d t|}tj|}t||d q
W d S )Nr2   )r7  r:  r   r   r   r
   )r   r   r&   rr   r  r9  rg   r>  r   r   r   	test_skew  s    

zTestCompareWithStats.test_skewc             C   sl   xf|   D ]Z}| |\}}}}t|}tj|}t||d t|}tj|}t||d q
W d S )Nr2   )r7  r:  r   r   r   r
   )r   r   r&   rr   r  r9  rg   r>  r   r   r   r     s    

z TestCompareWithStats.test_momentc          	   C   s   x|   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
W d S )Ng|=)r#   r   )	r7  r:  meanZstdr   r   r   r   r8  )r   r   r&   rr   r  r9  ZzxZzyr   r   r   r     s      z TestCompareWithStats.test_zscorec             C   sl   xf|   D ]Z}| |\}}}}t|}tj|}t||d t|}tj|}t||d q
W d S )Nr2   )r7  r:  r   r   r   r
   )r   r   r&   rr   r  r9  rg   r>  r   r   r   r     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 x| 	 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 qbW d S )Nr3   rV   r-   r   )r   g'e@gh㈵>)atolr   )r   r      )r   )r   r]   r   r=   r   r   r   r   r   r7  r:  r
   )
r   r0   amrg   r>  r   r&   rr   r  r9  r   r   r   r     s     zTestCompareWithStats.test_semc       	      C   sz   xt|   D ]h}| |\}}}}tj|dd}tjj|dd}x2tdD ]&}tt|| t|| dd qHW q
W d S )Nr   )r   r<   r   )r   )	r7  r:  r   describer   rq   r
   r   rS   )	r   r   r&   rr   r  r9  rg   r>  iir   r   r   test_describe  s    z"TestCompareWithStats.test_describec             C   s&   t td}d}t||dd d S )NrV   )ZnobsZminmaxrD  ZvarianceZskewnessr   T)r=   )r   rH  r   r]   r   )r   actualrt   r   r   r   test_describe_result_attributes  s    z4TestCompareWithStats.test_describe_result_attributesc             C   sH   xB|   D ]6}| |\}}}}t|}tj|}t|| q
W d S )N)r7  r:  r   rY   r   r   )r   r   r&   rr   r  r9  rg   r>  r   r   r   test_rankdata  s
    
z"TestCompareWithStats.test_rankdatac             C   s\   xV|   D ]J}| |\}}}}tt|tj|d tt|tj|d q
W d S )Nr   )r7  r:  r
   r   Ztmeanr   )r   r   r&   rr   r  r9  r   r   r   
test_tmean   s    zTestCompareWithStats.test_tmeanc             C   s   x|   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
W d S )Ng       @r2   g      @)Z
upperlimit)r7  r:  r
   r   Ztmaxr   )r   r   r&   rr   r  r9  r   r   r   	test_tmax  s    zTestCompareWithStats.test_tmaxc             C   s   x|   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
W d S )Ng      )Z
lowerlimitr2   )r7  r:  r	   r   Ztminr   r
   )r   r   r&   rr   r  r9  r   r   r   	test_tmin  s    zTestCompareWithStats.test_tminc             C   s\   xV|   D ]J}| |\}}}}t||}tj||}t||dt| dd q
W d S )Nr   g|=)rE  )r7  r:  r   r   r   r   r8  )r   r   r&   rr   r  r9  r   Zzmr   r   r   r     s
    zTestCompareWithStats.test_zmapc             C   s`   xZ|   D ]N}| |\}}}}tt|tj|dd tt|tj|dd q
W d S )Nr   )r   )r7  r:  r
   r   r   r   )r   r   r&   rr   r  r9  r   r   r   r   %  s    z#TestCompareWithStats.test_variationc             C   s`   xZ|   D ]N}| |\}}}}tt|tj|dd tt|tj|dd q
W d S )Nr   )r   )r7  r:  r
   r   tvarr   )r   r   r&   rr   r  r9  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 )Nr3   g?)	r   r]   r   r   r   r   sortr   r;   )r   r0   r   Zbmr   r   r   test_trimboth5  s    
z"TestCompareWithStats.test_trimbothc             C   s   x~|   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
W d S )Nr   )r   )g       g       @)r   )r7  r:  r
   r   Ztsemr   )r   r   r&   rr   r  r9  r   r   r   	test_tsem;  s    zTestCompareWithStats.test_tsemc             C   s\   xV|   D ]J}|dkr
| |\}}}}t|}tj|}t|d |d dd q
W d S )NrX   r   gV瞯<)r#   )r7  r:  r   r  r   r   )r   r   r&   rr   r  r9  rg   r>  r   r   r   test_skewtestF  s    
z"TestCompareWithStats.test_skewtestc             C   s.   t dd }t|}d}t||dd d S )N)r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r   rD   r   r   r+   r,   r+   )r   rm   T)r=   )r   r   r   r  r   )r   r&   rs   rt   r   r   r   test_skewtest_result_attributesT  s    
z4TestCompareWithStats.test_skewtest_result_attributesc             C   s@   t jdd }t|}tj|}tt |t | d S )N)r3   r+   g      4@)r   r   r   r  r   r   rS   )r   r&   rg   r>  r   r   r   test_skewtest_2D_notmaskedZ  s    
z/TestCompareWithStats.test_skewtest_2D_notmaskedc       	      C   s   d}xv|   D ]j}|dkr| ||\}}}}t|}tj|}t|d d |d d  t|d d |d d  qW d S )Nr+   rX   r   r   )r7  r<  r   r  r   r	   )	r   r;  r   r&   rr   r  r9  rg   r>  r   r   r   test_skewtest_2D_WithMaska  s    
z.TestCompareWithStats.test_skewtest_2D_WithMaskc       	   
   C   s   t jdd| t j}|td xV|  D ]J}|dkr,| |\}}}}t|}tj	|}t
t |t | q,W W d Q R X W d Q R X d S )Nr   )Zoverz!kurtosistest only valid for n>=20rX   )r   rB   r   r'  UserWarningr7  r:  r   r  r   r   rS   )	r   r(  r   r&   rr   r  r9  rg   r>  r   r   r   test_normaltestl  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   r+   r,   r-   r   rV   g      @)r;   r   )r"   )r   rS   rH   r=   r   r   r   Zfind_repeatsr   r	   Zintp)r   r&   tmpr;   r  Zx_origZxm_origrg   r>  r   r  r   r   r   test_find_repeatsv  s    &.



z&TestCompareWithStats.test_find_repeatsc             C   sn   xh|   D ]\}| |\}}}}t||}tj||}t|d |d dd t|d |d dd q
W d S )Nr   r2   )r   r   rW   )r7  r:  r   r~   r   r
   )r   r   r&   rr   r  r9  rg   r>  r   r   r   r     s    z$TestCompareWithStats.test_kendalltauc             C   sV   xP|   D ]D}| |\}}}}t|}tj|}t|j|dt|  q
W d S )Nr   )r7  r:  r   r   r   r
   r   r8  )r   r   r&   rr   r  r9  rg   r>  r   r   r   r     s
    
z)TestCompareWithStats.test_obrientransformc          
   C   s   xdD ]}t  }xdD ]}x|  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&W qW W dQ R X qW dS )zFChecks that mstats.ks_1samp and stats.ks_1samp agree on masked arrays.)autoexactasymp)lessgreaterz	two-sided)alternativer   N)r   r7  r:  r   Zks_1sampr   Zcdfr   r	   r   rS   )r   r   r(  rc  r   r&   rr   r  r9  r#  r$  r%  r   r   r   test_ks_1samp  s    

z"TestCompareWithStats.test_ks_1sampc          
   C   s   xdD ]}t  }xdD ]}x|  D ]z}| |\}}}}tj|d||d}	tjj|d||d}
tt|	t|
 tj|d||d}tt|	t| q&W qW W dQ R X qW dS )zKChecks that 1-sample mstats.kstest and stats.kstest agree on masked arrays.)r^  r_  r`  )ra  rb  z	two-sidedr   )rc  r   N)	r   r7  r:  r   kstestr   r	   r   rS   )r   r   r(  rc  r   r&   rr   r  r9  r#  r$  r%  r   r   r   test_kstest_1samp  s    

z&TestCompareWithStats.test_kstest_1sampc          
   C   s   xdD ]}t  }|dkr&|td xdD ]}x|  D ]z}| |\}}}}tj||||d}	tjj||||d}
tt	
|	t	
|
 tj||||d}tt	
|	t	
| q:W q,W W dQ R X qW dS )zVChecks that mstats.ks_2samp and stats.ks_2samp agree on masked arrays.
        gh-8431)r^  r_  r`  )r^  r_  zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.)ra  rb  z	two-sided)rc  r   N)r   r'  ra   r7  r:  r   r   r   r	   r   rS   )r   r   r(  rc  r   r&   rr   r  r9  r#  r$  r%  r   r   r   r     s    

z"TestCompareWithStats.test_ks_2sampc          
   C   s   xdD ]}t  }|dkr&|td xdD ]}x|  D ]z}| |\}}}}tj||||d}	tjj||||d}
tt	
|	t	
|
 tj||||d}tt	
|	t	
| q:W q,W W dQ R X qW dS )zKChecks that 2-sample mstats.kstest and stats.kstest agree on masked arrays.)r^  r_  r`  )r^  r_  zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.)ra  rb  z	two-sided)rc  r   N)r   r'  ra   r7  r:  r   re  r   r	   r   rS   )r   r   r(  rc  r   r&   rr   r  r9  r#  r$  r%  r   r   r   test_kstest_2samp  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   re  r   
isinstanceZKstestResultZKs_2sampResultr   rm   r	   )r   r   Zresult2r   r   r   test_nametuples_agree  s
    z*TestCompareWithStats.test_nametuples_agreeN)*r   r   r    r   r7  r:  r<  r=  rj   ru   r@  rA  rB  rC  r   r   r   r   rJ  rL  rM  rN  rO  rP  r   r   rR  rT  rU  rV  rW  rX  rY  r[  r]  r   r   rd  rf  r   rg  ri  r   r   r   r   r6  1  sN   	

r6  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,   rV   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 )	Nra  )rc  rb  )r   g|	&	@g|	&	gҏGg?g@-pL?)r   brunnermunzelXYr
   significantr   )	r   u1p1u2p2u3p3Zu4Zp4r   r   r   test_brunnermunzel_one_sided  s&    




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 )Nz	two-sided)rc  )r   g|	&	@g|	&	g ҏGw?)r   rk  rl  rm  r
   rn  )r   ro  rp  rq  rr  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 )N)r   g|	&	@g|	&	g ҏGw?)r   rk  rl  rm  r
   rn  )r   ro  rp  rq  rr  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 )Nr\   r*  )z	two-sidedrb  ra  )r   r   r   r   rk  rl  rm  )r   rc  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)rx  )r   g|	&	@g|	&	g "H[?)r   rk  rl  rm  r
   rn  )r   ro  rp  rq  rr  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 )Nz	two-sidedr\   )r*  rz  )r   r   r   r   rk  rl  rm  )r   rc  rx  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 )N)r   rk  rl  rm  r   r   r-  )r   ro  rp  rq  rr  rs  rt  r   r   r   test_brunnermunzel_empty_imput4  s    z0TestBrunnerMunzel.test_brunnermunzel_empty_imputN)r   r   r    r   r=   Zmasked_invalidr   rl  rm  rn  ru  rv  rw  ry  r{  r|  r}  r   r   r   r   rj    s   &rj  )NNr!   )NNr!   )7r   r^   r   numpyr   r   Znumpy.mar=   r   r   Zscipy.stats.mstatsr   r   ZscipyZcommon_testsr   rN   r   r   Znumpy.ma.testutilsr	   r
   r   r   r   r   r   Znumpy.testingr   objectr   r'   r)   r*   rR   rU   r[   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r2  r4  r6  rj  r   r   r   r   <module>   sT   $

;# Ac| 0@	'AD8   -