o
    iT                    @   sz  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mZ ddl m!Z! ddl"m#Z#m$Z$ G dd dZ%dKddZ&dKddZ'e!G dd dZ(e!G dd dZ)G dd dZ*G dd dZ+e!G dd dZ,e!G dd  d Z-G d!d" d"Z.G d#d$ d$Z/e!G d%d& d&Z0e!G d'd( d(Z1d)d* Z2d+d, Z3G d-d. d.Z4d/d0 Z5d1d2 Z6d3d4 Z7d5d6 Z8e!G d7d8 d8Z9G d9d: d:Z:G d;d< d<Z;G d=d> d>Z<G d?d@ d@Z=G dAdB dBZ>G dCdD dDZ?G dEdF dFZ@e!G dGdH dHZAG dIdJ dJZBdS )Lz?
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_basic	_stats_py)skip_xp_invalid_arg)SmallSampleWarningtoo_small_1d_not_omitc                   @      e Zd Zdd ZdS )TestMquantilesc                 C   s   t g dg dg dg dg dg dg dg dg d	g d
g dg}g dg dg dg}tj|ddd}t|| d S )N)      @      @      ?)g     G@      .@       @)g     H@      B@      @)r        C@      @)      E@      D@     8)     D@r$   r#   )r   r#   r#   )r   r#   r#   )g     E@r#   r#   )r"   r#   r#   )r   r#   r#   )g3333333@g333333-@g333333?)r"   g     B@      @)gffffffE@gfffffD@gffffff@r   )r   2   )axislimit)nparraymstatsZ
mquantilesr
   )selfdatadesiredZquants r/   ]/home/kim/smarthome/.venv/lib/python3.10/site-packages/scipy/stats/tests/test_mstats_basic.pytest_mquantiles_limit_keyword   s$   
z,TestMquantiles.test_mquantiles_limit_keywordN)__name__
__module____qualname__r1   r/   r/   r/   r0   r          r   Hz>c                 C   .   t j| ||d}t|||d t|j| d S N)r'   dtypertol)r+   gmeanr   r	   r9   Z
array_liker.   r'   r9   r;   xr/   r/   r0   check_equal_gmean/   s   r?   c                 C   r7   r8   )r   hmeanr   r	   r9   r=   r/   r/   r0   check_equal_hmean6   s   rA   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
eed dddd Zdd ZdS )TestGeoMeanc                 C   s&   g d}t dd}t||dd d S )Nr                     ?+=r:   )r)   powerr?   r,   ar.   r/   r/   r0   test_1d>   s   zTestGeoMean.test_1dc                 C   sP   t g d}d}t|| t jg dg dd}tdd}t||dd	 d S )
N

         (   r&   <   F   P   Z   d   gsŤF@rC   r   r   r   r   mask   UUUUUU?rI   r:   )mar*   r?   r)   rJ   rK   r/   r/   r0   
test_1d_maC   s   
zTestGeoMean.test_1d_mac                 C   s*   t jjg dg dd}d}t|| d S )NrN   
r   r   r   r   r   r   r   r   r   r   rY   gdq_D@r)   r]   r*   r?   rK   r/   r/   r0   test_1d_ma_valueM   s
   zTestGeoMean.test_1d_ma_valuec                 C   s"   t jg d}d}t|| d S )N)
