a
    h                    @   s  d dl Z d dl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mZ d dlZd dlmZ d dlZd dlmZmZmZ d dl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% e&e%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Z0g dZ1g dZ2g dZ3g dZ4g dZ5g dZ6g dZ7dd Z8G dd dZ9G d d! d!Z:G d"d# d#Z;G d$d% d%Z<G d&d' d'Z=G d(d) d)Z>G d*d+ d+Z?G d,d- d-Z@G d.d/ d/ZAG d0d1 d1ZBd2d3 ZCG d4d5 d5ZDG d6d7 d7ZEG d8d9 d9ZFG d:d; d;ZGG d<d= d=ZHG d>d? d?ZIG d@dA dAZJG dBdC dCZKg dDZLG dEdF dFZMG dGdH dHZNG dIdJ dJZOG dKdL dLZPG dMdN dNZQG dOdP dPZRG dQdR dRZSG dSdT dTZTG dUdV dVZUG dWdX dXZVdS )Y    N)partial)RandomState)assert_array_equalassert_almost_equalassert_array_lessassert_array_almost_equalassert_assert_allcloseassert_equalsuppress_warnings)raises)optimizestatsspecial)
_abw_state_get_As_weibull_Avals_weibull   )check_named_results   )_get_wilcoxon_distr_get_wilcoxon_distr2)_binary_search_for_binom_tst)distcontZAgg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                  O   s   t tjj| i |S N)nplogr   gammarvs)argskwargs r2   \/var/www/html/assistant/venv/lib/python3.9/site-packages/scipy/stats/tests/test_morestats.py_old_loggamma_rvs6   s    r4   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;            "@gURH#j@gV[%@ư>rtol      $@gai	@gӇu8@&.>_紫@   decimalgYs?g1O@+=)r   	bayes_mvsr   	statisticr	   minmaxselfdatameanvarstdr2   r2   r3   
test_basic;   s    zTestBayes_mvs.test_basicc                 C   s   t ttjg  d S r+   )assert_raises
ValueErrorr   rK   rO   r2   r2   r3   test_empty_inputM   s    zTestBayes_mvs.test_empty_inputc                 C   s0   t d}d}t|}|D ]}t|| qd S )N   )rL   rM   )r,   aranger   rK   r   )rO   x
attributesresir2   r2   r3   test_result_attributesP   s
    

z$TestBayes_mvs.test_result_attributesN)__name__
__module____qualname__rT   rX   r_   r2   r2   r2   r3   r5   :   s   r5   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 )Nr6   r=   ?r>   rJ   r@   rB   rC   rD   rE   rF   rG   rI   )r   mvsdistr   rQ   r	   intervalrN   r2   r2   r3   rT   Z   s    zTestMvsdist.test_basicc                 C   s   t ttjg  d S r+   rU   rV   r   re   rW   r2   r2   r3   rX   i   s    zTestMvsdist.test_empty_inputc                 C   s   dg}t ttj| d S Nr   rg   rO   rP   r2   r2   r3   test_bad_argl   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 r2   rQ   .0r[   r2   r2   r3   
<listcomp>v       z*TestMvsdist.test_warns.<locals>.<listcomp>r   r      c                 S   s   g | ]}|  qS r2   rl   rm   r2   r2   r3   ro   w   rp   r   r   rr         )warningscatch_warningssimplefilterRuntimeWarningr   re   rW   r2   r2   r3   
test_warnsq   s    
zTestMvsdist.test_warnsN)r`   ra   rb   rT   rX   rj   rz   r2   r2   r2   r3   rc   Y   s   rc   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	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=
ף@   ?r7   rG      Ɍ?)(\?=
ףp=?\(\@ffffff@\(\?(\?Gz@(\ףp=
@皙?)\(?RQr   p=
ף?@
ףp=
?{Gz?\(\@{Gz@Q@IddY?Dio?rr   ru   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?rt   )r   shapiror   rL   pvaluenormr/   )
rO   x1wpwshapiro_testx2Zx3Zx4Z
W_expectedZ
p_expectedr2   r2   r3   rT   {   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)
r|   r}   r~   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r7   rG   r   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r   rr   )r   r   r   rL   r   )rO   r   r   r   r   r   r2   r2   r3   test_2d   s$    

zTestShapiro.test_2dc                 C   s&   t ttjg  t ttjg g g g d S r+   rU   rV   r   r   rW   r2   r2   r3   rX      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)rU   rV   r   r   r,   arrayobjectrW   r2   r2   r3   test_not_enough_values   s    z"TestShapiro.test_not_enough_valuesc                 C   s   dg}t ttj| d S rh   r   rO   r[   r2   r2   r3   rj      s    zTestShapiro.test_bad_argc                 C   sd   t d}t j|d< t|\}}t|}t|t j t|jt j t|t j t|jt j d S )NrB   r8   )	r,   rZ   nanr   r   r
   rL   r   r   )rO   r[   r   r   r   r2   r2   r3   test_nan_input   s    


zTestShapiro.test_nan_inputc                 C   s2   t g d\}}t |}d}t||dd d S )N)i i = i@ )gPq~?gF?h㈵>r@   )r   boxcoxr   r	   )rO   Z	trans_valmaxlogr]   refr2   r2   r3   test_gh14462   s    
zTestShapiro.test_gh14462c                 C   sN   t g d}|jdksJ g d}t |}t|jd t|jddd d S )N)g9B.?        r   r   )g1gIۿg0!?gr??gel?r?   r@   )r   r   r   r	   rL   )rO   r]   r[   r2   r2   r3   test_length_3_gh18322   s    
z!TestShapiro.test_length_3_gh18322N)r`   ra   rb   rT   r   rX   r   rj   r   r   r   r2   r2   r2   r3   r{   z   s   +r{   c                   @   s~   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zejdg d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   r,   onesr	   )rO   rsr   r   Acritsigvr2   r2   r3   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   exponr   ignoreallr   )	r   r   r   r   r   r   r,   errstater   )rO   r   r   r   r   r   r   r2   r2   r3   
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   r   gumbelr   r   r   )r,   r   r   r   lengumbel_lfitlogcdflogsfrZ   rQ   r	   )rO   r   Za2r   r   nxbarsr   r   r^   Zexpected_a2r2   r2   r3   test_gumbel  s    
*zTestAnderson.test_gumbelc                 C   s   t ttjdgdd d S Nr   plate_of_shrimpdist)rU   rV   r   r   rW   r2   r2   r3   rj   *  s    zTestAnderson.test_bad_argc                 C   s0   t d}|jdd}t|}d}t|| d S )Nr   r   r   rL   critical_valuessignificance_level)r   r   r   r   r   )rO   r   r[   r]   r\   r2   r2   r3   r_   -  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	   )	rO   r   r[   A1crit1sig1A2crit2sig2r2   r2   r3   test_gumbel_l4  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   gumbel_rr   r   )r   r   r,   r   r   r   r   r   )
rO   r   r   r   r   r   r   r   r   r   r2   r2   r3   test_gumbel_r>  s    
zTestAnderson.test_gumbel_rc           
      C   s   t g d}t|d}|jj\}}}t|||fddd t|jddd |j|jd k s`J d	| }t|d
dd t	d }t	d }||d d ||   }	t 
|j|	ksJ t|j|	dd d S )N)
            r         r   u   r   weibull_min)g
ףp=
@gzGX@gQS@Mb`?r@   gp=
ף?MbP?r   r   g?r   皙?g?atol)r,   r   r   r   
fit_resultparamsr	   rL   r   r   r   )
rO   r[   r]   mr   r   cZAs40ZAs45ZAs_refr2   r2   r3   test_weibull_min_case_AM  s    z$TestAnderson.test_weibull_min_case_Ac                 C   sP   t g d}d}tjt|d t|d W d    n1 sB0    Y  d S )N)J   9   0        r9   F      r    ;            iF  z/Maximum likelihood estimation has converged to matchr   )r,   r   pytestr   rV   r   r   )rO   r[   messager2   r2   r3   test_weibull_min_case_B`  s    z$TestAnderson.test_weibull_min_case_Bc              	   C   s   t g d }d}d}tjt|d}tjt|d}|@ | t|d W d    n1 s`0    Y  W d    n1 s~0    Y  d S )N)	r   K   r     k   r9   =   +   r  z:Critical values of the test statistic are given for the...z;An error occurred while fitting the Weibull distribution...r  r   )	r,   r   r  warnsUserWarningr   rV   r   r   )rO   r[   ZwmessageZemessageZwcontextZecontextr2   r2   r3   test_weibull_warning_errorh  s    z'TestAnderson.test_weibull_warning_errordistname)r   r   r   extreme1r   r   Zlogisticr   c                 C   s\   t jd}|dv rdn|}tt|}t| }|j|d|d}t||}|jj	sXJ d S )Nl   'Dah$>   r   r$  r     r   r   )
r,   randomdefault_rnggetattrr   r   r/   r   r  success)rO   r#  rngZreal_distnamer   r  r[   r]   r2   r2   r3   test_anderson_fit_paramss  s    
z%TestAnderson.test_anderson_fit_paramsc                 C   s:   d}t td| td  tj}t td| td  d S )Nr   r   r   )r
   r   r   r,   infrO   r  r2   r2   r3   test_anderson_weibull_As  s    z%TestAnderson.test_anderson_weibull_AsN)r`   ra   rb   r   r   r   rj   r_   r   r   r	  r  r"  r  markparametrizer,  r/  r2   r2   r2   r3   r      s   


r   c                   @   s\   e Zd Zdd Zdd Zejj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@r7        F@g     F@r6  ffffffA@r:  g33333A@gB@gfffffB@gD@gffffffE@Fmidrankg@rr   gCl?gvq-?g,Ԛ?gl@gPk	@r   ru   rt   gJ4a?Mb0?r  r,   r   r   anderson_ksampr   r   r	   rO   t1t2t3t4Tktmpr2   r2   r3   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 )Nr3  r4  r5  r9  Tr;  gQ@rr   r=  r   ru   rt   r   r>  r  r?  rA  r2   r2   r3   test_example1b  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}|||||||||	|
||||f}t j|dd\}}}t|dd tg d|dd d t|ddd tjd}t jd|d}t j|d|d}t	|j
| t	|j| t|j|dd d S )N   rY   )   r  !      i  rF   :   %   r   A   r8      i     $      v   
"         r\  C   r  >   r:      rZ  Z   r   <      r  1   rF      8      O   T   ,   r  r  rX        i6  L   r  rj     r^        r  e   rq  r
  r  r  r  r  r9   r  r  r  r  r  r  7   i@  rf  h         /            rN  rn  i  W   r:   x   rF   r^  ry  r   G   rz  r  *   rg  ru   r9   r     rr   rF   r  r  rF   r     ra  r   r  4   _   a   3   r  rt      r\     D   M   P   r   r  j      R   6   r[     .   o   '   ?   r\     r\     re  r   rj  f   H   r_  r  rr   rY         rh  X   r  ru   ru   rV  r_        r     rn  r<   rF   	g  r8   r9   i  i[  rr   rv  r   i  r      ru   i  #   r9   i  r\  r   r:   b   ru   U   [   r     rr   rp  r     rF   r  r      r]  r        r  rF   r  B   r  rZ  Fr;  gM
@rr   g^I+?g~:?g+e?gH.!@gcZB>h@r   ru   rt   	^)p?r>  r  l   <Ic i'  Zn_resamplesr   )r<  methodga2U0*C?)r   r@  r   r   r	   r,   r'  r(  PermutationMethodr   rL   r   r   )rO   rB  rC  rD  rE  t5t6t7t8t9t10t11t12t13t14ZsamplesrF  rG  rH  r+  r  r]   r2   r2   r3   test_example2a  s6     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 )NrK  rP  rY  r`  ro  rs  rt  r}  r  r  r  r  r  r  Tr;  g'1Z
@rr   r  r   ru   rt   r  r>  r  )r   r@  r   r   r	   )rO   rB  rC  rD  rE  r  r  r  r  r  r  r  r  r  r  rF  rG  rH  r2   r2   r3   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r  g     @D@Fr;  g=
ףpD@rr   r   gGzD@zp-value capped      ?g?ܵrt         ?g?ܵ      @g!u?gףp=
׳?{Gzt?r   r  rA   r7   gBiq?g鷯?      '@g:M@g46<Rv?gMb@?g      +@g6>W[1@g1ZGUS?-C6?)
r,   linspacer   filterr!  r   r@  r   r
   r	   )rO   r   supr   _rH  r2   r2   r3   test_R_kSamples  sB    !:
