a
    /'a                    @   s  d dl 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mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ dd	lmZ d
dlmZ d dlmZ z&d dlZdejd< d dlmZ  dZ!W n e"y   dZ!Y n0 g dZ#g dZ$g dZ%g dZ&g dZ'g dZ(g dZ)g dZ*g dZ+g dZ,G dd dZ-G dd dZ.G dd  d Z/G d!d" d"Z0G d#d$ d$Z1G d%d& d&Z2G d'd( d(Z3G d)d* d*Z4G d+d, d,Z5G d-d. d.e5Z6G d/d0 d0Z7G d1d2 d2Z8G d3d4 d4Z9G d5d6 d6Z:G d7d8 d8Z;G d9d: d:Z<G d;d< d<Z=G d=d> d>Z>G d?d@ d@Z?G dAdB dBZ@g dCZAG dDdE dEZBG dFdG dGZCG dHdI dIZDG dJdK dKZEG dLdM dMZFG dNdO dOZGG dPdQ dQZHG dRdS dSZIdS )T    N)RandomState)assert_array_equalassert_almost_equalassert_array_lessassert_array_almost_equalassert_assert_allcloseassert_equalsuppress_warnings)raises)optimize)stats)
_abw_state   )check_named_results   )_get_wilcoxon_distr)_binary_search_for_binom_tstZAggZbackendTF)
jt?Zd;?V-?      ?gX9v?-?x&1?+?+?r   )
r   r   r   r   灕Cl?r   r   r   r   V-?)
ʡE?g/$?r   r   ףp=
?r   r   r   r   r   )
gGz?r   r   r   r   r   r   r   r   r   )
r   r   gCl?Gz?r   rh|?r   r   g\(\?r   )
羟/$?gh|?5?r"   r   r   r   r   r   g1Zd?r   )
r    Mb?r   gjt?r   r   g}?5^I?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   r   r   r   r   r#   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestBayes_mvsc                 C   st   g d}t |\}}}t|jd t|jddd t|jd t|jddd t|jd	d
d t|jddd d S )N   	            r*            "@g4`H#j@gO[%@+=rtol      $@gai	@gӇu8@&.>_紫@   ZdecimalgYs?g1O@)r   	bayes_mvsr   	statisticr   minmaxselfdatameanvarstd rA   ?lib/python3.9/site-packages/scipy/stats/tests/test_morestats.py
test_basic/   s    zTestBayes_mvs.test_basicc                 C   s   t ttjg  d S N)assert_raises
ValueErrorr   r8   r<   rA   rA   rB   test_empty_inputA   s    zTestBayes_mvs.test_empty_inputc                 C   s0   t d}d}t|}|D ]}t|| qd S )N   )r9   r:   )nparanger   r8   r   )r<   x
attributesresirA   rA   rB   test_result_attributesD   s
    

z$TestBayes_mvs.test_result_attributesN)__name__
__module____qualname__rC   rH   rP   rA   rA   rA   rB   r$   .   s   r$   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestMvsdistc                 C   s   g d}t |\}}}t| d t|dddd t| d t|ddd	d t| d
dd t|dddd d S )Nr%   r,   g?r-   r.   r/   r1   r2   r3   r4   r5   r6   r7   )r   mvsdistr   r>   r   intervalr;   rA   rA   rB   rC   N   s    zTestMvsdist.test_basicc                 C   s   t ttjg  d S rD   rE   rF   r   rU   rG   rA   rA   rB   rH   ]   s    zTestMvsdist.test_empty_inputc                 C   s   dg}t ttj| d S Nr   rW   r<   r=   rA   rA   rB   test_bad_arg`   s    zTestMvsdist.test_bad_argc                 C   sh   t  L t dt dd tg dD  dd tg dD  W d    n1 sZ0    Y  d S )Nerrorc                 S   s   g | ]}|  qS rA   r>   .0rL   rA   rA   rB   
<listcomp>j       z*TestMvsdist.test_warns.<locals>.<listcomp>r   r      c                 S   s   g | ]}|  qS rA   r\   r]   rA   rA   rB   r_   k   r`   r   r   rb         )warningscatch_warningssimplefilterRuntimeWarningr   rU   rG   rA   rA   rB   
test_warnse   s    
zTestMvsdist.test_warnsN)rQ   rR   rS   rC   rH   rZ   rj   rA   rA   rA   rB   rT   M   s   rT   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 )TestShapiroc           
      C   s  g d}t |\}}t |}t|ddd t|jddd t|ddd t|jddd g d}t |\}}t |}t|ddd t|jddd t|dd	d t|jdd	d t jjd
d	ddd}t |\}}t |}t|ddd t|jddd t|dd	d t|jdd	d g d}d}d}	t |\}}t |}t||dd t|j|dd t||	d
d t|j|	d
d d S )N))\(?{Gz@q=
ףp@HzG$@@Q	@q=
ףp?Q@zG?      @Q?RQ?Q	@(\?zG?zG@(\#@333333@Gz?p=
ף@   ?r&   r6      Ɍ?)(\?=
ףp=?\(\@ffffff@\(\?(\?Gz@(\ףp=
@皙?)\(?RQr   p=
ף?@
ףp=
?{Gz?\(\@{Gz@Q@IddY?Dio?rb   re   d   iNa locscalesizerandom_stateg   E?g   Oٴ?)gn?gjt?gffffff?gMb?gjt?g;On?gjt?gX9v?gS?g(\?gI+?gʡE?gx?g|?5^?r   gCl?g1Zd@gS@g(\	@gGz@g rh@g"~j@gQ@gtV@gʡE @ghyܝ?g0M?rd   )r   shapiror   r9   pvaluenormrvs)
r<   x1wpwshapiro_testx2Zx3Zx4Z
W_expectedZ
p_expectedrA   rA   rB   rC   o   s<    



zTestShapiro.test_basicc                 C   s   g dg dg}t |\}}t |}t|ddd t|jddd t|ddd t|jddd g dg dg}t |\}}t |}t|d	dd t|jd	dd t|d
dd t|jd
dd d S )N)
rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   )
rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r&   r6   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r   rb   )r   r   r   r9   r   )r<   r   r   r   r   r   rA   rA   rB   test_2d   s$    

zTestShapiro.test_2dc                 C   s&   t ttjg  t ttjg g g g d S rD   rE   rF   r   r   rG   rA   rA   rB   rH      s    zTestShapiro.test_empty_inputc                 C   s4   t ttjddg t ttjtjg dggtd d S )Nr   r   dtype)rE   rF   r   r   rJ   arrayobjectrG   rA   rA   rB   test_not_enough_values   s    z"TestShapiro.test_not_enough_valuesc                 C   s   dg}t ttj| d S rX   r   r<   rL   rA   rA   rB   rZ      s    zTestShapiro.test_bad_argc                 C   s`   t d}t j|d< t|\}}t|}t|t j t|jt j t|d t|jd d S )Nr1   r'   r   )	rJ   rK   nanr   r   r	   r9   r   r   )r<   rL   r   r   r   rA   rA   rB   test_nan_input   s    



zTestShapiro.test_nan_inputN)	rQ   rR   rS   rC   r   rH   r   rZ   r   rA   rA   rA   rB   rk   n   s   +rk   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 )TestAndersonc                 C   s   t d}|jdd}|jdd}t|\}}}t|d d | t|\}}}t||dd   td}d|d< t|\}}}t|d d S )	NI2   r   
   r   g	@)	r   standard_exponentialstandard_normalr   andersonr   rJ   onesr   )r<   rsr   r   AcritsigvrA   rA   rB   test_normal   s    

zTestAnderson.test_normalc                 C   s   t d}|jdd}|jdd}t|d\}}}t||dd   tjdd" t|d\}}}W d    n1 sx0    Y  t||d k d S )	Nr   r   r   Zexponr   ignore)allr   )	r   r   r   r   r   r   rJ   errstater   )r<   r   r   r   r   r   r   rA   rA   rB   
test_expon   s    0zTestAnderson.test_exponc              	   C   s   t d}d|d< t|d\}}}t|}tj|\}}tj|||}tj|||}	t 	d|d }
| t 
d|
 d ||	d d d    }t|| d S )Nr           r   gumbelr   r   r   )rJ   r   r   r   lengumbel_lfitlogcdflogsfrK   r>   r   )r<   r   Za2r   r   nZxbarsr   r   rO   Zexpected_a2rA   rA   rB   test_gumbel   s    
*zTestAnderson.test_gumbelc                 C   s   t ttjdgdd d S Nr   plate_of_shrimpdist)rE   rF   r   r   rG   rA   rA   rB   rZ      s    zTestAnderson.test_bad_argc                 C   s0   t d}|jdd}t|}d}t|| d S )Nr   r   r   r9   Zcritical_valuesZsignificance_level)r   r   r   r   r   )r<   r   rL   rN   rM   rA   rA   rB   rP      s
    
z#TestAnderson.test_result_attributesc           	      C   sF   t d}|jdd}t|d\}}}t|d\}}}t|| d S )Nr   r   r   r   r   )r   r   r   r   r   )	r<   r   rL   A1crit1sig1A2crit2sig2rA   rA   rB   test_gumbel_l  s
    zTestAnderson.test_gumbel_lc           
      C   sp   t d}|jdd}td}d|d< t|d\}}}t|d\}}}	t||dd   t||d k d S )	Nr   r   r   r   r   Zgumbel_rr   r   )r   r   rJ   r   r   r   r   r   )