rO   rP   rQ   rR   r&   rS   rT   rU   rV   r   r   r`   rK   r/   r/   r0   test_1d_ma0T   s   zTestGeoMean.test_1d_ma0c                 C   sR   t jg d}t j}t jdd t|| W d    d S 1 s"w   Y  d S )N)
rO   rP   rQ   rR   r&   rS   rT   rU   rV   ignore)invalid)r)   r]   r*   r   errstater?   rK   r/   r/   r0   test_1d_ma_infZ   s
   "zTestGeoMean.test_1d_ma_inffloat96cannot find float96 so skippingreasonc                 C   s@   t jg dg dd}tddtj}t||tjdd d S )NrC   rX   rY   r[   r\   rI   )r9   r;   )r]   r*   r)   rJ   astyperh   r?   r,   rL   Z
desired_dtr/   r/   r0   test_1d_float96a   s   zTestGeoMean.test_1d_float96c                 C   s   t jg dg dg dgg dg dg dgd}tg d}t||ddd t td	d
tddtddg}t||ddd g dg dg dg}d}ttj || d S )NrC   r   r   r   r   r   r   r   r   r   r   r   r   rY   r   rI   r'   r;   rG   rH   r[         ?rF   rc   rO   rP   rQ   rR   r&   rS   rT   rU   rV   rW   n   x   g/,$qJ@)r]   r*   r)   r?   rJ   rK   r/   r/   r0   
test_2d_mah   s   

zTestGeoMean.test_2d_maN)r2   r3   r4   rM   r^   ra   rb   rg   pytestmarkskipifhasattrr)   rn   ry   r/   r/   r/   r0   rB   <   s    

rB   c                   @   s<   e Zd Zdd Zejjeed dddd Z	dd	 Z
d
S )TestHarMeanc                 C   sp   t jg dg dd}d}t||dd tj g d}d}t|| tj jg dg d	d}d
}t|| d S )NrC   rX   rY   /袋.?rI   r:   rN   g=b#A@r_   gO?@r]   r*   rA   r)   rK   r/   r/   r0   rM   {   s   
zTestHarMean.test_1drh   ri   rj   c                 C   s:   t jg dg dd}tjdtjd}t||tjd d S )NrC   rX   rY   r   r9   )r]   r*   r)   asarrayrh   rA   rm   r/   r/   r0   rn      s   zTestHarMean.test_1d_float96c                 C   s   t jg dg dg dgg dg dg dgd}t g d}t||ddd g d	}t||d
dd g dg dg dg}d}ttj || d S )NrC   ro   rp   rq   rY   r   rI   rr   )gQ?g433333@g?rc   rt   ru   rv   gmWUC@r   rK   r/   r/   r0   test_2d   s   zTestHarMean.test_2dN)r2   r3   r4   rM   rz   r{   r|   r}   r)   rn   r   r/   r/   r/   r0   r~   y   s    
r~   c                   @   r   )TestRankingc                 C   s   t g d}tt|g d t|ddg< tt|g d ttj|ddg d t g d	}tt|g d
 t g dg dg}tt|g dg dg ttj|ddg dg dg ttj|ddg dg dg d S )N)
r   r   r   r   rD   rE   rF      r   r[   )
r   rE   rE   rE   r   r[            !@r   rO   rE   rF   )
r   r%   r%   r   r   rF   r         @r      T)Zuse_missing)
r   r%   r%         @r   rF   r   r   r   r   )
r   r   r   r   rD   rF   rE   r   r   r[   )
r   rE   r   rE   r   r   r[   r   rE   rO   )r   r   r   r   rD   )rE   rF   r   r   r[   )r   rE   rE   rE   r   )r[   r   r   r   rO   r   r'   )r   rD         @r   r   r   r   r   r   r   r   rD   rD   rD   rD   rD   )r]   r*   r
   r+   rankdatar   r,   r>   r/   r/   r0   test_ranking   s2   



zTestRanking.test_rankingN)r2   r3   r4   r   r/   r/   r/   r0   r      r5   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zejj	e
 d	kd
ddd Zejj	e
 d	kd
dejjdd Zdd Zejddejdddd Zdd Zejjdd Zedd ZdS )TestCorrc           
   	   C   sV  t d}t F tdt tt||d d tt||d d d d d t j	|dd}t||}t
|d tu  t
|d	 tu  W d    n1 sRw   Y  t 	g d
}t 	g d}t||\}}t|tdd  t|d g d}t j	g d|d}t j	g d|d}	t||	\}}t|tdd  t|d d S )NrO   errorr   r   rc         TrY   r   )r           r   )r   r   rE   rE   rD   r\   )FFFT)r   r   r   g     X@)r   r   rE   rc   )r]   arangewarningscatch_warningssimplefilterRuntimeWarningr
   r+   pearsonrr*   r   r   r)   sqrt)
r,   r>   prx1y1rprZ   Zx2y2r/   r/   r0   test_pearsonr   s*   

 
zTestCorr.test_pearsonrc           	      C   s   t jjg dg dd}t jjg dg dd}t g d}t g d}t||\}}t||\}}t|| t|| d S )Nr   rD   rE   rF   r   r[   )r   r   r   r   r   r   rY   )	   r   r   r[   r   r   )r   r   r   r   r   r   )r   rF   r   r[   )r   r[   r   r   )r)   r]   masked_arrayr*   r+   r   r   r	   )	r,   ZmxZmyr>   ymrmpr   r   r/   r/   r0   test_pearsonr_misaligned_mask   s   
z&TestCorr.test_pearsonr_misaligned_maskc                 C   s  g dg d}}t t||d d ddddtjgd	d
d
dtjg}}t|t|}}t t||d d g d}g d}t t||d d dddddddddddddddtjg}dddd d!d"d#d$d%d"dd&dd'dtjg}t|t|}}t t||d d ttd(}ttd(}|d) |d |d< |d)< |d* |d+ |d+< |d*< |d, |d- |d-< |d,< t t||d d. t||}d/}t	||d0d1 d S )2N)333333@      @Gz	@HzG@)ffffff?Q@r   @r   gIQ=r   r   r   r   r   r   r   r   33333G@r!   皙%@N@333333?      P@̌O@r   ffffff?皙@333333?333333@r   @皙6@皙 @333333F@'@皙8@333333?@D@r   r   r   ffffff@r   333333?r   gI
?r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     r   i  rO   i  i  gV-?ZcorrelationpvalueTr]   )
r
   r+   	spearmanrr)   r   r]   fix_invalidlistranger   r,   r>   r   res
attributesr/   r/   r0   test_spearmanr   s2   "zTestCorr.test_spearmanrc                 C   sf  g d}g d}d}t ||\}}t|| t|d t j||dd\}}t|| t|d t j||dd\}}t|| t|d	 d
}tdd|}d| tj| }t ||\}}t j||dd\}	}
t|
|d  t j||dd\}}t|d|d   ||	  kr|ksJ  J tjt	dd t j||dd W d    d S 1 sw   Y  d S )Nr   r   g+;
?gr?greateralternativegb?lessgcH}?rW   r   r   皙?rD   r   zalternative must be 'less'...matchz	ekki-ekki)
r+   r   r   r)   linspacerandomrandrz   r   
ValueError)r,   r>   r   Zr_expr   r   nZstat1p1Zstat2p2Zstat3p3r/   r/   r0   test_spearmanr_alternative  s0   





"z#TestCorr.test_spearmanr_alternativeppc64lezfails/crashes on ppc64lerj   c                 C   s  t tg d}t tg d}ddg}ttt||| t td}t td}ddg}ttt||| tt	tj||dd |d	 }|d
 |d	< ||d
< ddg}ttt||| |d }|d |d< ||d< ddg}ttt||| t td}t tdd d d }ddg}ttt||| |d	 }|d
 |d	< ||d
< ddg}ttt||| |d }|d |d< ||d< ddg}ttt||| t 
ddddtjg}t 
ddddtjg}t 
ddddtjg}ttt||dd g tttj||d!ddd"g ttt||d#d$g t 
d%d%d%d%d&d&d%d'd%d&ddd%d(d%d&d%d%d%d%d%tjg}t 
d%d)d)d)dd*d'd%d+d,d-d)d)d)d)d)d)d%dd.tjd%g}t||}tt|d/d0g d1}t||d2d3 d S )4N)r   rD   r   r[   )rF   r   r      r   r   rO   gxO~>bananamethodr   rD   g?>?gaV>r   r[   g}'}'?go&5>rc   r   g?>g}'}'r   r   r   r   r   g     :@gQgףp=
@r   r   g1UU?      ?
asymptoticglgN?g~ȋgQM?r   rP   rS   rR   rU   !   C         -   gXJĿgvPwTk?r   Tr   )r]   r*   r)   r
   r   r+   
kendalltaur   assert_raisesr   r   r   r   )r,   r>   r   expectedbzresultr   r/   r/   r0   test_kendalltau1  sn   zTestCorr.test_kendalltauc                 C   sd   t jdtd}t|d}t jdtd}t |dd  |d d f}tt t	||d  d S )Nr   r   i    r   )
r)   r   floatr]   Zmasked_greaterconcatenater   isfiniter+   r   )r,   r>   r   r/   r/   r0   test_kendalltau_large  s
   zTestCorr.test_kendalltau_largec                 C   s   t t dddddddddddgg ddddd	d
ddddt ddt gt d	dddt d	ddddddgg}t|j}t|}t|d dd t|d dg d d S )NrF   rD         r   r   rE   rF   rE   r   rE   rD   r   rE   r   r   rD   rE   r   rE   r[      r   r      zglobal p-value (indep)gMb?zseasonal p-value)g
ףp=
?g(\?皙?g{Gz?)r   r]   r   Tr+   Zkendalltau_seasonalr
   round)r,   r>   outputr/   r/   r0   test_kendalltau_seasonal  s   
z!TestCorr.test_kendalltau_seasonalr   )exactr   r   	two-sidedr   r   c                 C   s   t jd d}t j|}t j|}t j|dk}tj||d}tj||d}tj||||d}	| }
| }t	j|
|||d}t j
||< t j
||< t	j|||d|d}t|	| t|| d S )Nr   r&   rs   rY   )r   r   omit)r   
nan_policyr   )r)   r   seedr   r]   r*   r+   r   
compressedr   r   r   )r,   r   r   r   r>   r   rZ   Zx_maskedZy_maskedZ
res_maskedZx_compressedZy_compressedZres_compressedZres_nanr/   r/   r0   test_kendalltau_mstats_vs_stats  s,   



z(TestCorr.test_kendalltau_mstats_vs_statsc              	   C   sJ   ddddddddd}|  D ]\}}t|d |d	 }t|| qd S )
Ng遣m?g:4W?g,
:H r   gK?g(6?))rW   iY	  )e   i	  )   r   )   r   )r  r   )   r   )   iE&  )   i%  r   r   itemsr   Z_kendall_p_exactr
   r,   Zexpectationsncr   r   r/   r/   r0   test_kendall_p_exact_medium  s   z$TestCorr.test_kendall_p_exact_mediumc                 C   sF   ddddddd}|  D ]\}}t|d |d	 }t|| qd S )
NgE?gU`Ux<?gve?gZ?g=?gG?))i  i5  )i  i\  )i   idd )i!  ih )i@  i 	 )iA  i 	 r   r   r  r  r/   r/   r0   test_kendall_p_exact_large  s   z#TestCorr.test_kendall_p_exact_largec                 C   s   g 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}tt||d d d! t||}d"}t||d#d$ d S )%N)#r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   g-@g+@g(@g333333$@gffffff@gffffff@g333333@gffffff@g333333@r   gffffff
@g	@r   gffffff@r%   g333333@gffffff@g @r   g      ?g?r   g?皙?gffffff?r   rs   r  r   r   g/"?r   r   Tr   )r)   r   r
   r+   Zpointbiserialrr   r   r/   r/   r0   test_pointbiserial  sh   2zTestCorr.test_pointbiserialN)r2   r3   r4   r   r   r   r   rz   r{   r|   platformmachiner   Zslowr   r  parametrizer  r  Zxslowr  r   r  r/   r/   r/   r0   r      s.    
&-
V	
r   c                   @   sT   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d Z
dd ZdS )TestTrimmingc                 C   s  t d}tt|g d t d}tt|dg d t d}ttj|dddg d t d}ttj|dd	d
g d t d}t |ddg< |d< tt|dg d t ddd}dgd dgd  dgd  }tj|dd	d d}t|j | tj|dd	dd}t|j | tj|dd	dd}t|jj	 | t ddd}t|d< dgd dgd  dgd  }tj|dd	d d}t|j | tj|dd	dd}t|j | tj|j	dd	dd}t|j	j | d S )NrO   
r   r   rD   rE   rF   r   r[   r   r   r   )rD   r   )
NNrD   rE   rF   r   r[   r   r   NFFlimitsZ	inclusive)
NNNrE   rF   r   r[   r   NN)r   r  T)r$  relative)
Nr   rD   rE   rF   r   r[   r   NN   r   rc   r   )NNrD   rE   rF   Nr[   r   r   NNNrW   r   rT   rP   )r%  r'   rw   r   )
r]   r   r	   r+   Ztrimr   reshape_maskZravelr  )r,   rL   r>   r   trimxr/   r/   r0   	test_trim  sD   