6
<
8
z!TestAndersonKSamp.test_R_kSamplesc                 C   s   t ttjtd d S Nru   rU   rV   r   r@  r,   r   rW   r2   r2   r3   test_not_enough_samplesA  s    z)TestAndersonKSamp.test_not_enough_samplesc                 C   s"   t ttjtdtdf d S r  r  rW   r2   r2   r3   test_no_distinct_observationsD  s    z/TestAndersonKSamp.test_no_distinct_observationsc                 C   s   t ttjtdg f d S r  r  rW   r2   r2   r3   test_empty_sampleH  s    z#TestAndersonKSamp.test_empty_samplec                 C   sH   g d}t g d}tj||fdd}d}t|| t|j|j d S )Nr3  r4  Fr;  r   )r,   r   r   r@  r   r
   r   r   )rO   rB  rC  r]   r\   r2   r2   r3   r_   K  s    
z(TestAndersonKSamp.test_result_attributesN)r`   ra   rb   rI  rJ  r  r0  Zslowr  r  r  r  r  r  r_   r2   r2   r2   r3   r2    s   
& Pr2  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   rr   rr   rt   rr   r   r7   r   r7   r   rt   r   %Ties preclude use of exact statistic.g     7@r  g8#oG?)r   r  r!  r   ansarir   )rO   r[   yr  Wpvalr2   r2   r3   
test_smallY  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r  r  r   c   r  r  m   l   rv  r  rr  `   r  r  r  q   t   r  n   r  r  r  r  r  i   g   r  r  rv  r   r  r  r  rv  r   r  r  r  r  r  r  g     0g@r  g|:?)r,   r   r   r  r!  r   r  r   )rO   ZramsayZparekhr  r  r  r2   r2   r3   test_approxb  s    

.zTestAnsari.test_approxc                 C   s4   t g dg d\}}t|dd t|dd d S )Nr   r   rr   rt   )rY   ru   rg  r;   r   r9   rB   r  g?r:   )r   r  r   )rO   r  r  r2   r2   r3   
test_exactp  s    zTestAnsari.test_exactc                 C   s(   t ttjg dg t ttjdgg  d S rh   rU   rV   r   r  rW   r2   r2   r3   rj   u  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  rL   r   )r   r  r!  r   r  r   )rO   r[   r  r  r]   r\   r2   r2   r3   r_   y  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  ru   r7   r:   r;   z!'alternative' must be 'two-sided'r  fooalternativer  )rO   r   r   r  r2   r2   r3   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   ru   r   rY   rg  rk  )r  g      !@      #@g      %@r  g      )@lessr  greaterffffff?皙?r   -q=r  r   )r   r  r   r   pmfr   r	   )
rO   r   r   rL   r  pval_lpval_gZprobZpval_l_reverseZpval_g_reverser2   r2   r3   test_alternative_exact  s    z!TestAnsari.test_alternative_exactzx, y, alternative, expectedr  r  r  g@A?r  rq   )rt   ru   r7   r:   r;   gG$I?g%I$I?rs   )r7   r:   r;   c                 C   s$   t j|||dj}t||dd d S )Nr  r  r  )r   r  r   r	   )rO   r[   r  r  expectedr  r2   r2   r3   test_alternative_exact_with_R  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   ru   r   {   r&  r   r  r  r  r   r  r  r   rb        ?r   )r   r   r/   r  r   r	   )rO   r   r   r  r  r  r2   r2   r3   test_alternative_approx  s    z"TestAnsari.test_alternative_approxN)r`   ra   rb   r  r  r  rj   r_   r  r  r  r0  r1  r   r  r2   r2   r2   r3   r  W  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   )rO   r0   Tr  r2   r2   r3   	test_data  s    zTestBartlett.test_datac                 C   s   t ttjdg d S rh   )rU   rV   r   r  rW   r2   r2   r3   rj     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   rO   r0   r]   r\   r2   r2   r3   r_     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 r+   )r  r  r  r  r	  r
  r  r  r  r  r
   r,   r   r   r  )rO   r0   r2   r2   r3   test_empty_arg  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   rr   rt   )r,   r   rU   rV   r   r  r  r   r2   r2   r3   test_1d_input  s    zTestBartlett.test_1d_inputN)r`   ra   rb   r  rj   r_   r  r  r2   r2   r2   r3   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 )
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   )rO   r0   r  r  r2   r2   r3   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 )NrQ   centertrimmedr   r  Zproportiontocut)r   r  r  r  r  r   )rO   W1pval1W2pval2r2   r2   r3   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      @      i@  r        ?r  r   r   rQ   r  )r,   r'  seedpermutationr   r  r   )
rO   r[   r  r   ZW0Zpval0r  r  r  r   r2   r2   r3   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,  rr   rQ   r  median)r,   r  r'  r.  r/  r   r  r   )rO   r[   r   r  r  r  r  r   r2   r2   r3   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)r,   r  rU   	TypeErrorr   r  r   r2   r2   r3   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  )r,   r  rU   rV   r   r  r   r2   r2   r3   test_bad_center_value)  s    z TestLevene.test_bad_center_valuec                 C   s   t ttjdg d S rh   )rU   rV   r   r  rW   r2   r2   r3   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  r2   r2   r3   r_   0  s    
z!TestLevene.test_result_attributesc                 C   s*   t ddgddgg}tttjt| d S r  )r,   r   rU   rV   r   r  r  r   r2   r2   r3   r  7  s    zTestLevene.test_1d_inputN)r`   ra   rb   r  r!  r0  r2  r6  r8  r9  r_   r  r2   r2   r2   r3   r    s   	
r  c                   @   s  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dAdB ZdCdD ZdEdF ZdGdH Zej	jejdIkdJdKdLdM ZdNS )O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?rD   r   	binomtestr	   r   rO   rA   r]   r2   r2   r3   test_two_sided_pvalues1C  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;  r8   r  r<  r   rH  gX-h?r@   rt   g㤶y?r  g	y}?r:   g+,?rr   r   r  g      ?r   r  g{Gz?g333333?g<,?r=  r?  r2   r2   r3   test_two_sided_pvalues2Q  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  r  r   r@   rr   ry  gAL &W?r<   r  g!YB?rY   rj  gE]t?r:   r7   r  r=  r?  r2   r2   r3   test_edge_casesb  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   r  rr   r   r   axisc                    s   t j|   S r+   r   binomr  r   rA  r2   r3   <lambda>~  s    z>TestBinomTest.test_binary_srch_for_binom_tst.<locals>.<lambda>rD   r@   r:   c                    s   t j|  S r+   rF  rH  rA  r2   r3   rI    s    )r,   rZ   ceilr   rG  r  sumr   intr	   floor)rO   kr^   dy1Zixy2r2   rA  r3   test_binary_srch_for_binom_tstq  s(     z,TestBinomTest.test_binary_srch_for_binom_tstz"alternative, pval, ci_low, ci_high))r  g$W?r   g?)r  g}?gGI~?r   )	two-sidedg}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 )
Nrg  r   r  r   rH  r  r  r@   皙?r  confidence_level	r   r>  r	   r   r
   rL   proportion_cilowhighrO   r  r  ci_lowci_highr]   cir2   r2   r3   test_confidence_intervals1  s
    z(TestBinomTest.test_confidence_intervals1))r  ga&+w?r   gny?)r  g5!Rx?g5%?r   )rS  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 )