r<   r   r   r   r   r   r   r   r   r   rA   rA   rB   test_gumbel_r  s    
zTestAnderson.test_gumbel_rN)
rQ   rR   rS   r   r   r   rZ   rP   r   r   rA   rA   rA   rB   r      s   

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 )TestAndersonKSampc                 C   s   g d}t g d}t g d}t g d}tj||||fdd\}}}t|dd tg d	|d
d d t|ddd d S )NgYC@g     D@gfffffE@g     @F@g     F@g      G@gG@g      M@gC@gfffffC@gC@g33333D@gfffffD@g33333sE@gfffffE@gfffffF@      A@g     A@g     C@g      D@     E@r   g      F@g     F@r   ffffffA@r   g33333A@gB@gfffffB@gD@gffffffE@FZmidrankg@rb   gCl?gvq-?g,Ԛ?gl@gPk	@r   re   rd   gJ4a?Mb0?atolrJ   r   r   anderson_ksampr   r   r   r<   t1t2t3t4TktmprA   rA   rB   test_example1a  s    z TestAndersonKSamp.test_example1ac                 C   s   t g d}t g d}t g d}t g d}tj||||fdd\}}}t|dd tg d	|d
d d t|ddd d S )Nr   r   r   r   Tr   gQ@rb   r   r   re   rd   gMb`?r   r   r   r   rA   rA   rB   test_example1b0  s    z TestAndersonKSamp.test_example1bc                 C   s   g d}g d}g d}g d}g d}g d}g d}g d}g d	}	g d
}
g d}g d}g d}g d}t j|||||||||	|
||||fdd\}}}t|dd tg d|dd d t|ddd d S )N   rI   )      !      i  r5   :   %   r   A   r'      i     $      v   
"         r  C   9   >   r)      r  Z   r   <      =   1   r5      8      O   T   ,   ;   r   r        i6  L      r     r
        F   e   r   J   r	  0   r   i  r(   r!     r   i  r     7   i@  r  h         /            r   r  i  W   r)   x   r5   r
  r-     G   r.  r&  *   r  re   r(   r3     rb   r5   r5  r7  r5   r7     r  r   r8  4   _   a   3   r7  rd      r     D   M   P   r   r8  j      R   6   r     .   o   '   ?   r     r     r  r   r  f   H   r  rJ  rb   rI         r  X   rH  re   re   r  r        r<     r  r+   r5   	g  r'   r(   i  i[  rb   r*  r   i  r      re   i  #   r(   i  r  r   r)   b   re   U   [   +      rb   r  rO     r5   r	  rF      r  r        r'  r5   ra  B   r  r  Fr   gM
@rb   g^I+?g~:?g+e?gH.!@gcZB>h@r   re   rd   	^)p?r   r   r   r   r   r   r   r<   r   r   r   r   Zt5Zt6Zt7Zt8Zt9Zt10Zt11Zt12Zt13Zt14r   r   r   rA   rA   rB   test_example2a@  s0    z TestAndersonKSamp.test_example2ac                 C   s   g d}g d}g d}g d}g d}g d}g d}g d}g d	}	g d
}
g d}g d}g d}g d}t j|||||||||	|
||||fdd\}}}t|dd tg d|dd d t|ddd d S )Nr   r   r  r  r  r#  r(  r1  r;  rN  rW  rY  r\  rb  Tr   g'1Z
@rb   rh  r   re   rd   ri  r   r   rj  rk  rA   rA   rB   test_example2b`  s0    z TestAndersonKSamp.test_example2bc                 C   s  t ddd}t :}|jtdd tj||d gdd\}}}W d    n1 sT0    Y  t|dd	 t|d
 t 6}|jtdd t||d g\}}}W d    n1 s0    Y  t|dd	 t|d
 t :}|jtdd tj||d gdd\}}}W d    n1 s0    Y  t|dd t|d t 6}|jtdd t||d g\}}}W d    n1 s0    Y  t|dd t|d tj||d gdd\}}}t|dd t	|dddd t||d g\}}}t|dd t	|dddd tj||d gdd\}}}t|dd t	|dddd tj||d gdd\}}}t|d d t	|d!d"dd d S )#Nr   r   zp-value flooredmessageg     @D@Fr   g=
ףpD@rb   MbP?gGzD@zp-value capped      ?g?ܵrd         ?g?ܵ      @g!u?gףp=
׳?g{Gzt?r   r   r0   r&   gBiq?g鷯?      '@g:M@g46<Rv?gMb@?g      +@g6>W[1@g1ZGUS?-C6?)
rJ   linspacer
   filterUserWarningr   r   r   r	   r   )r<   r   supr   _r   rA   rA   rB   test_R_kSamples  sB    !:
6
<
8
z!TestAndersonKSamp.test_R_kSamplesc                 C   s   t ttjtd d S Nre   rE   rF   r   r   rJ   r   rG   rA   rA   rB   test_not_enough_samples  s    z)TestAndersonKSamp.test_not_enough_samplesc                 C   s"   t ttjtdtdf d S r}  r~  rG   rA   rA   rB   test_no_distinct_observations  s    z/TestAndersonKSamp.test_no_distinct_observationsc                 C   s   t ttjtdg f d S r}  r~  rG   rA   rA   rB   test_empty_sample  s    z#TestAndersonKSamp.test_empty_samplec                 C   s:   g d}t g d}tj||fdd}d}t|| d S )Nr   r   Fr   r   )rJ   r   r   r   r   )r<   r   r   rN   rM   rA   rA   rB   rP     s
    z(TestAndersonKSamp.test_result_attributesN)rQ   rR   rS   r   r   rl  rm  r|  r  r  r  rP   rA   rA   rA   rB   r     s     P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g dg dddfg dg dddfg dg dddfg dg dddfg dg dddfg dg dddfgdd Zdd ZdS ) 
TestAnsaric                 C   sn   g d}g d}t  ,}|td t||\}}W d    n1 sH0    Y  t|dd t|dd d S )Nr   r   rb   rb   rd   rb   r   r&   r   r&   r   rd   r   %Ties preclude use of exact statistic.g     7@r7  g8#oG?)r
   rx  ry  r   ansarir   )r<   rL   yrz  WpvalrA   rA   rB   
test_small  s    .zTestAnsari.test_smallc                 C   sr   t d}t d}t ,}|td t||\}}W d    n1 sL0    Y  t|dd t|dd d S )NrI  k   r   c   rO  rC  m   l   r*  r  r"  `   r<  rO  r  q   t   r  n   r]  r  r  rC  r]  i   g   r  r  r*  r   r  r  r  r*  r   r  r  r  rC  r  r  g     0g@r7  g|:?)rJ   r   r
   rx  ry  r   r  r   )r<   ZramsayZparekhrz  r  r  rA   rA   rB   test_approx  s    

.zTestAnsari.test_approxc                 C   s4   t g dg d\}}t|dd t|dd d S )Nr   r   rb   rd   )rI   re   r  r*   r   r(   r1   r7  g?r)   )r   r  r   )r<   r  r  rA   rA   rB   
test_exact  s    zTestAnsari.test_exactc                 C   s(   t ttjg dg t ttjdgg  d S rX   rE   rF   r   r  rG   rA   rA   rB   rZ     s    zTestAnsari.test_bad_argc                 C   s`   g d}g d}t  (}|td t||}W d    n1 sD0    Y  d}t|| d S )Nr  r  r  r9   r   )r
   rx  ry  r   r  r   )r<   rL   r  rz  rN   rM   rA   rA   rB   rP     s    *z!TestAnsari.test_result_attributesc                 C   sT   g d}g d}d}t t|d  tj||dd W d    n1 sF0    Y  d S )Nr  re   r&   r)   r*   z!'alternative' must be 'two-sided'matchfooalternativer  )r<   r   r   r  rA   rA   rB   test_bad_alternative  s
    zTestAnsari.test_bad_alternativec           
      C   s   g d}g d}t ||\}}t j||ddj}t j||ddj}|dksPJ |dk s\J t|t|t|}t|| d| d	d
 t||d d	d
 t|d| |d  d	d
 t j||ddj}t j||ddj}	|dk sJ |	dksJ d S )N)r   re   r   rI   r  r  )rs  g      !@      #@g      %@ru  g      )@lessr  greaterffffff?皙?r   -q=r   r   )r   r  r   r   pmfr   r   )
r<   r   r   r9   r  pval_lpval_gZprobZpval_l_reverseZpval_g_reverserA   rA   rB   test_alternative_exact  s    z!TestAnsari.test_alternative_exactzx, y, alternative, expectedr  r  r  g@A?r  ra   )rd   re   r&   r)   r*   gG$I?g%I$I?rc   )r&   r)   r*   c                 C   s$   t j|||dj}t||dd d S )Nr  r  r   )r   r  r   r   )r<   rL   r  r  expectedr  rA   rA   rB   test_alternative_exact_with_R2  s    z(TestAnsari.test_alternative_exact_with_Rc                 C   s   t jjddddd}t jjddddd}t j||ddj}t j||d	dj}t|d
dd t|ddd t jjddddd}t jjddddd}t ||j}t j||ddj}t j||d	dj}t||d dd t|d|d  dd d S )Nr   re   r   {   r   r   r   r  r  r  r   r  r   r   r  g      ?r   )r   r   r   r  r   r   )r<   r   r   r  r  r  rA   rA   rB   test_alternative_approxQ  s    z"TestAnsari.test_alternative_approxN)rQ   rR   rS   r  r  r  rZ   rP   r  r  pytestmarkparametrizer  r  rA   rA   rA   rB   r    s&   		
r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestBartlettc              
   C   sB   t ttttttttt	g
}t
j| \}}t|dd t|dd d S )NgzU@ /4@r)   gG?)g1g2g3g4g5g6g7g8g9g10r   bartlettr   )r<   argsTr  rA   rA   rB   	test_datai  s    zTestBartlett.test_datac                 C   s   t ttjdg d S rX   )rE   rF   r   r  rG   rA   rA   rB   rZ   p  s    zTestBartlett.test_bad_argc              
   C   s4   t ttttttttt	g
}t
j| }d}t|| d S Nr  )r  r  r  r  r  r  r  r  r  r  r   r  r   r<   r  rN   rM   rA   rA   rB   rP   t  s    
z#TestBartlett.test_result_attributesc                 C   s6   t ttttttttt	g f}t
tjtjftj|  d S rD   )r  r  r  r  r  r  r  r  r  r  r	   rJ   r   r   r  )r<   r  rA   rA   rB   test_empty_argz  s    zTestBartlett.test_empty_argc                 C   s*   t ddgddgg}tttjt| d S Nr   r   rb   rd   )rJ   r   rE   rF   r   r  r  r   rA   rA   rB   test_1d_input  s    zTestBartlett.test_1d_inputN)rQ   rR   rS   r  rZ   rP   r  r  rA   rA   rA   rB   r  g  s
   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 )
TestLevenec              
   C   sB   t ttttttttt	g
}t
j| \}}t|dd t|dd d S )NgYpK?r)   gI{]?)r  r  r  r  r  r  r  r  r  r  r   levener   )r<   r  r  r  rA   rA   rB   r    s    zTestLevene.test_datac                 C   sF   t jtttdd\}}t jtttddd\}}t|| t|| d S )Nr>   centertrimmedr   r  Zproportiontocut)r   r  r  r  r  r   )r<   W1pval1W2pval2rA   rA   rB   test_trimmed1  s    

zTestLevene.test_trimmed1c           
      C   s   g d}g d}t jd t j|}tj||ddd\}}tj||ddd\}}tj|dd |dd d	d
\}}	t|| t|| t||	 d S )Ng333333?       @      @      @      @      @      @g      Y@r   r        @r  g      @r  g      @g      i@  r        ?r  r   r   r>   r  )rJ   randomseedpermutationr   r  r   )
r<   rL   r  r   ZW0Zpval0r  r  r  r  rA   rA   rB   test_trimmed2  s    



$

zTestLevene.test_trimmed2c                 C   sn   t ddd}t jd t j|}|d }tj||dd\}}tj||dd\}}t|| t|| d S )	Nr   r   r&  r  rb   r>   r  Zmedian)rJ   rw  r  r  r  r   r  r   )r<   rL   r   r  r  r  r  r  rA   rA   rB   test_equal_mean_median  s    
z!TestLevene.test_equal_mean_medianc                 C   s&   t ddd}tttj||dd d S Nr   r   r&  皙?)Zportiontocut)rJ   rw  rE   	TypeErrorr   r  r   rA   rA   rB   test_bad_keyword  s    zTestLevene.test_bad_keywordc                 C   s&   t ddd}tttj||dd d S Nr   r   r&  Ztrimr  )rJ   rw  rE   rF   r   r  r   rA   rA   rB   test_bad_center_value  s    z TestLevene.test_bad_center_valuec                 C   s   t ttjdg d S rX   )rE   rF   r   r  rG   rA   rA   rB   test_too_few_args  s    zTestLevene.test_too_few_argsc              
   C   s4   t ttttttttt	g
}t
j| }d}t|| d S r  )r  r  r  r  r  r  r  r  r  r  r   r  r   r  rA   rA   rB   rP     s    
z!TestLevene.test_result_attributesc                 C   s*   t ddgddgg}tttjt| d S r  )rJ   r   rE   rF   r   r  r  r   rA   rA   rB   r    s    zTestLevene.test_1d_inputN)rQ   rR   rS   r  r  r  r  r  r  r  rP   r  rA   rA   rA   rB   r    s   	
r  c                   @   sB   e Zd ZdZeejZdd Zdd Z	dd Z
dd	 Zd
d ZdS )
TestBinomPzTests for stats.binom_test.c                 C   sR   |  dd}t|dd |  dd}t|dd | j dd	gd
d}t|dd d S )Nr      g-"^?r7  r  i  g`w?i           ?r   gz?binom_test_funcr   )r<   r  rA   rA   rB   r    s    zTestBinomP.test_datac                 C   s   t t| jg d d S Nra   rE   rF   r  rG   rA   rA   rB   test_bad_len_x  s    zTestBinomP.test_bad_len_xc                 C   s(   t t| jdg t t| jdgdd d S )Nr   r   r   r  rG   rA   rA   rB   
test_bad_n  s    zTestBinomP.test_bad_nc                 C   s   t t| jddgdd d S )Nr   r  r  r  rG   rA   rA   rB   
test_bad_p  s    zTestBinomP.test_bad_pc                 C   sX   | j ddddd}t|d | j ddddd}t|d | j dddd	d}t|d
 d S )Nr=     gUUUUUU?r  r   r  g-$Ǻl?r  gs0,j.?	two-sidedgJfJ"f?r  r<   rN   rA   rA   rB   test_alternatives  s    