zTestTrimming.test_trimc                 C   s   t d}tt| d ttj|dd d t|dd< t|}t| d t|jd	gd
 dgd  d	gd  dgd  d	gd
   t	|_d|_
tt| d tt| d d S )NrW   rS   r   )tailrU   r&   rT   0   r   r   r   "   rP      )rO   rO   )r]   r   r	   r+   trimbothcountZtrimtailr   r(  r   shape)r,   r>   r)  r/   r/   r0   test_trim_old  s   

:zTestTrimming.test_trim_oldc                 C   sL   t d}tj|ddd}t jg dg dd}t|| t|j|j d S )NrO   )g333333?gQ?r"  r#  r!  )
r   r   r   r   r   r   r   r   r   r   rY   )r]   r   r+   Ztrimrr*   r	   rZ   )r,   r>   r   r   r/   r/   r0   
test_trimr%  s   


zTestTrimming.test_trimrc                 C   sN   t g d}tt|ddd tt|ddd tt|ddd d S )NM   W   X   r                  i  i(  i+  i2  ix  i  i  i  i  i3
  r   iW  r   )r   r   r  r  i  )r]   r*   r
   r+   Ztrimmed_meanr,   r-   r/   r/   r0   test_trimmedmean-  s   zTestTrimming.test_trimmedmeanc                 C   N   t jd}|jdd}t |}tj|g dd}tt|d|	  d S )Nl   l{f0j rP   sizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rY   r   )
r)   r   default_rngsortr]   r*   r   r+   Ztrimmed_varvarr,   rngZ	data_origr-   r/   r/   r0   test_trimmedvar4  
   
zTestTrimming.test_trimmedvarc                 C   rA  )Nl   /{Gzi rP   rB  rD  rY   r   )
r)   r   rE  rF  r]   r*   r   r+   Ztrimmed_stdstdrH  r/   r/   r0   test_trimmedstd>  rK  zTestTrimming.test_trimmedstdc                 C   s:   t g d}tt|ddd tt|ddd d S )Nr4  r>  g>L@r   r  )r]   r*   r
   r+   Ztrimmed_stder?  r/   r/   r0   test_trimmed_stdeH  s   zTestTrimming.test_trimmed_stdec                 C   sl   t g d}tt|djdddd tt|ddjdddd t|d< t|}t|j|j d S )	Nr4  r>  r   ddofg@r"  gffff7@r   )	r]   r*   r
   r+   	winsorizerG  r   r	   rZ   )r,   r-   Z
winsorizedr/   r/   r0   test_winsorizationN  s   
zTestTrimming.test_winsorizationc              	   C   s   t tjtjdddg}tttj|ddd tt|dt g d tt|d	t tjtjtjtjtjg ttj|dd
dt tjtjdddg ttj|d	d
dt tjtjdddg d S )Nr   r   rD   )皙?rS  raise)r  )皙?rU  r   )r  r  r
  )	r]   r*   r)   r   r   r   r+   rQ  r	   r?  r/   r/   r0   test_winsorization_nanZ  s    z#TestTrimming.test_winsorization_nanN)r2   r3   r4   r*  r2  r3  r@  rJ  rM  rN  rR  rV  r/   r/   r/   r0   r     s    %

r   c                	   @   s   e Zd Zg dZedddddejgZej	e	g dg dg d	g d
g dgej	g dg dg dg dg dge
ddZdddddZdd Zdd Zdd Zdd Zdd  ZdS )!TestMomentsrC   gp=
ף?g?߾?gD9?gQI?g}?5^I)gq2۪?g{!3?gr!fa?gk?gY?)gSH*:/?g#R/?g>y}zd?gV߯<?gF?)ggˠw?gyZf?g=?g!@Vyȧ?g#1?)geY(9?gD$?g;?gJX<q0?g#d?)g?gA]?g_.?g?g2^9?)TFFTF)TTTFT)FFFFF)TTTTT)FFTFFr   rY   Nr1  r9   c                C   sH   t |}|d urt ||}t|| |d u r|j}|j|ks"J d S N)r)   r   Zbroadcast_tor   r9   )r,   actualexpectr1  r9   r/   r/   r0   _assert_equal  s   

zTestMoments._assert_equalc                 C   s  t | jd}t|dd t | jd}t|d t | jd}t|d t | jd}t|d t | jg d	}t|g d
 t | jd}t|d ttt j| jd t | jg d}t|g d
 t g }| j|tj	tj
d t tjg tjd}| j|tj	tjd t jtddd}| j|g dtj
d t jg gdd}| j|tj	dtj
d t jg gddgdd}| j|g dd td}tj	|d< tt |dtj d S )Nr   r   rO   rD         ?rE   rF        @rC   )r   r]  r   r^  r   r   )r   rD   rE   r    r   )r   r   r   r   )r   rX  )r   )momentr'   )rD   r   )r1  g      $@r   )r+   r_  testcaser
   r   r   r   r\  r)   r   Zfloat64r*   Zfloat32zerosr   r	   r]   r   )r,   r   r>   r/   r/   r0   test_moment  s8   






zTestMoments.test_momentc                 C   s   t | j}t|dd d S )N%?rO   )r+   	variationr`  r
   )r,   r   r/   r/   r0   test_variation  s   zTestMoments.test_variationc                 C   s*   t g d}tj|dd}t|d d S )N)r   rD   rE   rF   r   r   rO  g<<'?)r)   r*   r+   rd  r
   )r,   rL   r   r/   r/   r0   test_variation_ddof  s   zTestMoments.test_variation_ddofc                 C   sN  t | j}t|dd t j| jdd}t|dd t | j}t|dd tjtg dtjg dtd	d
}t	t | j
d| t| j
D ]\}}tt |||  qHtjtg dtjg dtd	d
}t	t j| j
ddd| t| j
D ]\}}tt j|dd||  q{t	t | j
dd d f t| j
dd d f  d S )Ng7l*ҿrO   r   biasg2۠ۿr   )gҽr?r   g>HÛe?r   gIǮFFFTFr   rY   r   )g`٨?r   gn?r   g0FrD   )r+   skewtestmathworksr
   r`  r]   r*   r)   boolr   testcase_2d	enumerater   r,   r   Z
correct_2dirowZcorrect_2d_bias_correctedr/   r/   r0   test_skewness  s6   zTestMoments.test_skewnessc                 C   s^  t j| jdddd}t|dd t j| jddd}t|dd t | jdd}t|d tjtg dtjg d	td
d}t	t | j
d| t| j
D ]\}}tt |||  qNtjtg dtjg d	td
d}t	t j| j
ddd| t| j
D ]\}}tt j|dd||  qtt | j
dd d f t| j
dd d f dd d S )Nr   r   )Zfisherrh  gO߻S@rO   gx|N@g=
ףp=?)            g'@=r   gt
Qri  r   rY   )rs  rt  g?<r   g`@7Frg  rD   rF   )Znulp)r+   kurtosisrk  r
   r`  r]   r*   r)   rl  r   rm  rn  r   r   ro  r/   r/   r0   test_kurtosis  sB   


zTestMoments.test_kurtosis)r2   r3   r4   r`  r]   r   r)   r   rk  r*   rl  rm  r\  rb  re  rf  rr  rv  r/   r/   r/   r0   rW  i  s6    	

	%!rW  c                   @   s   e Zd Zdd Zdd ZdS )TestModec                 C   s&  g d}t |d}t g d}t |d}tt|dk|}t|dk|}t|dk |}tt|dk |}ttj|d dd ttj|ddd ttj|d dd	 ttj|d dd ttj|d dd	 ttj|d dd
 ttj|d dd ttj|ddg dgg dgf ttj|ddg dgg dgf ttj|dddgdgdggdgdgdggf ttj|dddgdgdggdgdgdggf ttj|ddddggddggf ttj|dddgdgdggdgdgdggf tj|d d}	d}