Nrr   r   rU  rT  r?   r@   gQ?r'   rV  rX  r\  r2   r2   r3   test_confidence_intervals2  s
    z(TestBinomTest.test_confidence_intervals2zalternative, pval, ci_high))r  gլ?g̓A?)r  r   r   )rS  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   r  rH  r  r?   r@   r  rV  r   )r   r>  r	   r   rY  r
   rZ  r[  )rO   r  r  r^  r]   r_  r2   r2   r3   !test_confidence_interval_exact_k0  s
    z/TestBinomTest.test_confidence_interval_exact_k0zalternative, pval, ci_low))r  r   r   )r  6>g@>}_?)rS  rd  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   r  rb  r?   r@   r  rV  r   )r   r>  r	   r   rY  r
   r[  rZ  )rO   r  r  r]  r]   r_  r2   r2   r3   %test_confidence_interval_exact_k_is_n  s
    z3TestBinomTest.test_confidence_interval_exact_k_is_nz+k, alternative, corr, conf, ci_low, ci_high)rr   rS  Tr  g`?g?)rr   rS  Tr'   grt!?g/?)rr   rS  Fr  gVK5?g5dM?)rr   rS  Fr'   gXCVu^?g*r[?)rr   r  Tr  r   gP-V?)rr   r  Tr'   r   g^'?)rr   r  Fr  r   gS5a?)rr   r  Fr'   r   g?)rr   r  Tr  g!Շ`ⰸ?r   )rr   r  Tr'   g$x"?r   )rr   r  Fr  gW~=?r   )rr   r  Fr'   g	L?r   )r   rS  Tr  r   gX?)r   rS  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   rS  Tr  g7?r   )r   rS  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   r4  rT  ZwilsonccZwilson)rW  r  r?   r@   )r   r>  rY  r	   rZ  r[  )
rO   rN  r  ZcorrZconfr]  r^  r]   r  r_  r2   r2   r3   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 )Nrt   r  r  r   )r   r>  r
   rL   r   rO   r]   r2   r2   r3   &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   rV   r   r>  )rO   rN  r   r2   r2   r3   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 \(11\) must not be greater than n \(10\).r  r  r   r  ri  rW   r2   r2   r3   test_invalid_k_too_big  s    z$TestBinomTest.test_invalid_k_too_bigc                 C   sD   t jtdd" tddgdd W d    n1 s60    Y  d S )Nzk must be an integer.r  r   r  r  r  )r  r   r5  r   r>  rW   r2   r2   r3   test_invalid_k_wrong_type  s    z'TestBinomTest.test_invalid_k_wrong_typec                 C   s   d}t jt|d  tjdddd W d    n1 s80    Y  d}t jt|d  tjdddd W d    n1 sz0    Y  d S )	Nzp \(-0.5\) must be in range...r  r            ࿩rH  zp \(1.5\) must be in range...r  ri  rO   r  r2   r2   r3   test_invalid_p_range  s    .z"TestBinomTest.test_invalid_p_rangec                 C   sR   t jdddd}d}tjt|d |jdd W d    n1 sD0    Y  d S )	Nrr   r   r4  rA  z/confidence_level \(-1\) must be in the intervalr  r   rV  r   r>  r  r   rV   rY  )rO   r]   r  r2   r2   r3   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 )	Nrr   r   r4  rA  z$method \('plate of shrimp'\) must ber  zplate of shrimpr  rr  rg  r2   r2   r3   test_invalid_ci_method  s    z$TestBinomTest.test_invalid_ci_methodc                 C   sD   t jtdd" tjddddd W d    n1 s60    Y  d S )Nzalternative \('ekki'\) not...r  rr   r   r4  ZekkirT  ri  rW   r2   r2   r3   test_invalid_alternative  s    z&TestBinomTest.test_invalid_alternativec                 C   s"   t jdddd}t|j|j d S )Nrr   r   r4  rA  )r   r>  r
   Zproportion_estimaterL   rg  r2   r2   r3   
test_alias  s    zTestBinomTest.test_aliasl        z32-bit does not overflowreasonc                 C   sF   t jtdd$ tjddtjjd W d    n1 s80    Y  d S )NzError in function...r  ru   r7   ro  )r  r   OverflowErrorr   r>  sys
float_infominrW   r2   r2   r3   test_boost_overflow_raises#  s    z(TestBinomTest.test_boost_overflow_raisesN)r`   ra   rb   __doc__r@  rB  rC  rR  r  r0  r1  r`  ra  rc  re  rf  rh  rj  rk  rl  rq  rs  ru  rv  rw  skipifr{  maxsizer~  r2   r2   r2   r3   r:  <  s|    


	
	


r:  c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestFlignerc                 C   s&   t d}tt||d dd d S )Nru   r   )gnf	@gDq?r  )r,   rZ   r   r   fligner)rO   r   r2   r2   r3   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;  )r,   asarrayrandnr   tolist)gr   r2   r3   _perturb8  s    z+TestFligner.test_trimmed1.<locals>._perturbrQ   r  r  r   r  )	r,   r'  r   r  r  r  r   r  r   )	rO   r  Zg1_Zg2_Zg3_Xsq1r  Xsq2r   r2   r  r3   r!  3  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   rQ   r  )r   r  r   )rO   r[   r  r  r  r  r   r2   r2   r3   r0  F  s    

$
zTestFligner.test_trimmed2c                 C   s&   t ddd}tttj||dd d S r3  )r,   r  rU   r5  r   r  r   r2   r2   r3   r6  `  s    zTestFligner.test_bad_keywordc                 C   s&   t ddd}tttj||dd d S r7  )r,   r  rU   rV   r   r  r   r2   r2   r3   r8  d  s    z!TestFligner.test_bad_center_valuec                 C   s   t ttjdg d S rh   )rU   rV   r   r  rW   r2   r2   r3   test_bad_num_argsh  s    zTestFligner.test_bad_num_argsc                 C   s.   t d}tt jt jft||d g  d S )Nru   r   )r,   rZ   r
   r   r   r  r   r2   r2   r3   r  l  s    
zTestFligner.test_empty_argN)
r`   ra   rb   r  r!  r0  r6  r8  r  r  r2   r2   r2   r3   r  *  s   r  c                  c   s   g d} g d}t |D ]\}}tj|}|d}|jdddd}|jdddd}t||D ],\}}	t|d ||	 D ]}
|| ||
< qzq`|| t|d	\}}||d
g| | R V  qd S )N))g]YCgQɣ?)gme5gϵ5?)g;jgH?)iFeiHcMi%:r   r   r  ru   )rZ  r[  r   r   r   r  )		enumerater,   r'  r(  Zintegersziprangeshufflesplit)Zexpected_resultsZseedssir.  r+  ZxyZtie_indZnum_ties_per_indr^   r   jr[   r  r2   r2   r3   mood_cases_with_tiesq  s    

r  c                   @   s   e Zd Zejde dd Zejdg d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dd ZdS )TestMoodz$x,y,alternative,stat_expect,p_expectc                 C   s4   t j|||d\}}t||dd t||dd dS )am  
        Example code used to generate SAS output:
        DATA myData;
        INPUT X Y;
        CARDS;
        1 0
        1 1
        1 2
        1 3
        1 4
        2 0
        2 1
        2 4
        2 9
        2 16
        ods graphics on;
        proc npar1way mood data=myData ;
           class X;
            ods output  MoodTest=mt;
        proc contents data=mt;
        proc print data=mt;
          format     Prob1 17.16 Prob2 17.16 Statistic 17.16 Z 17.16 ;
            title "Mood Two-Sample Test";
        proc print data=myData;
            title "Data for above results";
          run;
        r  gؗҜ<r  Nr   moodr	   )rO   r[   r  r  Zstat_expectZp_expectrL   r   r2   r2   r3   test_against_SAS  s    zTestMood.test_against_SASzalternative, expected))rS  )3oXQ?gpL?)r  )r  gԣl?)r  )r  gpL?c                 C   s.   g d}g d}t j|||d}t|| d S )Nr  r  r  r  )rO   r  r  r[   r  r]   r2   r2   r3   test_against_SAS_2  s    	zTestMood.test_against_SAS_2c                 C   s`   t jd t jdd}t jdd}t||\}}t||\}}t||g| |g d S )Nr,  r   r   rY   )r,   r'  r.  r  r   r  r   )rO   r   r   Zz1p1Zz2p2r2   r2   r3   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   )rY   r   rD  g4g^}E	?)r,   r   shaper   r   r  )rO   r   r   r2   r2   r3   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 )Nru   r,  r   rY   r   rD  )	r,   r'  r.  r  r   r  r  r   Z	transpose)rO   nyr   r   	z_vectestpval_vectestr  r^   r2   r2   r3   test_mood_2d  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   ru   r7   r,  rr   rD  r   r   r   )r,   r'  r.  r  r  r   r  r   )rO   r  r   r   rE  r  r  Zaxes_idxr^   r  Zslice1Zslice2r2   r2   r3   test_mood_3d  s,    