zTestBinomP.test_alternativesN)rQ   rR   rS   __doc__staticmethodr   Z
binom_testr  r  r  r  r  r  rA   rA   rA   rB   r    s   
r  c                   @   s   e Zd ZdZedddZdS )TestBinomTestPzJ
    Tests for stats.binomtest as a replacement for stats.binom_test.
    Nrq  r  c                 C   s   t | t j} t| dkr8| d | d  }| d } n@t| dkrp| d } |d u s\|| k rdtdt |}ntdtj| |||d}|jS )Nr   r   r   zn must be >= xzIncorrect length for x.r  )	rJ   Z
atleast_1dZastypeZint_r   rF   r   	binomtestr   )rL   r   r   r  resultrA   rA   rB   r    s    
zTestBinomTestP.binom_test_func)Nrq  r  )rQ   rR   rS   r  r   r  rA   rA   rA   rB   r    s   r  c                   @   sx  e Zd ZdZdd Zdd Zdd Zdd	 Zej	
d
g ddd Zej	
d
g ddd Zej	
dg ddd Zej	
dg ddd Zej	
dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1gd2d3 Zd4d5 Zej	
d6d7d8gd9d: Zd;d< Zd=d> Zd?d@ ZdAS )BTestBinomTestzTests for stats.binomtest.c                 C   s   d}t ddd}t|jd|d t ddd}t|jd|d t d	dd}t|jd
|d t ddd}t|jddd d S )N绽|=iΙ i@o@Q?r   r/   iΙ gX7?i	ϙ g=?iϙ gybw?r3   r   r  r   r   r<   r0   rN   rA   rA   rB   test_two_sided_pvalues1  s    z%TestBinomTest.test_two_sided_pvalues1c                 C   s   d}t jdddd}t|jd|d t ddd}t|jd	|d t d
dd}t|jd|d t ddd}t|jd|d t ddd}t|jd|d t ddd}t|jd|d t ddd}t|jd|d d S )Nr  r'   r&  r  r   r   gX-h?r/   rd   g㤶y?r7  g	y}?r)   g+,?rb   r   rq  g      ?r   g?g{Gz?g333333?g<,?r  r  rA   rA   rB   test_two_sided_pvalues2  s    z%TestBinomTest.test_two_sided_pvalues2c                 C   s   d}t ddd}t|jd|d t ddd	}t|jd|d t d
dd}t|jd|d t ddd}t|jd|d t dd
d}t|jd|d t ddd}t|jd|d d S )Nr  i  i  rq  r   r/   rb   r-  gAL &W?r+   rH  g!YB?rI   r  gE]t?r)   r&   r7  r  r  rA   rA   rB   test_edge_cases-  s    zTestBinomTest.test_edge_casesc                    s,  d dd}t t    d }tj| }t jtj| |kdd}t fdd| t    } | t|tj| k }t	||d	d
 d}t t 
  d }tj| }t jtj| |kdd}t fdd|dt 
  }|d }t	||d	d
 d S )Nr   rq  rb   r   r   axisc                    s   t j|   S rD   r   binomr  r   r
  rA   rB   <lambda>I  s    z>TestBinomTest.test_binary_srch_for_binom_tst.<locals>.<lambda>r3   r/   r)   c                    s   t j|  S rD   r  r  r
  rA   rB   r  U  s    )rJ   rK   Zceilr   r  r  sumr   intr   Zfloor)r<   krO   dZy1ZixZy2rA   r
  rB   test_binary_srch_for_binom_tst<  s(     z,TestBinomTest.test_binary_srch_for_binom_tstz"alternative, pval, ci_low, ci_high))r  g$W?r   g?)r  g}?gGI~?r   )r  g}G?g>?6?g4M?c                 C   sX   t jddd|d}t|j|dd t|jd |jdd	}t|j|jf||fdd d S )
Nr  r   rr  r   r   r  r  r/   皙?r  confidence_level	r   r  r   r   r	   proportion_estimateproportion_cilowhighr<   r  r  ci_lowci_highrN   cirA   rA   rB   test_confidence_intervals1\  s
    z(TestBinomTest.test_confidence_intervals1))r  ga&+w?r   gny?)r  g5!Rx?g5%?r   )r  g~th?gSuR&|?g|KnG?c                 C   sX   t jddd|d}t|j|dd t|jd |jdd	}t|j|jf||fdd d S )
Nrb   r   r  r  ư>r/   gQ?r    r  r  r!  rA   rA   rB   test_confidence_intervals2k  s
    z(TestBinomTest.test_confidence_intervals2zalternative, pval, ci_high))r  gլ?g̓A?)r  r   r   )r  gEow?g;Kڞj?c                 C   sN   t jddd|d}t|j|dd |jdd}t|jd	 t|j|dd d S )
Nr   r   rr  r  r&  r/   r  r  r   )r   r  r   r   r  r	   r  r   )r<   r  r  r#  rN   r$  rA   rA   rB   !test_confidence_interval_exact_k0z  s
    z/TestBinomTest.test_confidence_interval_exact_k0zalternative, pval, ci_low))r  r   r   )r  6>g@>}_?)r  r)  gcڒ ?c                 C   sN   t jddd|d}t|j|dd |jdd}t|jd t|j|dd d S )	Nr   rr  r  r&  r/   r  r  r   )r   r  r   r   r  r	   r   r  )r<   r  r  r"  rN   r$  rA   rA   rB   %test_confidence_interval_exact_k_is_n  s
    z3TestBinomTest.test_confidence_interval_exact_k_is_nz+k, alternative, corr, conf, ci_low, ci_high)rb   r  Tr  g`?g?)rb   r  Tr    grt!?g/?)rb   r  Fr  gVK5?g5dM?)rb   r  Fr    gXCVu^?g*r[?)rb   r  Tr  r   gP-V?)rb   r  Tr    r   g^'?)rb   r  Fr  r   gS5a?)rb   r  Fr    r   g?)rb   r  Tr  g!Շ`ⰸ?r   )rb   r  Tr    g$x"?r   )rb   r  Fr  gW~=?r   )rb   r  Fr    g	L?r   )r   r  Tr  r   gX?)r   r  Fr  r   gN?)r   r  Tr  r   g/<7#9?)r   r  Fr  r   gAA?)r   r  Tr  r   r   )r   r  Fr  r   r   )r   r  Tr  g7?r   )r   r  Fr  g؍s?r   )r   r  Tr  r   r   )r   r  Fr  r   r   )r   r  Tr  ghadn?r   )r   r  Fr  gAB/?r   c           
      C   sL   t j|dd|d}|rd}nd}|j||d}	t|	j|	jf||fdd d S )	Nr   r  r  ZwilsonccZwilson)r  methodr&  r/   )r   r  r  r   r  r   )