t|	|
dd d S )N)r   r   r   r   r   r   rD   rE   rE   rE   rE   rF   r   r[   r   )rE   r   r   )rE   rD   rD   r   )rE   rF   r   )r   rE   )r   r   )rD   r   )r   r   r   r   r   r   rc   rE   r   r   )moder0  Tr   )	r)   r'  r*   r]   Zmasked_wherer	   r+   rx  r   )r,   a1a2a3Za4Zma1Zma2Zma3Zma4Za1_resr   r/   r/   r0   	test_mode  s0   $$00$0zTestMode.test_modec                 C   sd   t d}|d dd d f  d7  < |d d d df  d7  < | }t|d  t|| d S )N)rW   rW   r&   r   )r)   ra  copyr+   rx  r	   )r,   Zimcpr/   r/   r0   test_mode_modifies_input!  s   
z!TestMode.test_mode_modifies_inputN)r2   r3   r4   r|  r  r/   r/   r/   r0   rw    s    rw  c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestPercentilec                 C   s"   g d| _ g d| _g d| _d S )N)rE   rF   r   rO   r[   )rE   r   r   rF   rD   r   )r   rF   r   rO   r  r  r  r   )ry  rz  r{  r,   r/   r/   r0   setup_method-  s   

zTestPercentile.setup_methodc                 C   sH   t dd }tt|dd tt|dd tt|dd d S )	Nr   rs   r   r   rW   r   r&   g      ?)r)   r   r	   r+   scoreatpercentiler   r/   r/   r0   test_percentile2  s   zTestPercentile.test_percentilec                 C   sB   t g dg dg dg dg dg}tt|dg d d S )Nr   r   r   )rF   rF   rE   r&   )r]   r*   r	   r+   r  r   r/   r/   r0   test_2D8  s   
zTestPercentile.test_2DN)r2   r3   r4   r  r  r  r/   r/   r/   r0   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   rD   rE   rF   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   rO  rD   )r+   semr`  r
   r0  r   r)   r   )r,   r   r   r/   r/   r0   test_semH  s   

"zTestVariability.test_semc                 C   s6   t | j| j}g d}t||j|jdk dd d S )N)OT\w%ܿrc  OT\w?Fr&  decimal)r+   zmapr`  r   r-   rZ   )r,   r   Zdesired_unmaskedvalsr/   r/   r0   	test_zmapP  s
   
zTestVariability.test_zmapc                 C   s4   t | j}tddddtjg}t||dd d S )Nr  r  rc  r  r&  r  )r+   zscorer`  r]   r   r)   r   r
   )r,   r   r.   r/   r/   r0   test_zscoreY  s
   zTestVariability.test_zscoreN)r2   r3   r4   __doc__r]   r   r)   r   r`  r  r  r  r/   r/   r/   r0   r  A  s    	r  c                   @   r  )TestMiscc                 C   s   dgd dgd  dgd  dgd  dgd  d	gd  dgdgd  dgd
  dgd  d	gd  g}ddg ddg  ddg  ddg  ddg  ddg  dgddg  d
dg  ddg  ddg  g}t ttj| jd
|d
 d S )Nr   r[   r   r   r   r   rE   rD   rO   rF   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/   r0   test_obrientransforme  s   :,:,zTestMisc.test_obrientransformc                 C   s   t t dddddddddddgg ddddd	d
ddddt ddt gt d	dddt d	ddddddgg}t|j}|j\}}}}ttt||dd ttt||ddd ttt||ddd d S )NrF   rD   r   r   r   r   rE   r   r[   r   r   r   r  )48E?gsA?g)g%䃞?g 	?l)r  g46<?)	r   r]   r   r  r
   r)   r  r+   ks_2samp)r,   r>   ZwinterZspringZsummerZfallr/   r/   r0   test_ks_2sampm  s    zTestMisc.test_ks_2sampc                 C   s   g dg dg df}t j| }t|d dd t|d dd	 ttdd
ddddddd
ddgg ddd
dd	dddddtddtgtd	dddtd	ddd
dddgg}t|}t j| }t|d dd t|d dd d}t||dd d S )N)
g      "@      #@      @      @r  r         @r   r   r   )
r   r   r   r  r  r  r   r   r   r   )
r   r  r    r   r   r   r   r    r   r   r   g:pΈ$@rF   r   g(QGu?r[   rD   r   r   r   rE   r   r   r   r   r  gr @g-C6?	statisticr   Tr   )r+   Zfriedmanchisquarer
   r   r]   r   r   )r,   r  r   r>   r   r/   r/   r0   test_friedmanchisq|  s$   


zTestMisc.test_friedmanchisqN)r2   r3   r4   r  r  r  r/   r/   r/   r0   r  b  s    r  c                  C   s   t ddd} dt ddd d }|t t ddd7 }t| |}tj}tt|| d}t	||dd d	t
|v s?J t|jd
 t|jd t|jd t|jd d S )Nr   rW   r  rO   rP   )slope	interceptZrvaluer   stderrTr   intercept_stderrg5E%?g +l$@g4_Qc?g8?)r)   r   sinr+   
linregressr   ZLinregressResultr   
isinstancer   dirr
   r  r  r  r  )r>   r   r   lrr   r/   r/   r0   test_regress_simple  s   r  c                  C   sX   t d} t jd}d}tt|d t| | W d    d S 1 s%w   Y  d S )NrO   zBCannot calculate a linear regression if all x values are identicalr   )r)   ra  r   r   r   r+   r  )r>   r   msgr/   r/   r0   test_linregress_identical_x  s   
"r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestTheilslopesc                 C   sd  t g d\}}}}t|d t|d t jg ddd\}}}}t|d t|d tjjg dg dd}t |\}}}}t|d	 t|d
 t j|dd\}}}}t|d	 t|d g d}g d}t ||d\}}}}t|d t|d t|ddd t|ddd t j||ddd\}}}}t|d t|d t|ddd t|ddd d S )N)r   r   r   rs   Zjointr   r   )r   r   rW   r   )FFTFrY   r\   gUUUUUU?)r   rD   rE   rF   rO   r&  r   )r         rP   r   7   N   gQ?rF   r    gQ@rD   r  gGz@r   )r+   theilslopesr
   r)   r]   r*   )r,   r  r  lowerupperr   r>   r/   r/   r0   test_theilslopes  s>   













z TestTheilslopes.test_theilslopesc                 C   s   d}t jt|d tddgddg}tt|sJ W d    n1 s(w   Y  t $}|	td tg dg d}t
|ddtjtjf W d    d S 1 sWw   Y  d S )NzFAll `x` coordinates.*|Mean of empty slice.|invalid value encountered.*r   r   r   zinvalid value encountered...r   r   r   )r   r   r   )rz   warnsr   r+   r  r)   allisnanr   filterr   r   )r,   r  r   supr/   r/   r0   test_theilslopes_warnings  s   "z)TestTheilslopes.test_theilslopes_warningsc                 C   sd   g d}g d}t ||\}}}}t ||}t||j t||j t||j t||j dS )zv
        Simple test to ensure tuple backwards-compatibility of the returned
        TheilslopesResult object
        r   rD   rF   rF   r[   r   N)r+   r  r	   r  r  	low_slope