zTestMood.test_mood_3dc                 C   s   t ttjdgg  d S rh   )rU   rV   r   r  rW   r2   r2   r3   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   g      ?rS  r  r  r  Hz>r  r   r   z`alternative` must be...r  z	ekki-ekki)r,   r'  r.  r   r   r/   r  r	   r  r   rV   )	rO   r[   r  Zstat1r  Zstat2r  Zstat3Zp3r2   r2   r3   test_mood_alternative  s    zTestMood.test_mood_alternativer  )rS  r  r  c                 C   sF   t jd}|d}|d}tj|||d}t|j|jf| d S )Nl	   hTt fU6H~ )r   r   )rY   r   r  )	r,   r'  r(  r   r   r  r
   rL   r   )rO   r  r+  r   r   r]   r2   r2   r3   test_result,  s
    

zTestMood.test_resultN)r`   ra   rb   r  r0  r1  r  r  r  r  r  r  r  r  r  r  r2   r2   r2   r3   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 )	Nrg  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	   r,   sort)rO   r[   osmosrZosm_expectedr]   Zres_fitZres_fit_expectedr2   r2   r3   rT   8  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   r2   )r   r   r/   r  r	   )
rO   r[   osm1osr1osm2osr2Zosm3Zosr3r  r  r2   r2   r3   test_sparams_keywordG  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 )Nrg  r  r&  Ft)rr   )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)rO   qr2   r2   r3   r  a  s    z7TestProbplot.test_dist_keyword.<locals>.custom_dist.ppfN)r`   ra   rb   r  r  r2   r2   r2   r3   custom_dist_  s   r  )r   r  )r   r   )	r   r   r/   r  r  r	   rU   rV   AttributeError)rO   r[   r  r  r  r  r  r2   r2   r3   test_dist_keywordU  s    


zTestProbplot.test_dist_keywordno matplotlibrx  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 )
Nr  rr   r   t r&  plotF)r   r  r   )pltfigureadd_subplotr   r  r/   r  closer   r   r	   )
rO   figr[   Zres1Zfitres1Zres2Zfitres2Zres3Zres4axr2   r2   r3   test_plot_kwargi  s$    
@




zTestProbplot.test_plot_kwargc                 C   s   t ttjdgdd d S r   )rU   rV   r   r  rW   r2   r2   r3   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 )NFr  Tr   )r
   r   r  r,   r   r   rW   r2   r2   r3   
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   )invalidr   Tr  r   )r,   r   r
   r   r  r   r   rW   r2   r2   r3   test_array_of_size_one  s    z#TestProbplot.test_array_of_size_oneN)r`   ra   rb   rT   r  r  r  r0  r  have_matplotlibr  r  r  r  r2   r2   r2   r3   r  6  s   
r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	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ejdg d 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   dummyr  r   Zxyzmode)rU   rV   r   wilcoxonrW   r2   r2   r3   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 )Nrg  wilcoxapproxr  prattzsplit)g     @Z@r   )r,   rZ   rU   rV   r   r  r
   r   r2   r2   r3   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   rr   ru   Sample size too smallr  r  r  Zzero_methodr  )r   g|N?)r   r  r!  r   r  r	   )rO   r[   r  r  r]   r2   r2   r3   
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   rr   r   r   rr   r   r   r   r   r   r  r  r  r  r  )r   r  )rO   Zarrr  r2   r2   r3   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   rt   r  rY   r;   rt   ru   r   r   ru   c                 S   s   g | ]\}}|g| qS r2   r2   )rn   ur   r2   r2   r3   ro     rp   z7TestWilcoxon.test_accuracy_wilcoxon.<locals>.<listcomp>r  r  r  i  g.i?r  i  gFYv]Uj?r  iG  g%^ Ez?r  r  rO  r        y   r     r     p         w   r   r     r   r  s   r  r     F
correctionr  rZ  g^҂<?r?   r@   Tg:b+?)r  r,   Zconcatenater  zerosr   r   r  r	   r   r
   )rO   freqZnumsr[   r  r  rH  r2   r2   r3   test_accuracy_wilcoxon  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  )r,   r   r   r  r   )rO   r[   r  r]   r\   r2   r2   r3   test_wilcoxon_result_attributes  s
    z,TestWilcoxon.test_wilcoxon_result_attributesc                 C   s   t jd}|d|d }}tj||dd}tj|jd }t|j	| tj||dd}t
|drnJ t||}t
|drJ d S )Nl   	m$S rY   r  r  r   exact
zstatistic)r,   r'  r(  r   r  r   r  r   r	   r  hasattr)rO   r+  r[   r  r]   r   r2   r2   r3   test_wilcoxon_has_zstatistic  s    z)TestWilcoxon.test_wilcoxon_has_zstatisticc                 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 )Nr4  r   r  r  g4IťY?r   r?   r@   Tr  gc2_?)r   r  r
   r	   )rO   statrH  Z
expected_pr2   r2   r3   test_wilcoxon_tie  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  rp     r  r  r  r  r  r   )
r  z   r  r  r  |   r     r      r  r  r  r  r  r  r  g13}?r7   rG   T)r  r  r  g7a%?r  g?gڏoJT?)r   r  r!  r   r  r
   r   )rO   r[   r  r  r   rH  r2   r2   r3   test_onesided  s4    	4
(
6
*
zTestWilcoxon.test_onesidedc                 C   sZ   t ddD ]J}t|}t|}t||d  d d t| tt|d t|| q
d S )Nr   r  r   )r  r   r   r
   r   rK  r   )rO   r   Zpmf1Zpmf2r2   r2   r3   test_exact_basic'  s    zTestWilcoxon.test_exact_basicc                 C   s  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 d S )N)
g(\?g=
ףp=?g(\?gQ޿gQ?g{Gz?gp=
ףgq=
ףp?g      gQ?)
r   g?gɿg333333?皙gܿgzGgQοg(\gRQrS  r  r  g֔  ?r7   rG   r  gYJ?r  g*  ?r   rg  r  r   g(?g(?gS?)r,   r   r   r  r   rZ   )rO   r[   r  r  rH  r2   r2   r3   test_exact_pval/  s     zTestWilcoxon.test_exact_pvalr[   )r   r   rr   )r   r   r  r  ru   )r   r   rr   r  r  ir:   r;   c                 C   s@   t |\}}t|}||dk  }t|| t|d d S Nr   r   )r   r  r,   r   rK  r
   )rO   r[   r   rH  Zwtruer2   r2   r3   test_exact_p_1K  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   rk  r  r   r  r  r<   zExact p-value calculationr  r  r   r  )r,   rZ   r
   r   r  r   r  r!  )rO   r[   r  rO  r  r   rH  r2   r2   r3   	test_autoU  s    ,zTestWilcoxon.test_autor   )rr   ru   r   c                 C   s   t jd}|j|d}tj|t d}tj|dd}t|j|j t|j|j |j|d d}t jd}tjd|d}tj||d}t jd}tjd|d}tj||d}tt 	|jd	|j t|j|j d S )