r<   r  r  ZcorrZconfr"  r#  rN   r+  r$  rA   rA   rB   test_ci_wilson_method  s    z#TestBinomTest.test_ci_wilson_methodc                 C   s*   t ddd}t|jd t|jd d S )Nrd   r8  rr  r   )r   r  r	   r  r   r  rA   rA   rB   &test_estimate_equals_hypothesized_prop  s    z4TestBinomTest.test_estimate_equals_hypothesized_propzk, n)r   r   )r   r   c                 C   s>   t jtdd t|| W d    n1 s00    Y  d S )Nz must be an integer not less thanr  r  r   rF   r   r  )r<   r  r   rA   rA   rB   test_invalid_k_n  s    zTestBinomTest.test_invalid_k_nc                 C   s@   t jtdd tddd W d    n1 s20    Y  d S )Nzk must not be greater than nr  r7  r   rr  r.  rG   rA   rA   rB   test_invalid_k_too_big  s    z$TestBinomTest.test_invalid_k_too_bigc                 C   sN   t jdddd}tjtdd |jdd W d    n1 s@0    Y  d S )	Nrb   r   r  r
  zmust be in the intervalr  r   r  r   r  r  r   rF   r  r  rA   rA   rB   test_invalid_confidence_level  s    z+TestBinomTest.test_invalid_confidence_levelc                 C   sN   t jdddd}tjtdd |jdd W d    n1 s@0    Y  d S )	Nrb   r   r  r
  zmethod must ber  zplate of shrimpr+  r1  r  rA   rA   rB   test_invalid_ci_method  s    z$TestBinomTest.test_invalid_ci_methodN)rQ   rR   rS   r  r	  r  r  r  r  r  r  r%  r'  r(  r*  r,  r-  r/  r0  r2  r4  rA   rA   rA   rB   r    sp    


	
	


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 )TestFlignerc                 C   s&   t d}tt||d dd d S )Nre   r   )gnf	@gDq?r7  )rJ   rK   r   r   flignerr<   r   rA   rA   rB   r    s
    
zTestFligner.test_datac           	         sv   t jd  fdd}|t}|t}|t}tj|||dd\}}tj|||ddd\}}t|| t|| d S )	Nr  c                    s    t | d t|    S )Nr  )rJ   Zasarrayrandnr   tolist)gr   rA   rB   r    r`   z+TestFligner.test_trimmed1.<locals>.<lambda>r>   r  r  r   r  )	rJ   r  r   r  r  r  r   r6  r   )	r<   Z_perturbZg1_Zg2_Zg3_Xsq1r  Xsq2r  rA   r;  rB   r    s    

zTestFligner.test_trimmed1c                 C   sb   g d}g d}t j||ddd\}}t j|dd |dd dd	\}}t|| t|| d S )
Nr  r  r  r  r  r   r   r>   r  )r   r6  r   )r<   rL   r  r<  r  r=  r  rA   rA   rB   r    s    

$
zTestFligner.test_trimmed2c                 C   s&   t ddd}tttj||dd d S r  )rJ   rw  rE   r  r   r6  r   rA   rA   rB   r    s    zTestFligner.test_bad_keywordc                 C   s&   t ddd}tttj||dd d S r  )rJ   rw  rE   rF   r   r6  r   rA   rA   rB   r    s    z!TestFligner.test_bad_center_valuec                 C   s   t ttjdg d S rX   )rE   rF   r   r6  rG   rA   rA   rB   test_bad_num_args  s    zTestFligner.test_bad_num_argsc                 C   s.   t d}tt jt jft||d g  d S )Nre   r   )rJ   rK   r	   r   r   r6  r   rA   rA   rB   r    s    
zTestFligner.test_empty_argN)
rQ   rR   rS   r  r  r  r  r  r>  r  rA   rA   rA   rB   r5    s   r5  c                   @   sl   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jdde
jdg ddd ZdS )TestMoodc                 C   s&   t d}tt||d dd d S )Nre   r   )g8!giT?r7  )rJ   rK   r   r   moodr7  rA   rA   rB   	test_mood  s
    
zTestMood.test_moodc                 C   s`   t jd t jdd}t jdd}t||\}}t||\}}t||g| |g d S )Nr  r   r   rI   )rJ   r  r  r8  r   r@  r   )r<   r   r   Zz1p1Zz2p2rA   rA   rB   test_mood_order_of_args%  s    z TestMood.test_mood_order_of_argsc                 C   sN   g d}g d}t |}t |}d|_d|_ttj||d dddg d S )N)gg۟?gy<7xg1)E?g9cç?g
FAg<=ӟ	2?g{![?g_l?gڻ{ӿgGSsA0?g1?g 3ggL?g_lg,*.gː53?gvNqG?gW=?)gd"g `Y#?g^g?gNgBagp5_%?g(?gv]lοgg?ggr6ʺ?ḡj?gK!ٿg{g&?g*h}gZ?gyBU?g .ۋ4?g|w;?g&ck @gRj2g}+w(o?g@F?g}_9t?g =g	S?gx(gg7Y?g{ih?)r   r   )rI   r   r  g4g^}E	?)rJ   r   shaper   r   r@  )r<   r   r   rA   rA   rB   test_mood_with_axis_none/  s    

z!TestMood.test_mood_with_axis_nonec              
   C   s   d}t jd t jd|}t jd|}t||\}}t|D ]:}t|| || gt|d d |f |d d |f  qD| }| }tj||dd\}}t|D ]:}t|| || gt||d d f ||d d f  qd S )Nre   r  r   rI   r   r  )	rJ   r  r  r8  r   r@  ranger   Z	transpose)r<   Znyr   r   	z_vectestpval_vectestjrO   rA   rA   rB   test_mood_2dK  s     ""zTestMood.test_mood_2dc              	   C   s@  d}t jd t jj| }t jj| }tdD ]}tj|||d\}}ddgddgddgf}t||| d  D ]}t||| d  D ]}	|dkr|d d ||	f }
|d d ||	f }nR|dkr||d d |	f }
||d d |	f }n$|||	d d f }
|||	d d f }t|||	f |||	f gt|
| qqtq0d S )N)r   re   r&   r  rb   r  r   r   r   )rJ   r  r  r8  rG  r   r@  r   )r<   rE  r   r   r  rH  rI  Zaxes_idxrO   rJ  Zslice1Zslice2rA   rA   rB   test_mood_3db  s,    

zTestMood.test_mood_3dc                 C   s   t ttjdgg  d S rX   )rE   rF   r   r@  rG   rA   rA   rB   test_mood_bad_arg~  s    zTestMood.test_mood_bad_argc           	      C   s   t jd tjjddd}tjjddd}tj||dd\}}tj||dd\}}tj||d	d\}}||  kr||ksn J t|dd
d t||d  t|d|d   tj	t
dd  tj||dd W d    n1 s0    Y  d S )Nr   r  r   )r   r   g      ?r  r  r  r  Hz>r   r   r   zalternative must be...r  z	ekki-ekki)rJ   r  r  r   r   r   r@  r   r  r   rF   )	r<   rL   r  Zstat1rB  Zstat2rC  Zstat3Zp3rA   rA   rB   test_mood_alternative  s    zTestMood.test_mood_alternativez,SciPy needs tie correction like R (gh-13730)reasonzalternative, expected))r  )!}?g-?)r  )g~?g4?)r  )rR  g-?c                 C   s.   g d}g d}t j|||d}t|| d S )Nr  r  r  )r   r@  r   )r<   r  r  rL   r  rN   rA   rA   rB   test_mood_alternative_against_R  s    z(TestMood.test_mood_alternative_against_RN)rQ   rR   rS   rA  rD  rF  rK  rL  rM  rO  r  r  Zxfailr  rS  rA   rA   rA   rB   r?    s   
r?  c                   @   sV   e Zd Zdd Zdd Zdd Zejje	 ddd	d
 Z
dd Zdd Zdd ZdS )TestProbplotc                 C   sl   t jjddd}t j|dd\}}g d}t|t| t|| t j|dd\}}g d}t|| d S )	Nr  90  r  Fr   )g+/gY3gtg5Z0gFjg!2gsR{ܿg7Կg>hǿgcz隇gcz隇?g>h?g7?gsR{?g!2?gFj?g5Z0?gt?gY3?g+/?T)gƝV?g?gà?)r   r   r   probplotr   rJ   sort)r<   rL   osmosrZosm_expectedrN   Zres_fitZres_fit_expectedrA   rA   rB   rC     s    
zTestProbplot.test_basicc           
      C   s   t jjddd}t j|d dd\}}t j|ddd\}}t j|ddd\}}t|| t|| t|| t|| t j|ddd\}}	d S )Nr   i@ r  Fsparamsr   r   rA   )r   r   r   rW  r   )
r<   rL   osm1osr1osm2osr2Zosm3Zosr3rY  rZ  rA   rA   rB   test_sparams_keyword  s    