high_slope)r,   r   r>   r  r  r  r  r   r/   r/   r0   'test_theilslopes_namedtuple_consistency  s   z7TestTheilslopes.test_theilslopes_namedtuple_consistencyc                 C   s@   t jd}|jdddt jd}t||}t j|j	d d S )Nl   U5<H r      rO   )rC  r9   r   )
r)   r   rE  ZintegersZuint8r   r  Ztestingr   r  )r,   rI  r   r   r/   r/   r0   test_gh19678_uint8  s   z"TestTheilslopes.test_gh19678_uint8N)r2   r3   r4   r  r  r  r  r/   r/   r/   r0   r    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 )NrD   rO   rs   )r   rs   Zseparater   r   r   )r  rt  r   rF   gffffffr      rC  random_stater   r:   )
r)   r   r	   r+   siegelslopesr   normrvsr  r   )r   r>   Z	slope_olsZintercept_ols_r  r  r/   r/   r0   test_siegelslopes  s$   
r  c                  C   sH   g d} g d}t | |\}}t | |}t||j t||j dS )zl
    Simple test to ensure tuple backwards-compatibility of the returned
    SiegelslopesResult object.
    r  r  N)r+   r  r	   r  r  )r   r>   r  r  r   r/   r/   r0   (test_siegelslopes_namedtuple_consistency  s   r  c                     s   t jd} | jddt\}}dd  tdD ]}tt  d d |f ||  qt  fddtj	d	 D }tt || d S )
Nl   ,'  )rW   rF   rB  c                 S   sj   t | }t|}| | d d tjf  }||d d tjf  }tjtj||ftddd}|| ||  S )Nr   r   )k)lenr)   r   ZnewaxisZtriuZonesrl  )yir   r>   dydxrZ   r/   r/   r0   dijk0  s   
z&test_sen_seasonal_slopes.<locals>.dijkrF   c                    s    g | ]} d d |f qS rY  r/   ).0rp  r  r>   r/   r0   
<listcomp>;  s     z,test_sen_seasonal_slopes.<locals>.<listcomp>r   )
r)   r   rE  r+   Zsen_seasonal_slopesr   r   Zmedianr   r1  )rI  Zintra_slopeZinter_sloperp  Z
all_slopesr/   r  r0   test_sen_seasonal_slopes*  s   &$r  c                  C   s.   t tddd} t| jtg d d S )NrE   r   )rH   rs   r   )r+   Zplotting_positionsr)   r   r   r-   r*   )posr/   r/   r0   test_plotting_positions?  s   r  c                   @   sx   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jdddge
jdddgdd Zdd ZdS )TestNormalitytestsc              	   C   s   t dd }tt|t| tt|t| tt|t| tjtjtjg}tjtjtjg}g d}t||D ]5\}}t	j
ttd ||}t |jsYJ t |jsaJ W d    n1 skw   Y  tt|| qAd S )Nr  rc   r   r   rD   rE   r  rc   r   r   rD   rE   r  rc   r   r   rD   rE   r  rc   r   r   rD   rE   rD   rC   r   )r)   r*   r   r+   
normaltestr   skewtestkurtosistestziprz   r  r   r   r  r  r   r   r   )r,   r>   funcsZmfuncsfuncZmfuncr   r/   r/   r0   test_vs_nonmaskedH  s*   


z$TestNormalitytests.test_vs_nonmaskedc                 C   s`   t dd }ttj|d dt| ttj|d dt| ttj|d dt| d S )Nr  rD   r   )r)   r*   r   r+   r  r  r  r   r/   r/   r0   test_axis_None[  s   z!TestNormalitytests.test_axis_Nonec                 C   s   t dd }t jjt jt j|df t jddg|j df d}tt|t	| tt
|t	
| tt|t	| d S )Nr  rD   rO   TFrY   )r)   r*   r]   Zr_infrC  r   r+   r  r   r  r  )r,   r>   xmr/   r/   r0   test_maskedarray_inputc  s   z)TestNormalitytests.test_maskedarray_inputc                 C   sz   t dd }t |gd j}tjtjtjfD ]"}||}||}t|d |d gd  t|d |d gd  qd S )Nr  rD   r   r   )	r)   r*   Zvstackr  r+   r  r  r  r   )r,   r>   Zx_2dr  Zres_1dZres_2dr/   r/   r0   test_nd_inputl  s   z TestNormalitytests.test_nd_inputc                 C   .   t dd }t|}d}t||dd d S Nr  rD   r  Tr   )r)   r*   r+   r  r   r,   r>   r   r   r/   r/   r0   !test_normaltest_result_attributesu     
z4TestNormalitytests.test_normaltest_result_attributesc                 C   r  r  )r)   r*   r+   r  r   r  r/   r/   r0   #test_kurtosistest_result_attributes{  r  z6TestNormalitytests.test_kurtosistest_result_attributesc                 C   s<   g d}t dd t|D }tt|d dk d d S )N)
   r   :   r   r   )   r   r   r      c                 S   s   g | ]
\}}t ||qS r/   )r)   full)r  rp  cr/   r/   r0   r    s    z;TestNormalitytests.test_regression_9033.<locals>.<listcomp>r   g{Gz?T)r)   Zhstackrn  r	   r+   r  )r,   countsr>   r/   r/   r0   test_regression_9033  s   z'TestNormalitytests.test_regression_9033testr  r  r   r   r   c           
      C   s   t jjddddd}tt |}tt|}|||d\}}|||d\}}	t||dd t|	|dd tj|d	d
< tjj	|t
|d}|| |d\}}|||d\}}	t||dd t|	|dd d S )NrO   r%   rQ   {   locscalerC  r  r   g-q=Zatolr   r   rY   )r   r  r  getattrr+   r   r)   r   r]   r   r  r  )
r,   r  r   r>   Z
stats_testZmstats_testZz_exp_exr   r   r/   r/   r0   test_alternative  s   

z#TestNormalitytests.test_alternativec                 C   s   t jjddd}d}tjt|d tj|dd W d    n1 s#w   Y  tjt|d tj|dd W d    d S 1 sBw   Y  d S )NrP   r  r  z`alternative` must be...r   r   r   )	r   r  r  rz   r   r   r+   r  r  )r,   r>   r  r/   r/   r0   test_bad_alternative  s   "z'TestNormalitytests.test_bad_alternativeN)r2   r3   r4   r  r  r  r  r  r  r  rz   r{   r  r  r  r/   r/   r/   r0   r  E  s    		r  c                   @   r   )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  Tr   )r)   r*   Zuint16r+   Zf_onewayr   )r,   rL   r   r   r   r/   r/   r0   test_result_attributes  s
   z"TestFOneway.test_result_attributesNr2   r3   r4   r  r/   r/   r/   r0   r    r5   r  c                   @   s8   e Zd Zeg dZeg dZdd Zdd ZdS )TestMannwhitneyu)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                 C   s&   t | j| j}d}t||dd d S )Nr  Tr   )r+   mannwhitneyur>   r   r   )r,   r   r   r/   r/   r0   r    s   z'TestMannwhitneyu.test_result_attributesc                 C   sB   t | j| j}t| j| j}|j|jksJ t|j|j d S rY  )r+   r  r>   r   r   r  r   r   )r,   res1res2r/   r/   r0   test_against_stats  s   z#TestMannwhitneyu.test_against_statsN)	r2   r3   r4   r)   r*   r>   r   r  r  r/   r/   r/   r0   r
    s
    r
  c                   @   r   )TestKruskalc                 C   s2   g d}g d}t ||}d}t||dd d S )N)r   rE   r   r   r   )rD   rF   r[   r   rO   r  Tr   )r+   Zkruskalr   r   r/   r/   r0   r    s
   z"TestKruskal.test_result_attributesNr	  r/   r/   r/   r0   r    r5   r  c                   @   s^   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jdddgdd ZdS )TestTtest_relc                 C   sr  t jd t jddg d }t|d d df |d d df }t|d d df |d d df }t|| tj|d d df |d d df d d}tj|d d df |d d df d d}t|| tj|d d d df |d d dd f dd}tj|d d d df |d d dd f dd}t|| t|d d d df |d d dd f }t|| d S )	N rP   rF   r   r   r   rD   r   r   r   rD   )r)   r   r  randnr   	ttest_relr+   r   )r,   outcomer  r  res3r/   r/   r0   r    s   $$
((
00
,zTestTtest_rel.test_vs_nonmaskedc                 C      t jd tjt jddg dg dgd}t E}|td |d d df |d d d	f ft j	t j	gd
dgffD ]}t
j| \}}t|t j	t j	f t|t j	t j	f q<W d    d S 1 scw   Y  d S Nr  rE   rD   r  r  rY   %invalid value encountered in absoluter   r   r   r   )r)   r   r  r]   r   r  r   r  r   r   r+   r  r   r,   r  r  pairtr   r/   r/   r0   test_fully_masked  s   "zTestTtest_rel.test_fully_maskedc                 C   \   t jd t jddg d }t|d d df |d d df }d}t||dd	 d S 
Nr  rP   rF   r  r   r   r  Tr   )r)   r   r  r  r+   r  r   r,   r  r   r   r/   r/   r0   r    
   $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 )	NrO   r   rG   rD   rE   rF   r   r   )r   r   r+   r  r)   r   r'  r   r/   r/   r0   test_invalid_input_size  s   

z%TestTtest_rel.test_invalid_input_sizec                 C   $   t g g }ttt| d S rY  )r+   r  r   r)   r  r  r,   r  r/   r/   r0   
test_empty      zTestTtest_rel.test_emptyc                 C   s   t g dg d\}}tt||ftjdf t 3}|td t g dg d\}}t	|t
tjtjg t	|t
tjtjg W d    d S 1 sRw   Y  d S )Nr  r  r   r  )r+   	ttest_indr	   r)   absr  r   r  r   r   r*   r   r,   r  r   r  r/   r/   r0   test_zero_division$  s   "z TestTtest_rel.test_zero_divisionc                 C   P   d}t jt|d tjg dg ddd W d    d S 1 s!w   Y  d S N4alternative must be 'less', 'greater' or 'two-sided'r   r   rD   rE   )rF   r   r[   foor   rz   r   r   r+   r'  r,   r  r/   r/   r0   r  .     "z"TestTtest_rel.test_bad_alternativer   r   r   c                 C   s  t jjddddd}t jjddddd}t j|||d\}}tj|||d\}}t||d	d
 t||d	d
 tj|dd< tj|dd< tjj	|t
|d}tjj	|t
|d}tj|||d\}}t j| | |d\}}t||d	d
 t||d	d
 d S )NrO   r   r   *   r  r   rD   r   rI   r:   r   rY   )r   r  r  r  r+   r   r)   r   r]   r   r  r  r,   r   r>   r   t_exr  r  r   r/   r/   r0   r  3  s    
zTestTtest_rel.test_alternativeN)r2   r3   r4   r  r  r  r"  r%  r*  r  rz   r{   r  r  r/   r/   r/   r0   r    s    	
r  c                   @   V   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dddgdd ZdS )TestTtest_indc                 C   s&  t jd t jddg d }t|d d df |d d df }t|d d df |d d df }t|| tj|d d df |d d df d d}tj|d d df |d d df d d}t|| tj|d d d df |d d dd f dd}tj|d d d df |d d dd f dd}t|| t|d d d df |d d dd f }t|| tj|d d df |d d df d	d
}tj|d d df |d d df d	d
}t|| tj|d d df |d d df dd
}tj|d d df |d d df dd
}t|| d S )Nr  rP   rF   r  r   r   r   rD   TZ	equal_varF)r)   r   r  r  r   r'  r+   r   )r,   r  r  r  r  Zres4Zres5r/   r/   r0   r  J  s&   $$
((
00
,
((
((zTestTtest_ind.test_vs_nonmaskedc                 C   r  r  )r)   r   r  r]   r   r  r   r  r   r   r+   r'  r   r  r/   r/   r0   r  g  s   $"zTestTtest_ind.test_fully_maskedc                 C   r  r  )r)   r   r  r  r+   r'  r   r   r/   r/   r0   r  r  r!  z$TestTtest_ind.test_result_attributesc                 C   r#  rY  )r+   r'  r   r)   r  r  r$  r/   r/   r0   r%  z  r&  zTestTtest_ind.test_emptyc                 C   s   t g dg d\}}tt||ftjdf t ,}|td t g dg d\}}t	|tj
tj
f t	|tj
tj
f W d    n1 sKw   Y  t jg dg ddd\}}tt||ftjdf t	t jg dg dddtj
tj
f d S )Nr  r  r   r  Fr8  )r+   r'  r	   r)   r(  r  r   r  r   r   r   r)  r/   r/   r0   r*  ~  s   
z TestTtest_ind.test_zero_divisionc                 C   r+  r,  r0  r1  r/   r/   r0   r    r2  z"TestTtest_ind.test_bad_alternativer   r   r   c                 C   s  t jjddddd}t jjddddd}t j|||d\}}tj|||d\}}t||dd	 t||dd	 tj|d
d< tj|dd< tjj	|t
|d}tjj	|t
|d}t j| | |d\}}tj|||d\}}t||dd	 t||dd	 d S )NrO   rD   rW   r  r  r   r   rI   r:   r   rU   rV   rY   )r   r  r  r'  r+   r   r)   r   r]   r   r  r  r4  r/   r/   r0   r    s    
zTestTtest_ind.test_alternativeNr2   r3   r4   r  r  r  r%  r*  r  rz   r{   r  r  r/   r/   r/   r0   r7  I  s    r7  c                   @   r6  )TestTtest_1sampc                 C   s`   t jd t jddg d }t|d d df d}t|d d df d}t|| d S )Nr  rP   rF   r  r   r   )r)   r   r  r  r   ttest_1sampr+   r   )r,   r  r  r  r/   r/   r0   r    s
   z!TestTtest_1samp.test_vs_nonmaskedc                 C   s   t jd tjt jdg dd}t jt jf}t /}|t	d t jt jfdf|dffD ]}t