Nl   aQG1X@
r   rt  r  r   l   VsWFr  r  r   )
r,   r'  r(  r   r  r  r
   rL   r   round)rO   r   r+  r[   r]   r   pmr2   r2   r3   test_permutation_methodg  s    z$TestWilcoxon.test_permutation_methodc                 C   sd   t jd}|jdd}t j|d< t|}tj|dd}t|| t|dsRJ t|dr`J d S )Nl   HF )Z )r  r   r   )ru   r   r  rt  r  )	r,   r'  r(  normalr   r   r  r	   r  )rO   r+  r   r]   r   r2   r2   r3   6test_method_auto_nan_propagate_ND_length_gt_50_gh20591{  s    


zCTestWilcoxon.test_method_auto_nan_propagate_ND_length_gt_50_gh20591N)r`   ra   rb   r  r  r  r  r  r  r  r  r   r  r  r  r0  r1  r  r  r	  r  r2   r2   r2   r3   r    s(   	
	&

r  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}  r  c                    s   g | ]}t  |qS r2   )r   kstat)rn   r   rP   r2   r3   ro     rp   z>TestKstat.test_moments_normal_distribution.<locals>.<listcomp>r  )gHQ,?glZ)rI?g88}?gcJN?r  r@   r   )orderr   rr   r   g{Gz?{Gz?r  )r,   r'  r.  r  r	   r   Zmoment)rO   Zmomentsr  m1m2Zm3r2   r  r3    test_moments_normal_distribution  s    z*TestKstat.test_moments_normal_distributionc                 C   s   t ttjg  d S r+   )rU   rV   r   r  rW   r2   r2   r3   rX     s    zTestKstat.test_empty_inputc                 C   s*   t d}t j|d< tt|t j d S NrB   r7   r,   rZ   r   r
   r   r  ri   r2   r2   r3   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   )r,   rZ   rU   rV   r   r  rO   rP   r   r2   r2   r3   test_kstat_bad_arg  s    
zTestKstat.test_kstat_bad_argN)r`   ra   rb   r  rX   r   r  r2   r2   r2   r3   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 r+   rU   rV   r   ZkstatvarrW   r2   r2   r3   rX     s    zTestKstatVar.test_empty_inputc                 C   s*   t d}t j|d< tt|t j d S r  r  ri   r2   r2   r3   r     s    

zTestKstatVar.test_nan_inputc                 C   s    dg}d}t ttj||d d S )Nr   r   r  r  r  r2   r2   r3   rj     s    zTestKstatVar.test_bad_argN)r`   ra   rb   rX   r   rj   r2   r2   r2   r3   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 ddddd | _d S Nru     r  r&  r4   r[   rW   r2   r2   r3   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 )Nru   r   N)g9%	?gxM _?g";9?g®XZ?g?num)r   	ppcc_plotr[   r	   r,   r  )rO   r"  svalsppccppcc_expectedr2   r2   r3   rT     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%  r[   r)  r	   )rO   Zsvals1Zppcc1Zsvals2Zppcc2Zsvals3Zppcc3r2   r2   r3   	test_dist  s    
zTestPpccPlot.test_distr  rx  c                 C   sZ   t  }|d}tj| jddt d || |d}tj| jdd|d t   d S Nr  irg  r  )r  r  r  r   r%  r[   delaxesr  rO   r  r  r2   r2   r3   r    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   rq   r   r   )rU   rV   r   r%  r[   rW   r2   r2   r3   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   r  r#  r   )r   r%  r	   r,   r  r  float)rO   r&  r'  r2   r2   r3   r    s    zTestPpccPlot.test_emptyN)r`   ra   rb   r  rT   r*  r  r0  r  r  r  r.  r  r2   r2   r2   r3   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   )rU   rV   r   ppcc_maxri   r2   r2   r3   test_ppcc_max_bad_arg  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   r  '   r        @{r:   rG   )r   r)  r/   r   r1  r   r2   r2   r3   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 )Nr3  r   r  r4  r5  r   r6  r)  r   r7  ru   rG   )r   r)  r/   r1  r   )rO   r[   Zmax1Zmax2Zmax3r2   r2   r3   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 )Nr3  r   r  r4  r5  r   r6  )r   r   r  brack)r   r   r7  r:   rG   r   r   )r   r)  r/   rU   rV   r1  r   r   r2   r2   r3   
test_brack  s    zTestPpccMax.test_brackN)r`   ra   rb   r2  r8  r*  r<  r2   r2   r2   r3   r0    s   r0  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 )TestBoxcox_llfc                 C   sT   t jjdddd}d}t ||}|j d tt| d  }t	|| d S )Nr4  r   1  r   r   r   r   r#  r   )
r   r   r/   
boxcox_llfr   r,   r-   rK  rS   r	   )rO   r[   lmbdallfZllf_expectedr2   r2   r3   rT     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	   rO   r[   rA  rB  Zllf2r2   r2   r3   test_array_like   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 rC  )r   r   r/   r@  r,   vstackr  r	   rE  r2   r2   r3   test_2d_input'  s
    zTestBoxcox_llf.test_2d_inputc                 C   s   t ttdg  d S rh   )r   r,   isnanr   r@  rW   r2   r2   r3   r  1  s    zTestBoxcox_llf.test_emptyc                 C   s"   g d}t d|}t|d d S )N)g     h@      m@rJ  g     x@ig#:x1r   r@  r	   rO   rP   rB  r2   r2   r3   test_gh_68734  s    zTestBoxcox_llf.test_gh_6873c                 C   s"   g d}t d|}t|d d S )N)i  i  i  i  i  g:0yE>gl.rK  rL  r2   r2   r3   test_instability_gh20021<  s    z'TestBoxcox_llf.test_instability_gh20021N)	r`   ra   rb   rT   rF  rH  r  rM  rN  r2   r2   r2   r3   r=    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e	j
deg deejddggdd Ze	j
deg d eg d!eg d"gd#d$ Zd%S )&
TestBoxcoxc                 C   s   t 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| ttd	d
}t|t	d	 d S )Nru   r   r  r&  r   rA  r   r   r   r   )
r4   r   r   r	   r,   r-   rD  r   r
   r  )rO   r[   xtr2   r2   r3   test_fixed_lmbdaz  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   rG   )r   r   r/   r   r   )rO   rA  r[   x_invrQ  r   r2   r2   r3   test_lmbda_None  s
    zTestBoxcox.test_lmbda_Nonec                 C   s   t jd}tdd|dd }tj|dd\}}}t|ddg tj|d	d\}}}t|d
dg tdd|dd }tj|dd\}}}t|ddg tj|dd\}}}t|ddg d S )Nr,  ru   r   r&  r  )alphagx@gv[%@r  gxˉEk?g8Bhk @r:   r  rY   r   g\?gx̡&@r!   g7(U@gp:sY@)r,   r'  r   r4   r   r   r	   )rO   r+  r[   r  rf   r2   r2   r3   
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   )r,   r   rU   rV   r   r   r   r2   r2   r3   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   r  rW   r2   r2   r3   r    s    zTestBoxcox.test_emptyc                 C   s    t t\}}t|ddd d S )NgsHjdrr   r@   r   r   _boxcox_datar	   )rO   r  Zlamr2   r2   r3   rM    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[  r2   r3   	optimizer  s    zBTestBoxcox.test_bounded_optimizer_within_bounds.<locals>.optimizerrA  rd  r   r   )r   r   rZ  )rO   r[  rd  r  rA  r2   rc  r3   $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 )
NrP  r4  r   Zxatolr  c                    s   t j|  ddS )Nr^  )r[  r  optionsr_  ra  r[  rg  r2   r3   rd    s    zPTestBoxcox.test_bounded_optimizer_against_unbounded_optimizer.<locals>.optimizerre  r   rY  )rO   r  rA  rd  Zlmbda_boundedr2   rh  r3   2test_bounded_optimizer_against_unbounded_optimizer  s    
z=TestBoxcox.test_bounded_optimizer_against_unbounded_optimizerrd  )strr   r   r4  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  re  r  r   rV   r   r   rZ  rO   rd  r2   r2   r3   $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 rh   r2   ra  r2   r2   r3   rd    s    zCTestBoxcox.test_bad_optimizer_value_raises_error.<locals>.optimizerz/return an object containing the optimal `lmbda`r  re  rl  )rO   rd  r  r2   r2   r3   %test_bad_optimizer_value_raises_error  s    z0TestBoxcox.test_bad_optimizer_value_raises_errorbad_x)r   ig@r  r   c                 C   s@   d}t jt|d t| W d   n1 s20    Y  dS )zHTest boxcox_normmax raises ValueError if x contains non-positive values.z#only positive, finite, real numbersr  N)r  r   rV   r   boxcox_normmax)rO   rp  r  r2   r2   r3   "test_negative_x_value_raises_error  s    z-TestBoxcox.test_negative_x_value_raises_errorr[   
     L@     x@     4@     @@     d@rx  g     @g     <@g     \@g     @rt  ru  rv  rw  rx  gFq$jgS	#jgGewa$jgVBi$jg[(>2$jc                 C   sT   t jtdd2 t|\}}tt|s2J W d    n1 sF0    Y  d S )NThe optimal lambda isr  )r  r   r!  r   r   r,   r   isfinite)rO   r[   Zxt_bcZlam_bcr2   r2   r3   test_overflow  s    