z!TestProbplot.test_sparams_keywordc                 C   s   t jjddd}t j|dddd\}}t j|dt jdd\}}t|| t|| ttt j|dd	 ttt j|g d	 G d
d d}t j|ddd\}}t j|| dd\}}t|| t|| d S )Nr  rU  r  Ft)rb   )r   r   r\  zwrong-dist-namer   c                   @   s   e Zd ZdZdd ZdS )z3TestProbplot.test_dist_keyword.<locals>.custom_distz6Some class that looks just enough like a distribution.c                 S   s   t jj|ddS )Nr   )r   )r   r   ppf)r<   qrA   rA   rB   rc    s    z7TestProbplot.test_dist_keyword.<locals>.custom_dist.ppfN)rQ   rR   rS   r  rc  rA   rA   rA   rB   custom_dist  s   re  )r   r[  )r   r   )	r   r   r   rW  rb  r   rE   rF   AttributeError)r<   rL   r]  r^  r_  r`  re  rA   rA   rB   test_dist_keyword  s    


zTestProbplot.test_dist_keywordno matplotlibrP  c           
      C   s  t  }|d tjjdddd}tj|t d\}}t   tj|d d\}}tj|dt d}t   tj|dd d}tt	|t	|  kot	|  kot	|  kod	kn   t
|| t
|| t
|| t
|| t  }|d}	tj|d|	d t   d S )
NrI  rb   r   t r  plotF)r   rk  r   )pltfigureadd_subplotr   rb  r   rW  closer   r   r   )
r<   figrL   Zres1Zfitres1Zres2Zfitres2Zres3Zres4axrA   rA   rB   test_plot_kwarg  s$    
@




zTestProbplot.test_plot_kwargc                 C   s   t ttjdgdd d S r   )rE   rF   r   rW  rG   rA   rA   rB   test_probplot_bad_args  s    z#TestProbplot.test_probplot_bad_argsc                 C   sZ   t tjg ddtg tg f t tjg ddtg tg ftjtjdff d S )NFrV  Tr   )r	   r   rW  rJ   r   r   rG   rA   rA   rB   
test_empty  s    zTestProbplot.test_emptyc                 C   sh   t jddH ttjdgddt dgt dgft jt jdff W d    n1 sZ0    Y  d S )Nr   )Zinvalidr   TrV  r   )rJ   r   r	   r   rW  r   r   rG   rA   rA   rB   test_array_of_size_one  s    z#TestProbplot.test_array_of_size_oneN)rQ   rR   rS   rC   ra  rg  r  r  skipifhave_matplotlibrr  rs  rt  ru  rA   rA   rA   rB   rT    s   
rT  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	dd Z
dd Zdd Zejdg dg dg dgdd Zdd ZdS )TestWilcoxonc                 C   sh   t ttjdgddg t ttjddgddgd t ttjddgddgdd t ttjdgd dd d S )Nr   r   Zdummyr  r   Zxyzmode)rE   rF   r   wilcoxonrG   rA   rA   rB   test_wilcoxon_bad_arg
  s    z"TestWilcoxon.test_wilcoxon_bad_argc                 C   sR   t d}tttj||ddd tttj||ddd ttj||dddd d S )Nr  wilcoxapproxry  prattzsplit)g     @Z@r   )rJ   rK   rE   rF   r   r{  r	   r   rA   rA   rB   test_zero_diff  s    
zTestWilcoxon.test_zero_diffc                 C   sd   g d}g d}t  0}|jtdd tj||ddd}W d    n1 sL0    Y  t|d d S )	Nr  )r   r   rb   re   Sample size too smallrn  r  r~  Zzero_methodrz  )r   g|N?)r
   rx  ry  r   r{  r   )r<   rL   r  rz  rN   rA   rA   rB   
test_pratt  s    0zTestWilcoxon.test_prattc                 C   s<   g d}t j|ddd}t j|ddd}t j|ddd}d S )N)r   r   rb   r   r   rb   r   r   r   r   r   r  r~  r  r  r}  )r   r{  )r<   Zarrr{  rA   rA   rB   test_wilcoxon_arg_type(  s    z#TestWilcoxon.test_wilcoxon_arg_typec                 C   s2  g d}t dd}tdd t||D }t|j}tj||ddd\}}t|d	 t|d
 tj||ddd\}}t|d t|d tj||ddd\}}t|d t|d t	g d}t	g d}tj||ddd\}}t
|d t|ddd tj||ddd\}}t
|d t|ddd d S )N)	r   rd   r8  rI   r*   rd   re   r   r   re   c                 S   s   g | ]\}}|g| qS rA   rA   )r^   ur   rA   rA   rB   r_   4  r`   z7TestWilcoxon.test_accuracy_wilcoxon.<locals>.<listcomp>r  r~  ry  i  g.i?r  i  gFYv]Uj?r}  iG  g%^ Ez?r3  r  r   rR        y   rL     r     p         w      r        r  s   r  r?     F
correctionrz  r  g^҂<?r&  r/   Tg:b+?)rG  rJ   Zconcatenatezipzerosr   r   r{  r   r   r	   )r<   ZfreqZnumsrL   r  r  r   rA   rA   rB   test_accuracy_wilcoxon1  s*    








z#TestWilcoxon.test_accuracy_wilcoxonc                 C   s@   t g d}t g d}tj||ddd}d}t|| d S )Nr  r  Fr~  r  r  )rJ   r   r   r{  r   )r<   rL   r  rN   rM   rA   rA   rB   test_wilcoxon_result_attributesN  s
    z,TestWilcoxon.test_wilcoxon_result_attributesc                 C   sn   t jdgd dd\}}d}t|d t||dd t jdgd d	dd
\}}d}t|d t||dd d S )Nr  r   r~  ry  g4IťY?r   r&  r/   Tr  gc2_?)r   r{  r	   r   )r<   statr   Z
expected_prA   rA   rB   test_wilcoxon_tieU  s    	

zTestWilcoxon.test_wilcoxon_tiec                 C   s  g d}g d}t  4}|jtdd tj||ddd\}}W d    n1 sP0    Y  t|d t|d	d
d t  6}|jtdd tj||dddd\}}W d    n1 s0    Y  t|d t|dd
d t  4}|jtdd tj||ddd\}}W d    n1 s0    Y  t|d t|dd
d t  6}|jtdd tj||dddd\}}W d    n1 s~0    Y  t|d t|dd
d d S )N)
}   r  r     r  r  r  r  r     )
r  z   r  r3  r  |   r     r     r  rn  r  r~  r  rz  r'  g13}?r&   r6   T)r  r  rz  g7a%?r  g?gڏoJT?)r
   rx  ry  r   r{  r	   r   )r<   rL   r  rz  r   r   rA   rA   rB   test_onesidedh  s4    	4
(
6
*
zTestWilcoxon.test_onesidedc                 C   sL   t ddD ]<}t|}t||d  d d t| tt|d|  q
d S )Nr   r  r   )rG  r   r	   r   r  )r<   r   ZcntrA   rA   rB   test_exact_basic  s    zTestWilcoxon.test_exact_basicc                 C   s6  t g d}t g d}tj||ddd\}}t|ddd tj||d	dd\}}t|d
dd tj||ddd\}}t|ddd t ddd }t ddd}tj||ddd\}}t|ddd tj||d	dd\}}t|ddd tj||ddd\}}t|ddd t dd }tttj|dd d S )N)
g(\?g=
ףp=?g(\?gQ޿gQ?g{Gz?gp=
ףgq=
ףp?g      gQ?)
rv   g?gɿg333333?皙gܿgzGgQοg(\gRQr  exactr  g֔  ?r&   r6   r  gYJ?r  g*  ?r   r  rq  r   g(?g(?gS?r  r   ry  )rJ   r   r   r{  r   rK   rE   rF   )r<   rL   r  r{  r   r  rA   rA   rB   test_exact_pval  s$    zTestWilcoxon.test_exact_pvalrL   )r   r   rb   )r   r   r  re   )r   r   rb   r  r  ir)   r*   c                 C   s@   t |\}}t|}||dk  }t|| t|d d S Nr   r   )r   r{  rJ   r   r  r	   )r<   rL   r   r   ZwtruerA   rA   rB   test_exact_p_1  s
    

zTestWilcoxon.test_exact_p_1c                 C   s   t ddd }t ddd}tt||tj||dd t dd}t ,}|jtdd	 t|\}}W d    n1 s0    Y  ttj|d
d||f t dd}tt|tj|d
d d S )Nr   r  rq  r   r  ry  r+   zExact p-value calculationrn  r~  r   r'  )rJ   rK   r	   r   r{  r
   rx  ry  )r<   rL   r  r  rz  r   r   rA   rA   rB   	test_auto  s    ,zTestWilcoxon.test_autoN)rQ   rR   rS   r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rA   rA   rA   rB   rx  	  s    	
	&
rx  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestKstatc                    s   t jd t jd  fdddD }g d}t||dd tj d	d
}tj dd
}tj dd
}t|||f|d d ddd d S )Ni}  rU  c                    s   g | ]}t  |qS rA   )r   kstat)r^   r   r=   rA   rB   r_     r`   z>TestKstat.test_moments_normal_distribution.<locals>.<listcomp>r  )gHQ,?glZ)rI?g88}?gcJN?rv  r/   r   )momentr   rb   r   g{Gz?{Gz?rt  )rJ   r  r  r8  r   r   r  )r<   Zmomentsr  Zm1Zm2Zm3rA   r  rB    test_moments_normal_distribution  s    z*TestKstat.test_moments_normal_distributionc                 C   s   t ttjg  d S rD   )rE   rF   r   r  rG   rA   rA   rB   rH     s    zTestKstat.test_empty_inputc                 C   s*   t d}t j|d< tt|t j d S Nr1   r&   rJ   rK   r   r	   r   r  rY   rA   rA   rB   r     s    

zTestKstat.test_nan_inputc                 C   s*   t d}dD ]}tttj||d qd S )Nr   )r   g/$@r  )rJ   rK   rE   rF   r   r  r<   r=   r   rA   rA   rB   test_kstat_bad_arg  s    
zTestKstat.test_kstat_bad_argN)rQ   rR   rS   r  rH   r   r  rA   rA   rA   rB   r    s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestKstatVarc                 C   s   t ttjg  d S rD   rE   rF   r   ZkstatvarrG   rA   rA   rB   rH     s    zTestKstatVar.test_empty_inputc                 C   s*   t d}t j|d< tt|t j d S r  r  rY   rA   rA   rB   r     s    

zTestKstatVar.test_nan_inputc                 C   s    dg}d}t ttj||d d S )Nr   r   r  r  r  rA   rA   rB   rZ     s    zTestKstatVar.test_bad_argN)rQ   rR   rS   rH   r   rZ   rA   rA   rA   rB   r    s   r  c                   @   sN   e Zd Zdd Zdd Zdd Zejje	 ddd	d
 Z
dd Zdd ZdS )TestPpccPlotc                 C   s   t jjddddd | _d S Nre     ri  r  r   loggammar   rL   rG   rA   rA   rB   setup_method   s    zTestPpccPlot.setup_methodc                 C   sH   d}t j| jdd|d\}}g d}t|tjdd|d t|| d S )Nre   r   N)g9%	?gxM _?g";9?g®XZ?g?Znum)r   	ppcc_plotrL   r   rJ   rw  )r<   r  svalsppccppcc_expectedrA   rA   rB   rC     s
    zTestPpccPlot.test_basicc                 C   s   t j| jdddd\}}t j| jddt jd\}}t||dd t||dd t | jdd\}}t||dd t||dd d S )Nr  r   tukeylambdar   g#B;r/   )r   r  rL   r  r   )r<   Zsvals1Zppcc1Zsvals2Zppcc2Zsvals3Zppcc3rA   rA   rB   	test_dist  s    
zTestPpccPlot.test_distrh  rP  c                 C   sZ   t  }|d}tj| jddt d || |d}tj| jdd|d t   d S NrI  ir  rj  )rl  rm  rn  r   r  rL   delaxesro  r<   rp  rq  rA   rA   rB   rr    s    


zTestPpccPlot.test_plot_kwargc                 C   s2   t ttj| jdd t ttjg ddddd d S )Nr   r   ra   r   r   )rE   rF   r   r  rL   rG   rA   rA   rB   test_invalid_inputs$  s    z TestPpccPlot.test_invalid_inputsc                 C   s@   t g dd\}}t|tjdddd t|tjdtd d S )Nr   r   rB  r  r   )r   r  r   rJ   rw  r  float)r<   r  r  rA   rA   rB   rt  ,  s    zTestPpccPlot.test_emptyN)rQ   rR   rS   r  rC   r  r  r  rv  rw  rr  r  rt  rA   rA   rA   rB   r    s   
r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestPpccMaxc                 C   s   dg}t ttj|dd d S r   )rE   rF   r   ppcc_maxrY   rA   rA   rB   test_ppcc_max_bad_arg6  s    z!TestPpccMax.test_ppcc_max_bad_argc                 C   s2   t jjddddddd }tt |dd	d
 d S )Nffffffr   rq  '   r        @{r)   r6   )r   r  r   r   r  r   rA   rA   rB   test_ppcc_max_basic;  s    zTestPpccMax.test_ppcc_max_basicc                 C   sp   t jjddddddd }t j|dd	}t j|t jd	}t|d
dd t|d
dd t |}t|d
dd d S )Nr  r   rq  r  r  r   r  r  r   r  re   r6   )r   r  r   r  r   )r<   rL   Zmax1Zmax2Zmax3rA   rA   rB   r  @  s    
zTestPpccMax.test_distc                 C   s`   t jjddddddd }ttt j|dd	 tt j|d
d	ddd tt j|dd	ddd d S )Nr  r   rq  r  r  r   r  )r   r   rq  )brack)r   r   r  r)   r6   )r   r   )r   r  r   rE   rF   r  r   r   rA   rA   rB   
test_brackN  s    zTestPpccMax.test_brackN)rQ   rR   rS   r  r  r  r  rA   rA   rA   rB   r  5  s   r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestBoxcox_llfc                 C   sT   t jjdddd}d}t ||}|j d tt| d  }t	|| d S )Nr  r   1  r   r   r   r   r  r   )
r   r   r   
boxcox_llfr   rJ   logr  r@   r   )r<   rL   lmbdallfZllf_expectedrA   rA   rB   rC   \  s
    $zTestBoxcox_llf.test_basicc                 C   sD   t jjdddd}d}t ||}t |t|}t||dd d S Nr   r   r  r  r   r  r/   )r   r   r   r  listr   r<   rL   r  r  Zllf2rA   rA   rB   test_array_likec  s
    zTestBoxcox_llf.test_array_likec                 C   sP   t jjdddd}d}t ||}t |t||gj}t||g|dd d S r  )r   r   r   r  rJ   vstackr  r   r  rA   rA   rB   test_2d_inputj  s
    zTestBoxcox_llf.test_2d_inputc                 C   s   t ttdg  d S rX   )r   rJ   isnanr   r  rG   rA   rA   rB   rt  t  s    zTestBoxcox_llf.test_emptyc                 C   s"   g d}t d|}t|d d S )N)g     h@      m@r  g     x@ig#:x1)r   r  r   )r<   r=   r  rA   rA   rB   test_gh_6873w  s    zTestBoxcox_llf.test_gh_6873N)rQ   rR   rS   rC   r  r  rt  r  rA   rA   rA   rB   r  Z  s
   
