B
    0d"                @   s  d Z ddlZddlZddlZddlmZ ddlmZ ddlmZm	Z	 ddl
m  mZ ddlmZ ddlmZ ddlZddlmZ dd	lmZmZmZmZmZmZmZ dd
lmZ ddlmZ G dd dZdAddZ dBddZ!G dd dZ"G dd dZ#G dd dZ$G dd dZ%G dd dZ&G dd dZ'G dd  d Z(G d!d" d"Z)G d#d$ d$Z*d%d& Z+d'd( Z,d)d* Z-d+d, Z.G d-d. d.Z/G d/d0 d0Z0G d1d2 d2Z1G d3d4 d4Z2G d5d6 d6Z3G d7d8 d8Z4G d9d: d:Z5G d;d< d<Z6G d=d> d>Z7G d?d@ d@Z8dS )Cz?
Tests for the stats.mstats module (support for masked arrays)
    N)nan)maskednomask)stats   )check_named_results)raises)assert_equalassert_almost_equalassert_array_almost_equalassert_array_almost_equal_nulpassert_assert_allcloseassert_array_equal)suppress_warnings)mstats_basicc               @   s   e Zd Zdd ZdS )TestMquantilesc             C   s   t 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   U/var/www/html/venv/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   r0   )r   r1   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 )Nr3   r4   r5   r6   r   r7   r8   r9   r:   r;   r   r   )r<   gdq_D@)r   r>   r   r(   )r   r1   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 )Nr3   r4   r5   r6   r   r7   r8   r9   r:   r   gdq_D@ignore)divide)r   r>   r   errstater(   )r   r1   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 )Nr3   r4   r5   r6   r   r7   r8   r9   r:   gdq_D@rA   )invalid)r   r>   r   rC   r(   )r   r1   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   r0   astyperH   r(   )r   r1   
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      ?rE   r3   r4   r5   r6   r   r7   r8   r9   r:   r;   n   x   g/,$qJ@)r>   r   r   r(   r0   )r   r1   r   r   r   r   
test_2d_mab   s    $&
"zTestGeoMean.test_2d_maN)r   r    r!   r2   r?   r@   rD   rG   pytestmarkskipifhasattrr   rL   rO   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$   r3   r4   r5   r6   r   r7   r8   r9   r:   r;   g=b#A@gO?@)r>   r   r*   r   )r   r1   r   r   r   r   r2   t   s     
zTestHarMean.test_1drH   zcannot find float96 so skipping)rI   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   asarrayrH   r*   )r   r1   rK   r   r   r   rL      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?rE   r3   r4   r5   r6   r   r7   r8   r9   r:   r;   rM   rN   gmWUC@)r>   r   r*   r   )r   r1   r   r   r   r   test_2d   s    $&
"zTestHarMean.test_2dN)r   r    r!   r2   rP   rQ   rR   rS   r   rL   rV   r   r   r   r   rT   s   s    rT   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      !@r3   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!   r\   r   r   r   r   rW      s   rW   c               @   s   e Zd Zdd Zdd Zdd Zdd Zejj	e
 d	kd
ddd Zejj	e
 d	kd
dejjdd Zdd Zdd Zejjdd Zdd ZdS )TestCorrc       
   	   C   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 )Nr3   errorr   g      ?rE   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   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   r,   r-   r.   rX   r=   r   )r<   	   rZ   rY   )r   r>   masked_arrayr   r   rd   r   r	   )	r   ZmxZmyr'   ymrmpri   rj   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 ).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  rm   i  r3   i  i  gV-?)correlationpvalueT)r>   )
r
   r   	spearmanrr   r   r>   fix_invalidlistranger   )r   r'   ro   res
attributesr   r   r   test_spearmanr   s2    "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 d Q R X d S )*Ng       @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+;
?gr?greater)alternativegb?lessgcH}?r;   r   rX   g?r,   r   zalternative must be 'less'...)matchz	ekki-ekki)r   ru   r   r   linspacerandomZrandAssertionErrorrP   r   
ValueError)r   r'   ro   Zr_expri   rj   nZstat1p1Zstat2p2Zstat3p3r   r   r   test_spearmanr_alternative   s2    





z#TestCorr.test_spearmanr_alternativeppc64lezfails/crashes on ppc64le)rI   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 )6Nrm   r,   rX   r=   r.   rY      g        g      ?r3   gxO~>banana)methodr   g?>?gaV>g}'}'?go&5>rE   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   r4   r7   r6   r9   !   C         -   gXJĿgvPwTk?)rs   rt   T)r>   )r>   r   r   r
   rU   r   