zTestBoxcox.test_overflowN)r`   ra   rb   rR  rT  rV  rW  r  rM  r  r0  r1  rf  ri  rn  ro  r,   r   r   rr  r}  r2   r2   r2   r3   rO  x  s,   
	
	
 
	rO  c                
   @   sD  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ej	dg dg dfdd Zdd Zej	dejg dejdejg dejdejg dejdejg dejdgej	dg dej	d	dgd d! Zej	dg dg dgej	d	dgd"d# Zd$S )%TestBoxcoxNormmaxc                 C   s   t ddddd | _d S Nru   r   r  r&  r  rW   r2   r2   r3   r    s    zTestBoxcoxNormmax.setup_methodc                 C   s   t | j}t|ddd d S )Nm?r?   r@   r   rq  r[   r	   rO   r   r2   r2   r3   test_pearsonr  s    zTestBoxcoxNormmax.test_pearsonrc                 C   s<   t j| jdd}t|ddd t | j\}}t|| d S )Nmlert  	.!?r?   r@   )r   rq  r[   r	   r   )rO   r   r  Zmaxlog_boxcoxr2   r2   r3   test_mle  s    zTestBoxcoxNormmax.test_mlec                 C   s&   t j| jdd}t|ddgdd d S )Nr   rt  r  r  r?   r@   r  )rO   Z
maxlog_allr2   r2   r3   test_all  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_  ra  rc  r2   r3   rd    s    zITestBoxcoxNormmax.test_bounded_optimizer_within_bounds.<locals>.optimizer)r  rd  r   r   )r   rq  r[   r,   r   )rO   r  r[  rd  r   r2   rc  r3   rf    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 )
Nru   r  i  c                   @   s   e Zd ZdS )z?TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.MyResultN)r`   ra   rb   r2   r2   r2   r3   MyResult+  s   r  c                    s6   g }D ]}| | | q  }t| |_|S r+   )appendr,   Zargminr[   )rb  ZobjsrA  r]   r  Zlmbda_ranger2   r3   rd  .  s    z@TestBoxcoxNormmax.test_user_defined_optimizer.<locals>.optimizerrd  r   )r   rq  r[   r,   r  r  r	   )rO   rA  Zlmbda_roundedrd  Zlmbda2r2   r  r3   test_user_defined_optimizer%  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:  rd  z,`brack` must be None if `optimizer` is givenr  )g       r#  )r   r`  r   rq  r[   r  r   rV   rm  r2   r2   r3   2test_user_defined_optimizer_and_brack_raises_error;  s    
zDTestBoxcoxNormmax.test_user_defined_optimizer_and_brack_raises_errorr[   ry  )gx	 ?gN~jh ?g{ ?gXkI ?g}9" ?c                 C   s   d}t jt|d tj|dd}W d    n1 s60    Y  tt||	 sZJ t
tjjd }|dkr~t|nt|}t||}t||t|  d S )NzThe optimal lambda is...r  r  rt  r4  r   )r  r   r!  r   rq  r,   r|  r   r   r   finfofloat64maxr}  r	   sign)rO   r[   r  rA  ymaxx_tremeZ	y_extremer2   r2   r3   r}  K  s    ,zTestBoxcoxNormmax.test_overflowc                 C   sB   t jtdd  tj| jdd W d    n1 s40    Y  d S )Nz `ymax` must be strictly positiver  r   )r  )r  r   rV   r   rq  r[   rW   r2   r2   r3   test_negative_ymaxY  s    z$TestBoxcoxNormmax.test_negative_ymaxr   )g	i@g     `h@gfffffh@r+  gi@)gKH9KH9r  r  r  r  r  )g    _Bgꌠ9Y>)FNr  c                 C   s   t jtdd |d ur d|ini }tj|fd|i|}t|t|g}ttt	||}|d u r|t
|jjd }t||dd W d    n1 s0    Y  d S )Nr{  r  r  r  r4  r   r@   )r  r   r!  r   rq  r,   r}  r  absr   r  r   r	   )rO   r[   r  r  kwargZlmbr  Zymax_resr2   r2   r3   'test_user_defined_ymax_input_float64_32]  s    z9TestBoxcoxNormmax.test_user_defined_ymax_input_float64_32c                 C   s   t j|t jd}t j|t jd}tjtdd tj||d W d    n1 sR0    Y  tj||d tj|t j	|d}tj|t j	|d}t
||dd d S )Nr   r{  r  rt  )r  r  r  r@   )r,   r  float32r  r  r   r!  r   rq  r-  r	   )rO   r[   r  Zx_32Zx_64Zlmb_32Zlmb_64r2   r2   r3   test_user_defined_ymax_infz  s    	,z,TestBoxcoxNormmax.test_user_defined_ymax_infN)r`   ra   rb   r  r  r  r  r  r0  r1  rf  r  r  r}  r  r,   r   r  r  r  r  r2   r2   r2   r3   r~    sN   




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 ddddd | _d S r  r  rW   r2   r2   r3   r    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 )Nru   r   r   r!  )g!X4}?g΁i?g-	15?gW$?g\ܱ{?r#  )r   boxcox_normplotr[   r	   r,   r  )rO   r"  Zlmbdasr'  r(  r2   r2   r3   rT     s
    zTestBoxcoxNormplot.test_basicr  rx  c                 C   sZ   t  }|d}tj| jddt d || |d}tj| jdd|d t   d S r+  )r  r  r  r   r  r[   r,  r  r-  r2   r2   r3   r    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   )rU   rV   r   r  r[   rW   r2   r2   r3   r.    s    z&TestBoxcoxNormplot.test_invalid_inputsc                 C   s   t tg ddjdk d S r  )r   r   r  r   rW   r2   r2   r3   r    s    zTestBoxcoxNormplot.test_emptyN)r`   ra   rb   r  rT   r  r0  r  r  r  r.  r  r2   r2   r2   r3   r    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_llfrD  r	   rE  r2   r2   r3   rF    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 rC  )r   r   r/   r  r,   rG  r  r	   rE  r2   r2   r3   rH    s
    z TestYeojohnson_llf.test_2d_inputc                 C   s   t ttdg  d S rh   )r   r,   rI  r   r  rW   r2   r2   r3   r    s    zTestYeojohnson_llf.test_emptyN)r`   ra   rb   rF  rH  r  r2   r2   r2   r3   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d Zejde
deddge
deddge
ded dge
dededed dggdd Zejde
g de
g de
g dgdd Zejde
g de
g dgejdg d ejd!d"d#gd$d% Zejde
g d&e
g d'e
g d(gejd!d"d#gejd)d*d+gd,d- Zd*S ).TestYeojohnsonc                 C   s  t jd}tdd|dd }t |dks0J 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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dd|dd	 }t |dk rTJ t |dkrhJ |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 )Nr  ru   r   r&  r   r   rP  r   r   rr   )	r,   r'  r   r4   r   r   
yeojohnsonr	   r-   )rO   r+  r[   rQ  posnegr2   r2   r3   rR    sL    


 zTestYeojohnson.test_fixed_lmbdarA  )r   r4  r  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   )r,   r  r  r   r  spacingexppower)r[   rA  rS  r  r2   r2   r3   _inverse_transform  s    $
z:TestYeojohnson.test_lmbda_None.<locals>._inverse_transformi N  r5  r   r   )r   r   r   r  r  r   rG   )r,   r'  r.  r
  r   r  r	   r   linalgr   rQ   rS   )rO   rA  r  Z	n_samplesr[   rS  rQ  r   r2   r2   r3   rT    s    
zTestYeojohnson.test_lmbda_Nonec                 C   s   t tg jdk d S rX  )r   r   r  r  rW   r2   r2   r3   r  	  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  rD  r	   )rO   r[   Zxt1r  Zxt2r2   r2   r3   rF  !	  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 )Nr7   r   z>Yeo-Johnson transformation is not defined for complex numbers.r  )r,   rZ   r  r   rV   r   r  )rO   r   r[   err_msgr2   r2   r3   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   r  r@   )r,   rZ   r  r   r  r	   )rO   r   x_intx_floatZxt_intZ	lmbda_intZxt_floatZlmbda_floatr2   r2   r3   test_input_dtype_integer/	  s    z'TestYeojohnson.test_input_dtype_integerc                 C   sN   t g d}t|\}}t|d \}}t||dd t||dd d S )N)(HAG."A    5fAg(@Ag   VAgHzuoAg)\¿+Ar  g(\^@Ag    RAr  g    #Ag\µ=Ag
ףNAr  gp=oHAg    6bAg{csAg)\tmhAg/BAg   '|Ag(\wipAg    ݃hAgQlBAgףp @Ar   r?   r@   )r,   r   r   r  r   r	   )rO   r[   xt_yeolam_yeoxt_boxlam_boxr2   r2   r3   test_input_high_variance8	  s
    z'TestYeojohnson.test_input_high_variancer[   r   r   r#  r-        c                 C   s@   t jtdd t|\}}W d    n1 s20    Y  d S )Nz Yeo-Johnson input must be finiter  )r  r   rV   r   r  )rO   r[   r  r  r2   r2   r3   test_nonfinite_inputF	  s    z#TestYeojohnson.test_nonfinite_inputrs  ry  rz  c                 C   s   dd }t jdd t|\}}tj|d t||dd\}}t t |sVJ t t |sjJ t||dd	 t||d