r  (  iU>  iϵ i i_
 i7 i is iv  i+ i* i-q ir: i  i i i i_ i4  i iD  i i, iE i\  i i| ig  iM iӢ i[  i! i if6 iP i i iI i/ iF& i i i`# i i  i& i i iQ ia i
 iXZ iw  i_ im  iD i- iB  i:C i	 i' i  i % ix i  iz_ iQ i!# i= i  ix i
 iU7 i_ i1k iW9 i& ix iI i  iT i
 i i  irv im i͟  i iO iv i) iP i4 i= ii  iU i i ig> ix	 i` i| i0 i` iM	 i ' i[ i8 i  i3[ i  i) i`N i
	 i  i[ i:+ ip i	% i
  iV i[$ iX  i_ ib ieZ i i`?	 it i  i iE i iT iy i imv i< iZ i! i i(  ir
 i i iɪ i| i i> ii  i i* i# ix i i& i i# i1g iP i) iۆ i{% i? i۽ i| i i& i- iư) i+c i7  iQ i	o i& i|_ iy
 i6 i  i i i:J i#j i8 i  i%  i i%W i( i` i: ina  i  i i% i$ i4 iA( iq  i  i" iy iXZ i izr i i$ i; is igY i i7 ip	 ip iL6" iDH i i!3 i iI( i|C iш i im  iS i  i{8 i  i i iP i2L i( i@ is iu i2 i_ ij i)m igZ i_ iu	 i9 ik  i'; i ii iK i܃ i i= iv i= i ia  ir  i i i}W i*  i  iJ i i  i2  iUF iNj	 iV," ip iA i% i iv9 iI5 i  iT- i  i8~ i?e` i1 iV  i/X i= i4 i iح i^ i i/ ig i( i i|B; ip i ic iE' iE i$
 i i{ ik i: iI iA_ i iP ioP  i6_ i iܲ iO	 iA7 iL  iA i iV  iwm i iZh i|V iԇC iw i& i~ i i'  i!  i i
 i} ie i3 i i i_ i  i@) i  iV ii iF i? i&
 i"Y iw i  iH iS ird ib i@ iK iA; iz| id+ i	 i
8 i"  i	 iO i_ i$l i!9 ii iT iuL iQ'% iqp iC i]K@ i! i i  iIp| i i?	B i i io0 i i

 i  i5% i i i* i i iv0 i* i* iw i  ive i$ i i- iD~ i- i i,4 ib i  i iP0 i) im i	 iR iQ i
 i i c                   @   s   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g ddd Zdd Ze	j
dg ddd Zdd ZdS )
TestBoxcoxc                 C   s   t jjddddd }t j|dd}t||d  t j|dd}t|dd|   t j|dd}t|t| t jt|dd}t|t| d S )	Nre   r   rU  r  r   r  r   r   )r   r  r   boxcoxr   rJ   r  r  )r<   rL   xtrA   rA   rB   test_fixed_lmbda  s    zTestBoxcox.test_fixed_lmbdac                 C   sL   d}t jjdddd}|| d |  }t |\}}t|d| dd	 d S )
Ng      @r   iP  i  )r   r   r   r   r   r   r6   )r   r   r   r  r   )r<   r  rL   x_invr  maxlogrA   rA   rB   test_lmbda_None  s
    zTestBoxcox.test_lmbda_Nonec                 C   s   t jd}tjjdd|dd }tj|dd\}}}t|ddg tj|d	d\}}}t|d
dg tjjdd|dd }tj|dd\}}}t|ddg tj|dd\}}}t|ddg d S )Nr  re   r   r  r  )Zalphagx@gv[%@r  gxˉEk?g8Bhk @r)   r  rI   rp  g\?gx̡&@r   g7(U@gp:sY@)rJ   r  r   r   r  r   r  r   )r<   rngrL   r{  rV   rA   rA   rB   
test_alpha  s    zTestBoxcox.test_alphac                 C   sR   t ddg}tttj| tttjt dg tttjt dgdgg d S )Nr   r   r   )rJ   r   rE   rF   r   r  r   rA   rA   rB   test_boxcox_bad_arg  s    zTestBoxcox.test_boxcox_bad_argc                 C   s   t tg jdk d S N)r   )r   r   r  rE  rG   rA   rA   rB   rt    s    zTestBoxcox.test_emptyc                 C   s    t t\}}t|ddd d S )NgsHjdrh㈵>r/   r   r  _boxcox_datar   )r<   r  ZlamrA   rA   rB   r    s    zTestBoxcox.test_gh_6873bounds)r   r   )r   r   )r   r  c                    sF    fdd}t jtd |d\}} d |  k r< d k sBn J d S )Nc                    s   t j|  ddS Nbounded)r  r+  r   minimize_scalarfunr  rA   rB   	optimizer  s    zBTestBoxcox.test_bounded_optimizer_within_bounds.<locals>.optimizerr  r  r   r   )r   r  r  )r<   r  r  r{  r  rA   r  rB   $test_bounded_optimizer_within_bounds  s    z/TestBoxcox.test_bounded_optimizer_within_boundsc                    sj   t jtd d\}}|d |d f ddi fdd}t jtd |d\}}||ksXJ t| d	  d S )
Nr  r  r   Zxatolr  c                    s   t j|  ddS )Nr  )r  r+  optionsr   r  r  r  rA   rB   r    s    zPTestBoxcox.test_bounded_optimizer_against_unbounded_optimizer.<locals>.optimizerr  r   r  )r<   r{  r  r  Zlmbda_boundedrA   r	  rB   2test_bounded_optimizer_against_unbounded_optimizer  s    
z=TestBoxcox.test_bounded_optimizer_against_unbounded_optimizerr  )str)r   r   r  c                 C   sB   t jtdd  tjtd |d W d    n1 s40    Y  d S )Nz`optimizer` must be a callabler  r  r  r   rF   r   r  r  r<   r  rA   rA   rB   $test_bad_optimizer_type_raises_error  s    z/TestBoxcox.test_bad_optimizer_type_raises_errorc                 C   sN   dd }d}t jt|d  tjtd |d W d    n1 s@0    Y  d S )Nc                 S   s   dS rX   rA   r  rA   rA   rB   r    s    zCTestBoxcox.test_bad_optimizer_value_raises_error.<locals>.optimizerz;`optimizer` must return an object containing the optimal...r  r  r  )r<   r  ro  rA   rA   rB   %test_bad_optimizer_value_raises_error  s    z0TestBoxcox.test_bad_optimizer_value_raises_errorN)rQ   rR   rS   r  r  r  r  rt  r  r  r  r  r  r
  r  r  rA   rA   rA   rB   r    s   
	
	