kendalltaur_   assert_raisesr   rv   r   r   )r   r'   ro   expectedbzresultrz   r   r   r   test_kendalltau)  sd    


  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 )Ni  )r#   i  i  r   )
r   r_   floatr>   Zmasked_greaterZconcatenater   isfiniter   r   )r   r'   ro   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 )Nr.   r,         rX   r   r-   rY   r=      rm   r      zglobal p-value (indep)gMb?zseasonal p-valueg
ףp=
?g(\?g?g{Gz?)r   r>   rv   Tr   Zkendalltau_seasonalr
   round)r   r'   outputr   r   r   test_kendalltau_seasonal  s     
z!TestCorr.test_kendalltau_seasonalc          	   C   sN   ddddddddd}x2|  D ]&\}}t|d |d	 }t|| q W d S )
Ng遣m?g:4W?g,
:H g        gK?g(6?))r;   iY	  )e   i	  )   r   )   r   )r   r   )   r   )   iE&  )   i%  r   r   )itemsr   _kendall_p_exactr
   )r   expectationsncr   ry   r   r   r   test_kendall_p_exact_medium  s    z$TestCorr.test_kendall_p_exact_mediumc             C   sJ   ddddddd}x2|  D ]&\}}t|d |d	 }t|| qW 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   r   r   r   ry   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   rE   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/"?rX   )rs   rt   T)r>   )r   r   r
   r   Zpointbiserialrr   )r   r'   ro   ry   rz   r   r   r   test_pointbiserial  s    :zTestCorr.test_pointbiserialN)r   r    r!   rl   rr   r{   r   rP   rQ   rR   platformmachiner   Zslowr   r   r   r   r   r   r   r   r   r]      s   
&-W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 )Nr3   r   r   r,   r-   r.   rX   r=   rY   rZ   rm   )r,   rZ   )FF)limits	inclusive)g?g?T)r   relative   rE   r;   r8   r4   )r   r   rM   r   )
r>   r_   r	   r   Ztrimr   reshape_maskZravelr   )r   r1   r'   r   trimxr   r   r   	test_trim  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;   r7   ri   )tailr9   r   r8   0   r   r   r   "   r4      )r3   r3   )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 )Nr3   )g333333?gQ?)FF)r   r   r   r   r,   r-   r.   rX   r=   rY   rZ   rm   )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@rX   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@rX   )	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     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d5d6 Zd7d8 Zd'S )9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<   N)r   r#   c            C   sH   t |}|d k	rt ||}t|| |d kr6|j}|j|ksDtd S )N)r   rU   Zbroadcast_tor   r#   r   )r   actualexpectr   r#   r   r   r   _assert_equalA  s    

zTestMoments._assert_equalc             C   s  t | jd}t|dd t | jd}t|d t | jd}t|d t | jd}t|d t | j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   g        r3   r,   g      ?r-   r.   g     @r   g      ?g333333?g      @)r#   )r   r   )r   )r   )r   r#   )r   )momentr   )r,   r   )r   g      $@rm   )r   r   testcaser
   r   r   r   r   r   r   Zfloat64r   Zfloat32zerosr_   r	   r>   r   )r   ro   r'   r   r   r   test_momentJ  s8    






zTestMoments.test_momentc             C   s   t | j}t|dd d S )Ng%?r3   )r   	variationr   r
   )r   ro   r   r   r   test_variationo  s    zTestMoments.test_variationc             C   s0   t dddddg}tj|dd}t|d d S )Nr   r,   r-   r.   rX   )r   g<<'?)r   r   r   r   r
   )r   r1   ro   r   r   r   test_variation_ddofs  s    zTestMoments.test_variation_ddofc             C   sP   t | j}t|dd t j| jdd}t|dd t | j}t|dd d S )Ng7l*ҿr3   r   )biasg2۠ۿg        )r   skewtestmathworksr
   r   )r   ro   r   r   r   test_skewnessz  s    zTestMoments.test_skewnessc             C   s  t j| jdddd}t|dd t j| jddd}t|dd t | jdd}t|d tjt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@r3   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   ro   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.   rX   r=   rY   )r-   rX   )r-   r,   )r   )r-   r.   )r   r-   )r   r   )r,   r   rE   )moder   T)r>   )	r   r   r   r>   Zmasked_wherer	   r   r   r   )r   a1a2a3Za4Zma1Zma2Zma3Zma4Za1_resrz   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   r   copyr   r   r	   )r   Zimcpr   r   r   test_mode_modifies_input  s    