d	 W d    n1 s0    Y  d S )Nc                 S   s&   t j| | |dd}t  }||_|S )Ng`sbO>)Zxtol)r   Z	fminboundZOptimizeResultr[   )rb  r  outresultr2   r2   r3   rd  \	  s    z/TestYeojohnson.test_overflow.<locals>.optimizerraiser   r   )r  r  r?   r@   r  )	r,   r   r   r  r   r   r|  rR   r	   )rO   r[   rd  r  r  r  r  r2   r2   r3   r}  P	  s    
zTestYeojohnson.test_overflowr   )r   r  g3#I9gu?j/ gnFgZbtir  r   r   c                 C   s   t jddj t|| | \}}t t || t |ksFJ t |sTJ t t |shJ W d    n1 s|0    Y  d S )Nr  r   )r,   r   r   r  r   r  r|  rR   )rO   r[   r   r  r  r  r2   r2   r3   #test_overflow_underflow_signed_datak	  s
    	"z2TestYeojohnson.test_overflow_underflow_signed_data)r   r   r   rr   )r   r   r   r  )r   r   r   r:  Nr;  c           
      C   s   t jdd || }|t j}tj||d}tj||d}tj||d}tj||d}	t t |t |ksxJ t 	|sJ t 	t 
|sJ ||ksJ t ||	ksJ W d    n1 s0    Y  d S )Nr  r   r9  rP  )r,   r   Zastyper  r   yeojohnson_normmaxr  r   r  r|  rR   )
rO   r[   r  r:  r  r  Zlam_yeo_intZ
xt_yeo_intZlam_yeo_floatZxt_yeo_floatr2   r2   r3   test_integer_signed_dataz	  s    z'TestYeojohnson.test_integer_signed_data)r`   ra   rb   rR  r  r0  r1  rT  r  rF  r,   Z	complex64Z
complex128r  Zint8uint8Zint16Zint32r  r  r   r/  r  r}  r  r  r2   r2   r2   r3   r    sL   /
$

 
	
r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestYeojohnsonNormmaxc                 C   s   t ddddd | _d S r  r  rW   r2   r2   r3   r  	  s    z"TestYeojohnsonNormmax.setup_methodc                 C   s   t | j}t|ddd d S )Ng?r?   r@   )r   r  r[   r	   r  r2   r2   r3   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#  ffffff?g333333@r*  gffffff@g?g@r(  r$  g"@r  g      gzG?r   r  )r   r  r,   Zallclose)rO   r[   rA  r2   r2   r3   test_darwin_example	  s    
z)TestYeojohnsonNormmax.test_darwin_exampleN)r`   ra   rb   r  r  r  r2   r2   r2   r3   r  	  s   r  c                   @   sB  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jd( d)  edd*gdfej	d+eg d,ed-d.gdfgd/d0 Zejdejdfejdfej	dfgd1d2 Zejdejejej	gd3d4 Zejdejejej	gd5d6 Zejd7d8d9d)d:d;d<ejged8d9d)d:d;d<ejgd=d>d?d@ejdAdBgggejdejejej	gdCdD Zejd7d8d9d)d:d;d<ejged8d9d)d:d;d<ejgd=d>d?d@ejdAdBgggejdejejej	gdEdF Z dGdH Z!dIdJ Z"dKdL Z#dMS )NTestCircFuncsztest_func,expectedgA:wv?g @pz?gE|2@c                 C   s(   t g d}t||dd|dd d S Nc  ru   r   r  r   ^  h  r[  r  r@   r,   r   r	   rO   	test_funcr  r[   r2   r2   r3   test_circfuncs	  s    zTestCircFuncs.test_circfuncsc                 C   s   t g d}| }tj|dd}t||dd |t j d  }|d }tj|dd}t||dd |	 }tj
|dd}t||dd d S )	N)rg  r  r_  r\     g     4@g3333333@r  r  r   r@   r  r#  r  )r,   r   rQ   r   circmeanr	   pirR   circvarrS   circstd)rO   r[   M1M2V1V2S1S2r2   r2   r3   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  )rO   r  Z
numpy_funcr[   Zcircstatr
  r2   r2   r3   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 )Nr  _  r:   rt   `  r8   ]  ie  r8   r;   if  rt   id  r  r  rJ   r@   r   r[  rE  c                    s   g | ]}t j | d dqS r  r  r   r  rn   r^   r[   r2   r3   ro   	  rp   z4TestCircFuncs.test_circmean_axis.<locals>.<listcomp>r   c                    s&   g | ]}t j d d |f ddqS Nr  r  r  r  r  r2   r3   ro   	  rp   )r,   r   r   r  ravelr	   r  r  )rO   r  r  r2   r  r3   test_circmean_axis	  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 )Nr  r  r  r  r  dy=r@   r   r  c                    s   g | ]}t j | d dqS r  r   r  r  r  r2   r3   ro   	  rp   z3TestCircFuncs.test_circvar_axis.<locals>.<listcomp>r   c                    s&   g | ]}t j d d |f ddqS r  r  r  r  r2   r3   ro   	  rp   )r,   r   r   r  r  r	   r  r  )rO   r  r  r2   r  r3   test_circvar_axis	  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 )Nr  r  r  r  r  r  r@   r   r  c                    s   g | ]}t j | d dqS r  r   r  r  r  r2   r3   ro   	  rp   z3TestCircFuncs.test_circstd_axis.<locals>.<listcomp>r   c                    s&   g | ]}t j d d |f ddqS r  r  r  r  r2   r3   ro   	  rp   )r,   r   r   r  r  r	   r  r  )rO   r  r  r2   r  r3   test_circstd_axis	  s    
zTestCircFuncs.test_circstd_axisc                 C   s"   g d}t ||dd|dd d S r  )r	   r  r2   r2   r3   test_circfuncs_array_like	  s    z'TestCircFuncs.test_circfuncs_array_liker  c                 C   s   t t|g  d S r+   )r   r,   rI  )rO   r  r2   r2   r3   r  
  s    zTestCircFuncs.test_emptyc                 C   s.   ddddddt jg}tt ||dd d S )	Nr  ru   r   r  r   r  r  r  r,   r   r   rI  rO   r  r[   r2   r2   r3   test_nan_propagate
  s    z TestCircFuncs.test_nan_propagateg5:v@gfPb?r  gee?gOQOv?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)r  ru   r   r  r   r  r   r  r:   rt   r  r8   r  r   r  r  r   r  r@   )r,   r   r   keysr   rI  r	   r   rO   r  r  r[   rE  r  r2   r2   r3   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@gG2?)gaF+?z?r  gA ~@碲?r  r  r   gX҄?gJPm$@)gj  @竃 ?r  g)h;@{ ?r  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 )Nr  ru   r   r  r   r  r  r:   rt   r  r8   r  r  omit)r[  
nan_policyrE  r  r@   r   )r,   r   r   r  r	   r   rI  r  r2   r2   r3   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 )Nr  ru   r   r  r   r  r  r  r[  r  r  r@   )r,   r   r	   r  r2   r2   r3   test_nan_omitE
  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 )Nr  r  r  r  r2   r2   r3   test_nan_omit_allN
  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 )Nr  r   )r  rE  r   )r,   r   r   r   rI  r   r   )rO   r  r[   r  r2   r2   r3   test_nan_omit_all_axisT
  s    z$TestCircFuncs.test_nan_omit_all_axisr[   r  ru   r  r   r  r  r:   rt   r  r8   r  c                 C   s   t t||ddd d S )Nr  r  r  rU   rV   r  r2   r2   r3   test_nan_raise]
  s    zTestCircFuncs.test_nan_raisec                 C   s   t t||ddd d S )Nr  foobarr  r  r  r2   r2   r3   test_bad_nan_policyf
  s    z!TestCircFuncs.test_bad_nan_policyc                 C   s$   d}|}t |}t||dd d S )Nr   r   r@   )r   r  r	   )rO   r[   r  r  r2   r2   r3   test_circmean_scalaro
  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   r4  )r   r  r,   rZ   r  r   r.  r2   r2   r3   test_circmean_rangeu
  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 )Nrm  r   r  r   r  r  g     @e@gLwqA?r  r@   g)#p_4@)r,   r   r
   r   r  r	   r  r  r   r2   r2   r3   test_circfuncs_uint8|
  s    z"TestCircFuncs.test_circfuncs_uint8N)$r`   ra   rb   r  r0  r1  r   r  r  r  r  r  r,   rQ   rR   rS   r  r  r  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r2   r2   r2   r3   r  	  s   







	