j| \}}t|| t|| q/W d    d S 1 sNw   Y  d S )Nr  rE   r  rY   r  r   )r)   r   r  r]   r   r  r   r   r  r   r+   r;  r   )r,   r  r   r  r  r  r   r/   r/   r0   r    s   
"z!TestTtest_1samp.test_fully_maskedc                 C   sP   t jd t jddg d }t|d d df d}d}t||dd	 d S r  )r)   r   r  r  r+   r;  r   r   r/   r/   r0   r    s
   z&TestTtest_1samp.test_result_attributesc                 C   s$   t g d}ttt| d S )Nr   )r+   r;  r   r)   r  r  r$  r/   r/   r0   r%    r&  zTestTtest_1samp.test_emptyc                 C   s   t g dd\}}tt||ftjdf t )}|td t g dd\}}t	t
| t|tjtjf W d    d S 1 sFw   Y  d S )Nr  r   r   r  )r+   r;  r	   r)   r(  r  r   r  r   r   r  r   r   r)  r/   r/   r0   r*    s   "z"TestTtest_1samp.test_zero_divisionc                 C   sL   d}t jt|d tjg dddd W d    d S 1 sw   Y  d S )Nr-  r   r.  rF   r/  r   )rz   r   r   r+   r;  r1  r/   r/   r0   r    s   "z$TestTtest_1samp.test_bad_alternativer   r   r   c                 C   s   t jjddddd}t j|d|d\}}tj|d|d\}}t||dd	 t||dd	 tj|d
d< tjj	|t
|d}t j| d|d\}}tj|d|d\}}t||dd	 t||dd	 d S )NrO   rD   rW   r  r  r   r   rI   r:   r   rY   )r   r  r  r;  r+   r   r)   r   r]   r   r  r  )r,   r   r>   r5  r  r  r   r/   r/   r0   r    s   
z TestTtest_1samp.test_alternativeNr9  r/   r/   r/   r0   r:    s    	
r:  c                   @   s   e Zd ZdZdd ZdS )TestDescribez
    Tests for mstats.describe.

    Note that there are also tests for `mstats.describe` in the
    class TestCompareWithStats.
    c                 C   s   t jjg dg dgg dg dgd}tj|dd}t|jdd	g |j\}}t|d