z$TestMoments.test_mode_modifies_input)r   r    r!   r   r>   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   *  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.   rX   r3   r=   irZ   rY   r,   r   g      @g      @)r   r   r   )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 )	NrZ   g      ?r   g        r;   g      @r   g      ?)r   r_   r	   r   scoreatpercentile)r   r'   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   r.   r-   r   )r>   r   r	   r   r   )r   r'   r   r   r   test_2D  s    zTestPercentile.test_2DN)r   r    r!   r   r   r   r   r   r   r   r     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   re   )r   ro   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 )NgOT\wg%ܿg%?gOT\w?Fr   )decimal)r   zmapr   r   r   r<   )r   ro   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 )NgOT\wg%ܿg%?gOT\w?r   )r   )r   zscorer   r>   rv   r   r   r
   )r   ro   r   r   r   r   test_zscore  s    zTestVariability.test_zscoreN)r   r    r!   __doc__r>   rv   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 )NrX   r=   r   rY   rm   rZ   r-   r,   r3   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   rX   r   r-   rY   r=   r   rm   r   r   )g48E?gsA?g)g%䃞?g 	?l)g48E?g46<?)	r   r>   rv   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   rX   r-   rY   r   rm   r   r   gr @g-C6?)	statisticrt   T)r>   )r   Zfriedmanchisquarer
   r   r>   rv   r   )r   r  r   r'   rz   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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   r;   g?r3   r4   )slope	interceptZrvaluert   stderrT)r>   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  )r'   ro   r   lrrz   r   r   r   test_regress_simple6  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.   r3   r   r   rm         r4   r   7   N   gQ?gQ@)r   gGz@)r   Ztheilslopesr
   r   r>   r   )r  r  lowerupperro   r'   r   r   r   test_theilslopesK  s    

 


r  c              C   s2  dt d d } tt| d ttj| ddd dt d }d| d } tt| |d	 ttj| |ddd	 d
| d d< tt| |d	 t d}dd|  tjjddd } t|| \}}}}}t| |\}}t	||dd t	||dd tj| |dd\}}t	||dd t	||dd d S )Nr,   r3   g      ?)g       @g      ?Zseparate)r   rX   g      @)g      @g      i  r.   gffffffg333333?   )sizeZrandom_stateg?)r$   )
r   r_   r	   r   Zsiegelslopesr   normZrvsr  r   )ro   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   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   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   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   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   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r,   r3   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   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   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   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r,   )r  rt   T)r>   )r   r   r   r(  r   )r   r'   ry   rz   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   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r,   )r  rt   T)r>   )r   r   r   r*  r   )r   r'   ry   rz   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   :   rY   )   r      c             S   s   g | ]\}}t ||qS r   )r   full).0r   cr   r   r   
<listcomp>  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_9033  s    z'TestNormalitytests.regression_test_9033N)
r   r    r!   r.  r/  r2  r3  r4  r5  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  rt   T)r>   )r   r   Zuint16r   Zf_onewayr   )r   r1   r   ry   rz   r   r   r   test_result_attributes  s
    z"TestFOneway.test_result_attributesN)r   r    r!   rA  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 )	TestMannwhitneyug      ?g       @g      @c             C   s&   t | j| j}d}t||dd d S )N)r  rt   T)r>   )r   mannwhitneyur'   ro   r   )r   ry   rz   r   r   r   rA    s    z'TestMannwhitneyu.test_result_attributesc             C   sB   t | j| j}t| j| j}|j|jks0tt|j|j d S )N)	r   rC  r'   ro   r   r  r   r   rt   )r   res1res2r   r   r   test_against_stats  s    z#TestMannwhitneyu.test_against_statsN)	r   r    r!   r   r   r'   ro   rA  rF  r   r   r   r   rB    s@     rB  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-   rX   rY   rm   r,   r.   r=   rZ   r3   )r  rt   T)r>   )r   Zkruskalr   )r   r'   ro   ry   rz   r   r   r   rA    s
    z"TestKruskal.test_result_attributesN)r   r    r!   rA  r   r   r   r   rG    s   rG  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 r4   r.   r   r   r,   )r   )r   r   seedrandnr   	ttest_relr   r   )r   outcomerD  rE  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 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   rI  r>   rn   rJ  r   filterrc   r   r   rK  r   )r   rL  suppairtrj   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 r4   r.   r   r   r,   )r  rt   T)r>   )r   r   rI  rJ  r   rK  r   )r   rL  ry   rz   r   r   r   rA  )  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 )	Nr3   r   r/   r,   r-   r.   r   )r   )r   r   r   rK  r   r_   r   )r   r'   r   r   r   test_invalid_input_size1  s    
 z%TestTtest_rel.test_invalid_input_sizec             C   s$   t g g }ttt| d S )N)r   rK  r   r   allisnan)r   rD  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   absr0  r   rN  rc   r   r   r   )r   rQ  rj   rO  r   r   r   test_zero_division>  s    z TestTtest_rel.test_zero_divisionN)	r   r    r!   r.  rR  rA  rS  rV  rY  r   r   r   r   rH    s   	rH  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 r4   r.   r   r   r,   )r   T)	equal_varF)r   r   rI  rJ  r   rW  r   r   )r   rL  rD  rE  rM  Zres4Zres5r   r   r   r.  J  s&    $$