r  c                   @   s~   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zejdddgdd ZdS )TestMedianTestc                 C   s   t ttjg d d S Nrq   rU   rV   r   median_testrW   r2   r2   r3   test_bad_n_samples
  s    z!TestMedianTest.test_bad_n_samplesc                 C   s   t ttjg g d d S r  r  rW   r2   r2   r3   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  rW   r2   r2   r3   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  rW   r2   r2   r3   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 )Nrq   rt   ru   r  r
  r  rW   r2   r2   r3   test_bad_ties
  s    zTestMedianTest.test_bad_tiesc                 C   s    t ttjg dddgdd d S )Nrq   rt   ru   r   r  r  rW   r2   r2   r3   r  
  s    z"TestMedianTest.test_bad_nan_policyc                 C   s    t ttjg dddgdd d S )Nrq   rt   ru   r  )r  )rU   r5  r   r  rW   r2   r2   r3   r6  
  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 )Nrq   r#  r   r   r   )r   r  r
   r   )rO   r[   r  r  rH  Zmedtblr2   r2   r3   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  ru   r7   )r:   r;   r8   )r   r   rr   )rt   r   r   r   r
  )rt   r   r   r  )r   r   rr   )r   r  r
   )rO   r[   r  zr  rH  r  r  r2   r2   r3   test_ties_options
  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   )rt   ru   r7   	propagater  r  g     ?gإvao?r%  r   r  )	r,   r   r   r  r
   r	   r   rU   rV   )rO   r[   r  Zmt1r   rH  r  r  r2   r2   r3   test_nan_policy_options
  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 )
Nrs   )r   rt   r7   r;   rt   r   r   r   )Zlambda_Fr  )r   r  r
   Zchi2_contingencyr	   )rO   r[   r  r  rH  r  r  Zexp_statZexp_pZdofer2   r2   r3   rT   
  s(    







zTestMedianTest.test_basicr  FTc                 C   s>   g d}g d}t j|||d}t|j|j|j|jf| d S )Nrq   r  )r   r  r
   rL   r   r1  table)rO   r  r[   r  r]   r2   r2   r3   r  
  s    zTestMedianTest.test_resultN)r`   ra   rb   r	  r  r  r  r  r  r6  r  r  r  rT   r  r0  r1  r  r2   r2   r2   r3   r  
  s   r  c                   @   sz   e Zd Zdd Zejdej d ejd gdfddej gdfgdd	 Z	d
d Z
dd Zdd Zdd Zdd ZdS )TestDirectionalStatsc                 C   s   t t g d }t t g d }t jt |t | t |t | t |fdd}t|}|j}t 	|d}t g d}t
|| d S )N)	g33333su@g      O@g33333sB@g      ;@g     pv@g@g333333I@gYv@r8  )	gfffffP@g,Q@gfffffQ@gfffffT@g     S@g     @R@g33333SQ@gffffffM@g33333I@r   rD  rt   )gHP?g&S:g[<)r,   Zdeg2radr   stackcossinr   directional_statsmean_directionr  r	   )rO   declZinclrP   dirstatsdirectional_meanZmean_roundedZreference_meanr2   r2   r3   "test_directional_stats_correctness	  s    
z7TestDirectionalStats.test_directional_stats_correctnesszangles, refr   r   r   r   c                 C   sL   t |r||}tjt|t|gdd}dt|j }t|| d S )Nr   rD  )	callabler,   r  r  r  r   r  mean_resultant_lengthr	   )rO   Zanglesr   rP   r]   r2   r2   r3   'test_directional_stats_2d_special_cases  s
    z<TestDirectionalStats.test_directional_stats_2d_special_casesc           
      C   s   t jd}dt j |d }t jt |t |fdd}t|}|j	}t 
|d |d }|dt j  }t|}t|| d|j }t|}	t||	 d S )Nl	   }7Qh0P4u&4M r   )r%  r   rD  r   )r,   r'  r(  r  r  r  r  r   r  r  Zarctan2r  r	   r#  r  )
rO   r+  ZtestdataZtestdata_vectorr  r   Zdirectional_mean_angler  Zdirectional_varZcircular_varr2   r2   r3   test_directional_stats_2d(  s$    





z.TestDirectionalStats.test_directional_stats_2dc                 C   sf   t g dg dg}t |d}t g dg dgg dg dgg}tj|dd}t||j d S )N+Pz?r  r   )r'  rn  r   )r   r   r   r   )r   r   r   r   rD  )r,   r   Ztiler   r  r	   r  )rO   rP   Z
full_arrayr  r  r2   r2   r3    test_directional_mean_higher_dim<  s    

z5TestDirectionalStats.test_directional_mean_higher_dimc                 C   sN   g dg dg}t |}t|}t|}t|j|j t|j|j d S )Nr&  )r'  rn  r   )r,   r  r   r  r	   r  r#  )rO   rP   Z
data_arrayr]   r   r2   r2   r3   )test_directional_stats_list_ndarray_inputI  s    


z>TestDirectionalStats.test_directional_stats_list_ndarray_inputc                 C   sP   t d}d}tjtt|d t| W d    n1 sB0    Y  d S )N)ru   zIsamples must at least be two-dimensional. Instead samples has shape: (5,)r  )	r,   r   r  r   rV   reescaper   r  )rO   rP   r  r2   r2   r3   test_directional_stats_1d_errorS  s    
z4TestDirectionalStats.test_directional_stats_1d_errorc                 C   sh   t g dg dg}tj|dd}|t jj|ddd }tj|dd}t|j|j t|j|j d S )Nr&  )g+Pz?r  r   T)	normalizer   )rE  ZkeepdimsF)	r,   r   r   r  r  r   r	   r  r#  )rO   rP   r]   Znormalized_datar   r2   r2   r3    test_directional_stats_normalize[  s    
z5TestDirectionalStats.test_directional_stats_normalizeN)r`   ra   rb   r!  r  r0  r1  r,   r  r$  r%  r(  r)  r,  r.  r2   r2   r2   r3   r    s   

r  c                   @   sp   e Zd Zdd Zdd Zejdg ddfg dd	fgd
d Zdd Z	ejdg ddd Z
dd ZdS )TestFDRControlc                 C   s  d}t jt|d tg d W d    n1 s60    Y  t jt|d tg d W d    n1 sr0    Y  t jt|d" tddtjg W d    n1 s0    Y  d}t jt|d" tjg dd	d
 W d    n1 s0    Y  d}t jt|d" tjg ddd W d    n1 s<0    Y  t jt|d" tjg ddd W d    n1 s~0    Y  d S )Nz.`ps` must include only numbers between 0 and 1r  )r   r  r  )r  r  r   r  r  zUnrecognized `method` 'YAK')r  r  rd   ZYAKrt  z#`axis` must be an integer or `None`r  rD  rk  )r  r   rV   r   false_discovery_controlr,   r   rp  r2   r2   r3   test_input_validationl  s    ,,002z$TestFDRControl.test_input_validationc                 C   s,   g d}t |}g d}t||dd d S )N)r  g;On?g~jt?gI+?g&1?gB`"۹?gv?S㥛?);On?r3  I+?r4  gˡE?gHzG?r2  r2  r   r  )r   r0  r	   )rO   psr]   r   r2   r2   r3   test_against_TileStats  s    
z%TestFDRControl.test_against_TileStatscase)
go?gQ]
Y?ghD@?u?D?gn@t?g=T	[ے?g=!s?r8  r8  g	L?Zbh)
glߢ?gq?g.0?R]D?g)<Gh?g$͂?g2-p?r9  r9  g]:?Zbyc                 C   sT   |\}}t jd}tjjddd|d}|d |d< tj||d}t||d	d
 d S )N   <U) r   r  r   r&  r:   rr   rt  r?   r  )r,   r'  r(  r   
loguniformr/   r0  r	   )rO   r7  r   r  r+  r5  r]   r2   r2   r3   test_against_R  s    zTestFDRControl.test_against_Rc                 C   sJ   t jd}tjjddd|d}tj|d d}t| }t|| d S Nr:  r   r  )rr   rt   ru   r&  rD  )	r,   r'  r(  r   r;  r/   r0  r  r
   )rO   r+  r5  r]   r   r2   r2   r3   test_axis_None  s
    zTestFDRControl.test_axis_NonerE  )r   r   r   c                 C   sL   t jd}tjjddd|d}tj||d}t tj||}t|| d S r=  )	r,   r'  r(  r   r;  r/   r0  Zapply_along_axisr
   )rO   rE  r+  r5  r]   r   r2   r2   r3   	test_axis  s
    zTestFDRControl.test_axisc                 C   s8   t tdgdg t tdd t tg g  d S )Nr  )r   r   r0  rW   r2   r2   r3   rC    s    zTestFDRControl.test_edge_casesN)r`   ra   rb   r1  r6  r  r0  r1  r<  r>  r?  rC  r2   r2   r2   r3   r/  k  s    

r/  )Wrv   r{  	functoolsr   numpyr,   Znumpy.randomr   Znumpy.testingr   r   r   r   r   r	   r
   r   r  r   rU   r*  Zscipyr   r   r   Zscipy.stats._morestatsr   r   r   Zcommon_testsr   Z
_hypotestsr   r   Zscipy.stats._binomtestr   Zscipy.stats._distr_paramsr   dictZ
matplotlibZrcParamsZmatplotlib.pyplotZpyplotr  r  	Exceptionr  r  r  r  r	  r
  r  r  r  r  r4   r5   rc   r{   r   r2  r  r  r  r:  r  r  r  r  r  r  r  r  r0  r=  rZ  rO  r~  r  r  r  r  r  r  r  r/  r2   r2   r2   r3   <module>   s   (

!~  P E oG .^ y6%.3  # I e d