r  c                   @   sh   e Zd Zdd Zdd Zdd Zdd Zej	d	g d
ej	dg ddd Z
dd Zdd ZdS )TestBoxcoxNormmaxc                 C   s   t jjddddd | _d S Nre   r   rU  r  r  rG   rA   rA   rB   r  &  s    zTestBoxcoxNormmax.setup_methodc                 C   s   t | j}t|ddd d S )Nm?r&  r/   r   boxcox_normmaxrL   r   r<   r  rA   rA   rB   test_pearsonr)  s    zTestBoxcoxNormmax.test_pearsonrc                 C   s<   t j| jdd}t|ddd t | j\}}t|| d S )Nmler3  	.!?r&  r/   )r   r  rL   r   r  )r<   r  r{  Zmaxlog_boxcoxrA   rA   rB   test_mle-  s    zTestBoxcoxNormmax.test_mlec                 C   s&   t j| jdd}t|ddgdd d S )Nr   r3  r  r  r&  r/   r  )r<   Z
maxlog_allrA   rA   rB   test_all5  s    zTestBoxcoxNormmax.test_allr+  )r  Zpearsonrr   r  r  c                    sN    fdd}t j| j||d}t d |k s4J t| d k sJJ d S )Nc                    s   t j|  ddS r  r   r  r  rA   rB   r  =  s    zITestBoxcoxNormmax.test_bounded_optimizer_within_bounds.<locals>.optimizer)r+  r  r   r   )r   r  rL   rJ   r   )r<   r+  r  r  r  rA   r  rB   r  9  s    
z6TestBoxcoxNormmax.test_bounded_optimizer_within_boundsc                    sv   t | j}t|d}t|d |d dG dd d  fdd}t j| j|d}||ksfJ t||d	 d S )
Nre   r  i  c                   @   s   e Zd ZdS )z?TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.MyResultN)rQ   rR   rS   rA   rA   rA   rB   MyResultL  s   r  c                    s6   g }D ]}| | | q  }t| |_|S rD   )appendrJ   ZargminrL   )r  Zobjsr  rN   r  Zlmbda_rangerA   rB   r  O  s    z@TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.optimizer)r  r  )r   r  rL   rJ   roundrw  r   )r<   r  Zlmbda_roundedr  Zlmbda2rA   r  rB   test_user_defined_optimizerF  s    	z-TestBoxcoxNormmax.test_user_defined_optimizerc                 C   s\   t j}tj| jd |d tjtdd" tj| jd|d W d    n1 sN0    Y  d S )N)r  r  z,`brack` must be None if `optimizer` is givenr  )g       r  )r   r  r   r  rL   r  r   rF   r  rA   rA   rB   2test_user_defined_optimizer_and_brack_raises_error\  s    
zDTestBoxcoxNormmax.test_user_defined_optimizer_and_brack_raises_errorN)rQ   rR   rS   r  r  r  r  r  r  r  r  r  r   rA   rA   rA   rB   r  %  s   r  c                   @   sF   e Zd Zdd Zdd Zejje dddd Z	d	d
 Z
dd ZdS )TestBoxcoxNormplotc                 C   s   t jjddddd | _d S r  r  rG   rA   rA   rB   r  n  s    zTestBoxcoxNormplot.setup_methodc                 C   sH   d}t j| jdd|d\}}g d}t|tjdd|d t|| d S )Nre   r  r   r  )g!X4}?g΁i?g-	15?gW$?g\ܱ{?r  )r   boxcox_normplotrL   r   rJ   rw  )r<   r  Zlmbdasr  r  rA   rA   rB   rC   q  s
    zTestBoxcoxNormplot.test_basicrh  rP  c                 C   sZ   t  }|d}tj| jddt d || |d}tj| jdd|d t   d S r  )rl  rm  rn  r   r"  rL   r  ro  r  rA   rA   rB   rr  y  s    


z"TestBoxcoxNormplot.test_plot_kwargc                 C   s.   t ttj| jdd t ttjddgdd d S )Nr   r   r   )rE   rF   r   r"  rL   rG   rA   rA   rB   r    s    z&TestBoxcoxNormplot.test_invalid_inputsc                 C   s   t tg ddjdk d S r  )r   r   r"  r   rG   rA   rA   rB   rt    s    zTestBoxcoxNormplot.test_emptyN)rQ   rR   rS   r  rC   r  r  rv  rw  rr  r  rt  rA   rA   rA   rB   r!  m  s   
r!  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestYeojohnson_llfc                 C   sD   t jjdddd}d}t ||}t |t|}t||dd d S )Nr   r   r  r  r   r  r/   )r   r   r   yeojohnson_llfr  r   r  rA   rA   rB   r    s
    z"TestYeojohnson_llf.test_array_likec                 C   sP   t jjdddd}d}t ||}t |t||gj}t||g|dd d S r  )r   r   r   r$  rJ   r  r  r   r  rA   rA   rB   r    s
    z TestYeojohnson_llf.test_2d_inputc                 C   s   t ttdg  d S rX   )r   rJ   r  r   r$  rG   rA   rA   rB   rt    s    zTestYeojohnson_llf.test_emptyN)rQ   rR   rS   r  r  rt  rA   rA   rA   rB   r#    s   r#  c                   @   s   e Zd Zdd Zejdg ddd Zdd Zd	d
 Z	ejde