((
00
,
((
((zTestTtest_ind.test_vs_nonmaskedc          	   C   s   t jd tjt jdd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   rI  r>   rn   rJ  r   rN  rc   r   r   rW  r   )r   rL  rO  rP  rQ  rj   r   r   r   rR  g  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 r4   r.   r   r   r,   )r  rt   T)r>   )r   r   rI  rJ  r   rW  r   )r   rL  ry   rz   r   r   r   rA  q  s
    $z$TestTtest_ind.test_result_attributesc             C   s$   t g g }ttt| d S )N)r   rW  r   r   rT  rU  )r   rD  r   r   r   rV  y  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)r[  )r   rW  r	   r   rX  r0  r   rN  rc   r   r   )r   rQ  rj   rO  r   r   r   rY  }  s     z TestTtest_ind.test_zero_divisionN)r   r    r!   r.  rR  rA  rV  rY  r   r   r   r   rZ  I  s
   
rZ  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   sb  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||dd	 t|d d d df |d d dd f }t|| d S )
Ni r4   r.   r   r   r,   )r   gV瞯<)atol)r   r   rI  rJ  r   ttest_1sampr   r   )r   rL  rD  rE  rM  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   rI  r>   rn   rJ  r   r   rN  rc   r   r^  r   )r   rL  r   rO  rP  rQ  rj   r   r   r   rR    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 r4   r.   r   r   r,   )r  rt   T)r>   )r   r   rI  rJ  r   r^  r   )r   rL  ry   rz   r   r   r   rA    s
    z&TestTtest_1samp.test_result_attributesc             C   s$   t g d}ttt| d S )Nr   )r   r^  r   r   rT  rU  )r   rD  r   r   r   rV    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   r^  r	   r   rX  r0  r   rN  rc   r   rU  r   r   )r   rQ  rj   rO  r   r   r   rY    s    z"TestTtest_1samp.test_zero_divisionN)r   r    r!   r.  rR  rA  rV  rY  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   r,   r-   r.   rm   rX   )r<   )r   g       @g      @g      ?g        gg       )r   r>   rn   r   describer	   nobsminmaxmeanvarianceskewnessr   r   )r   r1   r   ZaminZamaxr   r   r   test_basic_with_axis  s    
z!TestDescribe.test_basic_with_axisN)r   r    r!   r  rf  r   r   r   r   r_    s   r_  c               @   s@  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dJdK Z(dLdM Z)dNS )OTestCompareWithStatsa  
    Class to compare mstats results with stats results.

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

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

    Author: Alexander Loew

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

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

    c             C   s   ddddgS )z9 Returns list of sample sizes to be used for comparison. i  r;   r3   rX   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 )Ni rX   g 7yACr   g s?C)r<   )r   r   rI  rJ  r:  lenr>   r   )r   r   r'   ro   r1  ymr<   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}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 )NrX   r   )r<   )r   r:  r   rx   rk  r>   r   rU  )
r   r   nxr'   ro   r1  rj  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)rh  rk  r   r  r   r   r   rU   )r   r   r'   ro   r1  rj  Zresult1result2r   r   r   test_linregress  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   )rh  rk  r   rd   r   r
   )
r   r   r'   ro   r1  rj  ri   rj   rmpmr   r   r   rl     s    z"TestCompareWithStats.test_pearsonrc       
      C   sb   x\|   D ]P}| |\}}}}t||\}}tj||\}}	t||d t||	d q
W d S )Nr   )rh  rk  r   ru   r   r
   )