dg t|d	dg t|jddg t|j	ddg t|j
ddg t|jddg d S )N)r   r   rD   rE   rF   r   )r   r   r   r   rE   rE   )r   r   r   r   r   r   )r   r   r   r   r   r   rY   r   r   r   rF   r   rE   r   r    r   r   g       )r)   r]   r   r+   describer	   nobsminmaxmeanvarianceskewnessr   ru  )r,   rL   r   ZaminZamaxr/   r/   r0   test_basic_with_axis  s    
z!TestDescribe.test_basic_with_axisN)r2   r3   r4   r  rD  r/   r/   r/   r0   r<    s    r<  c                   @   s8  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dJdK Z(dLS )MTestCompareWithStatsa  
    Class to compare mstats results with stats results.

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

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

    Author: Alexander Loew

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

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

    c                 C   s   g dS )z9 Returns list of sample sizes to be used for comparison. )r   rW   rO   r   r/   r  r/   r/   r0   get_n  s   zTestCompareWithStats.get_nc                 C   s   t jd t j|}|t j| }t t|d d}t t|d d}||dt|< ||dt|< |dk}t jj||d}t jj||d}||||fS )Nr  r   g 7yACr   g s?CrY   )r)   r   r  r  r  r  r]   r*   )r,   r   r>   r   r  ymrZ   r/   r/   r0   generate_xy_sample  s   z'TestCompareWithStats.generate_xy_samplec           
      C   s   t ||ft j}t ||ft j}t |d |ft j}t |d |ft j}t|D ]}| |\|d d |f< |d d |f< }}	q,|d| |d|d d f< |d| |d|d d f< t jj|t |d}t jj|t |d}||||fS )Nr   r   rY   )r)   r  r   r   rH  r]   r*   r  )
r,   r   nxr>   r   r  rG  rp  r  r  r/   r/   r0   generate_xy_sample2D.  s   ,z)TestCompareWithStats.generate_xy_sample2Dc                 C   sT   |   D ]#}| |\}}}}t||}tj||}tt|t| qd S rY  )rF  rH  r   r  r+   r   r)   r   )r,   r   r>   r   r  rG  Zresult1Zresult2r/   r/   r0   test_linregress=  s   z$TestCompareWithStats.test_linregressc           
      C   sb   |   D ]*}| |\}}}}t||\}}tj||\}}	t||dd t||	dd qd S )Nr.  r  )rF  rH  r   r   r+   r
   
r,   r   r>   r   r  rG  r   r   rmpmr/   r/   r0   r   D  s   z"TestCompareWithStats.test_pearsonrc           
      C   s^   |   D ](}| |\}}}}t||\}}tj||\}}	t||d t||	d qd S Nr.  )rF  rH  r   r   r+   r
   rL  r/   r/   r0   r   M  s   z#TestCompareWithStats.test_spearmanrc                 C   s    t d}tttj||d d S )Nr[   F)r)   r   r   r   r+   r   r   r/   r/   r0   !test_spearmanr_backcompat_usetiesU  s   
z6TestCompareWithStats.test_spearmanr_backcompat_usetiesc                 C   s|   |   D ]7}| |\}}}}tt|}tjt|}t||dd tt|}tjt|}t||dd qd S )NgvIh%<=r:   )rF  rH  r   r<   r(  r+   r   r,   r   r>   r   r  rG  r   rM  r/   r/   r0   
test_gmean[  s   zTestCompareWithStats.test_gmeanc                 C   sx   |   D ]5}| |\}}}}tt|}tjt|}t||d tt|}tjt|}t||d qd S NrO   )rF  rH  r   r@   r(  r+   r
   rQ  r/   r/   r0   
test_hmeanf  s   zTestCompareWithStats.test_hmeanc                 C   h   |   D ]-}| |\}}}}t|}tj|}t||d t|}tj|}t||d qd S rS  )rF  rH  r   rj  r+   r
   rQ  r/   r/   r0   	test_skewr     

zTestCompareWithStats.test_skewc                 C   rU  rS  )rF  rH  r   r_  r+   r
   rQ  r/   r/   r0   rb  ~  rW  z TestCompareWithStats.test_momentc              	   C   s   |   D ][}| |\}}}}||  |  }||  |  }tt||dd tt||dd tt|tj|dt| dd tt|tj|dt| dd qd S )N绽|=r:   r   )	rF  rH  rA  rL  r   r   r  r+   r  )r,   r   r>   r   r  rG  ZzxZzyr/   r/   r0   r    s     z TestCompareWithStats.test_zscorec                 C   rU  rS  )rF  rH  r   ru  r+   r
   rQ  r/   r/   r0   rv    s   

z"TestCompareWithStats.test_kurtosisc           
      C   s  t ddd}t j|}tj|dd}tjj|dd}t|ddd t|ddd | 	 D ][}| 
|\}}}}	ttjj|d d	d
tj|d d	d
dd ttjj|	d d	d
tj|d d	d
dd ttjj|d dd
tj|d dd
dd ttjj|	d dd
tj|d dd
dd q0d S )NrP   r   rF   r   rO  g'e@gh㈵>r  r   )r'   rP     r  )r)   r   r'  r]   r*   r   r  r+   r   rF  rH  r
   )
r,   rL   amr   rM  r   r>   r   r  rG  r/   r/   r0   r    s*   zTestCompareWithStats.test_semc           	      C   sr   |   D ]2}| |\}}}}tj|dd}tjj|dd}tdD ]}tt|| t|| dd q"qd S )Nr   rO  r[   r&  r  )	rF  rH  r   r>  r+   r   r
   r)   r   )	r,   r   r>   r   r  rG  r   rM  iir/   r/   r0   test_describe  s   z"TestCompareWithStats.test_describec                 C   s&   t td}d}t||dd d S )Nr   )r?  r@  rA  rB  rC  ru  Tr   )r+   r>  r)   r   r   )r,   rZ  r   r/   r/   r0   test_describe_result_attributes  s   z4TestCompareWithStats.test_describe_result_attributesc                 C   sD   |   D ]}| |\}}}}t|}tj|}t|| qd S rY  )rF  rH  r   r   r+   r   rQ  r/   r/   r0   test_rankdata  s   
z"TestCompareWithStats.test_rankdatac                 C   sX   |   D ]%}| |\}}}}tt|tj|d tt|tj|d qd S rO  )rF  rH  r
   r   Ztmeanr+   r,   r   r>   r   r  rG  r/   r/   r0   
test_tmean  s
   zTestCompareWithStats.test_tmeanc                 C   s   |   D ]K}| |\}}}}tt|dtj|dd tt|dtj|dd ttj|ddtjj|ddd ttj|ddtjj|ddd qd S )Nr   rO   r   )Z
upperlimit)rF  rH  r
   r   Ztmaxr+   r_  r/   r/   r0   	test_tmax  s   zTestCompareWithStats.test_tmaxc                 C   s   |   D ]E}| |\}}}}tt|tj| tt|tj| ttj|ddtjj|ddd ttj|ddtjj|ddd qd S )Nr   )Z
lowerlimitrO   )rF  rH  r	   r   Ztminr+   r
   r_  r/   r/   r0   	test_tmin  s   zTestCompareWithStats.test_tminc                 C   sX   |   D ]%}| |\}}}}t||}tj||}t||dt| dd qd S )Nr   rX  r  )rF  rH  r   r  r+   r   r  )r,   r   r>   r   r  rG  r   Zzmr/   r/   r0   r    s   zTestCompareWithStats.test_zmapc                 C   \   |   D ]'}| |\}}}}tt|tj|dd tt|tj|dd qd S Nr&  r  )rF  rH  r
   r   rd  r+   r_  r/   r/   r0   re       z#TestCompareWithStats.test_variationc                 C   rc  rd  )rF  rH  r
   r   tvarr+   r_  r/   r/   r0   	test_tvar   re  zTestCompareWithStats.test_tvarc                 C   sB   t d}t|d}tj|d}tt ||j|j   d S )NrP   r   )	r)   r   r   r/  r+   r   rF  r-   rZ   )r,   rL   r   Zbmr/   r/   r0   test_trimboth  s   
z"TestCompareWithStats.test_trimbothc                 C   s   |   D ]9}| |\}}}}tt|tj|dd tt|tj|dd ttj|ddtjj|dddd qd S )Nr.  r  )r=  r   )r$  )rF  rH  r
   r   Ztsemr+   r_  r/   r/   r0   	test_tsem  s   zTestCompareWithStats.test_tsemc                 C   sL   |   D ]}|dkr#| |\}}}}t|}tj|}t|| qd S )Nr   )rF  rH  r   r  r+   r   rQ  r/   r/   r0   test_skewtest  s   