je
jgdd Zejde
je
je
je
jgdd ZdS )TestYeojohnsonc                 C   s  t jd}tjjdd|dd }t |dks4J tj|dd}t|| tj|dd}t|dd|d    tj|dd}t|t 	|d  tj|dd}t|| tjjdd|dd }t |dk sJ tj|d	d}t|t 	| d   tj|dd}t|| tj|d
d}t|d| d  d  tjjdd|dd	 }t |dk r`J t |dkrtJ |dk}tj|dd}t|| ||  tj|dd}t|| dd|| d    tj|dd}t|| t 	|| d  tj|dd}t|| ||  | }tj|d	d}t|| t 	||  d   tj|dd}t|| ||  tj|d
d}t|| d||  d  d  d S )NrU  re   r   r  r   r   r  r   r   rb   )
rJ   r  r   r   r  r   r   
yeojohnsonr   r  )r<   r  rL   r  posnegrA   rA   rB   r    sL    


 zTestYeojohnson.test_fixed_lmbdar  )r   r  rq  r   c                 C   s   dd }d}t jd t jjdd|d}|||}t|\}}t||dd	 tdt j	|| | d
d td|
 dd td| dd d S )Nc                 S   s   t j| j| jd}| dk}t|t dk rDt | | d ||< n$t | | | d d| d ||< t|d t dkrdt d|  | |   d dd|   || < ndt | |    || < |S )Nr   r   r   r   r   )rJ   r  rE  r   absZspacingZexpZpower)rL   r  r  r'  rA   rA   rB   _inverse_transform  s    $
z:TestYeojohnson.test_lmbda_None.<locals>._inverse_transformi N  r  r   r   )r   r   r   r  r   r   r6   )rJ   r  r  normalr   r&  r   r   Zlinalgr   r>   r@   )r<   r  r*  Z	n_samplesrL   r  r  r  rA   rA   rB   r    s    
zTestYeojohnson.test_lmbda_Nonec                 C   s   t tg jdk d S r  )r   r   r&  rE  rG   rA   rA   rB   rt    s    zTestYeojohnson.test_emptyc                 C   sD   t jjdddd}t |\}}t t|\}}t||dd d S )Nr   r   r  r  r  r/   )r   r   r   r&  r  r   )r<   rL   Zxt1r{  Zxt2rA   rA   rB   r    s    zTestYeojohnson.test_array_liker   c                 C   sN   t jd|d}d}tjt|d t| W d    n1 s@0    Y  d S )Nr&   r   z>Yeo-Johnson transformation is not defined for complex numbers.r  )rJ   rK   r  r   rF   r   r&  )r<   r   rL   err_msgrA   rA   rB   test_input_dtype_complex  s    z'TestYeojohnson.test_input_dtype_complexc                 C   sZ   t jd|d}t jdt jd}t|\}}t|\}}t||dd t||dd d S )Nr*   r   rN  r/   )rJ   rK   Zfloat64r   r&  r   )r<   r   Zx_intZx_floatZxt_intZ	lmbda_intZxt_floatZlmbda_floatrA   rA   rB   test_input_dtype_integer  s    z'TestYeojohnson.test_input_dtype_integerN)rQ   rR   rS   r  r  r  r  r  rt  r  rJ   Z	complex64Z
complex128r-  Zint8uint8Zint16Zint32r.  rA   rA   rA   rB   r%    s   /
$
r%  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestYeojohnsonNormmaxc                 C   s   t jjddddd | _d S r  r  rG   rA   rA   rB   r    s    z"TestYeojohnsonNormmax.setup_methodc                 C   s   t | j}t|ddd d S )Ng?r&  r/   )r   yeojohnson_normmaxrL   r   r  rA   rA   rB   r    s    zTestYeojohnsonNormmax.test_mlec                 C   s*   g d}t |}tj|ddds&J d S )N)gffffff@g r   r  gffffff?g333333@r  gffffff@g?g@r  r  g"@rs  g      gzG?rp  r   )r   r1  rJ   Zallclose)r<   rL   r  rA   rA   rB   test_darwin_example  s    
z)TestYeojohnsonNormmax.test_darwin_exampleN)rQ   rR   rS   r  r  r2  rA   rA   rA   rB   r0    s   r0  c                   @   s4  e Zd Zejdejdfejdfej	dfgdd Z
dd Zejd	ejejfejejfej	ejfgd
d Zdd Zdd Zdd Zejdejdfejdfej	dfgdd Zejdejejej	gdd Zejdejejej	gdd Zejdejejdddfejejdddfej	ejdddfgd d! Zejdejd"eg d#ed$d%gdfejd&eg d'edd(gdfej	d)eg d*ed+d,gdfgd-d. Zejdejdfejdfej	dfgd/d0 Zejdejejej	gd1d2 Zejdejejej	gd3d4 Zejd5d6d7d8d9d:d;ejged6d7d8d9d:d;ejgd<d=d>d?ejd@dAgggejdejejej	gdBdC Zejd5d6d7d8d9d:d;ejged6d7d8d9d:d;ejgd<d=d>d?ejd@dAgggejdejejej	gdDdE ZdFdG Z dHdI Z!dJdK Z"dLS )MTestCircFuncsztest_func,expectedgA:wv?gk~_ЀBE@gE|2@c                 C   s(   t g d}t||dd|dd d S Nc  re   r   rX  r   ^  h  r   rN  r/   rJ   r   r   r<   	test_funcr  rL   rA   rA   rB   test_circfuncs'  s    zTestCircFuncs.test_circfuncsc                 C   s~   t g d}| }tj|dd}t||dd | }tj|dd}t||dd | }tj	|dd}t||dd d S )N)r  r&  r  r     g     4@g3333333@r8  r9  r  r/   rv  )
rJ   r   r>   r   circmeanr   r?   circvarr@   circstd)r<   rL   M1M2V1V2S1S2rA   rA   rB   test_circfuncs_small/  s    z"TestCircFuncs.test_circfuncs_smallztest_func, numpy_funcc                 C   s<   t dgd dgd  }||}||}t||dd d S )Ng˛ɦv9?r   guv9?r   g:0yU>r   r:  )r<   r<  Z
numpy_funcrL   Zcircstatr+  rA   rA   rB   test_circfuncs_close=  s    z"TestCircFuncs.test_circfuncs_closec                    s   t g dg dg dg tj dd}tj  dd}t||dd tj ddd	} fd
dt jd D }t||dd tj ddd	} fddt jd D }t||dd d S )Nr5  _  r)   rd   `  r'   ]  ie  r'   r*   if  rd   id  r8  r9  r.   r/   r   r   r  c                    s   g | ]}t j | d dqS r8  r9  r   r?  r^   rO   rL   rA   rB   r_   Q  r`   z4TestCircFuncs.test_circmean_axis.<locals>.<listcomp>r   c                    s&   g | ]}t j d d |f ddqS Nr8  r9  rQ  rR  rS  rA   rB   r_   U  r`   )rJ   r   r   r?  ravelr   rG  rE  )r<   rB  rC  rA   rS  rB   test_circmean_axisH  s    
z TestCircFuncs.test_circmean_axisc                    s   t g dg dg dg tj dd}tj  dd}t||dd tj ddd	} fd
dt jd D }t||dd tj ddd	} fddt jd D }t||dd d S )Nr5  rJ  rN  r8  r9  dy=r/   r   rO  c                    s   g | ]}t j | d dqS rP  r   r@  rR  rS  rA   rB   r_   b  r`   z3TestCircFuncs.test_circvar_axis.<locals>.<listcomp>r   c                    s&   g | ]}t j d d |f ddqS rT  rX  rR  rS  rA   rB   r_   f  r`   )rJ   r   r   r@  rU  r   rG  rE  )r<   rD  rE  rA   rS  rB   test_circvar_axisX  s    
zTestCircFuncs.test_circvar_axisc                    s   t g dg dg dg tj dd}tj  dd}t||dd tj ddd	} fd
dt jd D }t||dd tj ddd	} fddt jd D }t||dd d S )Nr5  rJ  rN  r8  r9  rW  r/   r   rO  c                    s   g | ]}t j | d dqS rP  r   rA  rR  rS  rA   rB   r_   s  r`   z3TestCircFuncs.test_circstd_axis.<locals>.<listcomp>r   c                    s&   g | ]}t j d d |f ddqS rT  rZ  rR  rS  rA   rB   r_   w  r`   )rJ   r   r   rA  rU  r   rG  rE  )r<   rF  rG  rA   rS  rB   test_circstd_axisi  s    
zTestCircFuncs.test_circstd_axisc                 C   s"   g d}t ||dd|dd d S r4  )r   r;  rA   rA   rB   test_circfuncs_array_likez  s    z'TestCircFuncs.test_circfuncs_array_liker<  c                 C   s   t t|g  d S rD   )r   rJ   r  )r<   r<  rA   rA   rB   rt    s    zTestCircFuncs.test_emptyc                 C   s.   ddddddt jg}tt ||dd d S )	Nr6  re   r   rX  r   r7  r8  r9  rJ   r   r   r  r<   r<  rL   rA   rA   rB   test_nan_propagate  s    z TestCircFuncs.test_nan_propagateg5:v@gfPb?r  gڴV0@gLԿAB@g#q@gauy+@c                 C   s   t g dddddddt jgdt jt jt jt jt jt jgg}| D ]Z}||d	|d
}|d u rptt | qFt|d || dd tt |dd    qFd S )N)r6  re   r   rX  r   r7  r   rK  r)   rd   rL  r'   rM  r   r8  rO  r   rN  r/   )rJ   r   r   keysr   r  r   r   r<   r<  r  rL   r  outrA   rA   rB   test_nan_propagate_array  s    
z&TestCircFuncs.test_nan_propagate_arraygrQvv@)g     v@r  r  g     8v@r  g     u@g5@v?g2>Bjv@gtUuYK@)gR @zw<5 ?rd  g~/ϔ(@K ?re  g sQP@gJPm$@)gj  @竃 ?rf  g)h;@{ ?rg  gun2@g+fa @c                 C   s   t ddddddt jgddd	d
ddt jgt jt jt jt jt jt jt jgg}| D ]\}||dd|d}|d u rt||| dd qTt|d d || dd tt |d  qTd S )Nr6  re   r   rX  r   r7  rK  r)   rd   rL  r'   rM  r8  omit)r   
nan_policyr  rN  r/   r   )rJ   r   r   r`  r   r   r  ra  rA   rA   rB   test_nan_omit_array  s    z!TestCircFuncs.test_nan_omit_arrayc                 C   s0   ddddddt jg}t||ddd	|d
d d S )Nr6  re   r   rX  r   r7  r8  rh  r   ri  rN  r/   )rJ   r   r   r;  rA   rA   rB   test_nan_omit  s    zTestCircFuncs.test_nan_omitc                 C   s2   t jt jt jt jt jg}tt ||dd d S )Nrh  ri  r]  r^  rA   rA   rB   test_nan_omit_all  s    zTestCircFuncs.test_nan_omit_allc                 C   sj   t t jt jt jt jt jgt jt jt jt jt jgg}||ddd}tt |  tt|dk d S )Nrh  r   )ri  r  r   )rJ   r   r   r   r  r   r   )r<   r<  rL   rb  rA   rA   rB   test_nan_omit_all_axis  s    z$TestCircFuncs.test_nan_omit_all_axisrL   r6  re   r   rX  r   r7  rK  r)   rd   rL  r'   rM  c                 C   s   t t||ddd d S )Nr8  raiserk  rE   rF   r^  rA   rA   rB   test_nan_raise  s    zTestCircFuncs.test_nan_raisec                 C   s   t t||ddd d S )Nr8  foobarrk  rq  r^  rA   rA   rB   test_bad_nan_policy  s    z!TestCircFuncs.test_bad_nan_policyc                 C   s$   d}|}t |}t||dd d S )Nr   r  r/   )r   r?  r   )r<   rL   rB  rC  rA   rA   rB   test_circmean_scalar  s    
z"TestCircFuncs.test_circmean_scalarc                 C   s@   t tdddtjtj }t|tjk  t|tj k d S )Nr   r   r  )r   r?  rJ   rK   Zpir   )r<   mrA   rA   rB   test_circmean_range  s    z!TestCircFuncs.test_circmean_rangec                 C   sZ   t jddgdd}ttj|ddd ttj|dddd	d
 ttj|dddd	d
 d S )N   r   r/  r   r  r9  g     @e@g.}}VW{@rN  r/   g)#p_4@)rJ   r   r	   r   r?  r   r@  rA  r   rA   rA   rB   test_circfuncs_unit8  s    z"TestCircFuncs.test_circfuncs_unit8N)#rQ   rR   rS   r  r  r  r   r?  r@  rA  r=  rH  rJ   r>   r?   r@   rI  rV  rY  r[  r\  rt  r_  r   rc  r   rj  rl  rn  ro  rr  rt  ru  rw  ry  rA   rA   rA   rB   r3  &  s   












r3  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d Z
dd Zdd Zdd ZdS )TestMedianTestc                 C   s   t ttjg d d S r  rE   rF   r   median_testrG   rA   rA   rB   test_bad_n_samples 	  s    z!TestMedianTest.test_bad_n_samplesc                 C   s   t ttjg g d d S r  r{  rG   rA   rA   rB   r  	  s    z TestMedianTest.test_empty_samplec                 C   s&   t ttjg dg dddgdd d S )N)r   r   r   r   )r   r   r   r   r   r   Ztiesr{  rG   rA   rA   rB   test_empty_when_ties_ignored	  s    z+TestMedianTest.test_empty_when_ties_ignoredc                 C   s8   t ttjg dg d t ttjg dg ddd d S )N)r   r   r   abover~  r{  rG   rA   rA   rB   test_empty_contingency_row	  s    z)TestMedianTest.test_empty_contingency_rowc                 C   s    t ttjg dddgdd d S )Nra   rd   re   r  r~  r{  rG   rA   rA   rB   test_bad_ties	  s    zTestMedianTest.test_bad_tiesc                 C   s    t ttjg dddgdd d S )Nra   rd   re   rs  rm  r{  rG   rA   rA   rB   rt   	  s    z"TestMedianTest.test_bad_nan_policyc                 C   s    t ttjg dddgdd d S )Nra   rd   re   r  )r  )rE   r  r   r|  rG   rA   rA   rB   r  #	  s    zTestMedianTest.test_bad_keywordc                 C   s\   g d}g d}t ||\}}}}t|d t|ddgddgg t|d t|d d S )Nra   r  r   r   r   )r   r|  r	   r   )r<   rL   r  r  r   ZmedtblrA   rA   rB   test_simple'	  s    

zTestMedianTest.test_simplec                 C   s   g d}ddg}g d}t |||\}}}}t|d t|g dg dg t j|||dd\}}}}t|d t|g dg d	g t j|||d
d\}}}}t|d t|g dg d	g d S )Nr  re   r&   )r)   r*   r'   )r   r   rb   )rd   r   r   r   r~  )rd   r   r   r  )r   r   rb   )r   r|  r	   )r<   rL   r  zr  r   rv  r  rA   rA   rB   test_ties_options6	  s    


z TestMedianTest.test_ties_optionsc                 C   s   ddt jg}g d}tj||dd}tj||dd\}}}}t|t jt jt jd f t|d t|d t|d	 t|t d
dgddgg tttj||dd d S )Nr   r   )rd   re   r&   Z	propagaterm  rh  g     ?gإvao?r  r   rp  )	rJ   r   r   r|  r	   r   r   rE   rF   )r<   rL   r  Zmt1r   r   rv  rb  rA   rA   rB   test_nan_policy_optionsJ	  s    


z&TestMedianTest.test_nan_policy_optionsc                 C   s2  g d}g d}t ||\}}}}t|d t|ddgddgg t |\}}}	}
t|| t|| t j||dd\}}}}t|d t|ddgddgg t j|dd\}}}	}
t|| t|| t j||dd	\}}}}t|d t|ddgddgg t j|dd	\}}}	}
t|| t|| d S )
Nrc   )r   rd   r&   r*   rd   r   r   r   )Zlambda_F)r  )r   r|  r	   Zchi2_contingencyr   )r<   rL   r  r  r   rv  r  Zexp_statZexp_pZdoferA   rA   rB   rC   W	  s(    







zTestMedianTest.test_basicN)rQ   rR   rS   r}  r  r  r  r  rt  r  r  r  r  rC   rA   rA   rA   rB   rz    s   rz  )Jrf   ZnumpyrJ   Znumpy.randomr   Znumpy.testingr   r   r   r   r   r   r	   r
   r  r   rE   Zscipyr   r   Zscipy.stats.morestatsr   Zcommon_testsr   Z
_hypotestsr   Zscipy.stats._binomtestr   Z
matplotlibZrcParamsZmatplotlib.pyplotZpyplotrl  rw  	Exceptionr  r  r  r  r  r  r  r  r  r  r$   rT   rk   r   r   r  r  r  r  r  r  r5  r?  rT  rx  r  r  r  r  r  r  r  r  r!  r#  r%  r0  r3  rz  rA   rA   rA   rB   <module>   s~   (

!ZV G E' SD ^ G6%(2qH#q Y