r   r   r'   ro   r1  rj  ri   rj   rp  rq  r   r   r   r{   '  s    z#TestCompareWithStats.test_spearmanrc             C   s    t d}tttj||d d S )Nr=   F)r   r_   r   r   r   ru   )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$   )rh  rk  r   r%   rX  r   r   )r   r   r'   ro   r1  rj  ri   rp  r   r   r   
test_gmean5  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 )Nr3   )rh  rk  r   r)   rX  r   r
   )r   r   r'   ro   r1  rj  ri   rp  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 )Nr3   )rh  rk  r   r   r   r
   )r   r   r'   ro   r1  rj  ri   rp  r   r   r   	test_skewL  s    

zTestCompareWithStats.test_skewc             C   sl   xf|   D ]Z}| |\}}}}t|}tj|}t||d t|}tj|}t||d q
W d S )Nr3   )rh  rk  r   r   r   r
   )r   r   r'   ro   r1  rj  ri   rp  r   r   r   r   X  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   )	rh  rk  rc  Zstdr   r   r  r   ri  )r   r   r'   ro   r1  rj  ZzxZzyr   r   r   r  d  s      z TestCompareWithStats.test_zscorec             C   sl   xf|   D ]Z}| |\}}}}t|}tj|}t||d t|}tj|}t||d q
W d S )Nr3   )rh  rk  r   r   r   r
   )r   r   r'   ro   r1  rj  ri   rp  r   r   r   r   v  s    

z"TestCompareWithStats.test_kurtosisc       
      C   s   t ddd}t j|}tj|dd}tjj|dd}t|ddd t|ddd 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 )Nr4   rX   r.   r   )r   g'e@gh㈵>)r]  r   )r   r      )r   )r   r_   r   r>   r   r   r   r   r   rh  rk  r
   )
r   r1   amri   rp  r   r'   ro   r1  rj  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   )	rh  rk  r   r`  r   rx   r
   r   rU   )	r   r   r'   ro   r1  rj  ri   rp  iir   r   r   test_describe  s    z"TestCompareWithStats.test_describec             C   s&   t td}d}t||dd d S )NrX   )ra  rb  rc  rd  re  r   T)r>   )r   r`  r   r_   r   )r   r   rz   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)rh  rk  r   r[   r   r   )r   r   r'   ro   r1  rj  ri   rp  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   )rh  rk  r
   r   Ztmeanr   )r   r   r'   ro   r1  rj  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       @r3   g      @)Z
upperlimit)rh  rk  r
   r   Ztmaxr   )r   r   r'   ro   r1  rj  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
lowerlimitr3   )rh  rk  r	   r   Ztminr   r
   )r   r   r'   ro   r1  rj  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|=)r]  )rh  rk  r   r   r   r   ri  )r   r   r'   ro   r1  rj  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   )rh  rk  r
   r   r   r   )r   r   r'   ro   r1  rj  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   )rh  rk  r
   r   tvarr   )r   r   r'   ro   r1  rj  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 )Nr4   g?)	r   r_   r   r   r   r   sortr   r<   )r   r1   r   Zbmr   r   r   test_trimboth  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   )rh  rk  r
   r   Ztsemr   )r   r   r'   ro   r1  rj  r   r   r   	test_tsem  s    zTestCompareWithStats.test_tsemc             C   sP   xJ|   D ]>}|dkr
| |\}}}}t|}tj|}t|| q
W d S )NrZ   )rh  rk  r   r)  r   r   )r   r   r'   ro   r1  rj  ri   rp  r   r   r   test_skewtest  s    
z"TestCompareWithStats.test_skewtestc             C   s.   t dd }t|}d}t||dd d S )N)r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r   rE   r   r   r,   r-   r,   )r  rt   T)r>   )r   r   r   r)  r   )r   r'   ry   rz   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)r4   r,   g      4@)r   r   r   r)  r   r   rU   )r   r'   ri   rp  r   r   r   test_skewtest_2D_notmasked  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,   rZ   r   r   )rh  rm  r   r)  r   r	   )	r   rl  r   r'   ro   r1  rj  ri   rp  r   r   r   test_skewtest_2D_WithMask	  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>=20rZ   )r   rC   r   rN  UserWarningrh  rk  r   r(  r   r   rU   )	r   rO  r   r'   ro   r1  rj  ri   rp  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   r,   r-   r.   r   rX   g      @)r<   r   )r#   )r   rU   rJ   r>   r   r   r   Zfind_repeatsr   r	   Zintp)r   r'   tmpr<   r1  Zx_origZxm_origri   rp  r#  r>  r   r   r   test_find_repeats  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   r3   )r   r   rY   )rh  rk  r   r   r   r
   )r   r   r'   ro   r1  rj  ri   rp  r   r   r   r   1  s    z$TestCompareWithStats.test_kendalltauc             C   sV   xP|   D ]D}| |\}}}}t|}tj|}t|j|dt|  q