z"TestCompareWithStats.test_skewtestc                 C   r  r  )r)   r*   r+   r  r   r  r/   r/   r0   test_skewtest_result_attributes"  r  z4TestCompareWithStats.test_skewtest_result_attributesc                 C   s@   t jdd }t|}tj|}tt |t | d S )N)rP   rD   g      4@)r)   r   r   r  r+   r   r   )r,   r>   r   rM  r/   r/   r0   test_skewtest_2D_notmasked(  s   
z/TestCompareWithStats.test_skewtest_2D_notmaskedc           	      C   s   d}|   D ]9}|dkr?| ||\}}}}t|}tj|}t|d d |d d dd t|d d |d d dd qd S )NrD   r   r   rI   r:   r   )rF  rJ  r   r  r+   r   )	r,   rI  r   r>   r   r  rG  r   rM  r/   r/   r0   test_skewtest_2D_WithMask/  s   
z.TestCompareWithStats.test_skewtest_2D_WithMaskc           	   	   C   s   t jddZ t >}|td |td |  D ]%}|dkr@| |\}}}}t|}tj	|}t
t |t | qW d    n1 sKw   Y  W d    d S W d    d S 1 scw   Y  d S )NrT  )Zoverz(`kurtosistest` p-value may be inaccuratez!kurtosistest only valid for n>=20r   )r)   rf   r   r  UserWarningrF  rH  r   r  r+   r   r   )	r,   r  r   r>   r   r  rG  r   rM  r/   r/   r0   test_normaltest:  s   
Pz$TestCompareWithStats.test_normaltestc                 C   s   t g dd}t g dd}|dk}t jj||d}| | }}t j|dd\}}||dk ||dk f}	tj	|}
t
|	|
 t
|| t
|| tj	g \}}t
|t jd	t jd
 d S )N)r   r   rD   rD   rE   rE   rE   rF   rF   rF   rF   r   )r   r   rD   rD   rE   rE   rE   rF   rF   rF   rF   r   r   r   r   r  rY   T)Zreturn_countsr   r   r   )r)   r   rl   r]   r*   r}  uniquer   r+   Zfind_repeatsr	   Zintp)r,   r>   tmprZ   r  Zx_origZxm_origrp  Zunique_countsr   rM  r  r  r/   r/   r0   test_find_repeatsE  s   


z&TestCompareWithStats.test_find_repeatsc                 C   sj   |   D ].}| |\}}}}t||}tj||}t|d |d dd t|d |d dd qd S )Nr   rO   r  r   r   )rF  rH  r   r   r+   r
   rQ  r/   r/   r0   r   Y  s   z$TestCompareWithStats.test_kendalltauc                 C   sR   |   D ]"}| |\}}}}t|}tj|}t|j|dt|  qd S )Nr   )rF  rH  r   r  r+   r
   r  r  rQ  r/   r/   r0   r  a  s   
z)TestCompareWithStats.test_obrientransformc              
   C   s   dD ]b}t  U dD ]J}|  D ]C}| |\}}}}tj|tjj||d}tjj|tjj||d}	tt	
|t	
|	 tj|tjj||d}
tt	
|t	
|
 qq
W d   n1 s_w   Y  qdS )zFChecks that mstats.ks_1samp and stats.ks_1samp agree on masked arrays.autor  asympr   r   r	  r   rx  N)r   rF  rH  r   Zks_1sampr  Zcdfr+   r	   r)   r   r,   rx  r   r   r>   r   r  rG  r  r  r  r/   r/   r0   test_ks_1samph  s*   z"TestCompareWithStats.test_ks_1sampc              
   C   s   dD ]\}t  O dD ]D}|  D ]=}| |\}}}}tj|d||d}tjj|d||d}	tt|t|	 tj|d||d}
tt|t|
 qq
W d   n1 sYw   Y  qdS )z]
        Checks that 1-sample mstats.kstest and stats.kstest agree on masked arrays.
        rs  rv  r  rw  N)	r   rF  rH  r   kstestr+   r	   r)   r   rx  r/   r/   r0   test_kstest_1sampx  s*   
z&TestCompareWithStats.test_kstest_1sampc              
   C      dD ]h}t  [}|dv rd}|t| dD ]D}|  D ]=}| |\}}}}	tj||||d}
tjj||	||d}tt	
|
t	
| tj||||d}tt	
|
t	
| qqW d   n1 sew   Y  qdS )zVChecks that mstats.ks_2samp and stats.ks_2samp agree on masked arrays.
        gh-8431rs  rt  r  )ks_2samp: Exact calculation unsuccessful.rv  rw  N)r   r  r   rF  rH  r   r  r+   r	   r)   r   r,   rx  r  messager   r   r>   r   r  rG  r  r  r  r/   r/   r0   r    s0   
z"TestCompareWithStats.test_ks_2sampc              
   C   r|  )z]
        Checks that 2-sample mstats.kstest and stats.kstest agree on masked arrays.
        rs  r}  r~  rv  rw  N)r   r  r   rF  rH  r   rz  r+   r	   r)   r   r  r/   r/   r0   test_kstest_2samp  s0   
z&TestCompareWithStats.test_kstest_2sampN))r2   r3   r4   r  rF  rH  rJ  rK  r   r   rP  rR  rT  rV  rb  r  rv  r  r\  r]  r^  r`  ra  rb  r  re  rg  rh  ri  rj  rk  rl  rm  ro  rr  r   r  ry  r{  r  r  r/   r/   r/   r0   rE    sN    	
	rE  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   rD   rF   rE   r   r.  c           	      C   s   t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t||| jd t||| jd t||k t|d| jd t|d| jd t|d| jd t|d| jd t|d| jd t|d| jd d S )	Nr   r   r   r  |	&	@|	&	gҏGg?g@-pL?)r+   brunnermunzelXYr
   significantr   )	r,   u1r   u2r   u3r   Zu4Zp4r/   r/   r0   test_brunnermunzel_one_sided  s2   
z.TestBrunnerMunzel.test_brunnermunzel_one_sidedc                 C   t   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nr	  r   r  r  r   ҏGw?r+   r  r  r  r
   r  r,   r  r   r  r   r/   r/   r0   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 )Nr  r  r  r  r  r  r/   r/   r0   test_brunnermunzel_default  s   
z,TestBrunnerMunzel.test_brunnermunzel_defaultc                 C   0   d}d}t |dv tttj| j| j|| d S )Nr   r  r  r   r   r   r+   r  r  r  r,   r   distributionr/   r/   r0   $test_brunnermunzel_alternative_error     z6TestBrunnerMunzel.test_brunnermunzel_alternative_errorc                 C   r  )Nnormal)r  r  r  r  g "H[?r  r  r/   r/   r0   $test_brunnermunzel_distribution_norm  s   
z6TestBrunnerMunzel.test_brunnermunzel_distribution_normc                 C   r  )Nr	  r   )r  r  r  r  r/   r/   r0   %test_brunnermunzel_distribution_error  r  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 rY  )r+   r  r  r  r   r)   r  )r,   r  r   r  r   r  r   r/   r/   r0   test_brunnermunzel_empty_imput  s   z0TestBrunnerMunzel.test_brunnermunzel_empty_imputN)r2   r3   r4   r)   r]   Zmasked_invalidr   r  r  r  r  r  r  r  r  r  r  r/   r/   r/   r0   r    s    &r  )NNr6   )Cr  r   r  numpyr)   r   Znumpy.mar]   r   r   Zscipy.stats.mstatsr   r+   ZscipyZcommon_testsr   rz   r   r   Znumpy.ma.testutilsr	   r
   r   r   r   r   r   Znumpy.testingr   Zscipy.statsr   r   Zscipy.conftestr   Zscipy.stats._axis_nan_policyr   r   r   r?   rA   rB   r~   r   r   r   rW  rw  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r7  r:  r<  rE  r  r/   r/   r/   r0   <module>   sz    $

<$  >x ) 0Mb	1\_C   3