W d S )Nr   )rh  rk  r   r  r   r
   r   ri  )r   r   r'   ro   r1  rj  ri   rp  r   r   r   r  9  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)r~   r|   z	two-sided)r}   r   N)r   rh  rk  r   Zks_1sampr"  Zcdfr   r	   r   rU   )r   r   rO  r}   r   r'   ro   r1  rj  rD  rE  rM  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  )r~   r|   z	two-sidedr"  )r}   r   N)	r   rh  rk  r   kstestr   r	   r   rU   )r   r   rO  r}   r   r'   ro   r1  rj  rD  rE  rM  r   r   r   test_kstest_1sampM  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.)r~   r|   z	two-sided)r}   r   N)r   rN  rc   rh  rk  r   r  r   r	   r   rU   )r   r   rO  r}   r   r'   ro   r1  rj  rD  rE  rM  r   r   r   r  Z  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.)r~   r|   z	two-sided)r}   r   N)r   rN  rc   rh  rk  r   r  r   r	   r   rU   )r   r   rO  r}   r   r'   ro   r1  rj  rD  rE  rM  r   r   r   test_kstest_2sampk  s    

z&TestCompareWithStats.test_kstest_2sampc             C   sX   t ddgddg}tt|t j j t j |j|j}tt|t j j t|| d S )Nr   r,   r-   r.   )	r   r  r   r  ZKstestResultZKs_2sampResultr  rt   r	   )r   r   rn  r   r   r   test_nametuples_agree{  s
    z*TestCompareWithStats.test_nametuples_agreeN)*r   r    r!   r  rh  rk  rm  ro  rl   r{   rr  rs  rt  ru  r   r  r   r   ry  rz  r{  r|  r}  r~  r  r   r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r   r   r   r   rg    sN   	
	
rg  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-   rX   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|   )r   g|	&	@g|	&	gҏGg?g@-pL?)r   brunnermunzelXYr
   significantr   )	r   u1r   u2r   u3r   Z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)r}   )r   g|	&	@g|	&	g ҏGw?)r   r  r  r  r
   r  )r   r  r   r  r   r   r   r   test_brunnermunzel_two_sided  s    

z.TestBrunnerMunzel.test_brunnermunzel_two_sidedc             C   sl   t | j| j\}}t | j| j\}}t||| jd t|d| jd t|d| jd t|d| jd d S )N)r   g|	&	@g|	&	g ҏGw?)r   r  r  r  r
   r  )r   r  r   r  r   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^   rQ  )z	two-sidedr|   r~   )r   r   r   r   r  r  r  )r   r}   distributionr   r   r   $test_brunnermunzel_alternative_error  s    z6TestBrunnerMunzel.test_brunnermunzel_alternative_errorc             C   st   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nnormal)r  )r   g|	&	@g|	&	g "H[?)r   r  r  r  r
   r  )r   r  r   r  r   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^   )rQ  r  )r   r   r   r   r  r  r  )r   r}   r  r   r   r   %test_brunnermunzel_distribution_error  s    z7TestBrunnerMunzel.test_brunnermunzel_distribution_errorc             C   s   t | jg \}}t g | j\}}t g g \}}tt| tt| tt| tt| tt| tt| d S )N)r   r  r  r  r   r   rU  )r   r  r   r  r   r  r   r   r   r   test_brunnermunzel_empty_imput  s    z0TestBrunnerMunzel.test_brunnermunzel_empty_imputN)r   r    r!   r   r>   Zmasked_invalidr   r  r  r  r  r  r  r  r  r  r  r   r   r   r   r    s   &r  )NNr"   )NNr"   )9r  r`   r   numpyr   r   Znumpy.mar>   r   r   Zscipy.stats.mstatsr   r   ZscipyZcommon_testsr   rP   r   r   Znumpy.ma.testutilsr	   r
   r   r   r   r   r   Znumpy.testingr   Zscipy.statsr   r   r(   r*   r+   rT   rW   r]   r   r   r   r   r  r  r  r$  r&  r'  r@  rB  rG  rH  rZ  r\  r_  rg  r  r   r   r   r   <module>   s\   $

;#  c ( 0@	1AD9   (