o
    `^hO                    @   s  d Z ddlZddlZddlZddlmZ ddlmZ ddlm	  m
Z ddlZddlZddlmZmZmZmZmZmZmZmZmZ ddlZddlmZ ddlm  mZ ddl
mZm Z m!Z!m"Z" ddl
Z#ddl$m%Z% ddl&m%  m'Z' ddl(m%  m)Z* ddl+m,Z, dd	l-m.Z. dd
l/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC ddlDmEZE ddlFmGZGmHZH ddlImJZJmKZKmLZLmMZMmNZNmOZO ddlPmQZQmRZR ejSjTZT	 eg deUZVeg deUZWeg deUZXeg deUZYeg deUZZeg deUZ[eg deUZ\eGeTdddeTdddejS]d G d!d" d"Z^G d#d$ d$Z_eGejS]d eTd%d&G d'd( d(Z`G d)d* d*ZaG d+d, d,ZbG d-d. d.Zcd/d0 Zdd1d2 Zed3d4 Zfd5d6 ZgG d7d8 d8Zhd9d: Zid;d< Zjd=d> Zkd?d@ ZlG dAdB dBZmG dCdD dDZndEdF ZodGdH ZpdIdJ ZqG dKdL dLZrG dMdN dNZseGG dOdP dPZteGejS]d eTddQdG dRdS dSZuG dTdU dUZvdVdW ZwG dXdY dYZxG dZd[ d[ZyG d\d] d]ZzG d^d_ d_ezZ{G d`da daezZ|ej}j~dbdc ZejSjTd%dddeejS]d eGG dfdg dgZG dhdi diZedjg dkZeg dlddddmdndme#do dpe#dq   dndre#ds dre#dt   dudkeg dlg dvdddwdndme#ds dre#do  dre#dx   dndne#do dye#ds  dne#dz   d{dkeg dldrdddmdndme#do dpe#dq   dndre#ds dre#dt   dudkeg d|g d|dddddddkgZeg ddddddddkee#g g g gjdddg d}g d}g d}g d}dkee#g g g gdddg g g g dkgZeGG d~d dZeGG dd dZeHG dd dZdd ZG dd dZG dd dZG dd dZdd Zdd Zdd ZejSde#ddfe#ddfgdd Zdd ZejSdg ddd ZejSde%je# ddffe%je# de# dffgdd Zd3ddddZeGejSjTd%dddeejS]d dd Zdd Zdd ZejSdG dd dZejSdG dd dZG dd dZeGejSjTd%dddeejS]d G dd dZdd ZeGejSjTd%dddeejS]d dd ZeGejSjTd%dddeejS]d dd Zdd ZeGdd ZeTdddejS]d eGejSde#ddfe#ddfgdd ZeGddĄ ZeGddƄ ZeGejSjTd%ddȍejS]d ddʄ ZeGejSjTd%dddeejS]d dd̄ ZeGejSjTd%dddeejS]d dd΄ ZddЄ ZejSjejSjTd%dddeejS]d eGdd҄ ZejSjTd%ddȍejS]d eGddՄ ZejSjTd%dddeejS]d eGddׄ ZG ddل dكZeGG ddۄ dۃZG dd݄ deZG dd߄ deZG dd deZG dd dZeGG dd dZG dd dZdd Zdd ZdddddddZdd Zdd Zdd ZeGG dd dZeGG dd dZeGG dd dZG dd dZdd ZĐd d ZŐdd ZG dd dZG dd dZG dd	 d	ZG d
d dZG dd dZeTd%ddgddejS]d eGG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZe#jԠՐd Ze֠dZe֠dZejSd!e%jeffe%jee%jjffe%jeeffe%jeeffgd"d# ZG d$d% d%ZG d&d' d'ZeGG d(d) d)ZeGejS]d eTdd*dG d+d, d,ZeGd-d. ZejSjTd/d0dejS]d eGd1d2 ZdS (4  z Test functions for stats module

    WRITTEN BY LOUIS LUANGKESORN <lluang@yahoo.com> FOR THE STATS MODULE
    BASED ON WILKINSON'S STATISTICS QUIZ
    https://www.stanford.edu/~clint/bench/wilk.txt

    Additional tests by a host of SciPy developers.
    N)
namedtuple)product)	assert_assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_approx_equalassert_allclosesuppress_warningsassert_array_less)raises)arrayarangefloat32power)kolmogn)FuncData)binom)optimize   )check_named_results)_broadcast_concatenateSmallSampleWarningtoo_small_nd_omittoo_small_nd_not_omittoo_small_1d_omittoo_small_1d_not_omit)_permutation_distribution_t_chk_asarray_momentLinregressResult_xp_mean_xp_var_SimpleChi2)	AxisError)array_api_compatibleskip_xp_invalid_arg)array_namespacexp_copyis_numpyis_torchxp_sizeSCIPY_ARRAY_API)xp_assert_closexp_assert_equal)	r                        	   )	r   r   r   r   r   r   r   r   r   )	iiiiiiiii)	g~?g<?gEk?g?ge(?gq?g?g8C?gG?)	g   mBg   }Bg  yӅBg   Bg  @0Bg  yӕBg  BwBg   Bg   ^B)	-q=g-=gAfc=g-=gdy=gAfc=gYLɞ=g-=gSSʣ=)	      ?      ?      @      @      @      @      @      @      !@	jax.numpy"JAX doesn't allow item assignment.reasonarray_api_strictz_`array_api_strict.where` `fillvalue` doesn't accept Python floats. See data-apis/array-api#807.skip_xp_backendsc                   @   s~   e Zd ZeejjZdd Ze	ddddd Z
dd	 Zd
d Ze	ddddd Zdd Ze	ddddd Zdd ZdS )TestTrimmedStatsc           	   	   C   s  | t }t|dd}t|| d tj|ddd}tj|d d}t|| ||dd}tj|d d	}t||| tj|d
d	}t||j|d
d	 tj|dd	}t||j|dd	 tj|dd d}t|| d tj|dd
d}g d}t|| | tj|ddd
d}g d}t|| | t	|}|j
|ddd f< tj|dd
d}dddd|j
|j
|j
g}t|| | tj|ddd}dddd|j
|j
|j
|j
|j
g	}t|| | tj|dddd}dddd|j
|j
|j
|j
|j
g	}t|| | d S ) Nr0   r6   TT      @)FFlimits	inclusiverM        O@r7   r5   axisr   r   )r0   =   )rM   rS   g     ?@)r0      )         '@r7   
            TF)rM   rN   rS   )      %@rW   r7   rX   rY   rZ   r[   )r   r[   r5   r=   r>   r?   r2   rX      rU   FT)asarrayXtoliststatstmeanr.   reshaper   meanr)   nan)	selfxpxyy1y2x_2dy_truex_2d_with_nan rs   Z/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/scipy/stats/tests/test_stats.py
test_tmeanW   sD   
  zTestTrimmedStats.test_tmeancupycupy/cupy#8391rD   c                 C   s2  | t }t|}tj|ddd}t|| d tj|d d}t||j|dd ||	dd	}tj|d d
}t||j|dd tj|dd
}t||
dd tj|dd
}t||
dd tj|dddd}t|d | d tj|dddd}t|d | d t|d | |j d S )NrI   rJ   rL   g@rO   r   
correctionrP   rQ   rR   r   r5   g     v@)r7   g㪪@r   r3   )rM   rS   rN   r;   r   r4   g@)rb   rc   rd   r(   re   tvarr.   varrg   r   fullr/   ri   )rj   rk   rl   xp_testrm   rp   rs   rs   rt   	test_tvar   s$   zTestTrimmedStats.test_tvarc                 C   sZ   | t }t|}t|dd}t|| d tj|d d}t||j|dd d S )NrI   rJ   gBĆ/H@rO   r   rx   )rb   rc   rd   r(   re   tstdr.   std)rj   rk   rl   r   rm   rs   rs   rt   	test_tstd   s   zTestTrimmedStats.test_tstdc                 C   s&  | d}tt||d ttj|dd|d ttj|ddd|d ||d}ttj|ddd|ddg ttj|dd	|g d
 ttj|d d	|d | d}|j|d< tt|||j | ddd}tj|ddd}t||tjdddg d S )NrX   r   )
lowerlimitF)r   rN   r   r3   r0   r0   rR   )r   r0   r2   r4   r6         $@r7      r2   )r   rS   r6   rZ   )r   r/   re   tminrb   rg   ri   np)rj   rk   rl   resrs   rs   rt   	test_tmin   s    


zTestTrimmedStats.test_tminTz4Only NumPy arrays support scalar input/`nan_policy`.np_onlyrE   c              	   C      t tdd td}tj|d< t _}|td t tj|ddd d}t	t
|d	 tj|d
d W d    n1 s@w   Y  d}t	t
|d	 tj|dd W d    n1 s_w   Y  W d    d S W d    d S 1 sww   Y  d S )Nr2   r   r7   invalid value*omit
nan_policy        The input contains nan valuesmatchraisenan_policy must be one of...foobar)r   re   r   r   r   ri   r   recordRuntimeWarningassert_raises
ValueErrorrj   rk   rl   supmsgrs   rs   rt   test_tmin_scalar_and_nanpolicy   "   

"z/TestTrimmedStats.test_tmin_scalar_and_nanpolicyc              	   C   sZ  | d}tt||d ttj|dd|d ttj|ddd|d ||d}ttj|ddd|ddg ttj|d	d
|g d ttj|d d
|d | d}|j|d< tt|||j t -}|t	d || dd}tj|dd	d}t||dddt
jg W d    d S 1 sw   Y  d S )NrX   r7   )
upperlimitF)r   rN   r6   r   r5   r   rR   r   r1   r3   r5   r7   r   zAll-NaN slice encounteredr   )r2   r2   rY   )r   rS   r1   )r   r/   re   tmaxrb   rg   ri   r   filterr   r   )rj   rk   rl   r   r   rs   rs   rt   	test_tmax   s&   


"zTestTrimmedStats.test_tmaxc              	   C   r   )Nr2   r   r4   r   r   r         "@r   r   r   r   r   )r   re   r   r   r   ri   r   r   r   r   r   r   rs   rs   rt   test_tax_scalar_and_nanpolicy   r   z.TestTrimmedStats.test_tax_scalar_and_nanpolicyc                 C   sz   | t }t|}tj|ddd}| g d}t||j|ddt|d   ttj|dd	gd
tj|d d
 d S )N)r1   r6   ra   rL   )      @rK         @      @       @r   rx   r9   r^   rX   rO   )	rb   rc   rd   r(   re   tsemr.   r   r,   )rj   rk   rl   r   rm   y_refrs   rs   rt   	test_tsem   s    &zTestTrimmedStats.test_tsemN)__name__
__module____qualname__r   finfofloat64	precisiondprecru   rG   r   r   r   r   r   r   r   rs   rs   rs   rt   rH   L   s&    	.



rH   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,S )-TestPearsonrWilkinsonE   W.II.D. Compute a correlation matrix on all the variables.

        All the correlations, except for ZERO and MISS, should be exactly 1.
        ZERO and MISS should have undefined or missing correlations with the
        other variables.  The same should go for SPEARMAN correlations, if
        your program has them.
    c                 C   "   t tt}|d }t|d d S Nr         ?)re   pearsonrrc   r	   rj   rm   rrs   rs   rt   test_pXX     zTestPearsonrWilkinson.test_pXXc                 C   "   t tt}|d }t|d d S r   )re   r   rc   BIGr	   r   rs   rs   rt   
test_pXBIG  r   z TestPearsonrWilkinson.test_pXBIGc                 C   r   r   )re   r   rc   LITTLEr	   r   rs   rs   rt   test_pXLITTLE  r   z#TestPearsonrWilkinson.test_pXLITTLEc                 C   r   r   )re   r   rc   HUGEr	   r   rs   rs   rt   test_pXHUGE   r   z!TestPearsonrWilkinson.test_pXHUGEc                 C   r   r   )re   r   rc   TINYr	   r   rs   rs   rt   test_pXTINY%  r   z!TestPearsonrWilkinson.test_pXTINYc                 C   r   r   )re   r   rc   ROUNDr	   r   rs   rs   rt   test_pXROUND*  r   z"TestPearsonrWilkinson.test_pXROUNDc                 C   r   r   )re   r   r   r	   r   rs   rs   rt   test_pBIGBIG/  r   z"TestPearsonrWilkinson.test_pBIGBIGc                 C   r   r   )re   r   r   r   r	   r   rs   rs   rt   test_pBIGLITTLE4  r   z%TestPearsonrWilkinson.test_pBIGLITTLEc                 C   r   r   )re   r   r   r   r	   r   rs   rs   rt   test_pBIGHUGE9  r   z#TestPearsonrWilkinson.test_pBIGHUGEc                 C   r   r   )re   r   r   r   r	   r   rs   rs   rt   test_pBIGTINY>  r   z#TestPearsonrWilkinson.test_pBIGTINYc                 C   r   r   )re   r   r   r   r	   r   rs   rs   rt   test_pBIGROUNDC  r   z$TestPearsonrWilkinson.test_pBIGROUNDc                 C   r   r   )re   r   r   r	   r   rs   rs   rt   test_pLITTLELITTLEH  r   z(TestPearsonrWilkinson.test_pLITTLELITTLEc                 C   r   r   )re   r   r   r   r	   r   rs   rs   rt   test_pLITTLEHUGEM  r   z&TestPearsonrWilkinson.test_pLITTLEHUGEc                 C   r   r   )re   r   r   r   r	   r   rs   rs   rt   test_pLITTLETINYR  r   z&TestPearsonrWilkinson.test_pLITTLETINYc                 C   r   r   )re   r   r   r   r	   r   rs   rs   rt   test_pLITTLEROUNDW  r   z'TestPearsonrWilkinson.test_pLITTLEROUNDc                 C   r   r   )re   r   r   r	   r   rs   rs   rt   test_pHUGEHUGE\  r   z$TestPearsonrWilkinson.test_pHUGEHUGEc                 C   r   r   )re   r   r   r   r	   r   rs   rs   rt   test_pHUGETINYa  r   z$TestPearsonrWilkinson.test_pHUGETINYc                 C   r   r   )re   r   r   r   r	   r   rs   rs   rt   test_pHUGEROUNDf  r   z%TestPearsonrWilkinson.test_pHUGEROUNDc                 C   r   r   )re   r   r   r	   r   rs   rs   rt   test_pTINYTINYk  r   z$TestPearsonrWilkinson.test_pTINYTINYc                 C   r   r   )re   r   r   r   r	   r   rs   rs   rt   test_pTINYROUNDp  r   z%TestPearsonrWilkinson.test_pTINYROUNDc                 C   r   r   )re   r   r   r	   r   rs   rs   rt   test_pROUNDROUNDu  r   z&TestPearsonrWilkinson.test_pROUNDROUNDN)r   r   r   __doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rs   rs   rs   rt   r     s.    r   T)cpu_onlyc                   @   sr  e Zd Zedddd Zeddddd	 Zedddd
d Zeddddd Zeddddd Zeddde	j
dddgdd Zeddddd Zeddddd Zeddddd Zeddddd Zeddddd Zedddd d! Ze	j
jdde	j
d"g d#d$d% Zedddd&d' Zedddd(d) Ze	j
jddd*d+ Ze	j
d,e	j
jdde	j
d-e	j
d.d/e	j
d0d1d2d3 Ze	j
jdde	j
d.d/d4d5 Ze	j
jdde	j
d6d7d8gd9d: Ze	j
jddd;d< Zd=d> Zedddd?d@ Zeddde	j
d6g dAe	j
d.g d/dBdC ZdDS )ETestPearsonrTr   c                 C   ,   t tt}d}t|| t|j|j d S Ncorrelationpvalue)re   r   rc   r   r   r   	statisticrj   r   
attributesrs   rs   rt   test_pearsonr_result_attributes  s   
z,TestPearsonr.test_pearsonr_result_attributesrB   )JAX arrays do not support item assignmentrD   c              	   C   sV   | d}t||\}}t||ddd t||dtdtd d d S )N      @r   V瞯<atolr   r0   r   re   r   r.   rb   r   sqrtspacingrj   rk   ar   probrs   rs   rt   test_r_almost_exactly_pos1  s   
(z'TestPearsonr.test_r_almost_exactly_pos1c              	   C   sX   | d}t|| \}}t||ddd t||dtdtd d d S )Nr         r   r   r   r0   r   r   r   rs   rs   rt   test_r_almost_exactly_neg1  s   
(z'TestPearsonr.test_r_almost_exactly_neg1c                 C   sP   | g d}| g d}t||\}}t|| d t|| d d S )Nr^   r   r   )r   r   r1   LXz?UUUUUU?)rb   re   r   r.   )rj   rk   r   br   r   rs   rs   rt   
test_basic  s
   zTestPearsonr.test_basicc                 C   s   d}t jtj|d1 |g d}|g d}t||\}}t|||j t|||j W d    d S 1 s>w   Y  d S )NAn input array is constantr   MbX?r   r   rh|?v/?gsh|??pytestwarnsre   ConstantInputWarningrb   r   r.   ri   rj   rk   r   rl   rm   r   prs   rs   rt   test_constant_input  s   "z TestPearsonr.test_constant_inputdtyper   r   c              	   C   s   t t|}t ||}|jdddtjd|d g|d}|jddddtjd|d  g|d}d}tjtj|d t|| W d    d S 1 sJw   Y  d S )Nr0   r
  r1   r4   z/An input array is nearly constant; the computedr   )	getattrr   rb   r   r  r  re   NearConstantInputWarningr   )rj   rk   r
  npdtyperl   rm   r   rs   rs   rt   test_near_constant_input  s   

"&"z%TestPearsonr.test_near_constant_inputc                 C   h   |j g d|jd}|j g d|jd}t||\}}t||j d|jd t||j d|jd d S )N)gy)r?gxd{s?gnp?g$9"o?ge =:k?r  )goȟg`
,gzg2l?g>??'ge;E?g3R?rb   r   re   r   r.   rj   rk   rl   rm   r   r  rs   rs   rt   test_very_small_input_values  s   

z)TestPearsonr.test_very_small_input_valuesc                 C   sl   d|j g d|jd }d|jd|jd }t||\}}t||j d|jd t||j d|jd d S )NgY)	kR)r   r   r   r   r   r   r   r  r5   r   g͗~-?)rb   r   r   re   r   r.   r  rs   rs   rt   test_very_large_input_values  s
   z)TestPearsonr.test_very_large_input_valuesc                 C   r  )N)g7	igNig_b4igZbir  )gDig<'(½igmQiZbtig*D{?gݣ?r  r  rs   rs   rt   !test_extremely_large_input_values  s
   z.TestPearsonr.test_extremely_large_input_valuesrC   c           
      C   st   | ddg}| ddg}t||}|\}}| d}t|| t|| | \}}	t||  t|	| d S )Nr          @r   rK   rb   re   r   r/   confidence_interval
rj   rk   rl   rm   r   r   r  onelowhighrs   rs   rt   test_length_two_pos1  s   


z!TestPearsonr.test_length_two_pos1c           
      C   sv   | ddg}| ddg}t||}|\}}| d}t||  t|| | \}}	t||  t|	| d S )Nr  r   r   rK   r  r  rs   rs   rt   test_length_two_neg1  s   

z!TestPearsonr.test_length_two_neg1c                 C   s   d}t jtj|d1 |ddg}|ddg}t||\}}t|||j t|||j W d    d S 1 s>w   Y  d S )Nr   r   r   r  r  r  r  rs   rs   rt   test_length_two_constant_input  s   "z+TestPearsonr.test_length_two_constant_inputz$alternative, pval, rlow, rhigh, sign))	two-sided?gmgƎ?r   )lessK˅?r^   g?
?r   )greater.?gդζr   r   )r!  r"  gfǎgl?r^   )r#  r&  r   gդζ?r^   )r%  r$  g?
r   r^   c           
      C   sl   g d}t g d| }tj|||d}t|jd| dd t|j|dd | }	t|	||fdd d S )Nr   r0   r1   r2   )r   r   r9   r   alternativeg?r8   rtolư>)r   r   re   r   r
   r   r   r  )
rj   r)  pvalrlowrhighsignrl   rm   resultcirs   rs   rt   test_basic_example)  s   	zTestPearsonr.test_basic_examplec                 C   s\   | d}| }tj||dd}tj||dd}t|j|d t|j|ddd d S )	Nr   r%  r(  r#  r   r   g#B;r   )r   re   r   r.   r   rb   )rj   rk   rl   rm   test_greater	test_lessrs   rs   rt   (test_negative_correlation_pvalue_gh17795:  s   
z5TestPearsonr.test_negative_correlation_pvalue_gh17795c           
      C   s~   | g d}| g d}t||}|\}}| d}t||  t|d| dd | \}}	t||  t|	| d S )Nr   r  r   )rK   g      g      *r   r   Hz>r   )rb   re   r   r.   r  r/   r  rs   rs   rt   #test_length3_r_exactly_negative_oneD  s   
z0TestPearsonr.test_length3_r_exactly_negative_onec                 C   s  g d}ddg}d}t jt|d t|| W d    n1 s"w   Y  dg}dg}d}t jt|d t|| W d    n1 sGw   Y  g d	}g d	}d
}t jt|d t|| W d    n1 snw   Y  d}t jt|d tjddgddgdd W d    n1 sw   Y  tddgddg}t jt|d |jdd W d    d S 1 sw   Y  d S )Nr   r0   r1   r2   r3   z3`x` and `y` must have the same length along `axis`.r   r   r0   (`x` and `y` must have length at least 2.)             y              y             z+This function does not support complex dataz"`method` must be an instance of...r1   
asymptoticmethodexact)r  r   r   re   r   r  )rj   rl   rm   messager   rs   rs   rt   test_input_validationT  s4   "z"TestPearsonr.test_input_validationrX   z-Monte Carlo method needs > a few kB of memoryr)  r#  r%  r!  method_namepermutationmonte_carlomonte_carlo2c                 C   s   t jd}|dkrdnd}|j|d}|j|d}tj|dtj|jfd dtjd	dd
}|| }tj||||dd}	tj|||dd}
t|	j	|
j	dd t|	j
|
j
ddd |dkr~tjd	d}tj||||dd}t|j	|	j	 t|j
|	j
 d S d S )Nl   o#[mrF  r0   d   )r0     sizerngr0   rvsi  rE  r^   )r)  r?  rS   r)  rS   r   r*  {Gz?MbP?r+  r   rH  )r   randomdefault_rngnormalre   PermutationMethodMonteCarloMethodr   r
   r   r   r   )rj   rD  r)  rO  rM  rl   rm   methodsr?  r   refres2rs   rs   rt   test_resampling_pvaluep  s&   

z#TestPearsonr.test_resampling_pvaluec           
      C   s   t jd}|jdd}|jdd}tj|||dd}t jd}tj|d}|j|d}| }t||d	d
 t jd}tj|d}|j|d}	t|	| d S )Nl   _Y F rI  rL  r^   rR  l   |#(AkPrandom_stater>  gQ?r   rN  )	r   rV  rW  rX  re   r   BootstrapMethodr  r
   )
rj   r)  rO  rl   rm   r   r?  res_ciref_cires_ci2rs   rs   rt   test_bootstrap_ci  s   zTestPearsonr.test_bootstrap_cirS   r   r   c                 C   s   t jd}d}|jd| d\}}tj|||d}| }|dkr)|j|j}}t|j	d D ]4}	t||	 ||	 }
|
 }t
|j|	 |
j t
|j|	 |
j t
|j|	 |j t
|j|	 |j q0d S )N   I.v# r7   rX   r0   rL  rR   r   )r   rV  rW  rX  re   r   r  Trangeshaper
   r   r   r  r  )rj   rS   rk   rO  rk  rl   rm   r   r2  ires_ici_irs   rs   rt   test_axis01  s   zTestPearsonr.test_axis01c           
      C   s   t jd}d}|jd| d\}}tj||d d}| }t| | }| }	t|j	|j	 t|j
|j
 t||	 d S )Nrf  rg  rh  rL  rR   )r   rV  rW  rX  re   r   r  ravelr
   r   r   )
rj   rk   rO  rk  rl   rm   r   r2  r\  ci_refrs   rs   rt   test_axis_None  s   zTestPearsonr.test_axis_Nonec                 C   s  | d }}d}tjt|d tj||dd W d    n1 s#w   Y  d}tjt|d tj|| ddd W d    n1 sGw   Y  d	}tjt|d tj| d| ddd W d    n1 snw   Y  d
}tjt|d tj|| ddd W d    n1 sw   Y  d}t|s|d}tjt|d tj||t d W d    d S 1 sw   Y  d S d S )N)r0   r3   z`axis` must be an integer.r   r:   rR   z2`x` and `y` must have the same length along `axis`r0   r   r   r;  z"`x` and `y` must be broadcastable.r1   r3   z:`method` must be `None` if arguments are not NumPy arrays.rX   r>  )	onesr  r   r   re   r   r*   r   rY  )rj   rk   rl   rm   rA  rs   rs   rt   test_nd_input_validation  s0   
"z%TestPearsonr.test_nd_input_validationc                 C   sD  t jd}||d}||d}d}tjtj|d t|}d|d< tj	||dd}|
 }|j|j|jd}	t|jd	 |	 t|jd	 |	 t|jd	 |	 t|jd	 |	 |||jdd  rmJ |||jdd  r|J |||jdd  rJ |||jdd  rJ W d    n1 sw   Y  d
}tjtj|d d|d< tj	||dd W d    n1 sw   Y  |ddgddgddgddgg}|ddgddgddgddgg}
|d}tj	||
dd}|
 }t|j|g d t|j| t|j|  t|j| d S )Nl   U!Jrt  r   r   r   )r   .rR   r  r   z!An input array is nearly constantg     ?r   r   r0   r   r2   r^   )r   r^   r^   r   )r   rV  rW  rb   r  r  re   r  r)   r   r  ri   r   r/   r   r   r  r  anyisnanr  ru  r.   )rj   rk   rO  x0y0rA  rl   r   r2  ri   rm   ru  rs   rs   rt   test_nd_special_cases  sB    ""
z"TestPearsonr.test_nd_special_cases)r   r   Nc           
      C   s   t jdd\}}tj||||||d}tj||||d}t|j||j t|j||j | }| }	t|j	||	j	 t|j
||	j
 d S )N)r0   rX   rY   rL  rS   r)  )rO  rX  re   r   rb   r.   r   r   r  r  r  )
rj   rk   rS   r)  rl   rm   r   r\  rb  rc  rs   rs   rt   test_array_api  s   zTestPearsonr.test_array_apiN) r   r   r   rG   r   r   r   r   r	  r  markparametrizer  r  r  r  r  r  r   r3  r6  r9  rB  	fail_slowxfail_on_32bitr^  re  ro  rr  rv  r|  r~  rs   rs   rs   rt   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	j
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ej	
 dd Zej	dej	
 dd Zej	 dd  Zd!S )"TestFisherExacta  Some tests to show that fisher_exact() works correctly.

    Note that in SciPy 0.9.0 this was not working well for large numbers due to
    inaccuracy of the hypergeom distribution (see #1218). Fixed now.

    Also note that R and SciPy have different argument formats for their
    hypergeometric distribution functions.

    R:
    > phyper(18999, 99000, 110000, 39000, lower.tail = FALSE)
    [1] 1.701815e-09
    c                 C   s  t j}|ddgddggd }t|ddd |d	d
gddggd }t|ddd |d
dgdd
ggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgdd
ggd }t|d |dd
gddggd }t|d |d
dgdd
gg}t|d ddd t|d d d S ) N8   N  0u  @  r   g؞Y?r2   significantrJ  r0   rK  r3   g,Ԛ?r5   r6   g2c?r4   rX   gY
A?      g_?r      gO^M?r   gօa?r1   r   ggE?g$I$I?)re   fisher_exactr	   )rj   r  r   rs   rs   rt   r     s0   

zTestFisherExact.test_basicc                 C   s  ddgddggdfddgddggdfdd	gd
d
ggdfddgddggdfddgddggdfd
dgd
d	ggdfd
dgd
dggdfddgd	dggt jdffddgd	dggdfdd	gddggt jdffdd	gddggdfg}|D ]\}}tt |}t jj|d	 |d	 ddd qmd S )NrJ  r0   rK  r3   )gAn&	?g}K
T?r5   r6   )g	7?g?r   rX   )g!@j)A?r  r  )gU!a?gKY?r   r  )g7X?g~ltP?)gFu|?r  r   )r   gQN^?r2   gaa?r   r   gaa?r1   rY   T)decimalverbose)r   infre   r  rb   testingr   )rj   tablisttableres_rr   rs   rs   rt   test_precise8  s$   zTestFisherExact.test_precisec                 C   s|   ddgddgg}t |}t|d d ddgdd	gg}t |}t|d d
 ddgddgg}t |}t|d d d S )Nr4   %   l      r   gmt?   r   f   g,:^   0   i  i\B  gNQ8re   r  r
   rj   rl   r   rs   rs   rt   test_gh4130P  s   


zTestFisherExact.test_gh4130c                 C   s0   ddgddgg}t |}t|d ddd d S )NiiX iV iW r   r   gѧRr   r  r  rs   rs   rt   test_gh9231f  s   
zTestFisherExact.test_gh9231c                 C   st   g d}t |g dD ]\}}tddgd|ggd }t||dd qtd	d
gddggd }t|ddd d S )N)g?=gNuP=gs=)K   L   M   i(E  i  i)  r   r2   r  iPF  i8 r  i_ g^K=?)zipre   r  r	   )rj   pvalsr-  numr   rs   rs   rt   test_large_numbersm  s   z"TestFisherExact.test_large_numbersc                 C   sH   d}t jt|d ttd W d    d S 1 sw   Y  d S )Nz+The input `table` must have two dimensions.r   r4   )r  r   r   re   r  r   r   rj   rA  rs   rs   rt   test_raisesx     "zTestFisherExact.test_raisesc                 C   sn   ddgddggddgddggddgddggddgddggf}|D ]}t |\}}t|d t|tj q d S )Nr   r3   rX   r   )re   r  r   r   ri   )rj   tablesr  	oddsratior-  rs   rs   rt   test_row_or_col_zero~  s   
z$TestFisherExact.test_row_or_col_zeroc                 C   s  ddgddggddgddggddgdd	ggd
dgddggddgddggddgddggddgddggddgddggddgddggf	}ddgddgddgddgddgddgddgddgddgf	}t ||D ]&\}}g }|tj|ddd  |tj|d dd  t||dd!d" qcd S )#Nr0   r5   r6   r  i,     rU   r4   i     i   i  r   r1   r   r2   gI[?gq}!?r   g2\&gQp6g:O_?g a?皙?ffffff??333333?UUUUUU?r   r#  r(  r%  r8  )r   r+  )r  appendre   r  r
   )rj   r  r  r  r-  r   rs   rs   rt   test_less_greater  s4   z!TestFisherExact.test_less_greaterc                 C   s   t ddgddgg\}}d S )Nr   r0   r7   i")re   r  )rj   oddsr   rs   rs   rt   test_gh3014  s   zTestFisherExact.test_gh3014r)  r!  r#  r%  c                 C   s:   t ddgddgg}tj||d}t|j|jf| d S )Nr  r  r  r  r(  )r   r   re   r  r   r   r   )rj   r)  r  r   rs   rs   rt   test_result  s   zTestFisherExact.test_resultc                 C   s  t jd}t ddgddgg}d}tjt|d tj|d}tj	||dd	 W d    n1 s3w   Y  d
}tjt|d tj
|d}tj	||d W d    n1 sYw   Y  d}tjt|d tjtjjd}tj	||d W d    n1 sw   Y  d}tjt|d t	t d W d    n1 sw   Y  t jt	g dgd t jt	dgdgdggd t jt	t dd d S )N   9o8o r0   r5   r6   z4`alternative` must be the default \(None\) unless...r   rN  r#  r?  r)  z6...not recognized; if provided, `method` must be an...r>  z3If the `method` argument of `fisher_exact` is an...rP  z2`table` must have at least one row and one column.r   r   r:  r   r   r   r1   r0   r1   )r   rV  rW  rb   r  r   r   re   rY  r  ra  rZ  normrQ  zerosr  r   )rj   rO  r  rA  r?  rs   rs   rt   $test_input_validation_edge_cases_rxc  s0    z4TestFisherExact.test_input_validation_edge_cases_rxcrX   c                 C   s   t jd}t ddgddgg}t|}|j}t|jdd|jdd	|}tj
|d}tj||d	}t|j|d
d t|j| tj|d}tj||d	}t|j|jd
d t|j| d S )Nr  r0   r5   r6   r   rR   r   rN  r>  g{Gzd?r   )r   rV  rW  rb   re   r  r   random_tablesumpmfrZ  r
   r   r   rY  )rj   rO  r  r\  
ref_pvalueref_statr?  r   rs   rs   rt   test_resampling_2x2  s   
"z#TestFisherExact.test_resampling_2x2c                 C   s   g dg dg dg dg dg}t |}d}t jd}tj|d}tj||d	}t|j|d
d tj	|dd}tj||d	}t|j|d
d d S )N)r   r0   r0   r   r   r   r   )r0   r   r   r0   r1   r   r   )r   r   r   r   r0   r5   r1   )r   r   r0   r   r   r   r   )r   r   r   r   r   r   r   gk$?l   |KrN  r>  gMb@?r   i )rO  n_resamples)
r   rb   rV  rW  re   rY  r  r
   r   rZ  )rj   r  r  rO  r?  r   rs   rs   rt   test_resampling_rxc  s   
z#TestFisherExact.test_resampling_rxcc           
   	   C   s   t jd}tj|d}tddD ]:}tddD ]2}tddD ]*}tddD ]"}t ||g||gg}t|}tj||d}	t|	j	|j	dd q&qqqd S )	Nr  rN  r   r1   r2   r>  +=r   )
r   rV  rW  re   rY  rj  rb   r  r
   r   )
rj   rO  r?  r   r   cdr  r\  r   rs   rs   rt   test_resampling_exact_2x2  s   
z)TestFisherExact.test_resampling_exact_2x2N)r   r   r   r   r   r  r  r  r  r  slowr  r  r  r  r  r  r  r  r  r  r  xslowr  rs   rs   rs   rt   r    s.    


"


r  c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFS )GTestCorrSpearmanrr   c                 C   s"   t dd}tt|  d S )Nr   r  )re   	spearmanrr   r   ry  all)rj   rm   rs   rs   rt   test_scalar  s   zTestCorrSpearmanr.test_scalarc                 C   s0   t ttjg dddg t ttjg dd d S )Nr   r0   r   r6   r7   )r   r   re   r  rj   rs   rs   rt   test_uneven_lengths#  s   z%TestCorrSpearmanr.test_uneven_lengthsc                 C   s   t jd t jdd}t jdd}t||jjdks J tj|j|jddj	jdks0J t
ttj||dd t
ttj|j|j d S )N鄋 r2   r1   r0   r3   r3   r   rR   )r   rV  seedrandnre   r  r   rk  ri  r   r   r   rj   rl   rm   rs   rs   rt   test_uneven_2d_shapes'  s    z'TestCorrSpearmanr.test_uneven_2d_shapesc                 C   sz   t jd t jddd}tttj| tttj|| tttj|d d  ttj||d dtj|	 |	 dd d S )Nr  r2   r1   r0   rR   r   )
r   rV  r  r  r   r   re   r  r
   flattenrj   rl   rs   rs   rt   test_ndim_too_high2  s   z$TestCorrSpearmanr.test_ndim_too_highc                 C   sp   t d}t j|d< tt||t jt jf ttj||ddd tttj||dd tttj||dd d S )Nr   r7   r   r   )r   r   r   r   )r   r   ri   r   re   r  r   r   r  rs   rs   rt   test_nan_policy<     

z!TestCorrSpearmanr.test_nan_policyc                 C   s   t jd t jdd}d}t j|d d |f< t j||dd}tj|dd\}}t|\}}t jt j||dd|dd}t jt j||dd|dd}t||d	d
 t||d	d
 d S )Nr3   rX   r4   r   rR   r   r   r   r  r   )	r   rV  r  randri   deletere   r  r
   )rj   rl   krm   corxpxcorypyrs   rs   rt   test_nan_policy_bug_12458E  s   z+TestCorrSpearmanr.test_nan_policy_bug_12458c                    sp   t jd d d}t j |t jd< t jd< tjddd\}} fdd	t D }t|| d S )
Nr3   rX   r   r   )r1   r^   r   	propagaterS   r   c                    s$   g | ]  fd dt D qS )c              	      s2   g | ]}t |d d f  d d f jqS N)re   r  r   .0rl  )jrl   rs   rt   
<listcomp>Z  s   2 zJTestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>.<listcomp>rj  r  mrl   r  rt   r  Z  s    z?TestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>)	r   rV  r  r  ri   re   r  rj  r
   )rj   ncorrr   r   rs   r  rt   test_nan_policy_bug_12411R  s   

z+TestCorrSpearmanr.test_nan_policy_bug_12411c                 C   r   r   )re   r  rc   r	   r   rs   rs   rt   test_sXX^  r   zTestCorrSpearmanr.test_sXXc                 C   r   r   )re   r  rc   r   r	   r   rs   rs   rt   
test_sXBIGc  r   zTestCorrSpearmanr.test_sXBIGc                 C   r   r   )re   r  rc   r   r	   r   rs   rs   rt   test_sXLITTLEh  r   zTestCorrSpearmanr.test_sXLITTLEc                 C   r   r   )re   r  rc   r   r	   r   rs   rs   rt   test_sXHUGEm  r   zTestCorrSpearmanr.test_sXHUGEc                 C   r   r   )re   r  rc   r   r	   r   rs   rs   rt   test_sXTINYr  r   zTestCorrSpearmanr.test_sXTINYc                 C   r   r   )re   r  rc   r   r	   r   rs   rs   rt   test_sXROUNDw  r   zTestCorrSpearmanr.test_sXROUNDc                 C   r   r   )re   r  r   r	   r   rs   rs   rt   test_sBIGBIG|  r   zTestCorrSpearmanr.test_sBIGBIGc                 C   r   r   )re   r  r   r   r	   r   rs   rs   rt   test_sBIGLITTLE  r   z!TestCorrSpearmanr.test_sBIGLITTLEc                 C   r   r   )re   r  r   r   r	   r   rs   rs   rt   test_sBIGHUGE  r   zTestCorrSpearmanr.test_sBIGHUGEc                 C   r   r   )re   r  r   r   r	   r   rs   rs   rt   test_sBIGTINY  r   zTestCorrSpearmanr.test_sBIGTINYc                 C   r   r   )re   r  r   r   r	   r   rs   rs   rt   test_sBIGROUND  r   z TestCorrSpearmanr.test_sBIGROUNDc                 C   r   r   )re   r  r   r	   r   rs   rs   rt   test_sLITTLELITTLE  r   z$TestCorrSpearmanr.test_sLITTLELITTLEc                 C   r   r   )re   r  r   r   r	   r   rs   rs   rt   test_sLITTLEHUGE  r   z"TestCorrSpearmanr.test_sLITTLEHUGEc                 C   r   r   )re   r  r   r   r	   r   rs   rs   rt   test_sLITTLETINY  r   z"TestCorrSpearmanr.test_sLITTLETINYc                 C   r   r   )re   r  r   r   r	   r   rs   rs   rt   test_sLITTLEROUND  r   z#TestCorrSpearmanr.test_sLITTLEROUNDc                 C   r   r   )re   r  r   r	   r   rs   rs   rt   test_sHUGEHUGE  r   z TestCorrSpearmanr.test_sHUGEHUGEc                 C   r   r   )re   r  r   r   r	   r   rs   rs   rt   test_sHUGETINY  r   z TestCorrSpearmanr.test_sHUGETINYc                 C   r   r   )re   r  r   r   r	   r   rs   rs   rt   test_sHUGEROUND  r   z!TestCorrSpearmanr.test_sHUGEROUNDc                 C   r   r   )re   r  r   r	   r   rs   rs   rt   test_sTINYTINY  r   z TestCorrSpearmanr.test_sTINYTINYc                 C   r   r   )re   r  r   r   r	   r   rs   rs   rt   test_sTINYROUND  r   z!TestCorrSpearmanr.test_sTINYROUNDc                 C   r   r   )re   r  r   r	   r   rs   rs   rt   test_sROUNDROUND  r   z"TestCorrSpearmanr.test_sROUNDROUNDc                 C   r   r   )re   r  rc   r   r   r   r   r   rs   rs   rt    test_spearmanr_result_attributes  s   
z2TestCorrSpearmanr.test_spearmanr_result_attributesc                 C   s@   g d}g d}t ||}t t||gj}t|| d S )Nr   r0   r1   r2   r3   r4   )r   r0   r1   r2   r4   r3   )re   r  r   rb   ri  r
   rj   x1x2res1r]  rs   rs   rt   test_1d_vs_2d  s
   zTestCorrSpearmanr.test_1d_vs_2dc                 C   sf   dD ].}dt jddddg}dddddt jg}tj|||d}tjt ||gj|d}t|| qd S )	N)r  r   r   r1   r2   r3   r4   r0   r   )r   ri   re   r  rb   ri  r
   )rj   r   r  r  r  r]  rs   rs   rt   test_1d_vs_2d_nans  s   z$TestCorrSpearmanr.test_1d_vs_2d_nansc                 C   s   t d}| }t g d}t |||gj}t|}t g dg dg dg}t jdtd}d|d	d
d	f< d|d
d	d	f< t	|j
| t	|j| d S )Nr4   )r   r   r0   r1   r3   r2   )r   r^   3+?)r^   r   3+)r  r  r   r1   r1   r  g+Hs]s?r0   r   )r   r   r   rb   ri  re   r  r  floatr
   r   r   )rj   r  r  x3rl   actualexpected_correxpected_pvaluers   rs   rt   
test_3cols  s   


zTestCorrSpearmanr.test_3colsc              
   C   s   t t jddddddgdt jddd	ddgg d
gj}t t jt jt jgt jt jt jgt jt jdgg}ttj|ddj| tj|ddj}t|d d |d d |d d fddd d S )Nr   r   rK   ffffff@r   ffffff"@ffffff@g333333@皙@)r9   r   ffffff@ffffff@r   r#  ffffff@r   r  r   r   r   r   r0   )gacJC?g%ln?g_0nYt!޿r,  r*  )r   r   ri   ri  r
   re   r  r   )rj   rl   r  r   rs   rs   rt   test_gh_9103  s"   "
zTestCorrSpearmanr.test_gh_9103c           
      C   s   d}t jd t j|}t j|dk}|dk}t |}tj||ddj}t j||< tj||ddj}|	t j
}tj||ddj}g d}	t|||g|	 d S )NrJ  iH r  r9   r   r   )gonj?)Wn%?r+  )r   rV  r  r  r   re   r  r   ri   astypeint32r
   )
rj   r  rl   r  r   r   r  r]  res3expectedrs   rs   rt   test_gh_8111  s   

zTestCorrSpearmanr.test_gh_8111N)&r   r   r   r   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r"  r*  r0  rs   rs   rs   rt   r    sH    
		r  c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejd d!d"d# Zd$S )%TestCorrSpearmanr2z-Some further tests of the spearmanr function.c                 C   sH   g d}g d}d}t ||}t|d |d  t|d |d  d S )Nr   r0   r1   r2   r3   r3   r4   r5   r6   r5   gh
C?gR?r   r   )re   r  r	   rj   r  r  r/  r   rs   rs   rt   test_spearmanr_vs_r  s   z&TestCorrSpearmanr2.test_spearmanr_vs_rc                 C   s   t tg g tjtjf d S r  )r   re   r  r   ri   r  rs   rs   rt   test_empty_arrays!  s   z$TestCorrSpearmanr2.test_empty_arraysc                 C   s   t jd t t jjddddt jjddddg}ddgddgg}t t j||}d}t	|d |d }t
|d |d  t
|d |d  d S )	Nz  r     locscalerM  r   r  )gCzYW?ge*=r   )r   rV  r  r   rX  dotlinalgcholeskyre   r  r	   )rj   rl   r  r/  r   rs   rs   rt   test_normal_draws$  s   z$TestCorrSpearmanr2.test_normal_drawsc                 C   s"   t tg dg dd d d S )Nr   r   r0   r   r   )r	   re   r  r  rs   rs   rt   test_corr_10  s   "zTestCorrSpearmanr2.test_corr_1c                 C   p   t d}t j|d< tt||t jt jf ttj||ddd tttj||dd tttj||dd d S )Nr   r7   r   r   )r   r   r   r   )	r   r   ri   r   re   r  r
   r   r   r  rs   rs   rt   test_nan_policies3  r  z$TestCorrSpearmanr2.test_nan_policiesc                 C   s(   t d}t d}tttj|| d S )Nr         4@)r   r   r   r   re   r  r  rs   rs   rt   test_unequal_lengths<  s   

z'TestCorrSpearmanr2.test_unequal_lengthsc                 C   sT   g d}dddt jg}tj||dd}tj|d d |d d dd}t|| d S )Nr'  r6   r5   r4   r   r   r1   )r   ri   re   r  r   r  rs   rs   rt   test_omit_paired_valueA  s
    z)TestCorrSpearmanr2.test_omit_paired_valuec                 C   s   t td}t td}|d |d |d< |d< |d |d |d< |d< |d |d |d< |d< |tj |d ttj||d	d
d d d S )N  r7   r   i  rX   i  i  r   r   r   gV-?)listrj  r  r   ri   r   re   r  r  rs   rs   rt   #test_gh_issue_6061_windows_overflowH  s   
z6TestCorrSpearmanr2.test_gh_issue_6061_windows_overflowc                 C   s   d}t jtj|dQ tg dg d\}}t|tj t|tj tg dg d\}}t|tj t|tj tg dg d\}}t|tj t|tj W d    d S 1 s^w   Y  d S )Nr   r   r0   r0   r0   r0   r   r0   )r  r  re   r  r  r   r   ri   )rj   warn_msgr   r  rs   rs   rt   	test_tie0U  s   "zTestCorrSpearmanr2.test_tie0c                 C   sF   g d}g d}g d}g d}t ||}t ||}t|| d S )Nr   r  r   r   )r   r  r  r   )r   r;   r;   r   )re   r  r   r   )rj   rl   rm   xryrsrprrs   rs   rt   	test_tie1c  s   zTestCorrSpearmanr2.test_tie1c                 C   sZ   g d}g d}ddddt jg}ddddt jg}t||}tj||dd	}t|| d S )
N)r   r0   r;   r0   )r   r1   r;   r2   r   r0   r;   r1   r2   r   r   )r   ri   re   r  r   )rj   r  rn   r  ro   sr1sr2rs   rs   rt   	test_tie2p  s   zTestCorrSpearmanr2.test_tie2c                 C   s   t g dg dg}t g dg dg}t g dg dg}d}tjtj|dH tj|dd\}}t|t j t|t j tj|dd\}}t|t j t|t j tj|dd\}}t|t j t|t j W d    d S 1 svw   Y  d S )Nr   r   r   r   r'  r   r   r   rR   	r   r   r  r  re   r  r  r   ri   )rj   z1z2z3rM  r   r  rs   rs   rt   test_ties_axis_1~  s   "z#TestCorrSpearmanr2.test_ties_axis_1c                 C   s~   t g d}t g d}d}tjtj|d t||\}}t|t j t|t j W d    d S 1 s8w   Y  d S )N)
r   r   r   r   r   r   r   r   r   r   
r   gN}	?r   r   g	/`?gY%uX-H?gC1tq1?r   r   g*I?r   r   rY  )rj   rl   rm   rM  r   r  rs   rs   rt   test_gh_11111  s   "z TestCorrSpearmanr2.test_gh_11111c                 C   s4   t g d}t g d}tttj||dd d S )N)
r   r   r  r   r   r   r   r   r   r   r^  r0   rR   )r   r   r   r   re   r  r  rs   rs   rt   test_index_error  s   z#TestCorrSpearmanr2.test_index_errorc                 C   s   g d}g d}d}t j||dd}t|d |d  t|d d|d d   t j||d	d}t|d |d  t|d |d d  tjtd
d t j||dd W d    d S 1 s_w   Y  d S )Nr2  r3  r4  r#  r(  r   r   r0   r%  `alternative` must be 'less'...r   	ekki-ekki)re   r  r	   r  r   r   r5  rs   rs   rt   test_alternative  s   "z#TestCorrSpearmanr2.test_alternativer)  r  c           	      C   s   g d}g d}|t jg }|t jg }tt||t jt jf tj||d|d}tj|||d}t|| d}tjt|d tj||d|d W d    n1 sTw   Y  d	}tjt|d tj||d
|d W d    d S 1 sww   Y  d S )Nr2  r3  r   r   r)  r(  r   r   r   r   rb  )	r   ri   r   re   r  r
   r  r   r   )	rj   r)  r  r  x1nanx2nan
res_actualres_expectedrA  rs   rs   rt   test_alternative_nan_policy  s,   



"z.TestCorrSpearmanr2.test_alternative_nan_policyN)r   r   r   r   r6  r7  r@  rB  rD  rF  rG  rJ  rN  rT  rW  r]  r_  r`  rc  r  r  r  ri  rs   rs   rs   rt   r1    s&    
	r1  c                  C   sv  d} g d}g d}d}| D ]}t j|||d}t|d |d  t|d |d  qg d}g d	}d}| D ]}t j|||d}t|d |d  t|d |d  q7g d
}g d}d}| D ]}t j|||d}t|d |d  t|d |d  q`g d}g d}d}| D ]}t j|||d}t|d |d  t|d |d  qtd}td}d}| D ]}t j|||d}t|d |d  t|d |d  q|d }|d |d< ||d< d}| D ]}t j|||d}t|d |d  t|d |d  q|d }|d |d< ||d< d}| D ]}t j|||d}t|d |d  t|d |d  qtd}tdd d d }d}| D ]}t j|||d}t|d |d  t|d |d  qC|d }|d |d< ||d< d}| D ]}t j|||d}t|d |d  t|d |d  qs|d }|d |d< ||d< d}| D ]}t j|||d}t|d |d  t|d |d  qtg d}tg d}d}tt j||ddd | d}tt j||d dd | |d |d< ttt j||d!d" ttt j||d#d" ttt j||d$d g d%}g d&}d'}t ||}t|d |d  t|d |d  d(}	| D ]}t j|||d}t||	 t	|j
|j q5| D ]<}t	t jg d)g d)|dtjtjf t	t jg d*g d)|dtjtjf t	t jg d)g d*|dtjtjf qOt	t g g tjtjf tjd+ ttjjddd,d-tjjddd,d-g}d.d/gd/d.gg}
ttj|
|}d0}t |d |d }t|d |d  t|d |d  tt jg d1g d1ddd d. tt jg d1g d1d dd d2 td3}tj|d4< tt ||tjtjf tt j||d5d6d7d8d9 tt j||d5d:d;d<d8d9 ttt j||d=d6 ttt j||d>d6 td3}td?}ttt j|| t g g \}}t	tj| t	tj| t dgdg\}}t	tj| t	tj| tjd@tdA}tj|dB}tjd@tdA}t|dCd  |d dC f}ttt ||d  d S )DN)r   r  )r3   r0   r   r1   r4   r2   r5   r6   )r3   r0   r4   r1   r   r6   r5   r2   r  )variantr   r   )	r   r3   r0   r   r1   r4   r2   r5   r6   )	r3   r0   r   r4   r1   r   r6   r5   r2   )r3   r0   r   r1   r4   r2   r5   )r3   r0   r4   r1   r   r5   r2   )gJ$I¿gmK?)r0   r   r1   r4   r2   r5   r6   )r0   r4   r1   r   r6   r5   r2   )gJkaa?r   rX   )r   紞xO~>r0   )g?>?aV>r3   r4   )g}'}'?o&5>r^   )r   rk  )g?>rl  )g}'}'rm  )
r   r0   r0   r2   r2   r4   r4   r6   r7   r7   )
r   r0   r2   r2   r2   r2   r6   r6   r6   rX   gok|?r   gffffff?r  r@  r>  bananarmsrZ   r0   r   rZ   r0   r   r2   r5   r   r   )g}+޿g`=i?r   rK  rL  r8  r9  r:  r   r  )g\zf?g^n)=rA  g#q?r   r7   r   r   )r   g/>r,  r*  r=  )r   r?  )r   g&?r   r   rE  rH  r  i  rK  )re   
kendalltaur	   r   r   r   r   r   r   r   r   r   ri   rV  r  rX  r=  r>  r?  r   r
   r  mamasked_greaterconcatenater   isfinite)variantsrl   rm   r/  tauxr   r   r  r  r   r  taup_valuers   rs   rt   test_kendalltau  s,  










r|  c                  C   s   t jd tddD ]@} g }t| D ]	}||g| 7 }qt|}t j| t j| t||}t||}t	|d |d  t	|d |d  qd S )N*   r0   rX   r   r   )
r   rV  r  rj  rI  shufflemstats_basicrs  re   r	   )sr   rl  r   r/  r  rs   rs   rt   test_kendalltau_vs_mstats_basic  s   r  c                  C   sX   g d} t jdddg}tj| |dd}t| dd  |dd  }t|j|jdd d S )	NrO  333333@333333@r   r   r   r   r   )r   ri   re   rs  r
   r   )rl   rm   r1r2rs   rs   rt   test_kendalltau_nan_2nd_arg  s
   r  c                  C   sf   dd l } | d g d}d}| j||d}| j||d}t||}t|jd t|jddd	 d S )
Nr   i_ r   r0   r1   r2   r3   r4   r5   i@ r  g*8_2\S?gd`TR?gMb`?r   )rV  r  choicesre   rs  r
   r   r   )rV  classes	n_samplesrl   rm   r   rs   rs   rt    test_kendalltau_gh18139_overflow  s   
r  c                   @   sH  e Zd Zdd ZdZejejejgZg dZg dZ	g dZ
g dZg dZg d	Zg d
Zg dZdd Zeeeedgd eeeeedgd  Zejdedd Zeeeedgd eeeeedgd  Zejdedd Zeeee	dgd eeeee	dgd  Zejdedd Zeeee
dgd eeeee
dgd  Zejdedd Zeeeedgd eeeeedgd  Zejdedd Z eeeedgd eeeeedgd  Z!ejde!dd Z"eeeedgd eeeeedgd  Z#ejde#dd Z$eeeedgd eeeeedgd  Z%ejde%d d! Z&eeeedgd eeeeedgd  Z'ejde'd"d# Z(eeedgd eeedgd  Z)ejd$e)d%d& Z*ejd'd(ejd)d*d+d, Z+d-S ).TestKendallTauAlternativec                 C   s  g d}g d}t j||dd}|d dksJ t j||dd}t|d |d  t|d d|d d   t j||d	d}t|d |d  t|d |d d  |  t j||dd}|d dk sfJ t j||d	d}t|d |d  t|d d|d d   t j||dd}t|d |d  t|d |d d  tjtd
d t j||dd W d    d S 1 sw   Y  d S )Nr2  r3  r!  r(  r   r#  r   r0   r%  ra  r   rb  )re   rs  r   r
   reverser  r   r   r5  rs   rs   rt   &test_kendalltau_alternative_asymptotic  s,   "z@TestKendallTauAlternative.test_kendalltau_alternative_asymptotic)r#  r!  r%  )r   r   r9   )r   RUUUU?ZUUUU?)g~?r  r  )?r   r  )ˮ[?r   r  )g?gSǌ?gSǌ?)g:
?g3
?g<t'.?)gN  A?gss?gYss?c           	      C   s@   |rt | }|d9 }tj||d|d}||f}t|| d S )Nr^   r@  r  )r   rb   re   rs  r
   )	rj   rl   rm   r)  revstat_expected
p_expectedr   rh  rs   rs   rt   
exact_test%  s   z$TestKendallTauAlternative.exact_testFr1   Tzalternative, p_expected, revc                 C   s,   dgdg}}t j}| |||||| d S )Nr   r0   )r   ri   r  rj   r)  r  r  rl   rm   r  rs   rs   rt   test_against_R_n10  s   z+TestKendallTauAlternative.test_against_R_n1c                 C   s.   ddgddg}}d}|  |||||| d S )Nr   r0   r1   r2   g?r  r  rs   rs   rt   test_against_R_n29     z+TestKendallTauAlternative.test_against_R_n2c                 C   s.   g dg d}}d}|  |||||| d S )Nr:  r   r  r  rs   rs   rt   test_against_R_c0B  r  z+TestKendallTauAlternative.test_against_R_c0c                 C   .   g dg d}}d}|  |||||| d S )Nr'  )r   r0   r2   r1   gVUUUUU?r  r  rs   rs   rt   test_against_R_c1K  r  z+TestKendallTauAlternative.test_against_R_c1c                 C   r  )Nr2  )r   r3   r2   r0   r1   r   r  r  rs   rs   rt   test_against_R_no_correlationU  r  z7TestKendallTauAlternative.test_against_R_no_correlationc                 C   r  )Nr   r0   r1   r2   r3   r4   r5   r6   )r6   r4   r   r1   r0   r3   r2   r5   r   r  r  rs   rs   rt   test_against_R_no_correlationb_  r  z8TestKendallTauAlternative.test_against_R_no_correlationbc                 C   s,   g d}g d}d}|  |||||| d S )N)	g333333F@g33333F@g33333D@gfffffJ@gYF@gF@gYI@gF@gN@)	g@@r;   rK   @r   g@ffffff@r(  gqq?r  r  rs   rs   rt   test_against_R_lt_171h  s   z/TestKendallTauAlternative.test_against_R_lt_171c                 C   @   t jd t jd}t jd}d}| |||||| d S )Nr   rJ  gUm*,r   rV  r  r  r  r  rs   rs   rt   test_against_R_lt_171bu  
   z0TestKendallTauAlternative.test_against_R_lt_171bc                 C   r  )Nr      gH4?r  r  rs   rs   rt   test_against_R_lt_171c  r  z0TestKendallTauAlternative.test_against_R_lt_171czalternative, revc                 C   st   t jd t jd}t jd}tj||d|d}tj||d|d}t|d |d  t|d |d dd d S )	Nr   i  r@  r  r=  r   rT  r*  )r   rV  r  r  re   rs  r   r
   )rj   r)  r  rl   rm   res0r  rs   rs   rt   test_gt_171  s   

z%TestKendallTauAlternative.test_gt_171r?  )r@  r=  r)  r  c           
      C   s  g d}g d}|t jg }|t jg }tj||||d}t jt jf}t|| tj||d||d}tj||||d}t|| d}	tjt|	d tj||d||d W d    n1 s^w   Y  d	}	tjt|	d tj||d
||d W d    d S 1 sw   Y  d S )Nr2  r3   r4   r5   r6   r7   r  r   )r   r?  r)  r   r   r   r   rb  )r   ri   re   rs  r
   r  r   r   )
rj   r?  r)  r  r  re  rf  rg  rh  rA  rs   rs   rt   r    s8   





"z)TestKendallTauAlternative.test_nan_policyN),r   r   r   r  alternativesr   ri   p_n1p_n2p_c0p_c1p_no_correlationp_no_correlationb
p_n_lt_171p_n_lt_171bp_n_lt_171cr  rI  r  reversed	case_R_n1r  r  r  r  	case_R_n2r  	case_R_c0r  	case_R_c1r  case_R_no_corrr  case_no_cor_br  case_R_lt_171r  case_R_lt_171br  case_R_lt_171cr  case_gt_171r  r  rs   rs   rs   rt   r    s    4









r  c                  C   s2  g d} g d}t | |\}}t|d ttj| t j| |dd\}}t|d ttj| t j| |dd d	\}}t|d
 ttj| t | |}d}t|| t|j|j t j| |d d\}}t|d ttj| t j|| d d\}}t|d ttj| t j| |d dd\}}t|d ttj| t j|| d dd\}}t|d ttj| t j| |dd\}}t|d ttj| t j| |ddd d\}}t|d
 ttj| t j|| ddd d\}}t|d
 ttj| t tj	| tj
d|\}}t|d t tj	| tjd|\}}t|d t tj	| tj
dtj	|tj
d\}}t|d t g g \}}ttj| ttj| t dgdg\}}ttj| ttj| ttt jddgg d ttt jddgddgdg g d} ddddtjg}t | |\}}t|d ddtjddg} t | |\}}t|d g d} d d!d"d tjg}t | |\}}t|d d#d$tjd#d$g} t | |\}}t|d g d%} g d&}t | |\}}t|d' d#d$tjd#tjg} t | |\}}t|d' tjd!d"tjtjg}t | |\}}t|d' d S )(Nrp  rq  gs$F)additivegROoc                 S      dS Nr   rs   rl   rs   rs   rt   <lambda>      z"test_weightedtau.<locals>.<lambda>)weigherrr  r   )rankgڿgn)r  r  g @ڿg[đ(gIکnTc                 S   r  r  rs   r  rs   rs   rt   r    r  )r  r  c                 S   r  r  rs   r  rs   rs   rt   r    r  r  r   r   r   r   r0   r2   r5   rZ   r0   )      (@r  r   r  r  r   r   r   r  r  )r  r  r   r  r   )r   r   r   r   r   gt34+)re   weightedtaur	   r   r   ri   r   r   r   rb   r   int16r   r   )rl   rm   rz  r{  r   r   rs   rs   rt   test_weightedtau  s   



















r  c                   C   s6   t dgdg t dgdg t tjgdg d S )Nr   r   4   )re   r  r   ri   rs   rs   rs   rt   test_segfault_issue_9710  s   r  c                  C   sZ   d} t | d t}t | d t}t j|d< tj||ddd\}}t|d d S )N   r   r^   r@  r   )r?  r   r   )r   r   r,  r  ri   re   rs  r   )r  rl   rm   _r-  rs   rs   rt   test_kendall_tau_large  s   
r  c               
   C   s   dd } dd }t jd tddD ]U}g }t|D ]	}||g| 7 }qt|}t j| t j| t jt|t jd}td	D ]$}d
D ]}| |||||}	t	
|||||j}
t|	|
 qGt j| qCqd S )Nc                 S   sZ  d } } } }}	t tt| tt| D ]\}
}|r)|||
 |||  n|||
 |||  }||7 }| |
 | | krE||7 }||
 || krQ|	|7 }	| |
 | | k ra||
 || k sq| |
 | | krv||
 || krv||7 }q| |
 | | k r||
 || ks| |
 | | kr||
 || k r||7 }q|| t||  t||	  S )Nr   )r   rj  lenr   r   )rl   rm   r  r  addtotconcdiscuvrl  r  wrs   rs   rt   wkq+  s    "@
@$z*test_weightedtau_vs_quadratic.<locals>.wkqc                 S   s   d| d  S )Nr   r   rs   r  rs   rs   rt   r  ;     z.test_weightedtau_vs_quadratic.<locals>.weigherr}  r1   rX   r  r0   r\   )r   rV  r  rj  rI  r~  r   r  intpre   r  r   r	   )r  r  r  r   rl  r   r  r  r  r/  r  rs   rs   rt   test_weightedtau_vs_quadratic)  s&   r  c                   @   s   e Zd Zdd Zdd ZdS )TestFindRepeatsc                 C   sf   g d}d}t j|d t|\}}W d    n1 sw   Y  t|g d t|g d d S )N)r   r0   r1   r2   r   r0   r1   r2   r   r0   r3   +`scipy.stats.find_repeats` is deprecated...r   r'  )r1   r1   r0   r0   r  deprecated_callre   find_repeatsr   )rj   r   rA  r   numsrs   rs   rt   r   T  s   zTestFindRepeats.test_basicc              	   C   sh   g dg fD ]+}d}t j|d t|\}}W d    n1 s"w   Y  t|g  t|g  qd S )N)rX   r  2      (   r  r   r  )rj   r   rA  repeatedcountsrs   rs   rt   test_empty_result\  s   
z!TestFindRepeats.test_empty_resultN)r   r   r   r   r  rs   rs   rs   rt   r  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	e
jddd Ze
jddd Ze
jddd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*S )+TestRegressionc                 C   sb   t dd}d}tj|d t| W d    n1 s w   Y  t|d |d  d S )Nr  r0   rX   zInference of the two sets...r   r   r   )r   r   rg   r  r  re   
linregressrj   rl   rA  rs   rs   rt   test_one_arg_deprecationh  s   z'TestRegression.test_one_arg_deprecationc                 C   s@   t tt}t|jd t|jd t|jd t|jd d S )Nir   r   )	re   r  rc   r   r   	interceptrvaluestderrintercept_stderrrj   r1  rs   rs   rt   test_linregressBIGXo  s
   z"TestRegression.test_linregressBIGXc                 C   s@   t tt}t|jd t|jd t|jd t|jd d S )Nr   r   )re   r  rc   r   r  r  r  r  r  rs   rs   rt   test_regressXXy  s
   zTestRegression.test_regressXXc                 C   s(   t tt}t|jd t|jd d S )Nr   )re   r  rc   ZEROr   r  r  r  rs   rs   rt   test_regressZEROX  s   z TestRegression.test_regressZEROXc                 C   sj   t ddd}dt ddd d }|t t ddd7 }t||}t}tt|| t|j	d d S )Nr   rJ  皙?rX   r  穷4_Qc?)
r   linspacesinre   r  r!   r   
isinstancer   r  )rj   rl   rm   r1  lrrs   rs   rt   test_regress_simple  s   z"TestRegression.test_regress_simplec                 C   s   t ddd}dt ddd d }|t t ddd7 }tjtdd tj||dd	 W d    n1 s8w   Y  tj||d
d	}tj||dd	}t|j	d|j	d   tj||dd	}t|j	|j	d  |j
|j
  krw|j
kszJ  J d S )Nr   rJ  r  rX   r  ra  r   rb  r(  r!  r#  r   r0   r%  )r   r  r   r  r   r   re   r  r
   r   r  )rj   rl   rm   r  r]  r.  rs   rs   rt   test_regress_alternative  s   &z'TestRegression.test_regress_alternativec                 C   sr   g d}g d}t j||dd}t|jd t|jd t|jtd t|jd t|j	d	 t|j
d
 d S )N)
                              )
?   Q   8   [   /   9   r  H   >   r  r!  r(  gؗh?gJK@:Cgag?g->g5ՒO?g]؊E @)re   r  r
   sloper  r  r   r   r   r  r  )rj   rl   rm   r   rs   rs   rt   test_regress_against_R  s   z%TestRegression.test_regress_against_Rignore::DeprecationWarningc                 C   sp   t ddd}dt ddd d }|t t ddd7 }t ||f}t|}t|jd t|jd d S )Nr   rJ  r  rX   r  r  8?)	r   r  r   vstackre   r  r   r  r  )rj   rl   rm   rowsr1  rs   rs   rt   test_regress_simple_onearg_rows  s   
z.TestRegression.test_regress_simple_onearg_rowsc                 C   s   t ddd}dt ddd d }|t t ddd7 }t t |dt |df}t|}t|jd t|j	d d S )	Nr   rJ  r  rX   r  r   r  r  )
r   r  r   hstackexpand_dimsre   r  r   r  r  )rj   rl   rm   columnsr1  rs   rs   rt   test_regress_simple_onearg_cols  s   
z.TestRegression.test_regress_simple_onearg_colsc                 C   s   t ttjtd d S )Nr  )r   r   re   r  r   ru  r  rs   rs   rt   test_regress_shape_error  s   z'TestRegression.test_regress_shape_errorc                 C   s   t d}t dd}|ddg  d8  < |ddg  d7  < t||}dd	 }||jd
 ||jd ||jd ||jd ||jd ||j	d d S )NrY   r3   r   r   r   r^   c                 S   s   t | |ddS )NrV   r  )r   rl   rm   rs   rs   rt   	assert_ae     z1TestRegression.test_linregress.<locals>.assert_aer   rK   gePUn?g.bt>gڽE?gʺL7?)
r   r   re   r  r  r  r  r   r  r  )rj   rl   rm   r1  r&  rs   rs   rt   test_linregress  s   
zTestRegression.test_linregressc                 C   sz   d\}}t |d| |}t d| ||}t||}t|jdk t|jd tt |j  tt |j	  d S )N)gJr 11順 r0   r^   )
r   r  re   r  r   r  r   ry  r  r  )rj   r   r  rl   rm   r1  rs   rs   rt    test_regress_simple_negative_cor	  s   z/TestRegression.test_regress_simple_negative_corc                 C   s|   t ddd}dt ddd d }|t t ddd7 }t||}t}tt|| d}t|| dt	|v s<J d S )Nr   rJ  r  rX   r  )r  r  r  r   r  r  )
r   r  r   re   r  r!   r   r  r   dir)rj   rl   rm   r1  r  r   rs   rs   rt   !test_linregress_result_attributes	  s   
z0TestRegression.test_linregress_result_attributesc                 C   sJ   t d}t dd}t||}t|jd t|jd t|jd d S )Nr0   r1   r3   r   )r   r   re   r  r   r   r  r  rj   rl   rm   r1  rs   rs   rt   test_regress_two_inputs&	  s   
z&TestRegression.test_regress_two_inputsc                 C   sH   t d}t d}t||}t|jd t|jd t|jd d S )Nr0   r   r   )	r   r   ru  re   r  r   r   r  r  r-  rs   rs   rt   'test_regress_two_inputs_horizontal_line3	  s   

z6TestRegression.test_regress_two_inputs_horizontal_linec                 C   sl   g d}g d}t ||}t|jd t|jd t|jd d t|jd t|jd t|jd	 d S )
N)$r  gfffffu@ǧ]@g̤@333333$@g     Pl@gfffff҄@gfffff"@g	|@g     H@gq@皙?333333?g     <@g33333ׄ@g      u@g     {@g333333'@g     `@33333l@gfffff@g̼@g^@r  r  gffffff@g1u@g@g     8@g     X@g333333&@g33333]@gfffffl@g@fffff|@r9   )$r  g,u@gfffff]@     @r$  r3  g     @     4@g|@33333W@gy@r  r  gP@gfffff@4u@r4  g%@gm@gl@g     0@gfffffƋ@gfffff]@r  r2  gl@r8  r5  r6  r7  gffffff$@gffffff]@g̜l@g33333@g33333|@r  g?g!пr0   gpX?r   gh-h*<?gg?)	re   r  r   r  r  r  r   r  r  r-  rs   rs   rt   test_nist_norris@	  s   zTestRegression.test_nist_norrisc                 C   sz   t ddd}dt ddd d }|t t ddd7 }t||}t ||d}t|j|d  t|j|d  d S )Nr   rJ  r  rX   r  r   )	r   r  r   re   r  polyfitr   r  r  )rj   rl   rm   r1  polyrs   rs   rt   test_compare_to_polyfit[	  s   z&TestRegression.test_compare_to_polyfitc                 C   s   t ttjg g  d S r  )r   r   re   r  r  rs   rs   rt   test_empty_inputg	     zTestRegression.test_empty_inputc                 C   s   t d}t j|d< t jdd t||}W d    n1 s!w   Y  t}tt|| t	|t jfd  t
|jt j d S )Nr   r7   ignoreinvalidr3   )r   r   ri   errstatere   r  r!   r   r  r   r   r  )rj   rl   r1  r  rs   rs   rt   test_nan_inputj	  s   

zTestRegression.test_nan_inputc                 C   sX   t d}t jd}d}tt|d t|| W d    d S 1 s%w   Y  d S )NrX   z$Cannot calculate a linear regressionr   )r   r  rV  r   r   re   r  rj   rl   rm   r   rs   rs   rt   test_identical_xw	  s   
"zTestRegression.test_identical_xN)r   r   r   r  r  r  r  r  r  r  r  r  filterwarningsr  r!  r"  r(  r*  r,  r.  r/  r9  r<  r=  rC  rE  rs   rs   rs   rt   r  f  s0    
	





r  c                  C   sD  t g d\} }}}t| d t|d d}tjt|d t jg ddd W d    n1 s2w   Y  t jg ddd\} }}}t| d t|d g d	}g d
}t j||ddd\} }}}t| d t|d t|ddd t|ddd t j||ddd\} }}}t| d t|d t|ddd t|ddd d S )Nr   r   r   r9   zHmethod must be either 'joint' or 'separate'.'joint_separate' is invalid.r   joint_separater>  jointr   )r   r0   r1   r2   rX   rZ      )r7   r     r  -   7   N   gQ?separater2   r   gQ@r0   r$  gGz@r   )re   theilslopesr   r  r   r   )r  r  lowerupperr   rl   rm   rs   rs   rt   test_theilslopes	  s8   










rS  c                  C   sx   g d} t j| dd\}}}}t|tg d t j| ddd\}}}}t|dk d}t j| ddd}t|| d S )	Nr   r2   r0   r   r1   r   r2   numbins)r   r   rK   r   )r:   r3   )rV  defaultreallimitsr1   )cumcountr   binsizeextrapoints)re   cumfreqr   r   r   r   r   )rl   cumfreqslowlimrY  rZ  r   r   rs   rs   rt   test_cumfreq	  s   r^  c                  C   sz   t g d} tj| dd\}}}}t|tg d d}tj| dd}t|| tjg ddd\}}}}t|| d S )NrT  r2   rU  )r9   K}\UU?r_  r_  )	frequencyr   rY  rZ  )r   r   re   relfreqr   r   )r   relfreqsr]  rY  rZ  r   r   	relfreqs2rs   rs   rt   test_relfreq	  s   


rd  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 )TestScoreatpercentilec                 C   s"   g d| _ g d| _g d| _d S )N)r1   r2   r3   rX   r_   r4   )r1   r#  r6   r5   r2   r0   r   )r   r2   r3   rX   r_   rf  rg  r   )a1a2a3r  rs   rs   rt   setup_method	  s   

z"TestScoreatpercentile.setup_methodc                 C   sF   t dd }tt|dd tt|dd tt|dd d S )	Nr6   r9   r   r   rJ  r<   r        ?)r   r   re   scoreatpercentiler  rs   rs   rt   r   	  s   z TestScoreatpercentile.test_basicc                 C   s(  t j}t|ttddd t|ttdddd t|ttddddd t|tg ddd	d
 t|tg dddd t|ttddddd t|ttdddddd t|ttdddddd t|tg ddd	ddd
 t|tg dddddd d S )NrX   r  r=   r0   r5   rJ  r   r6   )limitr   rX   rJ  rX   rJ  rM  r   rX   r>   fractioninterpolation_methodrp  rv  re   rm  r   rI  rj  r   r   rj   scoreatpercrs   rs   rt   test_fraction	  s:   z#TestScoreatpercentile.test_fractionc                 C   s:  t j}t|ttddddd t|ttddddd t|ttdddddd t|ttddddd	d t|ttd
ddddd t|ttd
ddddd t|tg dddddd t|tg ddddd	d
 t|tg dddddd t|tg ddddd	d d S )NrX   r  rQ  ru  r2   higherr3   rn  rw  rJ  ro  rq  rr  rs  r   rx  ry  rs   rs   rt   test_lower_higher	  sf   z'TestScoreatpercentile.test_lower_higherc                 C   s   t dd }tg d}t|g d}t|| tt|tj tt|tg d| tjt d	dtg ddd	}tg d
g dg dg dg}t|| d S )Nr6   r9   )r   r<   rl  )r   rJ  r  rZ   r1   r2   )r   r   rJ  rJ  r   rR   )r   r2   r6   )Q?gQ@g(\ @r1   r5   rY   )
r   r   r   re   rm  r
   r   r  ndarrayrg   )rj   rl   r/  r   r]  	expected2rs   rs   rt   test_sequence_per	  s"   
z'TestScoreatpercentile.test_sequence_perc                 C   s   t j}tddd}t||dg d g dg dg dg}t||dd	d
| g dg dg dg}t||ddd
| tg dg dg dg dg dg}t |d}t|jd t|d t j|dd	d
}t|jd t|g d d S )NrZ   r1   r2   )r  r  rJ  )g      @r>         &@)r0   r1   r2   r3   r2   r3   r4   r5   )r6   r7   rX   rY   r   rR   )      ?g      @g     !@)r:   r>         #@r  r   r   r   r   )r2   r2   r1   r  rs   r   r1   )re   rm  r   rg   r   r   rk  )rj   rz  rl   r0r  scorers   rs   rt   	test_axis
  s&   
zTestScoreatpercentile.test_axisc                 C   s@   t ttjddgddd t ttjdgd t ttjdgd d S )Nr   r0   r  r   ru  e   r^   )r   r   re   rm  r  rs   rs   rt   test_exception)
  s
   z$TestScoreatpercentile.test_exceptionc                 C   sT   t tg dtj t ttg g gdtj t tg ddgtjtjg d S )Nr  c   )r   re   rm  r   ri   r   r  rs   rs   rt   
test_empty/
  s   "z TestScoreatpercentile.test_emptyN)r   r   r   rk  r   r{  r}  r  r  r  r  rs   rs   rs   rt   re  	  s    re  c                
   @   s:  e Zd Zdd Zdd Zdd Zdd Zej	d	e
d
ddd Zdd Zdd Zej	dg dde
jddddgg dde
jddggej	dddgdd Zej	d	e
dde
jfddZd d! Zd"d# Zej	d$d%d&gd'd( Zd)d* Zejd+ej	d,e
d-e
d.gd/d0 Zd1d2 Zd3S )4TestModec                 C   s`   t jttd tg \}}W d    n1 sw   Y  t|tg  t|tg  d S Nr   )	r  r  r   r   re   moder   r   r   rj   valsr  rs   rs   rt   r  7
  s
   zTestMode.test_emptyc                 C   s6   t d\}}t|tdg t|tdg d S )Nr   r   )re   r  r   r   r   r  rs   rs   rt   r  =
  s   zTestMode.test_scalarc                 C   s2   g d}t |}t|d d t|d d d S )Nr1   r3   r   rX      r1   r0   r4   r6   r4   rX   r4   r   r4   r   r1   re   r  r   )rj   data1r  rs   rs   rt   r   B
  s   
zTestMode.test_basicc              	   C   s$  g d}g d}g d}g d}g d}t |||||g}tj|d dd}t|d t d	gg t|d
 t dgg tj|ddd}t|d t g dg t|d
 t g dg tj|d
dd}t|d t dgdgdgd	gd	gg t|d
 t dgdgdgdgdgg d S )N)rX   rX   r  r  )rX   rX   rX   rX   )r  rX   r  r  )r  r  r  r  )r  r  r  r  TrS   keepdimsr   r  r   r6   )rX   rX   r  r  )r0   r1   r1   r0   rX   r  r0   r2   r1   )r   r   re   r  r   )rj   r  data2data3data4data5arrr  rs   rs   rt   	test_axesH
  s   (,zTestMode.test_axesrS   r   c                 C   sR   t jd t jdddd}tj||j| d}tj||d}t j|| d S )N:rX   rY   rZ   r[   rR   )	r   rV  r  r  re   r  ndimr  r   )rj   rS   r   r  r  rs   rs   rt   test_negative_axes_gh_15375\
  s
   z$TestMode.test_negative_axes_gh_15375c                 C   sj   g d}g }t |}d}t|| tjttd t |}W d    n1 s)w   Y  t|| d S )Nr  )r  countr   )re   r  r   r  r  r   r   )rj   r  r  r  r   actual2rs   rs   rt   test_mode_result_attributesd
  s   

z$TestMode.test_mode_result_attributesc                 C   st   dt jdddddddddddg}t|}t|d	 tj|d
d}t|d	 tttj|dd tttj|dd d S )Nr1   r3   r   rX   r  r0   r4   r6   )r4   r1   r   r   r   r   )r   ri   re   r  r   r   r   )rj   r  r  rs   rs   rt   test_mode_nann
  s    


zTestMode.test_mode_nandata)r1   r3   r   r   r1   r1   r3   r   )r1   r3   r   r  FTc                 C   s<   t j|d|d}|rt|d d d d S t|d d d S )Nr   )r   r  r   r   r  )rj   r  r  r1  rs   rs   rt   test_smallest_equalx
  s   zTestMode.test_smallest_equalr_   c                 C   sj   t jd}|jdd|}tj||dd}t|j}|	| t j
|jj| t j
|jj| d S )Nr  r1   r2   r3   rL  Fr  )r   rV  rW  uniformr,  re   r  rI  rk  popr  r   r  )rj   rS   r
  rO  r   r   reference_shapers   rs   rt   test_mode_shape_gh_9955
  s   

z TestMode.test_mode_shape_gh_9955c                 C   s8   dt jdt jg}t|}t |jr|jdksJ d S Nr0   r   )r   ri   re   r  ry  r  )rj   r   r   rs   rs   rt   !test_nan_policy_propagate_gh_9815
  s   
z*TestMode.test_nan_policy_propagate_gh_9815c                 C   sF  t d}tj|ddd}|jj|jj  krdksJ  J tj|ddd}|jj|jj  kr6dks9J  J dddt jgddt jdgg}tj|ddd}t|jddg t|jd	dg tj|ddd}t|jdgdgg t|jd	gdgg t |}tj|d dd}tj|	 dd
}t|| |jj|jj  krdksJ  J tj|d dd}tj|	 dd
}t
|j	 |j	  |jjdksJ t
|j	 |j	  |jjdksJ dt jt jt jdgt jt jt jt jd	gdd	t jddgg}tj|dddd}t|jg d t|jg d tj|dddd}t|jdgd	gdgg t|jd	gdgd	gg t |}tj|d ddd}tj|	 ddd}t|| |jj|jj  krcdksfJ  J tj|d ddd}tj|	 ddd}t
|j	 |j	  |jjdksJ t
|j	 |j	  |jjdksJ d S )N)r   r0   r1   r   r   Fr  )r   r1   r   T)r   r   r1   r   r1   r0   r  rs   r  r3   r   )rS   r  r   )r   r0   r3   )r0   r   r0   )r  r   )r   r  re   r  rk  r  ri   r   r   rp  r   )rj   r   r   r\  rs   rs   rt   test_keepdims
  sX   
$$

$

(zTestMode.test_keepdimsr   r  r   c                 C   s   d}t |}t j|d< tj|dd|d}t|jg d t|jg d t dt jfd	t j	d
fg}t j
d|d}d}tjt|d tj||d W d    d S 1 sVw   Y  d S )N)r2   r1   rw  r   F)r   rS   r  r   rX  r0   r1   r1   r1   asdfqwerr  rX   r  z0Argument `a` is not....|An argument has dtype...r   r   )r   ru  ri   re   r  r   r  r
  uint8r   r  r  r   	TypeError)rj   r   rk  r  r   my_dtypetestrA  rs   rs   rt   test_gh16955
  s   

"zTestMode.test_gh16955c                 C   s  t jttd tg }W d    n1 sw   Y  tjdf}t|| t jtt	d tjtjgdd}W d    n1 sAw   Y  t|| g dtjtjtjgg}t jtt
d tj|ddd}W d    n1 sqw   Y  dtjgd	dgf}t|| tj|dd
d}dtjgd	dgf}t|| tg g g}t jttd tj|dd}W d    n1 sw   Y  tjtjgddgf}t|| d S )Nr   r   r   r   )r   rE  rE  r   r  r  r0   r  r1   rR   )r  r  r   r   re   r  r   ri   r   r   r   r   r   )rj   r   r\  r   zrs   rs   rt   test_gh9955
  s0   




zTestMode.test_gh9955zignore::RuntimeWarningr  r  rA  c                 C   s   |j dkr%tjttd tj|d dd}W d    n1 sw   Y  ntj|d dd}tj|d dd}|d j	|d j	  krL|j	  krLdksOJ  J d S )Nr   r   Tr  r   r  )
rM  r  r  r   r   re   r  r   rh   rk  )rj   r  r   r\  rs   rs   rt   test_gh17214  s   
8zTestMode.test_gh17214c                 C   s   t rdnd}G dd d}tjt|d t|td W d    n1 s)w   Y  tjt|d ttjdtd W d    d S 1 sKw   Y  d S )Nz'...only boolean and numerical dtypes...z*Argument `a` is not recognized as numeric.c                   @   s   e Zd Zdd ZdddZdS )z8TestMode.test_raise_non_numeric_gh18254.<locals>.ArrLikec                 S   s
   || _ d S r  )_xr  rs   rs   rt   __init__  s   
zATestMode.test_raise_non_numeric_gh18254.<locals>.ArrLike.__init__Nc                 S   s   | j tS r  )r  r,  object)rj   r
  copyrs   rs   rt   	__array__  r  zBTestMode.test_raise_non_numeric_gh18254.<locals>.ArrLike.__array__)NN)r   r   r   r  r  rs   rs   rs   rt   ArrLike  s    r  r   r1   r  )	r-   r  r   r  re   r  r   r   r  )rj   rA  r  rs   rs   rt   test_raise_non_numeric_gh18254  s   "z'TestMode.test_raise_non_numeric_gh18254N)r   r   r   r  r  r   r  r  r  r  r   r   r  r  r  ri   r  r   r  r  r  r  r  rF  emptyr  r  rs   rs   rs   rt   r  5
  s8    


	<

	r  c                   @   s<   e Zd Zg dZdZdd Zdd Zeddd	d
d ZdS )TestSEMrO  r   c                 C   s   | | jd }t|r)tjttd t|}W d    n1 s#w   Y  n$t	j
 }|t |t t|}W d    n1 sHw   Y  ||sTJ d S )Nrs   r   )rb   scalar_testcaser*   r  r  r   r   re   semr   r  r   r   UserWarningr   ry  )rj   rk   r  rm   r   rs   rs   rt   test_sem_scalar$  s   

zTestSEM.test_sem_scalarc                 C   s   | | j}t|}t|| d t| j}ttj|dd||d  d  tj|dd |d}||dk| |j|}t	t|| |j d S )Ng㝎?r   ddofr0   r9   r   r7   )
rb   testcasere   r  r.   r  r   whereri   r/   )rj   rk   r  rm   r  rl   rs   rs   rt   test_sem6  s   


zTestSEM.test_semTz(`nan_policy` only supports NumPy backendr   c                 C   sP   t d}t j|d< ttj|ddd tttj|dd tttj|dd d S )Nr   r7   r   r   gH=6?r   r   )r   r   ri   r   re   r  r   r   rj   rk   rl   rs   rs   rt   test_sem_nan_policyB  s
   

zTestSEM.test_sem_nan_policyN)	r   r   r   r  r  r  r  rG   r  rs   rs   rs   rt   r    s    r  zJAX can't do item assignmentc                   @   st  e Zd Zejdg dg dfg dg dfgdd Zdd Zd	d
 Zejdddgdd Z	ejdddgdd Z
dd Zdd Zdd Zdd Zeddddd Zdd  Zd!d" Zd#d$ Zedddd%d& Zd'd( Zd)d* Zd+d, Zedddd-d. Zejd/eg ed0gd1d2 Zd3d4 Zed5d6 Zed7d8 Z d9d: Z!ejjd;d<dd=d> Z"d?S )@TestZmapZscorezx, yrO  r7  )r   r   r  r   r   c                 C   sV   | || |}}t||}||| |j|dd }t||}t|| d S )Nr   rx   )rb   r(   rh   r   re   zmapr.   )rj   rl   rm   rk   r   r/  r  rs   rs   rt   	test_zmapQ  s
   
zTestZmapZscore.test_zmapc           
      C   s   t g dg dg dg}d}d}d}tj||dd}tj||d	d}| | d
 | d
 dgd|| d
 |g|| d
 || gg}g d| | | dgg dg}	t|| t||	 d S Nr   r   r   r   )r   r   r   r  )r  r   r  r   .!	?3Ey?;f?r   rR   r   r0   r   r   r   r   r   gLXz?)r   r   r   r   )r   r   re   r  r.   
rj   rk   rl   t1t2t3z0rZ  z0_expectedz1_expectedrs   rs   rt   test_zmap_axis_  s&   

zTestZmapZscore.test_zmap_axisc                 C   s|   | g dg dg}tj||ddd}| g dd }| g dd }t|d	d d f | t|dd d f | d S 
Nr  )r   r   r  r   r   )rS   r  )      r  r9   r9   g3Ey?)      r  r9   r:   g4?r   )rb   re   r  r.   rj   rk   rl   r  r  r  rs   rs   rt   test_zmap_ddofv  s   
zTestZmapZscore.test_zmap_ddofr  r   r0   c                 C   sh   | dddtjg}| dddddtjg}tj|||dd}tj||||  |d	}t|| d S )
Nr_   r^   r0   r5   rZ   r   r  r   r  )rb   r   ri   re   r  ry  r.   )rj   r  rk   scorescomparer  r\  rs   rs   rt   test_zmap_nan_policy_omit  s
   z(TestZmapZscore.test_zmap_nan_policy_omitc           	   	   C   s   | |ddd}| |dddd}|j|d< |j|d< |j|d	< tj||d
d|d}tj|dd d f |dd d f ||dd d f   |d}tj|dd d f |dd d f ||dd d f   |d}|||f}t|| d S )N      r   r0   r^   r  r4      )r   r2   r|   r  r   r   )r   rS   r  r   r  )	rg   r   r  ri   re   r  ry  stackr.   )	rj   r  rk   r  r  r  r  r  r/  rs   rs   rt   #test_zmap_nan_policy_omit_with_axis  s   


88z2TestZmapZscore.test_zmap_nan_policy_omit_with_axisc                 C   sj   | g d}| ddddd|jg}tjtdd tj||d	d
 W d    d S 1 s.w   Y  d S )Nr:  r  r_   r0   r5   rZ   zinput contains nanr   r   r   )rb   ri   r  r   r   re   r  )rj   rk   r  r  rs   rs   rt   test_zmap_nan_policy_raise  s
   "z)TestZmapZscore.test_zmap_nan_policy_raisec                 C   s0   t |g d}g d}t||| d S )Nr'  )gOT\wg%ܿg%?gOT\w?)re   zscorerb   r.   )rj   rk   rm   desiredrs   rs   rt   test_zscore  s   zTestZmapZscore.test_zscorec           
      C   s   | g dg dg dg}d}d}d}tj|dd}tj|d	d}| | d
 | d
 dgd|| d
 |g|| d
 || gg}g d| | | dgg dg}	t|| | t|| |	 d S r  rb   re   r  r.   r  rs   rs   rt   test_zscore_axis  s&   
zTestZmapZscore.test_zscore_axisc                 C   sz   | g dg dg}tj|ddd}| g dd }| g dd }t|d	d d f | t|dd d f | d S r  r  r  rs   rs   rt   test_zscore_ddof  s   
zTestZmapZscore.test_zscore_ddofrv   rw   rD   c                 C   s>   | ddtjddg}tj|dd}t|||j|j d S )Nr   r0   r2   r3   r  r   )rb   r   ri   re   r  r/   r   rk  rj   rk   rl   r  rs   rs   rt   test_zscore_nan_propagate  s   z(TestZmapZscore.test_zscore_nan_propagatec                 C   sH   | dd|jddg}tj|dd}| dd|jd	d
g}t|| d S )Nr   r0   r2   r3   r   r   gIHb=gIHb=gIHb=?gIHb=?)rb   ri   re   r  r.   )rj   rk   rl   r  r/  rs   rs   rt   test_zscore_nan_omit  s   z#TestZmapZscore.test_zscore_nan_omitc                 C   sh   | |jdddddg}t|}tj|ddd}|| |jgtj|dd  dd	g}t|| d S )
Nr   r   rK   r   r   r   r   r  r  )rb   ri   r(   re   r  concatr.   )rj   rk   rl   r   r  r/  rs   rs   rt   test_zscore_nan_omit_with_ddof  s
   *z-TestZmapZscore.test_zscore_nan_omit_with_ddofc                 C   sX   | dd|jddg}tjtdd tj|dd W d    d S 1 s%w   Y  d S )	Nr   r0   r2   r3   zThe input contains nan...r   r   r   )rb   ri   r  r   r   re   r  r  rs   rs   rt   test_zscore_nan_raise  s   "z$TestZmapZscore.test_zscore_nan_raisec                 C   sb   | dgd }tjtdd t|}W d    n1 sw   Y  t|||j|j	 d S )NgʡEr1   Precision loss occurred...r   )
rb   r  r  r   re   r  r/   r   rk  ri   r  rs   rs   rt   test_zscore_constant_input_1d  s
   z,TestZmapZscore.test_zscore_constant_input_1dc                 C   s  | g dg dg}tjtdd tj|dd}W d    n1 s$w   Y  t|| |jdddg|jdddgg tjtdd tj|d	d}W d    n1 sVw   Y  t||	| |j|j|j|jgt|d	d d f g tj|d d}t||
t|
|d
|j |d}tjtdd tj|d d}W d    n1 sw   Y  t|||j| |j d S )Nr   r   r   r   r   r  r        *@r  r   r   rR   r   r   r   r^   )r1   r4   )rb   r  r  r   re   r  r.   ri   r/   r  rg   rk  ru  r   )rj   rk   rl   r  rZ  r  rm   rs   rs   rt   test_zscore_constant_input_2d  s,   
 "
 z,TestZmapZscore.test_zscore_constant_input_2dc                 C   s6  | g dddd|jgdd|jdgg}d}d}tjtdd tj|d	d
d}W d    n1 s2w   Y  t|| |j| d|jg|jd
d|jg|j||j|jgg tjtdd tj|d	dd}W d    n1 spw   Y  t|| |j|j|j|jg| d
||jg| d ||j| d gg d S )Nr  r   r  r  r  r  r  r   r   r   r   rS   r   r   r   r0   )rb   ri   r  r  r   re   r  r.   )rj   rk   rl   r  s2r  rZ  rs   rs   rt   -test_zscore_constant_input_2d_nan_policy_omit  s(   
z<TestZmapZscore.test_zscore_constant_input_2d_nan_policy_omitc                 C   s^   | tjtjtjtjgg dg}tj|ddd}t|| tjtjtjtjgg dg d S )N)r   r   r  r  r   r   r  r  )rb   r   ri   re   r  r.   r  rs   rs   rt   test_zscore_2d_all_nan_row  s   z)TestZmapZscore.test_zscore_2d_all_nan_rowc                 C   s,   | d|j}tj|dd d}t|| d S )Nr  r   r  )r   ri   re   r  r/   )rj   rk   rm   r  rs   rs   rt   test_zscore_2d_all_nan"  s   z%TestZmapZscore.test_zscore_2d_all_nanrl   )r1   r   r3   c                 C   s"   | |}t|}t|| d S r  )rb   re   r  r/   )rj   rl   rk   r  rs   rs   rt   test_zscore_empty_input)  s   

z&TestZmapZscore.test_zscore_empty_inputc                 C   sf   t g d}t||}t |t| t tj|dd }t||j||djd d S )Nr'  r   r  r   r  )	r   rb   re   gzscoreloggmeangstdr.   r
  )rj   rk   rl   r  r  rs   rs   rt   test_gzscore_normal_array/  s   ( z(TestZmapZscore.test_gzscore_normal_arrayc                 C   s   t g d}g d}t jj||d}t|}ddt jddg}t jj||d}t| |  t|j	|j	 t
|t jjsAJ d S )N)r   r0   r^   r1   r2   )r   r   r   r   r   maskg0jg`ȿg/A?g(/?)r   r   rt  masked_arrayre   r  r  r
   
compressedr  r  MaskedArray)rj   rk   rl   r  mxr  r  rs   rs   rt   test_gzscore_masked_array5  s   

z(TestZmapZscore.test_gzscore_masked_arrayc                 C   sJ  t jd}|d}t |}t j||}d|jd< t	|dd  }t 
t |r/J t	|}t|dd  | tj	|d d}t|dd  | |d |dd < tjtdd t	|}W d    n1 slw   Y  t|dd  t j tjtdd tj	|d d}W d    n1 sw   Y  t|dd  t j d S )	Ni_ rX   Tr   r   rR   r  r   )r   rV  rW  standard_normal
zeros_likert  r  r  re   r  rx  ry  r
   r  r  r   r   ri   )rj   rk   rO  rl   r  rm   r\  r   rs   rs   rt   $test_zscore_masked_element_0_gh19039B  s(   



z3TestZmapZscore.test_zscore_masked_element_0_gh19039c                 C   st   | d}|d}||j |j|jg}tjtdd t	||}W d    n1 s.w   Y  t
|| d S )Nr1   r  r   )r   ru  rb   r  ri   r  r  r   re   r  r/   )rj   rk   r  r  r\  r   rs   rs   rt   test_degenerate_inputZ  s   

z$TestZmapZscore.test_degenerate_inputrF   needs array-api#850c                 C   s<   t |g d|g d}|g d}t|| d S )Nr'  )r                 ?r^   r<  )y      ?        y       @        y      @        y      @        )re   r  rb   r.   )rj   rk   r   r\  rs   rs   rt   test_complex_gh22404b  s    z#TestZmapZscore.test_complex_gh22404N)#r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  rG   r  r  r  r   r  r  r
  r  r  r   r   r  r  r  r'   r  r  r  r   rs   rs   rs   rt   r  L  sP    
	
	









r  c                
   @   s   e Z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ej	
ddeejddgfdeejejdgfgdd Zej	
ddg dfdgdd Zdd ZdS )TestMedianAbsDeviationc                 C   sR   t dddddddddddd	d
d
d
ddddddddt jg| _t g d| _d S )N皙@r  r;   皙@r  333333@=
ףp=@r  (\
@r  r<   r  皙@)\(@Q@)r"  r"  r  r  r;   r#  r  r$  r%  r%  r  r&  r  r  r  r<   r  r'  r'  r'  r'  r(  r)  g33333<@)r   r   ri   dat_nandatr  rs   rs   rt   setup_classj  s
   z"TestMedianAbsDeviation.setup_classc                 C   sN   t tj| jd dd | jdd}tj|dd}tg d}t|| d S )NrR   gQ?r4   r2   r   )gףp=
?r9   ?r1  )r   re   median_abs_deviationr+  rg   r   rb   r   )rj   r+  madmad_expectedrs   rs   rt   test_median_abs_deviationr  s   z0TestMedianAbsDeviation.test_median_abs_deviationc                 C   s   t j| jdd}t|d d S )Nr   r   g(\?)re   r.  r*  r   )rj   r/  rs   rs   rt   test_mad_nan_omitz     z(TestMedianAbsDeviation.test_mad_nan_omitc                 C   sF   t ddddt jgg dg}tj|dd}t|t t jdg d S )Nr   r  r   r   )r   r   rK   r   r   r   rR   r   r   ri   re   r.  r   )rj   rl   r/  rs   rs   rt   test_axis_and_nan~  s
   z(TestMedianAbsDeviation.test_axis_and_nanc              	   C   s8   t dddddt jt jg}tj|dd}t|d d S )	Nr   r1   r2   r4   r  r   r   r   )r   r   ri   r  re   r.  r   )rj   r  r/  rs   rs   rt   test_nan_policy_omit_with_inf  s   z4TestMedianAbsDeviation.test_nan_policy_omit_with_infrS   )r   r   r0   Nc                 C   s:   t d}tj||d}t|t j|j|dt jd d S )N)r1   r   r2   rR   
fill_value)r   r  re   r.  r   	full_liker  ri   )rj   rS   rl   r/  rs   rs   rt   test_size_zero_with_axis  s   
"z/TestMedianAbsDeviation.test_size_zero_with_axisznan_policy, expectedr   r:   r  c              	   C   sZ   t t jt jt jt jt jt jgddddt jt jgg dg}tj||dd}t|| d S )Nr   r3   r1   r4   )r3   r4   r5   r7   r7   rX   r  r4  )rj   r   r/  rl   r/  rs   rs   rt   test_nan_policy_with_axis  s   z0TestMedianAbsDeviation.test_nan_policy_with_axiszaxis, expectedr   )r;   r  r  )Nr=   c                 C   sL   t ddddt jgg dg dg}tj|t jd|d}t||d	d	d
 d S )Nr   r0   r2   r7   )r   r   r   r   rZ   )r<  r<  r  r  r   )centerr   rS   r   rU  )r   r   ri   re   r.  rh   r
   )rj   rS   r/  rl   r/  rs   rs   rt   test_center_mean_with_nan  s   z0TestMedianAbsDeviation.test_center_mean_with_nanc                 C   sF   t jtdd tjg ddd W d    d S 1 sw   Y  d S )Ncallabler   )r   r0   r1   r3   r  r=  )r  r   r  re   r.  r  rs   rs   rt   test_center_not_callable  s   "z/TestMedianAbsDeviation.test_center_not_callableN)r   r   r   r,  r1  r2  r5  r6  r  r  r  r:  r   r   ri   r;  r>  rA  rs   rs   rs   rt   r!  i  s&    


r!  c                 C   s,   t t| |d | D ]	}t|j|u  q
dS )z
    Checks that all of the warnings from a list returned by
    `warnings.catch_all(record=True)` are of the required type and that the list
    contains expected number of warnings.
    znumber of warningsN)r   r  r   category)	warn_listexpected_typeexpected_lenwarn_rs   rs   rt   _check_warnings  s   rG  c                   @   s   e Zd Zdd Zdd Zejdg e	dgdd Z
d	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )TestIQRc                 C   s.   t dd }t j| tt|d d S )Nr6   r9   rl  )r   r   rV  r~  r   re   iqrr  rs   rs   rt   r     s   zTestIQR.test_basicc              	   C   s   t d}t| t|d  t|d t|d t|d d t|d dd t|d ddd	 t|d d
ddd t|d ddddd d S )Nr  r   r  )rX   Z   )r  r  r   )r  r  r:   r  )r  r  rX  r   lineargٿr   rQ  T)r   ru  re   rI  )rj   r  rs   rs   rt   test_api  s   

zTestIQR.test_apirl   r   c                 C   sF   t jttd tt|tj W d    d S 1 sw   Y  d S r  )	r  r  r   r   r   re   rI  r   ri   r  rs   rs   rt   r    s   "zTestIQR.test_emptyc                 C   sl  t d}tt|d ttj|ddt d ttj|ddt d ttj|dd	d ttj|d
d	d ttj|dd	d ttj|dd	d ttj|dd	d t dt d }ttj|ddt d ttj|ddt d ttj|ddt dd ttj|ddt d ttj|ddt dd ttj|ddt dd d S )N)r5   r2   r   r   rR   r2   r   r5   rK  interpolationmidpointnearestrQ  r|  r2   r3   r4   r4   )r3   r4   )r2   r4   r0   )r2   r3   r;   r  r   r0   r3   r   r   r0   )	r   ru  r   re   rI  r   r  r   r   r  rs   rs   rt   test_constant  s    
 zTestIQR.test_constantc                 C   sL   t dd }tt|d d tt|d ttj|dddg d S )Nr   r   r   r   Tr  )r   r   r   re   rI  r   r  rs   rs   rt   test_scalarlike  s   zTestIQR.test_scalarlikec                 C   s   t dd}tt|d ttj|ddt dd ttj|ddt d	d
 ttj|ddd ttj|ddd d S )Nr  rt  r   r   rR   r3   rK   r   r1   r  r  r  )r   r   rg   r   re   rI  r   r   r  rs   rs   rt   test_2D  s   zTestIQR.test_2Dc              
   C   s  t jjdd}t |gd }t|}ttj|dd| t |dd}ttj|dd| |dd	}ttj|d
d| |dd	}ttj|ddtj|d d ttj|ddtj|dd t 	d}t j
| |d}ttj|ddd t|d d d d d d df   ttj|ddd	 t|d d d d d	d d f   ttj|ddd t|d d d d dd d f   ttj|ddd t|dd d d d d d f   ttj|ddd t|dd	d d d d f   ttj|ddd t|dd d d d d	f   ttj|ddd t|dd d dd d f   tttj|dd tttj|dd d S )N)G   r  rL  rX   r  rR   r^   r   rs  r   rR  r  r   i  r1   r3   r5   rY   r   r   r1   )r1   r   r  r0   )r1   r   r0   r1   r0   )r   r#  )r   r1   r0   r0   r2   rw  )r   rV  rX  dstackre   rI  r   moveaxisswapaxesr   r~  rg   rp  r   r%   r   )rj   orl   qr  rs   rs   rt   r    sR   


$$$$   zTestIQR.test_axisc                 C   s   t d}tt|d ttj|ddd ttj|ddd ttj|ddd tttj|d	d tttj|t jd
fd tt	tj|dd d S )Nr3   r0   )r  g     U@rN  r;   )g      )@r  )rX   r  g?)r   r  r  )r   r  <   )
r   r   r   re   rI  r   r   r   ri   r  r  rs   rs   rt   test_rng  s   
zTestIQR.test_rngc                 C   sl  t d}t d}tt|d tt|d ttj|ddd ttj|ddd ttj|ddd ttj|ddd	d
 ttj|ddd ttj|ddd ttj|ddd	d ttj|ddd ttj|ddd ttj|ddd ttj|ddd ttj|ddd	d ttj|ddd dD ]	}tj||d qtttj|dd d S )Nr3   r2   r0   r:   rK  rM  r|  )r  P   )rO  rN  r1   rQ  rP  r   rO  r;   )inverted_cdfaveraged_inverted_cdfclosest_observationinterpolated_inverted_cdfhazenweibullmedian_unbiasednormal_unbiasedr   )r   r   r   re   rI  r   r   )rj   rl   rm   r?  rs   rs   rt   test_interpolation#  s(   

zTestIQR.test_interpolationc                 C   s^  t d}ttj|d ddjd ttj|dddjd ttj|dddjd ttj|d	ddjd
 ttj|dddjd ttj|dddjd ttj|dddjd ttj|d ddjd ttj|dddjd ttj|dddjd ttj|d	ddjd ttj|dddjd ttj|dddjd ttj|dddjd d S )NrY  Fr  rs   r0   )r1   r3   rY   r  )r5   rY   )r   r1   )r3   r5   )r   r  r   r   r0   r1   r  rZ  rz   TrX  )r1   r3   r   rY   )r   r   r5   rY   )r   r3   r5   r   )r1   r   r5   rY   )r   r   r5   r   )r   ru  r   re   rI  rk  r  rs   rs   rt   r  E  s   
zTestIQR.test_keepdimsc                 C   s  t dd}ttj|ddd ttj|ddd ttj|ddd t j|d< tjd	d
8 t	d ttj|ddt j ttj|dddddt jddg ttj|ddddt jdg W d    n1 slw   Y  tjd	d
3 t	d ttj|ddd ttj|dddt 
dd ttj|dddg d W d    n1 sw   Y  tttj|dd tttj|ddd tttj|ddd tttj|dd d S )N      .@rt  r  r   r5   r   r   rS  Tr   alwaysr   r  r3   r   r0   r@   )r0   r;   r0   barfood)r   r   rg   r   re   rI  ri   warningscatch_warningssimplefilterr   r   r   r  rs   rs   rt   test_nanpolicyX  s6   


	
zTestIQR.test_nanpolicyc                 C   s  t dd}ttj|ddd ttj|ddd ttj|ddd	 t j|d
< tj	ddf t
d ttj|dddt j ttj|dddt j ttj|dddt j ttj|dddddt jdg ttj|ddddt dt jdgd  ttj|dddddt jdg W d    n1 sw   Y  ttj|dddd ttj|dddd ttj|dddd tttj|dd d S )Nro  rt  r   r<  r5   rX  g=V^w@r  r<   rS  Trp  rq  r  )r<  r   r   )rS   r<  r   r0   gF7k?r   r@   g	I1=@g      @r   )r   r   rg   r   re   rI  r   ri   rs  rt  ru  r   r   r   r  rs   rs   rt   
test_scalex  s<   



zTestIQR.test_scaleN)r   r   r   r   rL  r  r  r  r   r   r  rT  rU  rV  r  rc  rm  r  rv  rx  rs   rs   rs   rt   rH    s    
)" rH  c                	   @   s  e Zd ZdZg dZdZejd ej	dZ
ddddd	Zeejd
ddgejdedddd Zeejd
ddgejdddd Zedd Zdd Zedddejdeejdg dejdd d!gd"d# Zed$d%dejded&d' Zed(d) Zed*d+ Zd,d- Zeejd.g dejd/g d0ejd1dd2gd3d4 ZdS )5TestMomentsa  
        Comparison numbers are found using R v.1.5.1
        note that length(testcase) = 4
        testmathworks comes from documentation for the
        Statistics Toolbox for Matlab and can be found at both
        https://www.mathworks.com/help/stats/kurtosis.html
        https://www.mathworks.com/help/stats/skewness.html
        Note that both test cases came from here.
    rO  r     r}  N)rk  r
  c                C   sH   t |}|d urt ||}t|| |d u r|j}|j|ks"J d S r  )r   rb   broadcast_tor   r
  )rj   r  expectrk  r
  rs   rs   rt   _assert_equal  s   

zTestMoments._assert_equalrM  rX   )rX   r0   zm, crn  )Nr   r   c           	      C   sz   t jd}||j|d}tj|||d}|d u r"|j|ddn|}|j|| | dd|jd  }t	||dd d S )Nl   rHZ rL  r@  r   rR   缉ؗҜ<r   )
r   rV  rW  rb   re   momentrh   r  rk  r.   )	rj   rM  r  r  rk   rO  rl   r   r\  rs   rs   rt    test_moment_center_scalar_moment  s    z,TestMoments.test_moment_center_scalar_momentr  c                    sh   t jd}||j|dg d}tj| d}t fdd|D }t|| d S )Nl   %~.}~= rL  rn  r@  c                    s&   g | ]}t j| d jdf qS )r@  .)re   r  newaxisr  r  rl   r   rs   rt   r    s    z?TestMoments.test_moment_center_array_moment.<locals>.<listcomp>)	r   rV  rW  rb   re   r  r(   r  r/   )rj   rM  r  rk   rO  r  r   r\  rs   r  rt   test_moment_center_array_moment  s   z+TestMoments.test_moment_center_array_momentc                    s    | j}t  | j}t|  d t|d}t|  d t|d}t|  d t|d}t|  d t|d}t|  d t|d}t|  d	 t|g d
}t|  g d t|d}t|  d d}tjt|d t|d W d    n1 sw   Y  t|g d}t|  g d  fdd}t	 rtj
tdd |  W d    d S 1 sw   Y  d S tj }|td |td |  W d    d S 1 sw   Y  d S )Nr   r   r   r   r0         ?r1   r2        @r'  )r   r  r   r  z)All elements of `order` must be integral.r   333333?)r   r0   r1   r   c                     s   t  g } t|   j t  jg  jd} t|  j j jd t j ddd} t|  d t j g gdd} t|   jg t j g gddgdd} t|  d d S )	Nr  r  r   rR   rX  r   orderrS   )r0   r   )re   r  rb   r/   ri   r   r  r  )rm   rk   rs   rt   
test_cases  s   z+TestMoments.test_moment.<locals>.test_caseszSee documentation for...zMean of empty slice.zinvalid value)rb   r  re   r  r  r.   r  r   r   r*   r  r   r   r  r   r   r   )rj   rk   r  rm   rA  r  r   rs   r  rt   test_moment  sB   ""zTestMoments.test_momentc                 C   sd   t d}t j|d< tt|dt j ttj|ddd tttj|dd tttj|dd d S )	Nr   r7   r0   r   r   r   r   r   )	r   r   ri   r   re   r  r   r   r   r  rs   rs   rt   r    s   

zTestMoments.test_nan_policyrv   rw   rD   rG   r
  )r   r   
complex128zexpect, orderr  r  c                 C   s   |dkrt |rt  t||}|jtjd|d}tj	||d}t
||j||d tj	||dd|d}t
||jd||d tj	||d	d
|d}t
||jd||d tj	||d	d |d}t
||jd||d d S )Nr  r3   r  r  )r4   r3   r   )rS   r  )r3   r2  r0   )r   r0   r2   r3   rs   )r+   r  skipr  rb   r   rV  r  re   r  r/   r{  r   )rj   r
  r|  r  rk   rl   rm   rs   rs   rt   test_constant_moments
  s    
z!TestMoments.test_constant_momentsrB   r   c                 C   sJ   | |dd}tj|d< tj|ddd}t||dtjgdd	 d S )
Nr   r  r  r0   r   rR   r  r   r   )rg   r   r   ri   re   r  r.   rb   )rj   rk   r   mmrs   rs   rt   test_moment_propagate_nan"  s   
z%TestMoments.test_moment_propagate_nanc                 C   sL   t jtdd tj|g dg d W d    d S 1 sw   Y  d S )Nz1`order` must be a scalar or a non-empty 1D array.r   r'  r  )r  r   r   re   r  rb   rj   rk   rs   rs   rt   test_moment_empty_order.  s   "z#TestMoments.test_moment_empty_orderc                 C   s4   | d}tj|dd}tj|dd}t|| d S )NrX   r1   )r  r  )r   re   r  r/   )rj   rk   rl   r   r\  rs   rs   rt   test_rename_moment_order5  s   
z$TestMoments.test_rename_moment_orderc                 C   s6   | j t| j  }tt|d t| j d d S )Nr}  )testcase_moment_accuracyr   rh   r
   r   re   r  )rj   
tc_no_meanrs   rs   rt   test_moment_accuracy>  s   
z TestMoments.test_moment_accuracyr  rS   r   r=  r   c           	      C   sT   t jd}|jdd}tj|||||d}|t||||d}t|| d S )Nl   hU~)r3   r4   r5   rL  )rS   r=  )rh   )r   rV  rW  re   r  rb   r    r.   )	rj   rk   r  rS   r=  rO  rl   r   r\  rs   rs   rt   test_moment_array_apiF  s
   z!TestMoments.test_moment_array_api)r   r   r   r   r  r  r   rV  r  r  r  r}  r&   r  r  r  r   r  r  r  r  rG   usefixturesr  r  r  r  r  r  rs   rs   rs   rt   ry    sP    		

5




ry  c                   @   s    e Zd ZdZg dZg dZdS )SkewKurtosisTestr   rO  )gp=
ף?g?߾?gD9?gQI?g}?5^IN)r   r   r   r  r  testmathworksrs   rs   rs   rt   r  R  s    r  c                	   @   s   e Zd Zeejdejej	gdd Z
edddejdedd	 Zd
d Zdd Zedddejdedd Zedd Zedddejdedd Zedddejdeejdg dejdddgdd ZdS )TestSkewstat_func                 C   s   | g }t|r%tjttd ||}W d    n1 sw   Y  n%tj }|	t
d |	t
d ||}W d    n1 sEw   Y  t|| |j d S )Nr   Mean of empty slicezinvalid value encountered)rb   r*   r  r  r   r   r   r  r   r   r   r/   ri   )rj   r  rk   rl   r   r   rs   rs   rt   test_empty_1dY  s   


zTestSkew.test_empty_1drB   r   rD   rG   c                 C   s   t || j}t|||j t || j}t||ddd t j|| jdd}t||ddd t || j}t||ddd d S )Ng7l*ҿ绽|=r   r   biasg2۠ۿr   )re   skewrb   r  r.   ri   r  r  )rj   rk   rm   rs   rs   rt   test_skewnessh  s   zTestSkew.test_skewnessc                 C   s   t d}t j|d< t jdd tt|t j W d    n1 s$w   Y  ttj|ddd tttj|dd tttj|d	d d S )
Nr   r7   r?  r@  r   r   r   r   r   )	r   r   ri   rB  r   re   r  r   r   r  rs   rs   rt   r  y  s   

zTestSkew.test_nan_policyc                 C   s   t ttdd d S )NrX   r   )r   re   r  r   r  rs   rs   rt   test_skewness_scalar  s   zTestSkew.test_skewness_scalarc                 C   st   | d}||d}|j|d< tjdd tj|dd}W d    n1 s(w   Y  t||d|jg d S )	Nr   r  r  r?  r@  r   rR   r   )	r   rg   ri   r   rB  re   r  r/   rb   )rj   rk   r   r  rs   rs   rt   test_skew_propagate_nan  s   

z TestSkew.test_skew_propagate_nanc                 C   s  t jtddq |dgd }tt|||j tt|d ||j tt|d ||j ttj|dd||j |dgd	 }tt|||j d
|ddd  }tt|||j W d    d S 1 s{w   Y  d S )NPrecision loss occurredr   9ѿrX   g      CFr  g,@r5   r         r2   r~  )	r  r  r   rb   r/   re   r  ri   r   rj   rk   r   rs   rs   rt   test_skew_constant_value  s   "z!TestSkew.test_skew_constant_valuec                 C   sl   t jtdd% tjd}||jdd}d|d d df< t| W d    d S 1 s/w   Y  d S )Nr  r   l   :"z` )rJ  rX   rL  )\(?r   )	r  r  r   r   rV  rW  rb   re   r  )rj   rk   rO  r   rs   rs   rt   test_precision_loss_gh15554  s   "z$TestSkew.test_precision_loss_gh15554rS   r^   r   r0   Nr  FTc           	         sT   t jd} |d} fdd}tj|||d}||||d}t|| d S )N   f#"r  c           	         s   |d u r  | d} d}t| }|j| |dd}|j| | d |d}|j| |d}||d  }|sE| j| }||d | d |d	  9 }|S )
Nr  r   Tr  r1   rR   r   r9   r  )rg   r(   rh   r   rk  )	r   rS   r  r   rh   mu3r   r   r  r  rs   rt   skewness  s   
z-TestSkew.test_vectorization.<locals>.skewness)rS   r  )r   rV  rW  rb   re   r  r.   )	rj   rk   rS   r  rO  rl   r  r   r\  rs   r  rt   test_vectorization  s   	zTestSkew.test_vectorizationN)r   r   r   r&   r  r  r  re   r  kurtosisr  rG   r  r  r  r  r  r  r  r  rs   rs   rs   rt   r  X  sD    







r  c                
   @   s   e Zd Zedddejdedd Zdd Z	d	d
 Z
dd Zedd Zedddejdeejdg dejdddgejdddgdd ZdS )TestKurtosisrB   r   rD   rG   c                 C   s   t || j}||sJ t j|| jdddd}t||d t j|| jddd}t||d t || jdd}t||d |d}|	|dk||j
|}tt |||j
 d S )	Nr   r   fisherr  gO߻S@gx|N@g=
ףp=?r   r6   )re   r  rb   r  ry  r  r.   r  r   r  ri   r/   )rj   rk   rm   rl   rs   rs   rt   test_kurtosis  s   
zTestKurtosis.test_kurtosisc                 C   sP   t d}t j|d< ttj|ddd tttj|dd tttj|dd d S )Nr   r7   r   r   Gzr   r   )r   r   ri   r   re   r  r   r   r  rs   rs   rt   test_kurtosis_nan_policy  s
   

z%TestKurtosis.test_kurtosis_nan_policyc                 C   s   t ttg dtj d S )Nr:  )r   typere   r  r   r   r  rs   rs   rt   test_kurtosis_array_scalar   s   z'TestKurtosis.test_kurtosis_array_scalarc                 C   sN   t dddt}t j|d< tj|ddd}t jj	|dt jgd	d
 d S )Nr6   r0   r^   r  r   r  r  g(\r   r   )
r   r   rg   r,  r  ri   re   r  r  r
   )rj   r   r  rs   rs   rt   test_kurtosis_propagate_nan  s   
z(TestKurtosis.test_kurtosis_propagate_nanc                 C   s   | dgd }tjtddB |tj|ddsJ |tj|td dds,J |tj|td dds<J |tj|dddsIJ W d    d S 1 sTw   Y  d S )	Nr  rX   r  r   F)r  l           r  )rb   r  r  r   ry  re   r  r  r  rs   rs   rt   test_kurtosis_constant_value  s     "z)TestKurtosis.test_kurtosis_constant_valuerS   r  r  FTr  c           
         sX   t jd} |d} fdd}tj||||d}|||||d}	t||	 d S )Nr  rQ  c           
         s   |d u r  | d} d}t| }|j| |dd}|j| | d |d}|j| |dd}|r6||d  d	 }n!| j| }	|	d
 |	d |	d	   |	d
 | |d  d	|	d
    }|r[|S |d	 S )Nr  r   Tr  r2   rR   rS   ry   r0   r1   r   )rg   r(   rh   r~   rk  )
r   rS   r  r  r   rh   mu4mu2r   r  r  rs   rt   r  $  s   
8z1TestKurtosis.test_vectorization.<locals>.kurtosis)rS   r  r  )r   rV  rW  rb   re   r  r.   )
rj   rk   rS   r  r  rO  rl   r  r   r\  rs   r  rt   r    s   
zTestKurtosis.test_vectorizationN)r   r   r   rG   r  r  r  r&   r  r  r  r  r  r  r  rs   rs   rs   rt   r    s*    
	
	
r  c              
   C   s   t ddd}tjddd}| tjtj||d}g }t H td t	t
|jD ]3}tt$ tj|d|d}t|d	krOtt|rO|| W d    n1 sYw   Y  q+W d    n1 siw   Y  t| | tj|}||fS )
NF)	allow_nanallow_infinityr   r0   )min_dimsmin_side)r
  elementsrk  errorr  r   )dictnpstarray_shapesarraysr   r   rs  rt  ru  rj  r  rk  
contextlibsuppress	Exceptionre   r  r  rw  r  
hypothesisassume
strategiessampled_from)drawr  rk  r  ok_axesrS   r~   rs   rs   rt   ttest_data_axis_strategy=  s&   



r  Uses NumPy for pvalue, CIr   rE   c                   @   s   e Zd Zg dZg dZdZdZdZdZdZ	dZ
d	ZdZed
 Zded
  Zdd Zdd Zdd Zejdg ddd Zdd Zejjejejdde dejdddgdd ZdS ) TestStudentTestr   r   r   )r   r   r  r   r   gMXzg4/?gMXzgFX5t?gMXz?r0   r   c              	   C   s  t  8}tjddd! |td t|s|dnd}t|d\}}W d    n1 s/w   Y  W d    n1 s>w   Y  t	|||j
 t	|||j
 t|| jd\}}t||| j t||| j t|| jd}d}t|||d t|| jd\}}t||| j t||| j t|| jd	\}}t||| j t||| j t|| jd
\}}t||| j t||| j d S )Nr?  rA  divide!Degrees of freedom <= 0 for slicer   r   r   r   r   r  r   r  )r   r   rB  r   r   r*   rb   re   ttest_1sampr/   ri   X1r.   T1_0P1_0r   X2T2_0P2_0T1_1P1_1T1_2P1_2)rj   rk   r   r   tr  r   r   rs   rs   rt   test_onesampler  s4    zTestStudentTest.test_onesamplec                 C   s  t |s2|ddd|jg}d}tjt|d tj|ddd W d    d S 1 s+w   Y  d S tjj	dd	d
dd}t
j|d< t
jdd5 tt|dt
jt
jf ttj|dddd tttj|ddd tttj|ddd W d    d S 1 sw   Y  d S )Nr   r  r   %Use of `nan_policy` and `keepdims`...r   r   r   r3   rX   3   it r;  r<  rM  r`  r  r?  r@  rK   )g̈́^Bg/kCm?r   r   )r*   rb   ri   r  r   NotImplementedErrorre   r  r  rQ  r   rB  r   r   r   r   )rj   rk   rl   rA  rs   rs   rt   test_onesample_nan_policy  s*   

"z)TestStudentTest.test_onesample_nan_policyc                 C   s   d}t jt|d tj|| jddd W d    n1 s w   Y  tj|| jddd\}}t||| j t||| j	 tj|| jddd\}}t||| j
 t||| j	 d S )	N8`alternative` must be 'less', 'greater', or 'two-sided'.r   r   r  r(  r   r#  r%  )r  r   r   re   r  rb   r  r.   P1_1_lr  P1_1_g)rj   rk   rA  r  r  rs   rs   rt   test_1samp_alternative  s   z&TestStudentTest.test_1samp_alternativer)  r  c                 C   s   t jd}d}|j|ddd}| }t|r|jn|j}|j||d}|j||d}ddgd	t jgt j d
gd}t	j
|||d}	|	jdd}
t|
j||| d  t|
j||| d  t|	j||d  d S )Nl   <PleH rX   r:   r0   rM  r;  r<  r  gÍ]?g$(}w@gS1?g]@r!  r%  r#  )popmeanr)  333333?confidence_levelr   r   )r   rV  rW  rX  r+   r   r   rb   r  re   r  r  r.   r  r  r/   df)rj   rk   r)  rO  r  rl   r  r
  r\  r   r2  rs   rs   rt   test_1samp_ci_1d  s    
z TestStudentTest.test_1samp_ci_1dc                 C   sV   t |dd}d}tjt|d |jdd W d    d S 1 s$w   Y  d S )Nr   r   4`confidence_level` must be a number between 0 and 1.r   rX   r  )re   r  r   r  r   r   r  )rj   rk   r   rA  rs   rs   rt   test_1samp_ci_iv  s
   "z TestStudentTest.test_1samp_ci_ivr   g?)alpha	data_axisr#  r%  c                 C   s   |\}}| |}tj|d||d}|j|d\}}	|dkr |n|	}
t|}|j|
|d}
tj||
||d}t|j}|| |	|j d| |j
d|}t|j| d S )Nr   rR  r  r%  rR   r   r  )rb   re   r  r  r(   r  rI  rk  r  r{  r   r.   r   )rj   r  r  r)  rk   r  rS   r   lr  r  r   rk  r\  rs   rs   rt   test_pvalue_ci  s   


zTestStudentTest.test_pvalue_ciN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  givenr  floatsr  r   rs   rs   rs   rt   r  \  s2    	 
r  c                   @   sv  e Z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dd Zejdg d
dd Zejdg ddd Zejddg dfdg dfdg dfdg dfgdd Zejddg dfdg d fdg d!fdg dfgd"d# Zd$g d%ejfd$ejgd%ejfd$ejgg d&ejejejgfd$d%d'gd%d'ejgd(d)ejgfd*d%d'ejgg d&g d+fd*d%d'gd,d%ejgd,d(ejgfd*ejejgg d&ejejejgfgZejd-ed.d/ Zd0d%d'd1ejgg d2d3fd0g d2d%d'd1ejgd3fgZejd4ed5d6 Zejd7g d8d9d: Zd;S )<TestPercentileOfScorec                 O   s   t j|i |S r  )re   percentileofscore)rj   argskwargsrs   rs   rt   f     zTestPercentileOfScore.fzkind, result))r  r  )rh   #   strictr  )weakr  c                 C   "   g d}t | j|d|d| d S )N
r   r0   r1   r2   r3   r4   r5   r6   r7   rX   r2   kindr   r  rj   r  r1  r   rs   rs   rt   test_unique     z!TestPercentileOfScore.test_unique))r  rL  )rh   r  r
  )r  r  c                 C   r  )N)
r   r0   r1   r2   r2   r3   r4   r5   r6   r7   r2   r  r  r  rs   rs   rt   test_multiple2  r  z$TestPercentileOfScore.test_multiple2))r  r  )rh   rL  r
  )r  rb  c                 C   r  )N)
r   r0   r1   r2   r2   r2   r3   r4   r5   r6   r2   r  r  r  rs   rs   rt   test_multiple3  r  z$TestPercentileOfScore.test_multiple3))r  r  )rh   r  r
  )r  r  c                 C   r  )N)
r   r0   r1   r3   r4   r5   r6   r7   rX   rY   r2   r  r  r  rs   rs   rt   test_missing  r  z"TestPercentileOfScore.test_missingc                 C   r  )N
rX   r  r  r  r  rb  F   rd  rJ  rJ  r  r  r  r  rs   rs   rt   r    r  z(TestPercentileOfScore.test_large_numbersc                 C   r  )N)
rX   r  r  r  r  r  r  rb  r  rd  r  r  r  r  rs   rs   rt   test_large_numbers_multiple3  r  z2TestPercentileOfScore.test_large_numbers_multiple3c                 C   r  )N
rX   r  r  r  rb  r  rd  rJ  rJ  n   r  r  r  r  rs   rs   rt   test_large_numbers_missing  r  z0TestPercentileOfScore.test_large_numbers_missingr  )r   rX   rJ  rJ  rh   )r   r3   _   rJ  r  )r   r   rJ  rJ  r  c                 C   s&   g d}t | j|g d|d| d S )Nr  )r   rX   r  r  r  r  r  rs   rs   rt   test_boundaries&  s   z%TestPercentileOfScore.test_boundaries)r   rX   rJ  )r   r3   r  )r   r   rJ  c              
   C   sD   ddddddddd	t j
 g
}t| j|t j dt j
 g|d
| d S )Nr   r0   r1   r2   r3   r4   r5   r6   r7   r  )r   r  r   r  r  rs   rs   rt   test_inf.  s   (zTestPercentileOfScore.test_infr  r   r  r0   r  rJ  r   )r   r  rJ  r   zpolicy, a, score, resultc                 C   s   t | j|||d| d S )Nr   r  )rj   policyr   r  r1  rs   rs   rt   test_nans_ok>  s   z"TestPercentileOfScore.test_nans_okr   r1   r:  r   zpolicy, a, score, messagec                 C   sB   t t|d | j|||d W d    d S 1 sw   Y  d S )Nr   r   )r   r   r  )rj   r!  r   r  rA  rs   rs   rt   test_nans_failI  s   "z$TestPercentileOfScore.test_nans_failrk  ))r4   r  r0   r   r1   )r0   r   r   r1   c                 C   sB   t g d}||}|d }g d}t| j||dd| d S )N)r   r   r0   r1   r2   r3   rX   r  r  r  )r   r   rg   r   r  )rj   rk  r   r  resultsrs   rs   rt   test_ndN  s
   
zTestPercentileOfScore.test_ndN)r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r   r   ri   casesr"  r#  r&  rs   rs   rs   rt   r    sb    














"

r  Case)f_obsf_expr  rS   chi2r  mod_logcr)r2   r6   rZ   r6   r2   r0   r9   rZ   r:   r6   r  r  gfx(@)r0   r   rZ   r0   r  r   r         ?g{T4@)r1   r3   r5   r7   r   r   r   c                   @   s   e Zd Zdd Zejdeejdg ddd Zdd	 Z	d
d Z
ejdeejdg ddd Zdd Zdd Zdd ZdS )TestPowerDivergencec                 C   sH  | dj}|j ||d}|d ur|j ||dn|}|d u r#t|}	nt|}
|d ur1|
||n|f}|d j| }	t A}|td t	j
|||||d\}}t||j ||d |dksc|dkrxt	j||||d\}}t||j ||d W d    n1 sw   Y  t |}t	jj||	d | }t||j ||d d S )	Nr   r  r   r  r)  r*  r  rS   lambda_r   pearson)r)  r*  r  rS   )rb   r
  r,   r(   broadcast_arraysrk  r   r   r   re   power_divergencer.   	chisquarer   distributionsr+  sf)rj   r)  r*  r  rS   r2  expected_statrk   r
  num_obsr   r  r   statr  
expected_prs   rs   rt   check_power_divergence  s:   






z*TestPowerDivergence.check_power_divergencecaselambda_stat))Nr+  r3  r+  )r   r+  log-likelihoodr  mod-log-likelihoodr,  cressie-readr-  r  r-  c              	   C   s4   |\}}t ||}| |j|j|j|j||| d S r  )r  r=  r)  r*  r  rS   rj   r>  r?  rk   r2  attrr9  rs   rs   rt   r     s
   
zTestPowerDivergence.test_basicc              	   C   s  t d }t d }t|j|jf}tt|jt|j |jf}||}|d ur1||n|}| j||ddd|j	|j	g|d | j||ddd|j
|j
g|d | j||ddd|j|jg|d | j||ddd|j|jg|d |||jd}| j|d dd d|j	|d d S )	Nr   r   r3  r  rB  rD  rF  r\  )power_div_1d_casesr   r  r)  	ones_likerh   r*  rb   r=  r+  r  r,  r-  rg   )rj   rk   case0case1r)  r*  f_obs_reshapers   rs   rt   r    s:   

zTestPowerDivergence.test_axisc                 C   s0  t d }t d }t|j|jfj}tt|jt|j |jfj}|j|jg}|	dj
}|j	||d}|j	||d}|j	||d}|	dgdgg}tj|||d\}	}
t|	| tj|||d d\}}tj|||d d\}}t|}|j||jd d f ||jd d f fdd}t|
| d S )	Nr   r   r   r  r  rw  r  rR   )rJ  r   r  r)  ri  rK  rh   r*  r+  rb   r
  re   r5  r.   r(   r  r  )rj   rk   rL  rM  r)  r*  expected_chi2r
  r  r;  r  stat0p0stat1p1r   r<  rs   rs   rt   test_ddof_broadcasting  s2   
z*TestPowerDivergence.test_ddof_broadcasting)r@  rA  rC  rE  rG  c              
   C   s^   |\}}t ||}t  | |j|j|j|j||| W d    d S 1 s(w   Y  d S r  )r  rs  rt  r=  r)  r*  r  rS   rH  rs   rs   rt   test_empty_cases  s   

"z$TestPowerDivergence.test_empty_casesc           	      C   sl   t d j}t d j}t d j}t d j}|dj}|j||d}tj||||dd}d}t	|||d d S )Nr   r   r  r3  r1  r  r  )
rJ  r)  r*  r  rS   rb   r
  re   r5  r   )	rj   rk   r)  r*  r  rS   r
  r   r   rs   rs   rt   'test_power_divergence_result_attributes  s   




z;TestPowerDivergence.test_power_divergence_result_attributesc                 C   s   | ddgddgg}| ddgddgg}d}tjt|d	 tj|| dd
gd W d    n1 s6w   Y  tjt|d	 tj||dd W d    n1 sUw   Y  tj||d\}}t|| ddg t|| ddg d S )Nr   rE        >@rK   ro  g     A@g      9@For each axis slice...r         N@r)  r*  r   )r)  r*  rS   g̑m@gUUU@gj^4;?g4;?)rb   r  r   r   re   r5  r.   )rj   rk   r)  r*  rA  r;  r-  rs   rs   rt   test_power_divergence_gh_12282'  s   z2TestPowerDivergence.test_power_divergence_gh_12282c              	   C   s  | g d}d}|d|jd d }|||||||  }||||  }t|}|||jd d f ||jd d f fj	}| g d}	|
|	d}	t|	jd D ],}|	|df |	|df }
}tj|d d df |d d df |
d\}}t||d	d
 q]d S )N)ro  r        ,@g      1@rK   r  r   r   r   r   r   r   r  r   r   r   r   r   g*kqr   r   ) g      $g    @r  g     r@r  gffffffP@g       gLD@r  g      A@r   g     =@r  g     :@r   g8@r9   gffffff7@gq=
ףp?g7@r   g333336@r:   g6@r  gfffff6@r   g8@rK   g     A@r   g     j@)r^   r0   r   r2  g{Gzt?r*  )rb   r   rk  r  r  expr(   r  r  ri  rg   rj  re   r5  r.   )rj   rk   obsbetarl  r  expected_countsr   table4table5r2  r9  r;  r  rs   rs   rt   /test_power_divergence_against_cressie_read_data4  s(   	$ 
zCTestPowerDivergence.test_power_divergence_against_cressie_read_dataN)r   r   r   r=  r  r  r  rJ  r   r  rT  power_div_empty_casesrU  rV  r[  rd  rs   rs   rs   rt   r0    s"    !%r0  c                   @   s6   e Zd Zdd Zdd Zejdddgdd	 Zd
S )TestChisquarec                 C   s\   t tdd |ddg}|ddg}tj||d W d    d S 1 s'w   Y  d S )NrX  r   r   rE  rW  rY  rZ  )r   r   rb   re   r6  )rj   rk   r)  r*  rs   rs   rt   test_chisquare_12282ag  s
   "z#TestChisquare.test_chisquare_12282ac           
      C   s   t jd}d}|jdd|d}||}||}|j||jd}tj||ddd	}|| |	| }|
|d
 }t|j| t|j||jd}	t|j|	| d S )Nl   *m{m rX   rK  rH  rL  r  r^   F)r)  r*  r  	sum_checkr0   )r   rV  rW  r  poissonrb   r
  re   r6  r   r  r.   r   r$   r   r8  )
rj   rk   rO  r  lamrl   r   r  r   r  rs   rs   rt   test_chisquare_12282bp  s   

z#TestChisquare.test_chisquare_12282bzn, dtype)r  r  )i@B r-  c           	      C   s   t ||}|j|dg|d}|j|d |d g|d}t||}|\}}t||j||djddd t|j| t|j| d S )Nr   r  r0   r   vIh%<=r*  )	r  rb   re   r6  r.   r
  r/   r   r   )	rj   r  r
  rk   r_  r^  r   r;  r  rs   rs   rt   #test_chiquare_data_types_attributes  s   
 z1TestChisquare.test_chiquare_data_types_attributesN)	r   r   r   rg  rk  r  r  r  rm  rs   rs   rs   rt   rf  e  s
    	rf  c                   @   s(   e Zd Zejddd Zdd ZdS )TestChisquareMAr  c              	   C   s  t g dg dgj}t g dg dgj}t j||}t ddg}t ddt d d	t d
   ddt d dt d   g}tjj}t	|\}}t
|| t
||||jddd  tj|dd\}	}t
j|	|dd t
||||jddd  tj	|jdd\}}t
|| t
||||jjddd  tj|jddd\}	}t
j|	|dd t
||||jddd  t jjg dg dd}
t jjg dg dd}tj	|
|d\}}t
|d tj	t jg dd d\}}tt|t j tt|t j t|d t|tjjdd t jdd- t }|td  t	t jg \}}W d    n	1 sLw   Y  W d    n	1 s\w   Y  tt|t jj t|jd! t|j t jg g g g}t	|\}}tt|t jj t
|g  t jdd* t }|td  t	|j\}}W d    n	1 sw   Y  W d    n	1 sw   Y  tt|t jj t|jd" tt |j d S )#N)r6   r6   r       r^   )r^   r^   r1   r2   r3   )r   r   r   r   r   )r   r   r   r   r   g      8@r9   r0   r   ro  r  r1   r  r3   r  r   rR   r   rB  r]  r  r$  )rS   r2  )r1   r3   r4   r  rX   )r   r   r   r   r   r  )r0   r2   r6   rX   r  )r*  r:  r   r?  r@  r  rs   r  )r   r   ri  rt  r  r  re   r7  r+  r6  matr   r   r8  r  r5  r   r  r   r   r   rB  r   r   r   r  rk  r  r  )rj   r_  r  mobsexpected_chisq
expected_gr+  chisqr  gobs1exp1r   empty3rs   rs   rt   test_chisquare_masked_arrays  sz   "

z,TestChisquareMA.test_chisquare_masked_arraysc                 C   s   t g d}t j|}d}tjt|d t| W d    n1 s&w   Y  tjt|d t|| W d    d S 1 sDw   Y  d S )Nr7  z8`power_divergence` and `chisquare` support for masked...r   )	r   rb   rt  r  r  r  DeprecationWarningre   r6  )rj   r   rt  rA  rs   rs   rt   test_deprecation_warning  s   "z(TestChisquareMA.test_deprecation_warningN)r   r   r   r  r  rF  ry  r{  rs   rs   rs   rt   rn    s    

Jrn  c                  C   s  t g dt g dt g dt g dg} t g dt g dt g dt g dg}t g d	t g d
t g dt g dg}tt| d | d | d | d d tt|d |d |d |d d tt|d |d |d |d d tttj|d |d  d}tj|  }t|| tt| d | d | d | d d tt|d |d |d |d d tttj|d |d  d S )N)g"~j?g^I+?gI+?gjt?gMbX9?gʡE?x&?-?g?r   Gz?g+?gv?g9v?)g~jt?gx?gOn?r|  g"~j?n?gK7A`?r}  g7A`?r   bX9?gZd;O?g1Zd?gK?)gy&1?gzG?g`"?g!rh?g'1Z?gZd;O?grh|?gjt?gʡE?r   gzG?gS?gJ4?gʡE?)gK7?gh|?5?gl?g/$?g#~j?r  gQ?      ?g      ?r   r  g rh?g333333?
ףp=
?)r2   r1   r3   r1   r3   r1   r0   r3   r2   r2   r2   r1   )r0   r0   r   r0   r1   r   r0   r1   r0   r   r   r1   )r0   r2   r1   r1   r2   r1   r1   r2   r2   r   r0   r   )r1   r3   r2   r1   r2   r2   r1   r1   r1   r2   r2   r2   )r   g#@rA   r#  g$@)g333333@g@g@r<   g@)r&  r)  r>   r   @)g!@g!@333333 @ffffff
@g333333"@r   r   r0   r1   )gNt$@gBv?)g
__2@g5"]i2?)g\(\%@g+ԋ?r  )r   r   re   friedmanchisquarer   r   r   mstats)r  r  r  r   r   rs   rs   rt   test_friedmanchisquare  sN   









	


   

r  c                   @   s>   e Zd ZdZ	dddZdddZdd	 Zd
d Zdd ZdS )
TestKSTestzLTests kstest and ks_1samp agree with K-S various sizes, alternatives, modes.autorV   c           	      C   s8   t j|d||d}t||g}tt|||d d S Nr  r)  r  r$  )re   kstestr   r   r   	rj   rl   r)  expected_statisticexpected_probr  r  r1  r/  rs   rs   rt   _testOne"  s   zTestKSTest._testOnec                 C   s@   t j|d||d}t j|t jj||d}tt|||d d S r  )re   r  ks_1sampr  cdfr   r   r   )rj   rl   r)  r  r  r1  result_1samprs   rs   rt   _test_kstest_and_ks1samp(  s
   z#TestKSTest._test_kstest_and_ks1sampc                 C   s,   t ddd}d}t|d}t|| d S )Nr^   r   r7   r  r  )r   r  re   r  r   rj   rl   r   r   rs   rs   rt   test_namedtuple_attributes.  s   z%TestKSTest.test_namedtuple_attributesc                 C   sl   t ddd}| |d t ddd}| |d g d}| |d | j|dd	d
 | j|dd	d
 d S )Nr^   r   r7   r!  r  
r  Q?g333333g(\?Q?g(\ſg{GzgHzG?g\(\gGzr%  r@  r  r#  )r   r  r  r  rs   rs   rt   test_agree_with_ks_1samp5  s   z#TestKSTest.test_agree_with_ks_1sampc                 C   sx   t j ddt jg}t|tjj}tj|tjjdd}t t |s%J t|| t 	|j
r2J t 	|jr:J d S )Nr   r   T)_no_deco)r   r  re   r  cauchyr  r  rw  r   ry  r   r   )rj   r  r   r\  rs   rs   rt   test_pm_inf_gh20386A  s   
zTestKSTest.test_pm_inf_gh20386Nr  rV   )	r   r   r   r   r  r  r  r  r  rs   rs   rs   rt   r    s    

r  c                   @   sl   e Zd ZdZ	dddZdd Zdd	 Zd
d Zdd Ze	j
dejejge	j
dg ddd ZdS )TestKSOneSamplezY
    Tests kstest and ks_samp 1-samples with K-S various sizes, alternatives, modes.
    r  rV   c           	      C   s<   t j|t jj||d}t||g}tt|||d d S )Nr  r$  )re   r  r  r  r   r   r   r  rs   rs   rt   r  T  s   zTestKSOneSample._testOnec                 C   s0   t ddd}d}t|tjj}t|| d S )Nr^   r   r7   r  )r   r  re   r  r  r  r   r  rs   rs   rt   r  Z  s   z*TestKSOneSample.test_namedtuple_attributesc                 C   s   t ddd}| |ddd t ddd}| |dd	d
 g d}| |ddd | j|ddddd | j|ddddd d S )Nr^   r   r7   r!  g|N?g7.s?r  r  g{CTp?g M<b*?r  gZL?g86J4?r%  g+?r@  r  r#  gHD?gr?r   r  r  r  rs   rs   rt   test_agree_with_ra  s   z!TestKSOneSample.test_agree_with_rc                 C   sJ   t jjdddd}| j|ddddd	 | |d
dd | |ddd d S )Nr  rJ  h:)r;  rM  r`  r!  ghх?g7?asympr  r#  g^h?r%  gv!ԉ}?g*z)?)re   r  rQ  r  r  rs   rs   rt   test_known_examplesn  s   z#TestKSOneSample.test_known_examplesc                 C   s   t tttjdd ttdd tddd W d    n1 s#w   Y  t ttddd tg d}tt|dd	j	t
ttgd
 d S )Nr   Tzn is not integral: 1.5r   r:   r^   ))r  r   Tr   )r  皙?Tr   )r  r   Tr   )r  gTr   )ro        ?Tr   )ro  r  Fr   )ro  r9   Tgb?)ro  r9   FgiNq>)ro        ?Tgv(?)ro  r.  TgT	?)@  g\(\?Fr   )r        ?Fg(>)r  gQ?Fg@c?)r        ?FgX+ʳP?r  r1   )dtypes)r   r   ry  r   ri   r   r   rb   r   checkintr  bool)rj   datasetrs   rs   rt   test_ks1samp_allpathsv  s    z%TestKSOneSample.test_ks1samp_allpathsksfunc*alternative, x6val, ref_location, ref_sign))r%  r4   r4   r   )r#  r5   r5   r^   )r!  r4   r4   r   )r!  r5   r5   r^   c           	      C   sb   t dd }||d< tjddj}||||d}t|jddd |j|ks(J |j|ks/J d S )	NrX   r9   r4   rw  r(  r  r   r*  )	r   r   re   r  r  r
   r   statistic_locationstatistic_sign)	rj   r  r)  x6valref_locationref_signrl   r  r   rs   rs   rt   test_location_sign  s   
z"TestKSOneSample.test_location_signNr  )r   r   r   r   r  r  r  r  r  r  r  r  re   r  r  r  rs   rs   rs   rt   r  O  s    
#r  c                   @   s@  e Zd ZdZ	d3ddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zejjdd Zejjdd Zdd Zdd Zejjdd Zejjdd Zejjdd  Zd!d" Zejjd#d$ Zejd%g d&gfd&gg fg g ffd'd( Zejjd)d* Zd+d, Zejd-ejejgejd.g d/d0d1 Z d2S )4TestKSTwoSamplesz<Tests 2-samples with K-S various sizes, alternatives, modes.r  c           	      C   s4   t j||||d}t||g}tt|| d S )Nr  )re   ks_2sampr   r   r   )	rj   r  r  r)  r  r  r  r1  r/  rs   rs   rt   r    s   zTestKSTwoSamples._testOnec                 C   s   |  dgdgddd |  dgdgddd |  dgdgddd |  dgdgddd |  dgdgddd |  dgdgddd d S )	Nr   r   r!  r   r%  r9   r#  r   )r  r  rs   rs   rt   	testSmall  s   zTestKSTwoSamples.testSmallc                 C   s   t ddg}|d }|d }t g d}| ||ddd | ||ddd | ||d	dd | ||dd
d | ||dd
d | ||d	dd d S )Nr   r  rS  r7  r!  r   r%  r  r#  r  r2  r  r   r   r   r  rj   r  data1pdata1mr  rs   rs   rt   testTwoVsThree  s   zTestKSTwoSamples.testTwoVsThreec                 C   s   t ddg}|d }|d }t g d}| ||ddd | ||ddd	 | ||d
dd | ||ddd | ||ddd | ||d
dd d S )Nr   r  rS  rO  r!  r9   g?r%  g?r#  r.  皙?r  r1  r  r   r  r  rs   rs   rt   testTwoVsFour  s   zTestKSTwoSamples.testTwoVsFourc                 C   s   t ddd}|d d }|d d }| ||ddd | ||ddd	 | ||d
dd | ||ddd | ||ddd | ||d
dd d S )Nr   rJ  r0   r  r!  r  g~z?r%  gz;.B?r#  r   r   {Gz?gn2IU?r  )rj   x100	x100_2_p1	x100_2_m1rs   rs   rt   test100_100  s   zTestKSTwoSamples.test100_100c                 C   s   t ddd}t ddd}|d d }|d d }| ||ddd | ||d	dd
 | ||ddd | ||ddd | ||d	dd | ||ddd d S )Nr   rJ  r  r  r  r!  g?g@߿?r%  g}n?r#  r   g:[?g]O);?gѫ);?r   r   r  )rj   r  x110
x110_20_p1
x110_20_m1rs   rs   rt   test100_110  s   zTestKSTwoSamples.test100_110c                 C   s  t jdgd dgd  dgd  dgd  td}|d }t jdgd dgd  dgd  dgd  td}t jdgd dgd  dgd  d	gd  td}| ||d
dd | ||ddd | ||ddd | ||d
dd | ||ddd | ||ddd d S )Nr0   r1   r2   r3   r4   r  r   rX   r5   r!  g      ?g^dH?r%  gQl6y?r#  r   r   gVdEVdE?g(f^?g!?gii?g+ ϖ?)r   r   r  r  )rj   x2233x3344x2356x3467rs   rs   rt   testRepeatedValues  s   222z#TestKSTwoSamples.testRepeatedValuesc                 C   s   t g d}| ||d ddd | ||d ddd | ||d dd	d | ||d
 ddd | ||d
 ddd | ||d
 dd	d | ||d
 ddd | ||d
 dd	d | ||d
 ddd d S )Nr7  r   r!  r   r   r%  r  r#  r   r9   r  )rj   r  rs   rs   rt   testEqualSizes  s   zTestKSTwoSamples.testEqualSizesc           	   	   C   s  d\}}d| | d d }t dd|| }t dd|}| j||dd| | ddd	 | j||dd| | dd
d	 | j||dd| | dd
d	 | j||dd| | dd
d	 t .}d}|t| | j||dd| | ddd	 | j||dd| | ddd	 W d    n1 sw   Y  tjdd#}td | j||dd| | ddd	 t	|td W d    d S 1 sw   Y  d S )N)r9  iX  r   r0   r   r  r!  g     @@r  r  r  r%  g2JE?r#  g     @@gsW\nc?)ks_2samp: Exact calculation unsuccessful.r@  Trp  rq  
r   r  r  r   r   r   rs  rt  ru  rG  	rj   n1n2deltarl   rm   r   rA  r  rs   rs   rt   testMiddlingBoth  sB   
"z!TestKSTwoSamples.testMiddlingBothc           	   	   C   s  d\}}d| | d d }t dd|| }t dd|}| j||dd| | ddd	 | j||dd| | dd
d	 | j||dd| | ddd	 | j||dd| | ddd	 t .}d}|t| | j||dd| | ddd	 | j||dd| | ddd	 W d    n1 sw   Y  tjdd#}td | j||dd| | ddd	 t	|td W d    d S 1 sw   Y  d S )N)rK  L  r   r0   r   r  r!  g     ȹ@r  r  r  r%  gZ?r#  g     @@g@J?r  r@  Trp  rq  r  r  rs   rs   rt   testMediumBoth$  sB   
"zTestKSTwoSamples.testMediumBothc                 C   s   d\}}|d }d| | d d }t dd|| }t dd|}| ||dd	| d
 | ||dd| d | ||dd	| d d S )N)'  r  r  r   r0   r   r  rJ  r!  g    `@g      <r%  g     @g򼉷?r#  gimb:r  )rj   r  r  lcmr  rl   rm   rs   rs   rt   	testLargeA  s   zTestKSTwoSamples.testLargec                 C   s\   t jd t jjdd}t jjddd }| j||dddd	d
 | j||ddddd
 d S )N@ i  rL  i  r:   r!  gC?      <r  r  r@  r   rV  r  rX  r  r  rs   rs   rt   test_gh11184L  s   
zTestKSTwoSamples.test_gh11184c                 C   s   t jd t jjdd}t jjddd }| j||dddd	d
 | j||ddddd
 | j||dddd	d
 | j||dddd	d
 d S )Nr  r  rL  i'  r:   r!  g 	_r!?gAD5r  r  r  r@  r%  gלN#y7r#  gvqw?r  r  rs   rs   rt   test_gh11184_biggerV  s   
z$TestKSTwoSamples.test_gh11184_biggerc                 C   s   t jd tdddD ]3}t jj|d}t jj|d dd}tj||dd	j}tj||d
d	j}t|d|  t|d|  qd S )Nr  rK  i.  rL  rX   r9   rM  r;  r@  r  r  r1   )	r   rV  r  rj  rX  re   r  r   r   )rj   rl   vals1vals2r@  r  rs   rs   rt   test_gh12999e  s   zTestKSTwoSamples.test_gh12999c           	   	   C   s.  d\}}|d }d| | d d }t dd|| }t dd|}| j||dd| d	d
d | j||dd| ddd | j||dd| d	dd | ||dd| d | ||dd| d t +}d}|t| | j||dd| ddd | j||dd| ddd W d    d S 1 sw   Y  d S )N)r  i*  r  r   r0   r   r  r!  g     @gkHY?r  r  gLɔ.?r@  r  r%  g.LbG2?r#  r   gr?֎?r  )r   r  r  r   r   r   )	rj   r  r  r  r  rl   rm   r   rA  rs   rs   rt   testLargeBothq  s4   "zTestKSTwoSamples.testLargeBothc                 C   s$   d}t ddgdg}t|| d S )Nr  r   r0   r1   )re   r  r   rj   r   r   rs   rs   rt   testNamedAttributes  s   z$TestKSTwoSamples.testNamedAttributesc                 C   s   ddl m}m} |dddd |dddd tjdd tt|dd	dd tt|d
ddd W d    d S 1 s:w   Y  d S )Nr   )_count_paths_outside_method!_compute_outer_prob_inside_methodr   rK  i  r   r@  r  iK  rH  )scipy.stats._stats_pyr  r  r   rB  r   FloatingPointError)rj   r  r  rs   rs   rt   test_some_code_paths  s   "z%TestKSTwoSamples.test_some_code_pathsr>  r   c                 C   Z   t jttd tj| }t|jtj	 t|j
tj	 W d    d S 1 s&w   Y  d S r  )r  r  r   r   re   r  r   r   r   ri   r   rj   r>  r   rs   rs   rt   test_argument_checking  
   
"z'TestKSTwoSamples.test_argument_checkingc                 C   sd   t jd d}tjj|ddd}|d }tj||ddd tj||d	dd tj||d
dd dS )zEnsure gh-12218 is fixed.Na i    r   r   r  r%  r  r  r#  r!  N)r   rV  r  re   r  rQ  r  )rj   r  rvs1rvs2rs   rs   rt   test_gh12218  s   zTestKSTwoSamples.test_gh12218c                 C   s   t jjdd}|jddd }|jdd}d}tjt|d tj||d	d
}t|j	ddd W d    d S 1 s:w   Y  d S )Ni{fr  iq  rL  r9   iq  z(ks_2samp: Exact calculation unsuccessfulr   r#  r(  r   r  r   )
r   rV  RandomStater  r  r   re   r  r
   r   )rj   rO  r  r  rA  r   rs   rs   rt   test_warnings_gh_14019  s   "z'TestKSTwoSamples.test_warnings_gh_14019r  r  ))r%  皙@r  r   )r#  ffffff@r   r^   )r!  r  r  r   )r!  r  r   r^   c           	      C   s^   t jdt jd}| }||d< tj|||d}|jdksJ |j|ks&J |j|ks-J d S )NrX   r  r4   r(  r  )	r   r   r   r  re   r  r   r  r  )	rj   r  r)  r  r  r  rl   rm   r   rs   rs   rt   r    s   
z#TestKSTwoSamples.test_location_signN)r  )!r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  re   r  r  r  rs   rs   rs   rt   r    sH    







"

r  c               	   C   sp  d\} }| |  g||gf}t ddd}t ddd}t t dddt dddg}t t dddt dddg}tj||dd\}}t||g| |f tj|j|jdd\}}t||g| tj||dd\}}t||g| t -}	t jddd	 |		t
d
 tdd\}}W d    n1 sw   Y  W d    n1 sw   Y  tt | tt | d}
tj||dd}t||
 t |||g}t |||g}tj||dd\}}tt ||  tt || t|jd tjt |ddt |dddd\}}tt ||  tt || t|jd tttj||dd tj||ddd\}}t|d|d   t||  tj||ddd\}}t||d  t||  t jd}tjjddd|d}t j|d< tjjddd|dtjjdd|d }t j|d< t jdd tt||t jt jf W d    n	1 sw   Y  ttj||dd d! tttj||d"d  tttj||d#d  tjt
d$d% tg d&g d'\}}W d    n	1 sw   Y  tt ||ft jdf t jdd9 ttg d&g d&t jt jf t dt jgd(dgg}tt|t d)dt jgdt jgf W d    n	1 sAw   Y  t  d*}tttj|!d+|!d, d-d. }t "|}t j|d d d/d0f< t j|d d d1d2f< tjt#t$d% tj||ddd \} }W d    n	1 sw   Y  tjt#t$d% tj||dddd3\}}W d    n	1 sw   Y  t|| d4d5 t jdd t||| |dd4d5 W d    n	1 sw   Y  tjt#t$d% tj||dddd3\}}W d    n	1 sw   Y  t|| d4d5 t jdd t||| |dd4d5 W d    d S 1 s1w   Y  d S )6N)gu?gȵI?r   rJ  r  gKX@r   rR   r?  r  r  r   r   r  r  r0   r[  r  r(  r#  r}  r%  r  r3   rX     r  r9  r  )r<  rM  r`  r@  r   r   )ghm#1?gry̧?r   r   r  r   r/  r  r^   r\  r  )r6   r1   r0   r1   r2   c                 S   4   | dk r|dks| dkr|dkr|d S d|d  S Nr   r#  r%  r0   r   rs   r  r  altrs   rs   rt   convert.      ztest_ttest_rel.<locals>.convertr  r  r  r  rd  r  r*  )%r   r  r   re   	ttest_relr   ri  r   rB  r   r   r   ry  r   r]  absr   rk  r^  r   r   r
   rV  r  r  rQ  ri   r   r  r  r  r  r   rg   	vectorizer   r   )trrS  tprr  r  rvs1_2Drvs2_2Dr  r  r   r   r   rvs1_3Drvs2_3DrO  rl   rm   ananr  	converterrs   rs   rt   test_ttest_rel  s   "" 





"
	


$r  c                  C   s   t jdddg} g d}tj| |dd}tj|| dd}t|j|j dd t|j|jdd t|d	d  | d	d  }t||dd t|d
dd d S )Nr  r   r   r   r  r   r  r   r   r   r   r   )r#  grh|?-C6?)r   ri   re   r  r
   r   r   rl   rm   r  r  r3rs   rs   rt   test_ttest_rel_nan_2nd_argI  s   r  c                  C   sb   t jttd tg g } W d    n1 sw   Y  t| tjjs&J t	| t
jt
jf d S r  )r  r  r   r   re   r  r  	_stats_pyTtestResultr   r   ri   )r1  rs   rs   rt   #test_ttest_rel_empty_1d_returns_nan^  s
   r  zb, expected_shape)r   r3   r   rt  r   r   r   )r1   r   c                 C   s   t d}t j }|tt tj|| dd}W d    n1 s#w   Y  t	|tj
js1J t j|t jd}t|j| t|j| d S N)r1   r   r   r^   rR   r7  )r   r  r  r   r   r   r   re   r  r  r  r  r   ri   r   r   r   )r   expected_shaper   r   r1  expected_valuers   rs   rt   test_ttest_rel_axis_size_zerog  s   
r  c                  C   sV   t d} t d}tj| |dd}t|tjjsJ t|jj	d t|j
j	d d S N)r   r6   r   r3   r6   r   r   rR   r3   r   )r   r  re   r  r  r  r  r   r   rk  r   )r   r   r1  rs   rs   rt    test_ttest_rel_nonaxis_size_zeroy  s   

r#  r)  r  c                 C   s   t jd}d}|j|ddd}|j|ddd}ddgdt jgt j d	gd
}tj||| d}|jdd}t|||   t	|j
|d  d S )Nl   C67l:  rX   r:   r0   r  gZ?Ygi{a?g8 gC?r  r(  r  r  r   )r   rV  rW  rX  r  re   r  r  r
   r   r  )r)  rO  r  rl   rm   r\  r   r2  rs   rs   rt   test_ttest_rel_ci_1d  s   	
r$  ztest_fun, argsrX   c                 C   sL   | | }d}t jt|d |jdd W d    d S 1 sw   Y  d S )Nr  r   rX   r  )r  r   r   r  )test_funr  r   rA  rs   rs   rt   test_ttest_ci_iv  s
   "r&  r  c                   s8    d u r	t | |n  d fdd	}|| |||| S )Nr   c                    s<     | }  j| |d} j| |dd}| j| }|||fS )NrR   r   r  )rb   rh   r   rk  )rl   rS   mur   nobsr  rs   rt   _stats  s
   


z_desc_stats.<locals>._statsrX  )r(   )r  r  rS   rk   r)  rs   r  rt   _desc_stats  s   r*  c                 C   sv  |  d}|  d}|  || g}|  ||g}| ddd}| ddd}| ||g}| ||g}tj||dd}	|	\}
}t|
| t|| tjt|| }	|	\}
}t|
| t|| tj|j|jdd}	t|	j	| t|	j
| tjt|j|j }	t|	j	| t|	j
| tj||dd}	t|	j	| t|	j
| tjt||dd }	t|	j	| t|	j
| d	}tjt|d
 tj||dd W d    n1 sw   Y  t|j|j}tjt|d
 tj|ddi W d    n1 sw   Y  tj||dd\}
}t|d|d   t|
| tj||dd\}
}t||d  t|
| tj|j|jddd}t|j|j}tj|ddi}t|j	|j	 t|j
|j
 tj|j|jddd}t|j|j}tj|ddi}t|j	|j	 t|j
|j
 |  | j}| | |jd dk||}tj||dd}	t|	j	| t|	j
| tjt|| }	t|	j	| t|	j
| d S )N	ru?g8Mѱ?r3   i   rJ  r   r   rR   r  r   r  r(  r)  r#  r0   r%  r}  )rb   r  r  re   	ttest_indr.   ttest_ind_from_statsr*  ri  r   r   r  r   r   ri   r  r   rk  r/   )rk   r
  rS  tr_2Dpr_2Dr  r  r  r  r   r  r  rA  r  r  r]  NaNrs   rs   rt   test_ttest_ind  sx   







r2  c                  C   s  t ddd} t ddd}t | |g}t || g}t |||g}t |||g}t jd}tjjddd|d}t j	|d	< tjjddd	|d}t j
d
d tt||t j	t j	f W d    n1 siw   Y  ttj||ddd tttj||dd tttj||dd tjtdd tg dg d\}	}
W d    n1 sw   Y  tt |	|
ft jdf t j
d
d9 ttg dg dt j	t j	f t dt j	gddgg}tt|t ddt j	gdt j	gf W d    n1 sw   Y  t j	|d d d d ddf< t j	|d d d d ddf< dd }t |}tj||ddd\}}tj||dddd\}	}
t|	|d d! t|
|||dd d! tj||ddd"d\}	}
t|	|d d! t|
|||d"d d! d S )#Nr3   r,  rJ  r   r  rX   r  r  r9  r?  r@  r   r   )guͷ?g*,?r   r   r  r   r/  r  r   r^   r\  r  r4   rZ   c                 S   r  r  rs   r  rs   rs   rt   r  5  r  z*test_ttest_ind_nan_policy.<locals>.convertr  r#  )rS   r   r)  r  r*  r%  )r   r  r   r]  rV  r  re   r  rQ  ri   rB  r   r-  r   r   r   r  r  r   r   r  r  r  r	  r
   )r  r  r  r  r  r  rO  rl   rm   r  r  r  r  r  r
  rS  rs   rs   rt   test_ttest_ind_nan_policy  sX   
"


r3  c               	   C   s   t  ,} tjdd | td tdd\}}W d    n1 s#w   Y  W d    n1 s2w   Y  t|s>J t|sEJ d S )Nr?  r@  r  r   r   )r   r   rB  r   r   re   r-  ry  )r   r  r  rs   rs   rt   test_ttest_ind_scalarH  s    r4  z&ignore:Arguments...:DeprecationWarningc                   @   s  e Zd ZdZejd eede d ejde d fZ	eeed d ejed fZ
edZedd ZddgZddgZejd ejjd	dd
ddd	jZejjddddZddgZddgZg dZe	e
ddiefe	je
jddiefe	dddf e
dddf ddied fe	dddf  e
dddf  ddied fe	e
dddefe	e
ejdddefeeddidfeedddefeei dfe	e
ejdddefg
Zejdedd Z dd Z!dd Z"d d! Z#d"d# Z$ej% d$d% Z&d&d' Z'd(d) Z(d*d+ Z)ejd,g d-ejd.d/d0gd1d2 Z*ejd,g d-ejd.d/d0gd3d4 Z+d5d6 Z,e-ejj.dd7d8ej/d9d:d; Z0dS )<Test_ttest_ind_permutationsr  r   r1   r2   rJ  rX   r   r0   r3   r9  r:  r6   g'^P?gCq?g$R?)g=B?g?goŜ?gp?g'^?rS   N)r`  rS   	equal_varTr^   )rS   r`  r   za,b,update,p_dc                 C   sv   d dd}d dddd}| | | | tj||fi |\}}tj||fi |\}	}
t||	d t|
| d S )NFrS   r6  rK  r   )rS   r6  permutationsr`  r3   )updatere   r-  r   )rj   r   r   r9  p_d	options_a	options_pstat_ar  stat_pr   rs   rs   rt   test_ttest_ind_permutations{  s   


z7Test_ttest_ind_permutations.test_ttest_ind_permutationsc                 C   s  t jd d}t jd|d}t jd|d}ddd}|jdd tj||fi |}tj||fi |}|jd	d tj||fi |}tj||fi |}|jd
d tj||fi |}	tj||fi |}
t|j|j t|j|	j t|j|j  t|j|j  t|	j|
j  t|	j	|
j	 t|j	|j	 t|j	|j	 |j	dk}t|j	| |j	|  |	j	|  t|j	|  |j	|   |	j	|   d S )Nr   r1   r0   r   rK  )rS   r8  r%  r(  r#  r!  r9   
r   rV  r  r  r9  re   r-  r   r   r   )rj   Nr   r   r<  res_g_abres_g_bares_l_abres_l_bares_2_abres_2_bar  rs   rs   rt    test_ttest_ind_exact_alternative  s:   


z<Test_ttest_ind_permutations.test_ttest_ind_exact_alternativec                 C   s   t jd d}t j|}t j|}t||}tj||dd}tj||dd}tj||t jd}|j|jks;J |j|jksCJ |j|jksKJ d S )Nr   r1   rK  r8  )r   rV  r  r  re   r-  r  r   )rj   rA  r   r   r  r  r]  r.  rs   rs   rt   test_ttest_ind_exact_selection  s   z:Test_ttest_ind_permutations.test_ttest_ind_exact_selectionc           
      C   s   t jd t jd}t jd}t ||f}t|t|}}d}t|||d\}}}tt|}	|	t|| |ks?J t||	ksGJ d S )Nr   r1   r2   r)  T)	r   rV  r  r  rv  r  r   setr   )
rj   r   r   r  nanbr8  t_statr  n_uniquers   rs   rt   !test_ttest_ind_exact_distribution  s   
z=Test_ttest_ind_permutations.test_ttest_ind_exact_distributionc           	      C   s  t jd d}t jdd|}t jd|}dddd}|jdd	 tj||fi |}tj||fi |}|jd
d	 tj||fi |}tj||fi |}t|j|j t|j|j  t|j|j  t|j	|j	 dd|d d    t|j	|j	 dd|d d    d S )Nr   r  r0   r1   r^   rK  )rS   r8  r`  r%  r(  r#  r   r8  r@  )	rj   rA  r   r   r<  rB  rC  rD  rE  rs   rs   rt   #test_ttest_ind_randperm_alternative  s(   z?Test_ttest_ind_permutations.test_ttest_ind_randperm_alternativec           	      C   sN  t jd d}t j|d}t j|d}ddd}|jdd tj||fi |}|jdd tj||fi |}|jd	d tj||fi |}t|j|j d
d
|d d
    |jdk}t	d|j|  |j| dd t	dd
|j|    |j|  dd t	d|j|   |j|  dd t	dd
|j|   |j| dd d S )Nr   r  r2   r  r8  r`  r%  r(  r#  r!  r   r8  r9   r0   r  r   )
r   rV  r  r  r9  re   r-  r   r   r
   )	rj   rA  r   r   r<  rB  rD  rF  r  rs   rs   rt   $test_ttest_ind_randperm_alternative2  s6   




z@Test_ttest_ind_permutations.test_ttest_ind_randperm_alternative2c           	      C   s  t jd d}t j|d}t j|d}t j|d< t j|d< t j|d< t j|d< ddd}|jd	d
 ttdd tj	||fi |}W d    n1 sPw   Y  t
 }|td |jdd
 tj	||fi |}t |jddt |jddB }tj	|d d | f |d d | f fi |}t|j| t j t|j| t j t|j|  |j t|j|  |j tj	| | fi |}t |jsJ t |jsJ W d    d S 1 sw   Y  d S )Nr   r  r3   r3   r   )r6   r0   )r7   r1   rK  rR  r   r   r   r   r   r  rR   )r   rV  r  r  ri   r9  r   r   re   r-  r   r   r   ry  rx  r   r   r   r
   rp  )	rj   rA  r   r   r<  r   r   r  r]  rs   rs   rt   $test_ttest_ind_permutation_nanpolicy  s6   




$0"z@Test_ttest_ind_permutations.test_ttest_ind_permutation_nanpolicyc                 C   s   t tdd tj| j| jdd W d    n1 sw   Y  t tdd tj| j| jdd W d    n1 s;w   Y  t tdd tj| j| jdddd	 W d    d S 1 s^w   Y  d S )
NzPermutations must ber   r_   rI  r:   z'hello' cannot be usedr   hello)r8  r`  rS   )r   r   re   r-  ri  b2r   r   r  rs   rs   rt   'test_ttest_ind_permutation_check_inputs6  s   "zCTest_ttest_ind_permutations.test_ttest_ind_permutation_check_inputsc                 C   sN   d}t j|d}t j|d}tj||ddj}td|v d|vs%J d S )NrX   r  r   rI  r   )r   rV  r  re   r-  r   print)rj   rA  r   r   p_valuesrs   rs   rt   )test_ttest_ind_permutation_check_p_values?  s   zETest_ttest_ind_permutations.test_ttest_ind_permutation_check_p_valuesr)  rC  rk  )rZ   )r0   rZ   c                 C   s   t jd}|j|d}|jdd}tdd}t jd}tjdd|i|}tj||d||d	}d
d }	t jd}tj||f|	fd||d|}
t|j	|
j	 t|j
|
j
 tj||d|d}
t|j	|
j	 t|j
|
j
dd d S )N   Nvf_aB rL  r[     r     N\Sju	 rO  r^   rS   r)  r?  c                 S      t j| ||djS NrR   re   r-  r   rl   rm   rS   rs   rs   rt   r   W      zFTest_ttest_ind_permutations.test_permutation_method.<locals>.statistic)rS   rO  r)  r}  r  r*  rs   )r   rV  rW  r  re   rY  r-  permutation_testr   r   r   r
   )rj   r)  rk  rO  rl   rm   r  r?  r   r   r\  rs   rs   rt   test_permutation_methodH  s&   
z3Test_ttest_ind_permutations.test_permutation_methodc                 C   sD  t jd}|j|d}|jdd}tdd}dd }t jd}|j|jg}tj||ff||d	|d
|}	t jd}|j|jg}tjdd|i|}
tj||d	||
d}t	|j
|	j
 t	|j|	j tjdddi|}
tj||d	||
d}t	|j
|	j
 t	|j|	j tj||d	|d}	t	|j
|	j
 t|j|	jdd d S )Nr\  rL  r[   r]  r^  c                 S   ra  rb  rc  rd  rs   rs   rt   r   n  re  zFTest_ttest_ind_permutations.test_monte_carlo_method.<locals>.statisticr_  r^   )rQ  r   rS   r)  rQ  r`  rO  r}  r  r*  rs   )r   rV  rW  r  r  re   monte_carlo_testrZ  r-  r   r   r   r
   )rj   r)  rk  rO  rl   rm   r  r   rQ  r\  r?  r   rs   rs   rt   test_monte_carlo_methodd  s2   
z3Test_ttest_ind_permutations.test_monte_carlo_methodc                 C   sP   d}t jt|d tjg dg ddd W d    d S 1 s!w   Y  d S )NzC`method` must be an instance of `PermutationMethod`, an instance...r   r:  rQ  	migratoryr>  )r  r   r   re   r-  r  rs   rs   rt    test_resampling_input_validation     "z<Test_ttest_ind_permutations.test_resampling_input_validationr  r  rG   c                 C   s   | | j| | j}}d}t|rtj||dd ntjt|d tj||dd W d    n1 s6w   Y  d}t	j
d}tj|d}t|rWtj|||d d S tjt|d tj|||d W d    d S 1 srw   Y  d S )	Nz;Use of `permutations` is compatible only with NumPy arrays.rX   rI  r   z?Use of resampling methods is compatible only with NumPy arrays.l   /gGy rN  r>  )rb   ri  rW  r*   re   r-  r  r   r  r   rV  rW  rY  )rj   rk   ri  rW  rA  rO  r?  rs   rs   rt   %test_permutation_not_implement_for_xp  s   "zATest_ttest_ind_permutations.test_permutation_not_implement_for_xp)1r   r   r   rA  r   rV  r  r  r   r   r   ri  rW  rj  b3re   r  rQ  rg   ri  r  r  r:  p_d_genp_d_bigrd   r  rW  paramsr  r  r  r?  rH  rJ  rP  rQ  r  rS  rU  rX  r[  rg  ri  rk  r&   rG   r  rm  rs   rs   rs   rt   r5  Q  sl    ,(


*2

*
!$		!
r5  c                   @   s   e Zd Zej ejjddddddii gg ddejjd	d
dgd	dgddd Zejjddddddii gg ddejdddgdd ZdS )Test_ttest_ind_commonkwdsr  r   rR  trimr  )r8  rt  basic)idsr6  TFunequal_varc                 C   s  t jd t jdddddd}t jddddd}tj||fd	d
i|}d\}}}||d d |d d dd d f }	|d d dd d |d d f }
tj|	|
fd	di|}t|j|d d ||d d f |j t|j|d d ||d d f |j t 	t 
|dd
d}t 	t 
|dd
d}|jd d }t |}t |}tdd |D  D ] }|| }|| }tj||fd	di|}|j||< |j||< qt||j t||j d S )Nr   r3   r2   r5   r   r4   r6   r0   rS   r_   )r0   r1   r   r#  r   r   r   r   r0   r   r^   r3   r   r2   r   r   r   c                 s       | ]}t |V  qd S r  r  r  rs   rs   rt   	<genexpr>      z=Test_ttest_ind_common.test_ttest_many_dims.<locals>.<genexpr>)r   rV  r  r  re   r-  r   r   r   r^  tilerk  r  r   r
   )rj   rs  r6  r   r   r   rl  r  r  ri  rW  r]  rl   rm   rk  
statisticspvaluesindicesxiyir.  rs   rs   rt   test_ttest_many_dims  s6   
 


z*Test_ttest_ind_common.test_ttest_many_dims)rt  r8  ru  rS   r^   c           
   	   C   s  t jjdddd}t jjdddd}t j|d d d< t j|d d d< t t j|| |d	}t 6}t jd
d  |	t
d |	t
d tj||fd|i|}W d    n1 saw   Y  W d    n1 spw   Y  t |j}t|| t |j}	t|	| d S )NrX   )r3   r1   rX   rL  r  r   r0   r1   r4   rR   r?  r@  z'invalid value encountered in less_equalr  rS   )r   rV  randintr,  ri   ry  r  r   rB  r   r   re   r-  r   r   r   )
rj   rs  rS   r   r   r/  r   r   p_nansstatistic_nansrs   rs   rt   test_nans_on_axis  s$    
z'Test_ttest_ind_common.test_nans_on_axisN)	r   r   r   r  r  r  r  r  r  rs   rs   rs   rt   rr    s$    #rr  c                	   @   s   e Zd Zg dg ddddgg dg ddddgg dg dd	d
dgg dg ddddgg dg ddddggZejdedd Zdd Zdd Z	ejdddd Z
dd  Zeejjd!d"d#ejd$d%d& Zejd'g d(d)d* Zd+S ),Test_ttest_trimr:  r  r$  g@g9(?ger  )r  g33333`@rZ   g33333^@g(\P@rN  gfffffڇ@gBM)u?g]@gyd?g	s5v@g{Gz?r#  r#  r  r   ffffff?r   r(  r(  r  r  r  r?   g@r  r<   r9   r(  g333333@r&  r  g@r%  gn4aƂg?^)g,
gm?giI@gE|x!gvwQ?glfPg_)gXG~?g=n@g8$mg({g]:m?gYv gb?gb	gSTß}g9yg.Ͽv?g޺i?g	'X@)g>_\?g hO?gau?@g׌g+?g:؜^gz54g7f?gDO%@g#xG@g\F?g4E?gnfg>P"ۿguX@gvR?g%?g2Ydzgo?gih?gn?g!nu?gJ+bza,b,pr,tr,trimc                 C   s6   t j|||dd\}}t||dd t||dd dS )a  
        Using PairedData's yuen.t.test method. Something to note is that there
        are at least 3 R packages that come with a trimmed t-test method, and
        comparisons were made between them. It was found that PairedData's
        method's results match this method, SAS, and one of the other R
        methods. A notable discrepancy was the DescTools implementation of the
        function, which only sometimes agreed with SAS, WRS2, PairedData and
        this implementation. For this reason, most comparisons in R are made
        against PairedData's method.

        Rather than providing the input and output for all evaluations, here is
        a representative example:
        > library(PairedData)
        > a <- c(1, 2, 3)
        > b <- c(1.1, 2.9, 4.2)
        > options(digits=16)
        > yuen.t.test(a, b, tr=.2)

            Two-sample Yuen test, trim=0.2

        data:  x and y
        t = -0.68649512735573, df = 3.4104431643464, p-value = 0.5361949075313
        alternative hypothesis: true difference in trimmed means is not equal
        to 0
        95 percent confidence interval:
         -3.912777195645217  2.446110528978550
        sample estimates:
        trimmed mean of x trimmed mean of y
        2.000000000000000 2.73333333333333
        Frt  r6  r   r   Nre   r-  r
   )rj   r   r   rS  r
  rt  r   r   rs   rs   rt   test_ttest_compare_r  s    z$Test_ttest_trim.test_ttest_compare_rc                 C   sF   g d}g d}t j||ddd\}}t|ddd t|d	dd d S )
N)rZ   rV   rJ  r  ro  ,   rZ   rV   rJ  r  ro  r  )r`   r  rV   rZ   r     rK  r`   r  rV   rZ   r  r  rK  g
ףp=
?Fr  gRbv?r,  r   gOi?r  rj   r   r   r   r   rs   rs   rt   test_compare_SAS&  s
   z Test_ttest_trim.test_compare_SASc                 C   sD   g d}g d}t j||dd\}}t|ddd t|ddd d	S )
a  
        The PairedData library only supports unequal variances. To compare
        samples with equal variances, the multicon library is used.
        > library(multicon)
        > a <- c(2.7, 2.7, 1.1, 3.0, 1.9, 3.0, 3.8, 3.8, 0.3, 1.9, 1.9)
        > b <- c(6.5, 5.4, 8.1, 3.5, 0.5, 3.8, 6.8, 4.9, 9.5, 6.2, 4.1)
        > dv = c(a,b)
        > iv = c(rep('a', length(a)), rep('b', length(b)))
        > yuenContrast(dv~ iv, EQVAR = TRUE)
        $Ms
           N                 M wgt
        a 11 2.442857142857143   1
        b 11 5.385714285714286  -1

        $test
                              stat df              crit                   p
        results -4.246116897032513 12 2.178812829667228 0.00113508833897713
        r  r  r  rt  gR?r  r   g^Nr  r  rs   rs   rt   test_equal_var5  s
   zTest_ttest_trim.test_equal_varz	alt,pr,tr))r%  gjΜ>5?r  )r#  gn4aƂW?r  c                 C   sH   g d}g d}t j||dd|d\}}t||dd t||dd dS )	z
        > library(PairedData)
        > a <- c(2.7,2.7,1.1,3.0,1.9,3.0,3.8,3.8,0.3,1.9,1.9)
        > b <- c(6.5,5.4,8.1,3.5,0.5,3.8,6.8,4.9,9.5,6.2,4.1)
        > options(digits=16)
        > yuen.t.test(a, b, alternative = 'greater')
        r  r  r  F)rt  r6  r)  r  r   Nr  )rj   r  rS  r
  r   r   r   r   rs   rs   rt   test_alternativesO  s   
z!Test_ttest_trim.test_alternativesc              	   C   s  d}t t|d. d}tjt|d tjddgddgddd W d    n1 s*w   Y  W d    n1 s9w   Y  t t|d8 d	}tjt|d tjddgddgdddd
 W d    n1 sgw   Y  W d    d S W d    d S 1 sw   Y  d S )Nz>Use of `permutations` is incompatible with with use of `trim`.r   z5Arguments {'permutations'} are deprecated, whether...r   r0   r1   r  )rt  r8  z9Arguments {.*'random_state'.*} are deprecated, whether...)rt  r8  r`  )r   r  r  r  rz  re   r-  )rj   r   rA  rs   rs   rt   test_errors_unsupportedc  s$   "z'Test_ttest_trim.test_errors_unsupportedTr  r  rG   c                 C   s~   d}| d| dd }}t|rtj||dd d S tjt|d tj||dd W d    d S 1 s8w   Y  d S )Nz3Use of `trim` is compatible only with NumPy arrays.rX   r   r  r  r   )r   r*   re   r-  r  r   r  )rj   rk   rA  r   r   rs   rs   rt   rm  q  s   "z5Test_ttest_trim.test_permutation_not_implement_for_xprt  )gɿr9   r   c                 C   sN   d}t t|d tjddgddg|d W d    d S 1 s w   Y  d S )Nz/Trimming percentage should be 0 <= `trim` < .5.r   r   r0   r  )r   r   re   r-  )rj   rt  r   rs   rs   rt   test_trim_bounds_error~  s   "z&Test_ttest_trim.test_trim_bounds_errorN)r   r   r   rq  r  r  r  r  r  r  r  r  r&   rG   r  rm  r  rs   rs   rs   rt   r    sH    
#

	r  c                   @   sF  e Zd ZejddZg ded< dddej dged	< ddd
dejged< g ded< dddej dged< ddddejged< dddejejged< dddejejged< dddejejged< dd d!ejejged"< dd d#ejejged$< dd d%ejejged&< ej	
d'g d(ej	
d)d*d+gej	
d,d-d.gd/d0 Zd1S )2Test_ttest_CI)r1   r0   r0   r3   )rk  )gͿe13@gv7?gę"Ͽg8 {M(?r/  r  r  gv7?gx_?r  g
/?gD .ɿ)r0   r   r   )reϿ-</&@g?JJ?gbտg3Պ?)r   r   r   r  r  g?JJ?gF?)r   r   r   g{?gads2ѿ)r0   r   r   gs"%οr  gW"?)r   r   r   gW"?r   r   r   g:T'?)r0   r   r   g:пrV   g0:5?rG  g0:5?r  g be?)r0   r   r   r)  r  r6  FTrt  r   r  c                 C   s,  |r	|r	t d |rt|st d tjd}||d}||d}tj	|||||d}ddd	d
}	| j
|	| t|tt|f }
|
\}}}}}d}t|j|||d t|j|||d t|j|||d |s|d}t|j|||d t|j|||d d S d S )Nz3Discrepancy in `main`; needs further investigation.z*`trim` is only compatible with NumPy inputl   'Nk' rY   r[   )r)  r6  rt  r   r   r0   r  r8  r*  r  )r  xfailr*   r  r   rV  rW  rb   re   r-  r   r  ceilr.   r   r  r   r  r  r  )rj   r)  r6  rt  rk   rO  rl   rm   r   r  r\  r   r  r   r  r  r+  r2  rs   rs   rt   test_confidence_interval  s,   


"
z&Test_ttest_CI.test_confidence_intervalN)r   r   r   r   r  r   r  ri   r  r  r  r  rs   rs   rs   rt   r    s$    !r  c            
   	   C   s  t jd t jdddddd} t jddddd}t| |fd	d
}t | d} t |d d}tdd |jD  D ]C}|\}}}}}}	|| jd	 k rc| ||||||	f |||||||	f ksbJ q;|||||| jd	  ||	f |||||||	f ks~J q;d S )Nr   r3   r2   r1   r   r4   r6   r0   r_   rR   rx  )N.ry  c                 s   rz  r  r  r  rs   rs   rt   r{    r|  z.test__broadcast_concatenate.<locals>.<genexpr>)r   rV  r  r  r   r}  r   rk  )
r   r   r  indexrl  r  r  r  r  r  rs   rs   rt   test__broadcast_concatenate  s   .8r  c                 C   s  |  g d}|  g d}|  d}|  d}tj||dd\}}t|| t|| tjt||ddi\}}t|| t|| |  g d}|  d	}|  d
}tj||dd\}}t|| t|| tjt||ddi\}}t|| t|| |  d}|  d}|  d}|  d}|  || g}	|  ||g}
| ddd}| ddd}| ddd}| ||g}| ||g}tj||ddd\}}t|| t|| tjt||ddi\}}t|| t|| tj||ddd\}}t|| t|| tjt||ddi\}}t|| t|| tj|j|jddd}t|j	|	 t|j
|
 t|j|j}tj|ddi}t|j	|	 t|j
|
 tj||ddd}t|j	|	 t|j
|
 t||dd}tj|ddi}t|j	|	 t|j
|
 d S )Nr7  r  g9(?geFr6  r6  rO  gJ?g9ʿr+  g@[?gωұ?ghG?r   rJ  r  r3   r,  r   r7  rR   )rb   re   r-  r.   r.  r*  r  r  ri  r   r   )rk   r   r   rS  r
  r  r  	tr_uneq_n	pr_uneq_nr/  r0  rvs3r  r  r  r  r   r  rs   rs   rt   test_ttest_ind_with_uneq_var  sp   























r  c                 C   sB  |  d}| d}tjtdd tj||dd\}}W d    n1 s&w   Y  t|| | j	  t|| d t
jddT tj||dd\}}t|| | j t|| | j | d	| jgd
d	gg}tj||  ddd\}}t|| dt
jg t|| dt
jg W d    d S 1 sw   Y  d S )Nr1   r  r   Fr  r   r?  r  r   r^   r\  r   )r  ru  r  r  r   re   r-  r/   rb   r  r   rB  ri   )rk   rl   rm   r  r  r  rs   rs   rt   test_ttest_ind_zero_division;  s    

"r  c                  C   s   t jdddg} g d}tj| |dd}tj|| dd}t|j|j dd t|j|jdd t|| d	d  }t||dd t|d
dd d S )Nr  r   r   r  r   r   r   r   r   )g8HgW@?)r   ri   re   r-  r
   r   r   r  rs   rs   rt   test_ttest_ind_nan_2nd_argT  s   
r  c                 C   s   t | r(tjttd t| g | g }W d    n1 s"w   Y  nt| g | g }t|tj	j
s=J | | jd }t|j| t|j| d S )Nr   rs   )r*   r  r  r   r   re   r-  rb   r  r  r  ri   r/   r   r   )rk   r   r1  rs   rs   rt   #test_ttest_ind_empty_1d_returns_nanj  s   r  rv   rw   c                 C   s   | d}|| } tj }|tt tj	|| dd}W d    n1 s(w   Y  t
|tjjs6J |j||jd}t|j| t|j| d S r  )r  rb   r   r  r   r   r   r   re   r-  r  r  r  r   ri   r/   r   r   )r   r  rk   r   r   r   r  rs   rs   rt   test_ttest_ind_axis_size_zeroy  s   


r  c                 C   Z   |  d}|  d}tj||dd}t|tjjsJ |jjdks#J |jjdks+J d S r   	r  re   r-  r  r  r  r   rk  r   rk   r   r   r   rs   rs   rt    test_ttest_ind_nonaxis_size_zero  s   

r  c                 C   r  )N)r   r5   r   r!  r   rR   r"  r  r  rs   rs   rt   2test_ttest_ind_nonaxis_size_zero_different_lengths  s   

r  z"Other backends don't like integersr   c                 C   sr   |  ddg|  ddg}}|  ddg|  ddg}}|  ddg|  dd	g}}t|||||| d S )
Nr   r0   r1   r2   r3         rJ     )rb   re   r.  )rk   mean1mean2std1std2nobs1nobs2rs   rs   rt   test_gh5686  s   r  c              	   C   sT   |  d}|  d}|  | j}tj||||||dd}t|j| t|j| d S )Nr   r   Fr  )rb   ri   re   r.  r/   r   r   )rk   zerosixr1  r   rs   rs   rt   %test_ttest_ind_from_stats_inputs_zero  s   

r  c                 C   sH  t jd}| |jdd}| |jdd}|jdd}tj||ddd}t |j}t	|t j
jd	ks;J tt |||d
d tj||ddd}t |j}t	|t j
jd	kscJ tt |||d
d | g d| dg}}tj||dd}t| rdnd}t|j| d|d t|j| d|d d S )Nl   bQ )r  r0   rL  )r  r   rJ  Tr^   )r6  rS   r  rS  r   )r0   r1   r3   r:   r  r,  r  gzNd?r*  gJ?)r   rV  rW  rb   rX  r  re   r-  r   r  r  r
   quantiler+   r.   r   )rk   rO  rl   rm   ra  r   r   r+  rs   rs   rt   test_ttest_uniform_pvalues  s"   r  c                 C   sN   | |dk}| |dk}| dk |@ | dk|@ B }|||d d|d  S )Nr#  r%  r   r0   r   )rb   r  )r  r  r  rk   r#  r%  rl  rs   rs   rt   _convert_pvalue_alternative  s   r  c                 C   s  d\}}}t jjdd|||fd}| |}| d||f}t j||dd\}}t j|ddd\}}	t |d d ddf d\}
}t||d	d
 t|d |
d	d
 t|j||f | |d|f}t j||dd\}}t j|ddd\}}	t |dd d df d\}
}t||d	d
 t|d |
d	d
 t|j||f | ||df}t j||dd\}}t j|ddd\}}	t |ddd d f d\}
}t||d	d
 t|d |
d	d
 t|j||f t | g dd\}}t	| 
|| | j t	|| d t |d d d d d d f d\}}t j|d d d d d d f ddd\}}t||d| }t|| t|| t j|d d d d d d f ddd\}}t||d| }t|| t|| tjddR t | g dd}t	|j| | j t	|j| | j | dtjgddgg}t |d}t	|j| d| jg t	|j| d| jg W d    d S 1 sw   Y  d S )NrX   r  r  r3   rX   r:  r   r   rR   r   r  r*  rw  r0   )r   r   r   r   r%  r(  r#  r?  r  r   )re   r  rQ  rb   ru  r  r.   r   rk  r/   r  r  r  r   rB  r   ri   r   )rk   r  r  n3rvn1r  r  rS  r  p2r  p3r  r  r
  rS  pcr   r  rs   rs   rt   test_ttest_1samp_new  sZ   

&*

*

$r  z(Only NumPy has nan_policy='omit' for nowc           
      C   s  d\}}}t jjdd|||fd}| |}| j|ddddd	d
f< t j|d d d d d d f ddd\}}t j|d d d d d d f dddd\}}t||d| }	t||	 t|| t j|d d d d d d f dddd\}}t||d| }	t||	 t|| d S )N)r3   rX   r  r3   rX   r:  r   r0   r   r1   r2   r6   r   r   r   r%  rd  r#  )re   r  rQ  rb   ri   r  r  r.   )
rk   r  r  r  r  r
  rS  r  r  r  rs   rs   rt   test_ttest_1samp_new_omit0  s"   

* 


 

r  c           
      C   s0  t jd}|jdd}| |}d}| |jdd}tjt|d tj||dd W d    n1 s6w   Y  | |jd	d}tj||dd}|j	j
d
ksTJ t|}| \}}|j|dd}|j|dd}tj||dd}| | jd| jd|jj
}	t|j|	 tj||dd}t|j|	 d S )Nl   iI}pC )r   r  r  rL  z%`popmean.shape\[axis\]` must equal 1.)r3   r0   r  r   r#  )r  rS   )r3   r   r  )r3   r  rR   g?r  )r   rV  rW  rb   r  r   r   re   r  r   rk  r(   r  r  r{  r   r   r.   )
rk   rO  rl   rA  r  r   r   r  r  r\  rs   rs   rt   test_ttest_1samp_popmean_arrayJ  s(   
r  c                   @   s   e Zd Zedd Zedddejdedd Z	d	d
 Z
edd Zdd Zedddejdedd Zedddejdedd Zedd ZdS )TestDescribec           	   	   C   s   t  5}tjddd |td t|dd \}}}}}}W d    n1 s,w   Y  W d    n1 s;w   Y  |dksFJ t|d |d t|d |d t||d t|||j	 t|||j	 t|||j	 d S )Nr?  r  r  r   rs   r   r   )
r   r   rB  r   r   re   describerb   r/   ri   )	rj   rk   r   r  r  r  r  skkurtrs   rs   rt   test_describe_scalarm  s   " z!TestDescribe.test_describe_scalarrv   rw   rD   rG   c                 C   s  t |d}||d|ddf}d}|g d|g df}|g d}|g d	}|d
gd }|dgd }	t|\}
}}}}}|
|ksTJ t|d |d  t|d |d  t||d|	|j
j d t||d|	|j
j d t|| t||	 tj|jdd\}
}}}}}|
|ksJ t|d |d  t|d |d  t||d|	|j
j d t||d|	|j
j d t|| t||	 d S )Nr   r~  r0   r2   r  r3   r   r   r   r   r  r  r  r  ffffff?r  r  r  )r  r  r  r  H,p ?r2   TUUUUUr   r   r*  rR   )r(   rb   r  ru  r   re   r  r/   r.   r   r
  epsri  rj   rk   r   rl   ncmmcmcvcskckurtcr  r  r  r  r  r  rs   rs   rt   test_describe_numbers{  s0   


z"TestDescribe.test_describe_numbersc                 C   s   t d}t j|d< d\}}d}d}d}d}tj|dd	\}}	}
}}}t|| t|	| t|
| t|| t|| t||d
d d S )Nr   r7   )r7   )r   r   r   r@   r   gGzr   r   r[   r$  )r   r   ri   re   r  r   r   )rj   rl   r  r  r  r  r  r  r  r  r  r  r  r  rs   rs   rt   describe_nan_policy_omit_test  s   






z*TestDescribe.describe_nan_policy_omit_testc                 C   sv  | d}||dk||j|}d}tjt|d tj|dd W d    n1 s-w   Y  tj|dd\}}}}}}	||jd }
|d	ksMJ t	|d
 |
 t	|d |
 t	||
 t	||
 t	||
 t	|	|
 t
|rx|   n d}tjt|d tj|dd W d    n1 sw   Y  d}tjt|d tj|dd W d    d S 1 sw   Y  d S )Nr   r7   r   r   r   r   r  rs   rX   r   r   z9`nan_policy='omit' is incompatible with non-NumPy arrays.r   r   r   )r   r  rb   ri   r  r   r   re   r  r/   r*   r  )rj   rk   rl   rA  r  r  r  r  r  r  r\  rs   rs   rt   test_describe_nan_policy_other  s2   





"z+TestDescribe.test_describe_nan_policy_otherc                 C   s"   t td}d}t|| d S )NrK   )r(  minmaxrh   variancer  r  )re   r  r   r   r   )rj   r  r   rs   rs   rt   test_describe_result_attributes  s   z,TestDescribe.test_describe_result_attributesc                 C   s   t |d}||d|ddf}d}|g d|g df}|g d}|g d	}|d
gd }|dgd }	tj|dd\}
}}}}}|
|ksVJ t|d |d  t|d |d  t|| t|| t|| t||	 d S )Nr   r~  r  r  r3   r  r  r  )Q?r  r  r  r  r2   r  r   r  r   	r(   rb   r  ru  r   re   r  r/   r.   r  rs   rs   rt   test_describe_ddof  s    


zTestDescribe.test_describe_ddofc                 C   s   t |d}||d|ddf}d}|d|df}|d}|d}|d}|d	}	tj|d d
\}
}}}}}|
|ksHJ t|d |d  t|d |d  t|| t|| t|| t||	 d S )Nr   r~  r  r  r  r  ga+?gE,p ?gUUUUUUrR   r   r   r  r  rs   rs   rt   test_describe_axis_none  s    






z$TestDescribe.test_describe_axis_nonec                 C   sH   d}t jt|d t|g  W d    d S 1 sw   Y  d S )NzThe input must not be empty.r   )r  r   r   re   r  rb   )rj   rk   rA  rs   rs   rt   test_describe_empty  r  z TestDescribe.test_describe_emptyN)r   r   r   r&   r  rG   r  r  r  r  r  r  r  r  r  r  rs   rs   rs   rt   r  l  s*    







r  c                   @   sf   e Zd Zdd Zedddejdejdg dd	d
 Z	edddejddd Z
dS )NormalityTestsc                 C   s   t t| j}|d}t|r?tjttd ||}||j	}t
|j| t
|j| W d    d S 1 s8w   Y  d S d}tjt|d || W d    d S 1 sXw   Y  d S )Nr   r   z...requires at least...)r  re   	test_namerb   r*   r  r  r   r   ri   r/   r   r   r   r   )rj   rk   r%  rl   r   r1  rA  rs   rs   rt   test_too_small  s   
"
"zNormalityTests.test_too_smallrv   rw   rD   rG   r)  r  c                 C   s   | j }tt|}|| jd }|| jd }i }|dv rD|dv r?|dkr*|d nd|d  }|dkr8d| n|}||d< ntd	 |d
d }||fi |}	|	\}
}t|
| t|| t|	d|d d S )Nr   r   >   r#  r%  >   skewtestkurtosistestr#  r0   r  r)  z,`alternative` not available for `normaltest`)r#  r^   r   r   r0   r   r#  r^   r   r   r0   r   r#  r^   r   r   r0   r   r#  r^   r   r   r0   r   r  r  )	r  r  re   rb   case_refr  r  r.   r   )rj   r)  rk   r  r%  ref_statisticr  r  rl   r   res_statistic
res_pvaluers   rs   rt   test_against_R  s"   




zNormalityTests.test_against_Rc                 C   s   t t| j}|d}|j|j|jd}||dk||}tj	dd ||}t
|j| t
|j| W d    d S 1 s?w   Y  d S )NrW  r  r  r?  r@  )r  re   r  r   rb   ri   r
  r  r   rB  r/   r   r   )rj   rk   r%  rl   r1  r   rs   rs   rt   test_nan7  s   
"zNormalityTests.test_nanN)r   r   r   r  rG   r  r  r  r  r  r  rs   rs   rs   rt   r    s    



r  c                   @   s$   e Zd ZdZdZdd Zdd ZdS )TestSkewTestr  )gvO?gbH`?c                 C   sJ   t jjdddd}||}t j|ddj}t||jd|jdd	d
 d S )Nr   r  {   )r   rM  r`  r%  r(  r   r  g?̔>r   )re   skewnormrQ  rb   r  r   r.   r
  )rj   rk   rh  a1_xpr-  rs   rs   rt   test_intuitiveH  s   
zTestSkewTest.test_intuitivec                 C   s   t |d |d}t|rBtjttd  t |}||j	}t
|j| t
|j| W d    d S 1 s;w   Y  d S d}tjt|d t | W d    d S 1 s\w   Y  d S )Nr   r   r   z+`skewtest` requires at least 8 observations)re   r  r   r*   r  r  r   r   rb   ri   r/   r   r   r   r   rj   rk   rl   r   r1  rA  rs   rs   rt   "test_skewtest_too_few_observationsO  s   

""z/TestSkewTest.test_skewtest_too_few_observationsN)r   r   r   r  r  r  r  rs   rs   rs   rt   r  D  s
    r  c                   @   st   e Zd ZdZdZedddejddd Z	edddejdd	d
 Z
edddejddd ZdS )TestKurtosisTestr  )gglg2J@?rv   rw   rD   rG   c                 C   sH   t jjddd}||}t j|ddj}t||jd|jddd	 d S )
Nr  r  )rM  r`  r%  r(  r   r  r   r   )re   laplacerQ  rb   r  r   r.   r
  )rj   rk   ri  a2_xpr-  rs   rs   rt   r  e  s   
zTestKurtosisTest.test_intuitivec                 C   sJ   g d}t dd t|D }|j||jd}t|d dk s#J d S )N)
r	  r   :   r5   r   )   r   r   r      c                 S   s   g | ]
\}}t ||qS rs   )r   r   )r  rl  r  rs   rs   rt   r  t      z;TestKurtosisTest.test_gh9033_regression.<locals>.<listcomp>r  r   rS  )r   r  	enumeraterb   r   re   r  )rj   rk   r  rl   rs   rs   rt   test_gh9033_regressionn  s   z'TestKurtosisTest.test_gh9033_regressionc                 C   sF  t |d d}tjt|d t |d W d    n1 s$w   Y  tjt|d t |d W d    n1 sCw   Y  |d}t|rtjttd  t 	|}|
|j}t|j| t|j| W d    d S 1 s{w   Y  d S d}tjt|d t | W d    d S 1 sw   Y  d S )NrE  z+`kurtosistest` p-value may be inaccurate...r   rK   g      3@r   z/`kurtosistest` requires at least 5 observations)re   r  r   r  r  r  r*   r   r   r  rb   ri   r/   r   r   r   r   )rj   rk   rA  rl   r   r1  rs   rs   rt   &test_kurtosistest_too_few_observationsx  s(   

""z7TestKurtosisTest.test_kurtosistest_too_few_observationsN)r   r   r   r  r  rG   r  r  r  r  r  r  rs   rs   rs   rt   r  a  s    





r  c                   @   s   e Zd ZdZdZdS )TestNormalTest
normaltest)gاc@g?N)r   r   r   r  r  rs   rs   rs   rt   r    s    r  c                   @   sT   e Zd Zejd ejdd\ZZe	j
dg ddd Zdd	 Zd
d ZdS )TestRankSumsr   r0   rX   r)  rC  c                 C   s<   t j| j| j|dj}t j| j| jd|dj}t|| d S )Nr(  F)use_continuityr)  )re   ranksumsrl   rm   r   mannwhitneyur
   )rj   r)  r  r]  rs   rs   rt   test_ranksums_result_attributes  s   z,TestRankSums.test_ranksums_result_attributesc                 C   s   t | j| j}t|d d S )Nr  )re   r  rl   rm   r   rj   r   rs   rs   rt   test_ranksums_named_results  r3  z(TestRankSums.test_ranksums_named_resultsc                 C   sF   t tdd tj| j| jdd W d    d S 1 sw   Y  d S )Nz`alternative` must be 'less'r   r   r(  )r   r   re   r  rl   rm   r  rs   rs   rt   rB    s   "z"TestRankSums.test_input_validationN)r   r   r   r   rV  r  r  rl   rm   r  r  r  r  r  rB  rs   rs   rs   rt   r
    s    
r
  c                   @   sB   e Zd Zdd Zeddejddd Zdd	 Z	d
d Z
dS )TestJarqueBerac                 C   sN   g d}| |}| ddg}t|}t|j|d  t|j|d  d S )N)g8MK~Ŀg/?g6r=TgGg!J_l gq"?gPHK?r   r   )rb   re   jarque_berar.   r   r   )rj   rk   rl   r\  r   rs   rs   rt   test_jarque_bera_against_R  s   

z)TestJarqueBera.test_jarque_bera_against_RTr   rG   c                 C   s   t jd t jddd}tt| }\}}tt| }\}}t|dd }\}	}
||  krN|	  krN|j	  krN|j	  krN|j	ksQJ  J ||  krn|
  krn|j
  krn|j
  krn|j
ksqJ  J d S )Nr  r   r   r)  r0   P  )r   rV  r  rX  re   r  rI  tuplerg   r   r   )rj   rl   jb_test1JB1rS  jb_test2JB2r  jb_test3JB3r  rs   rs   rt   test_jarque_bera_array_like  s   @Dz*TestJarqueBera.test_jarque_bera_array_likec                 C   s   | g }t|r9tjttd t|}W d    n1 s w   Y  | |j}t	|j
| t	|j| d S d}tjt|d t|}W d    d S 1 sSw   Y  d S )Nr   z%At least one observation is required.)rb   r*   r  r  r   r   re   r  ri   r/   r   r   r   r   r  rs   rs   rt   test_jarque_bera_size  s   
"z$TestJarqueBera.test_jarque_bera_sizec                 C   s   t jjdd}||jdd}tj|d d}t||d}t|j|j t|j	|j	 tj|dd}t|dd d f \}}t|dd d f \}}	t
|j|||g t
|j	|||	g tj|jdd}
t
|j|
j t
|j	|
j	 d S )	NiKr  )r0   rL  rL  rR   r  r   r   )r   rV  r  rb   re   r  rg   r/   r   r   r.   ri  )rj   rk   rO  rl   r   r\  s0rQ  s1rS  resTrs   rs   rt   r    s   zTestJarqueBera.test_axisN)r   r   r   r  rG   r  r  r  r  r  r  rs   rs   rs   rt   r    s    
r  c                   @   sP   e Zd Zg dZg dZdZdd Zdd Zdd	 Zd
d Z	dd Z
dd ZdS )TestMannWhitneyU)g	U3@g^3@gt3@g]o5@gzS4@gt< 4@gM	X3@gXmCk4@gLo&3@gfɘ2@g{m;^3@ga A$|3@gMѢ_4@g#3@g19T_3@ggC2@gqR4@gKk/4@g܁3@gZ2@g_
3@g$`3@g
x4@g3#л5@g;VND1@g >H2@gr4@gyܤ2@g?4@g=bɇ3@)gpG3@gL:j0@g2@gJNnC1@gR;`(3@g+Pi,2@g6:Z2@gZ"3=2@gF	uSa	3@gXҀ2@gX3^83@g21@gJ2@gZ)E2@gU83@g50@gԆ3@gFz33@gz3@gڴ3@rV   c           	      C   s   t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t|| t|| t||k t|d t|d t|d t|d t|d| jd t|d| jd d S )	Nr#  r(  r%    r  g=_A?r  glPz.?re   r  rc   Yr   r   r	   r  	rj   u1rS  u2r  u3r  u4p4rs   rs   rt   test_mannwhitneyu_one_sided  s   





z,TestMannWhitneyU.test_mannwhitneyu_one_sidedc                 C   sb   t j| j| jdd\}}t j| j| jdd\}}t|| t|d t|d t|d| jd d S )Nr!  r(  r"  r  glPz.?r  re   r  rc   r$  r   r	   r  rj   r&  rS  r'  r  rs   rs   rt   test_mannwhitneyu_two_sided  s   



z,TestMannWhitneyU.test_mannwhitneyu_two_sidedc           	      C   s   t j| j| jddd\}}t j| j| jddd\}}t j| j| jddd\}}t j| j| jddd\}}t|| t|| t||k t|d t|d t|d t|d t|d| jd t|d	| jd d S )
NFr#  r(  r%  r"  r  gii5?r  g22?r#  r%  rs   rs   rt   &test_mannwhitneyu_no_correct_one_sided  s*   









z7TestMannWhitneyU.test_mannwhitneyu_no_correct_one_sidedc                 C   sf   t j| j| jddd\}}t j| j| jddd\}}t|| t|d t|d t|d| jd d S )NFr!  r(  r"  r  g22?r  r,  r-  rs   rs   rt   &test_mannwhitneyu_no_correct_two_sided-  s   





z7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sidedc                 C   sb   t g d}t g d}ttj||ddd ttj||ddd t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   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r  r   r   r  r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r  r   r  r   r   r   r   r  r   r   r   r  r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r   r   r  r   r   r  r   r  r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r  r   r   r   r   r   r   r#  r(  )     @g ?չ>r%  )r1  g&)E?r!  )r1  g?չ?)r   r   r
   re   r  r  rs   rs   rt   test_mannwhitneyu_ones9  s   z'TestMannWhitneyU.test_mannwhitneyu_onesc                 C   s&   d}t j| j| jdd}t|| d S )Nr  r#  r(  )re   r  rc   r$  r   r  rs   rs   rt   #test_mannwhitneyu_result_attributesd  s   z4TestMannWhitneyU.test_mannwhitneyu_result_attributesN)r   r   r   rc   r$  r  r+  r.  r/  r0  r2  r3  rs   rs   rs   rt   r!    s    	
+r!  c                  C   sT   g d} g d}t t| |d dd d}t| |}t|| t|j|j d S )N)"r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )"g-@g+@g(@r0  r'  r  g333333@ffffff@g333333@r<   r  皙	@r   r  r  r;   r  ffffff@ @333333?r8  r:   ?r9  r  r  r  r  r  r2  r9   r  r  r  r   g/"?r3   r   )r   re   pointbiserialrr   r   r   r   )rl   rm   r   r   rs   rs   rt   test_pointbiserialk  s   
r;  c                  C   sd  t g d} t| }g d}t|d | t g d}t|}t g d}t|d | t| |\}}t||d  t||d  t| || \}}}t||d  t||d  t||d  t d} t g dg dg}tt| d	|  |d
d tdd}	t g d}
t 	|	|
}t g d}t 	||
}t|}t|d |dd d S )N)r   r0   r2   )r5   r#  r5   r   )r   r1   r4   r7   )r  r   r   r  r3   )㪪@I?g&>ڿr=  r<  )5@㪪@gIr?  r>  r0   r6   r$  rY   )r3   rY   r7   r1   r0   r0   )g_v	@g1%?g"u?gZӼ?g!u @gq&@r2   )
r   r   re   obrientransformr
   r   r   r   rj  repeat)r  r  r/  r  r  r   r   r  r1  valuesrepsr  transformed_valuesrs   rs   rt   test_obrientransform|  s:   




rE  r8  )rS   r
  r+  weightsc                 G   s   |p| j }t|dkr|\}}n|\}}	}| j||d}| j||d}|d ur.| j||dn|}t|dkr9|fn||	f}|||||d}
t|
||d d S )Nr0   r  )rS   r
  rF  r*  )r   r  rb   r.   )rk   mean_funrS   r
  r+  rF  r  
array_liker  r  rl   rs   rs   rt   check_equal_xmean  s   


rI  c                  O      t | dtji|S NrG  )rI  re   r  r  r  rs   rs   rt   check_equal_gmean  r>  rM  c                  O   rJ  rK  )rI  re   hmeanrL  rs   rs   rt   check_equal_hmean  r>  rO  c                  O   rJ  rK  )rI  re   pmeanrL  rs   rs   rt   check_equal_pmean  r>  rQ  c                   @   s   e Zd Zdd Zdd Zdd Zeddd	ej	d
dd Z
dd Zdd Zdd Zdd Zdd Zejjdddej	d
dd Zdd Zdd Zd d! Zed"d# Zd$S )%	TestHMeanc                 C      g d}d}t |||d d S N)r   r   r0   r   r  rO  rj   rk   r   r  rs   rs   rt   test_0     zTestHMean.test_0c                 C   s8   g d}d}t |||d g d}d}t |||d d S )Nr  g=b#A@r  r'  gQ?rU  rV  rs   rs   rt   test_1d  s   zTestHMean.test_1dc                 C   s&   t ddg}d}t|||dd d S )Nr   r   r   rk   r+  r   r   rO  rV  rs   rs   rt   test_1d_with_zero  s   zTestHMean.test_1d_with_zerorF   ``array_api_strict.where` `fillvalue` doesn't accept Python scalars. See data-apis/array-api#807.rD   rG   c                 C   sX   t g d}d}tjt|d t||j|dd W d    d S 1 s%w   Y  d S )Nr   r   r^   z$The harmonic mean is only defined...r   r   rZ  )r   r   r  r  r   rO  ri   )rj   rk   r   rA  rs   rs   rt   test_1d_with_negative_value  s
   "z%TestHMean.test_1d_with_negative_valuec                 C   s2   g dg dg dg}d}t t|||d d S )NrX   r  r  r  r  rb  r  rd  rJ  rJ  r  x   gmWUC@r  )rO  r   r   rV  rs   rs   rt   test_2d  s   zTestHMean.test_2dc                 C   8   g dg dg dg}t g d}t||d|d d S )Nr`  ra  rb  )U|ϊ6@g4.=C@JQ6LsJ@E]P@r   rS   rk   r[  rV  rs   rs   rt   test_2d_axis0     zTestHMean.test_2d_axis0c                 C   re  )NrX   r   r  r  ra  rb  )rf  r   rg  rh  r   ri  r[  rV  rs   rs   rt   test_2d_axis0_with_zero     z!TestHMean.test_2d_axis0_with_zeroc                 C   re  )Nr`  ra  rb  )g3333333@O@y@Y@r   ri  r[  rV  rs   rs   rt   test_2d_axis1  rk  zTestHMean.test_2d_axis1c                 C   re  )Nrl  ra  rb  )r   ro  rp  r   ri  r[  rV  rs   rs   rt   test_2d_axis1_with_zero  rn  z!TestHMean.test_2d_axis1_with_zeroT,array-likes only supported for NumPy backendr   c                 C   :   g d}g d}d}t j||d}t|t|dd d S )Nr0   rX   r4   rX   r3   r1   r   rF  h㈵>r*  )re   rN  r.   r   rb   rj   rk   r   rF  r  r   rs   rs   rt   test_weights_1d_list  s
   zTestHMean.test_weights_1d_listc                 C   6   t g d}t g d}d}t|||d|d d S )Nru  rv  r1   rx  rF  r+  rk   )r   rb   rO  rj   rk   r   rF  r  rs   rs   rt   test_weights_1d     zTestHMean.test_weights_1dc                 C   s^   t ddgddgddgg}t ddgddgddgg}t ddg}t||d|d|d	 d S )
Nr0   r3   rX   r4   r   r1   r   rx  rS   rF  r+  rk   r[  r}  rs   rs   rt   test_weights_2d_axis0  s   zTestHMean.test_weights_2d_axis0c                 C   sR   t g dg dg}t g dg dg}t ddg}t||d|d|d	 d S )
Nru  r5   r5   r5   rv  r  r1   r5   r   rx  r  r[  r}  rs   rs   rt   test_weights_2d_axis1"  s   zTestHMean.test_weights_2d_axis1c                 C   J   t g d}t jjg dg dd}d}t j}t|||dt j|d d S )Nr0   rX   r4   r}  rX   r3   r1   r}  r   r   r   r   r  r1   rx  rF  r+  r
  rk   )r   r   rt  rO  r   r}  rs   rs   rt   test_weights_masked_1d_array*     

z&TestHMean.test_weights_masked_1d_arrayN)r   r   r   rW  rY  r\  rG   r  r  r  r_  rd  rj  rm  rq  rr  rz  r~  r  r  r'   r  rs   rs   rs   rt   rR    s2    


rR  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
ejjdddejddd Zdd Zedd ZdS )	TestGMeanc                 C   rS  rT  rM  rV  rs   rs   rt   rW  8  rX  zTestGMean.test_0c                 C   sj   g d}d}t |||d g d}tdd}t ||d|d tg dt}tdd}t |||j|d	 d S )
Nr  gsŤF@r  r'  r  r.  r  r+  rk   )r
  rk   )rM  r   r   r   rV  rs   rs   rt   rY  =  s   

zTestGMean.test_1dc                 C   s,   g dg dg dg}d}t |||d d S )Nr`  ra  rb  g/,$qJ@r  r  rV  rs   rs   rt   rd  L  s   zTestGMean.test_2dc                 C   sp   g dg dg dg}t g d}t||d|d tg dg dg dg}tg d}t||dd|d	 d S )
Nr`  ra  rb  )g4@A@g5H@g`8|wЭN@gm~&+R@r   ri  r'  r  rS   r+  rk   r   r   rM  rV  rs   rs   rt   rj  R  s   zTestGMean.test_2d_axis0c                 C   s|   g dg dg dg}t g d}t||d|d tg dg dg dg}tdd	}t|||g}t||dd
|d d S )Nr`  ra  rb  )gD" 6"6@gcP@g
ҧZ@r   ri  r'  r  r.  r  r  )r   r   rM  r   )rj   rk   r   r  r  rs   rs   rt   rq  \  s   
zTestGMean.test_2d_axis1c                 C   s$   t g d}d}t||d|d d S )N)g}Ô%ITr  gu <7~r  rl  r  )r   rM  rV  rs   rs   rt   test_large_valuesg  s   zTestGMean.test_large_valuesc                 C   sL   g d}d}t jdd t|||d W d    d S 1 sw   Y  d S )N)
rX   r  r  r  r  rb  r  rd  rJ  r   r   r?  r  r  )r   rB  rM  rV  rs   rs   rt   test_1d_with_0l  s
   "zTestGMean.test_1d_with_0c                 C   sN   g d}t j}t jdd t|||d W d    d S 1 s w   Y  d S )N)
rX   r  r  r  r  rb  r  rd  rJ  r^   r?  r@  r  )r   ri   rB  rM  rV  rs   rs   rt   test_1d_negs  s
   "zTestGMean.test_1d_negTrs  r   rG   c                 C   rt  )Nr2  r0   r3   r4   r2   r1   GZ*oG8@rw  rx  r*  )re   r  r.   r   rb   ry  rs   rs   rt   rz  z  s
   zTestGMean.test_weights_1d_listc                 C   r{  )Nr2  r  r  rx  r|  r  r}  rs   rs   rt   r~    r  zTestGMean.test_weights_1dc                 C   r  )Nr  )r0   r3   r4   r2   r1   r3   )r   r   r   r   r   r   r  r  rx  r  )r   r   rt  rM  r   r}  rs   rs   rt   r    r  z&TestGMean.test_weights_masked_1d_arrayN)r   r   r   rW  rY  rd  rj  rq  r  r  r  r  r  rG   r  rz  r~  r'   r  rs   rs   rs   rt   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eddde	j
ddd Ze	j
dddgddgddggdfeddgddgddggdfgdd Ze	j
dg dg dg dgdfg dg dg dgdfgd d! Ze	j
dg dg dg dgdfg dg dg dgdfgd"d# Zd$d% Ze	j
jd&d'd(e	j
dd)d* Zed+d, Ze	j
d-g d.d/d0 Zd1S )2	TestPMeanc                 C   s   t | | | j d|  S r  )r   r  rM  r   r  rs   rs   rt   pmean_reference  s   zTestPMean.pmean_referencec                 C   s$   t || |  t | d|  S r  )r   r  )r   r  rF  rs   rs   rt   wpmean_reference  s   $zTestPMean.wpmean_referencec                 C   s   t jtdd t|g d|dg W d    n1 s!w   Y  t jtdd t|g d|dg W d    d S 1 sHw   Y  d S )NzPower mean only defined forr   r:  r   )r  r   r   re   rP  rb   r  rs   rs   rt   test_bad_exponent  s     "zTestPMean.test_bad_exponentc                 C   s   g dd}}t t||}t||||d g dd}}t t||}t||||d g dd}}td}t||||d d S )Nr  r<   r  g      r'  r0   r@   )r  r  r   r   rQ  r   rj   rk   r   r  r  rs   rs   rt   rY    s   
zTestPMean.test_1dc                 C   s.   t ddgd}}d}t|||d|d d S )Nr   r   r^   r   r  )r   r   rQ  r  rs   rs   rt   r\    s   zTestPMean.test_1d_with_zerorF   r]  rD   rG   c                 C   s^   t g dd}}d}tjt|d t|||j|d W d    d S 1 s(w   Y  d S )Nr^  Gz?z!The power mean is only defined...r   r  )r   r   r  r  r   rQ  ri   )rj   rk   r   r  rA  rs   rs   rt   r_    s
   "z%TestPMean.test_1d_with_negative_valuer  rX   r  r  rb  rJ  rJ  r  r9   c                 C   s&   t t||}t||||d d S )Nr  )r  r  r   r   rQ  rj   r   r  rk   r  rs   rs   rt   test_2d_axisnone  s   zTestPMean.test_2d_axisnoner`  ra  rb  rl  c                    s6    fddt t d D }t |d|d d S )Nc              
      s6   g | ] t t fd dttD qS )c                    s   g | ]} |  qS rs   rs   r  )r   r  rs   rt   r        z6TestPMean.test_2d_axis0.<locals>.<listcomp>.<listcomp>)r  r  r   r   rj  r  r  r  r  rt   r    s    "z+TestPMean.test_2d_axis0.<locals>.<listcomp>r   ri  )rj  r  rQ  r  rs   r  rt   rj    s   zTestPMean.test_2d_axis0c                    s(    fdd|D }t | |d|d d S )Nc                    s   g | ]}t t| qS rs   )r  r  r   r   )r  a_r  rs   rt   r    s    z+TestPMean.test_2d_axis1.<locals>.<listcomp>r   ri  )rQ  r  rs   r  rt   rq    s   zTestPMean.test_2d_axis1c                 C   sB   g dd}}g d}t t|||}t||||d|d d S )Nru  ރBrv  rx  r|  )r  r  r   r   rQ  rj   rk   r   r  rF  r  rs   rs   rt   r~    s   zTestPMean.test_weights_1dTrs  r   c                 C   sR   g dd}}g d}t t|||}tj|||d}t|t|dd d S )Nru  r  rv  rw  rx  r*  )r  r  r   r   re   rP  r.   rb   )rj   rk   r   r  rF  r  r   rs   rs   rt   rz    s
   zTestPMean.test_weights_1d_listc              	   C   s\   t g dd}}t jjg dg dd}t j||d}t j}t||||dt j|d d S )	Nr  r   r  r  r  rw  rx  r  )r   r   rt  averagerQ  r   r  rs   rs   rt   r     s   
z&TestPMean.test_weights_masked_1d_array)rS   fun_namer  ))Nr  g3E#@)r   r  r   )r   rN  r^   c           	   	      s   |dkr fdd}nt t|}tddgddgddgg}tddgddgd	dgg}||||d
}t| |||d|d d S )Nr  c                    s   t |  |S r  )r  r  )r   rS   rF  r  rs   rt   fun  r'  z&TestPMean.test_weights_2d.<locals>.funr0   r3   rX   r4   r   r1   )rS   rF  rx  r  )r  re   r   r   rQ  )	rj   rS   r  r  rk   r  r   rF  r  rs   r  rt   test_weights_2d	  s   
zTestPMean.test_weights_2dN)r   r   r   r  r  r  rY  r\  rG   r  r  r  r_  r  r   r   r  rj  rq  r~  rz  r'   r  r  rs   rs   rs   rt   r    s\    


	



r  c                   @   s   e Zd Zedd ZdZedddZdd Z	d	d
 Z
dd Zejdddejejf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 )#TestGSTDr  r   gv aZ@r0   r1   r2   c                 C   s   t | j}t|| j d S r  )re   r  array_1dr
   gstd_array_1drj   gstd_actualrs   rs   rt   test_1d_array!  s   zTestGSTD.test_1d_arrayc                 C   s    t t| j}t|| j d S r  )re   r  r  r  r
   r  r  rs   rs   rt    test_1d_numeric_array_like_input%     z)TestGSTD.test_1d_numeric_array_like_inputc                 C   s>   t jtdd td W d    d S 1 sw   Y  d S )Nzufunc 'log' not supportedr   z*You cannot take the logarithm of a string.)r  r   r  re   r  r  rs   rs   rt   )test_raises_value_error_non_numeric_input)  s   "z2TestGSTD.test_raises_value_error_non_numeric_input	bad_valuer   r^   c                 C   sr   t | j|g}t |r,d}tjt|d t|}W d    n1 s&w   Y  nt|}t	|t j
 d S )Nz3The geometric standard deviation is only defined...r   )r   r  r  rw  r  r  r   re   r  r   ri   )rj   r  rl   rA  r   rs   rs   rt   test_returns_nan_invalid_value.  s   

z'TestGSTD.test_returns_nan_invalid_valuec                 C   sB   t g dtjdddgg}tj|dd}t|t dtjg d S )N)r   r   r   r   r   r0   r1   rR   r2   )r   r   ri   re   r  r
   )rj   r   r  rs   rs   rt   test_propagates_nan_values9  s   z#TestGSTD.test_propagates_nan_valuesc                 C   sP   t jtdd ttj| j| jjdtj	 W d    d S 1 s!w   Y  d S )NzDegrees of freedom <= 0r   r  )
r  r  r   r   re   r  r  rM  r   r  r  rs   rs   rt   )test_ddof_equal_to_number_of_observations>  s   "z2TestGSTD.test_ddof_equal_to_number_of_observationsc                 C   s    t j| jd d}t|| j d S rb  )re   r  array_3dr
   r  r  rs   rs   rt   test_3d_arrayB  r  zTestGSTD.test_3d_arrayc                 C   s"   t j| jdd}t|ddg d S )NrS  rR   g~d@g<
?)re   r  r  r
   r  rs   rs   rt   test_3d_array_axis_type_tupleF  s   z&TestGSTD.test_3d_array_axis_type_tuplec                 C   s:   t j| jdd}tg dg dg dg}t|| d S )Nr   rR   )gĶ?@gQӫ@g֌@gן7R@)g%Ȁ@ge@gv6B5 @g _?)gE ?gީ?gk̊Y?g%:?re   r  r  r   r   r
   rj   r  gstd_desiredrs   rs   rt   test_3d_array_axis_0J  s   zTestGSTD.test_3d_array_axis_0c                 C   4   t j| jdd}tg dg dg}t|| d S )Nr   rR   )gN@g85@g'ĥ?gwth?)gHnaX?gG?gBu?gE?r  r  rs   rs   rt   test_3d_array_axis_1S     zTestGSTD.test_3d_array_axis_1c                 C   r  )Nr0   rR   )gt80?gі?g?)gۘ]~?gmT6(?g	G?r  r  rs   rs   rt   test_3d_array_axis_2[  r  zTestGSTD.test_3d_array_axis_2c                 C   s   t j| jdk| j}d}tjt|d tj|dd}W d    n1 s&w   Y  tj| jdd}g dg dg}t	|| t
|j| d S )Nr   z:`gstd` support for masked array input was deprecated in...r   r0   rR   r/  rG  )r   rt  masked_wherer  r  r  rz  re   r  r
   r   r  )rj   rt  rA  r  r  r  rs   rs   rt   test_masked_3d_arrayc  s   
zTestGSTD.test_masked_3d_arrayN)r   r   r   r   r   r  r  rg   r  r  r  r  r  r  r  r  ri   r  r  r  r  r  r  r  r  r  rs   rs   rs   rt   r    s"    

	r  c               	   C   s   t t dddt dddt dddf} d}d	}g d
}t| |D ]\}}tt|||j|dd| d q$ttdddjddd d S )Nr  r  r3   r-  g?r  ffffff?r  i  )r   r   gs  gG|G{g	ɺM>6g>
ztt+g#ӌRM/gF׸fz2gU8u5g8M8gФ)Ba?g%վ?g*+a5?gś?gڒJ|>rZ   z
fail forp=)r  err_msgr  rJ  gVݶ3;r  )r   rv  r  r  r	   re   	binomtestr   )ppr  rl   r%  r  r   rs   rs   rt   test_binomtestn  s   

r  c                     s   ddgg dg dg dg dg dg dg dg d	g d
g
} t ddD ]  fddt  d D }t||  d  dd q%d S )Nr   )r9   r   r9   )r.  r   r   r.  )r  r  r   r  r  )r        ?r   r   r  r  )r        ?      ?r   r  r  r  )r  r        ?r   r   r  r  r  )	      ?      ?     ?     @?r   r  r  r  r  )
      p?      ?      ?     @?r   r   r  r  r  r  )      `?      ?      ?      ?      ?r   r  r  r  r  r  r   rY   c                    s   g | ]
}t | d jqS )r9   )re   r  r   )r  r  r  rs   rt   r    r  z#test_binomtest2.<locals>.<listcomp>rX   r$  )rj  r   )r]  r  rs   r  rt   test_binomtest2  s   r  c                  C   s   dd t ddD } t| tt| t tg d}tg d}dd t ddD }dd t ddD }t||d	d
 t||d	d
 d S )Nc              	   S   s4   g | ]}t d dD ]}t||| d| jq	qS )r0   rY   r   rj  re   r  r   r  r  r  rs   rs   rt   r    s
    
z#test_binomtest3.<locals>.<listcomp>r   rY   )Zr9   grq?g     ?glq?gx0f#?g%d)MO?g   	o?g6?g:X@?r  gsw?g    ?gR'jMV?gEf?gF5a?gAQU?g'W?gk?r  g
ņB?g  ?g$?g{dU'?gD:B?gwV?gR0Nf?gOq?r  g[k^?g T+?gO?gggh(?gP-@?gOQ?g}^?gV7_i?r  ge$?gр?g#>?g5z@?g:?gf?gzP?g  ?     ?gg*),?g}A_?g}aA?gH]@_?g
y7s?gPG?g>)\R?gjc6?K?go; ,?g!O0?g?g}e?g5?g?!A^?gN/#?g*?    @?g?g?g3?g.1?gdT\1-?gt0W59?goQC?gX4J?   ?g
?gf?C"?g\6I?g4b?g|$or?gWNS~?gT?gXnc?   \?gY\?gp ^a?gX-K?g#c?g
3?g75Q?gMJ[?gP8R?)Zr9   gw	%?g     ?gS g?gv^?g*uCi?g  a?g]?gE9Q?r  g/?g     ?g	x&~?g#?g5B?g	A'9?gpZ?gWV$u?r  gqIb?g  @N?g1Y?g5?gO?gc-?gk?g )?r  glMV?g?$?gT*r?gCqRv?grx?gωZ?gExY?g<T ?r  gJ9Ͻd?g `Ԗt?gT?gEz?gQ?g7C<*?g<?g~ K?r  g8?g~ȍEt?g⿒?g<v?gHE:?g8Z$?gbº5?gvC?r  g`Yw?gA?$??gE=?g4?g3?g{G9?gp?gH ?r  gz6f?g¯F?g(+?g	$V?gq^ws?g!?gXNJ?gK?r  g4P?g<q?gdV;?gy?g$w?gU<vO?gMX?g	șz*?r  giqSp?gMM?g0V$)?g]
yi/Q?gl?gl?g3Ȇ?gѾ_c?c              	   S   s8   g | ]}t d dD ]}t|d || d| jq	qS r0   rY   r   r   r  r  rs   rs   rt   r    
    
"c              	   S   s8   g | ]}t d dD ]}t|d || d| jq	qS r  r  r  rs   rs   rt   r    r  r[   r$  )rj  r   r   ru  r  r  r   r   )r.  binom_testm1binom_testp1res4_p1res4_m1rs   rs   rt   test_binomtest3  s   	(r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTrimc                 C   sr  t d}tt t|dt d tt t|dt d tt tj|dddt dd tt tj|d	ddt d
d tt|dg  ttj|dddg  ttg dg  ttjg d	ddg  ttg dg  t ddd}t dddd}d}tj|dd|d}tt j||d| d}tj|jdd|d}tt j||d|j d S )NrY   r  rX   r  r7   left)tailr0   tE]t?r1   r   r  r  r4   r2   r3   r   )r  rS   rR   r   )r   r   r   sortre   trim1rg   ri  )rj   r   r\  rS   trimmedrs   rs   rt   
test_trim1  s,   


zTestTrim.test_trim1c              	   C   s  t d}tt t|dt dd tt t|dt g d tt tt ddd	dt d	d
d	d	 tt tt dd	djdt g dg dg t	t
tjt dd	djd ttg dg  ttg dg  ttg dg  d S )NrY   r  r1   r6   r  )r0   r1   r2   r3   r4   r5   r6   r  r4   r2   r  r   )r0   r6   rV   r  )r1   r7   r  rU   r  r  )r   r   r   r  re   trimbothr   rg   ri  r   r   )rj   r   rs   rs   rt   test_trimboth  s&   
  zTestTrim.test_trimbothc           
      C   s  t g d}t g d}t ddd|d d f }t djdddd|d d f }tt|dt g d	 tt|dt g d
 t g d}t ddd|d d f }tt|dt g d g d}tt|dd ttg ddd t jd t jj	ddd}dD ]}tj|d|d}tt 
||dd}	t||	 qtj|dd d}t| d}	t||	 tttj|d ttg dt j ttg dt j d S )N)r2   r6   r0   r   r7   r3   rX   r   r5   r1   r4   )r1   r3   r   r   r0   r2   r  r4   r2   Fr  r   )r;   rA   g      -@g     4@r  )r   r   r1   r0   )r   r   r  r  r  r\  )r5   rY   rZ   rU   r   r4   r  r   r3   r   rJ  rX   r`   r7   rK  r  r  r  r0   rV   r2   r[   r6   r1   rW   )r3   r2   r1   r   r0   r   r;   rz  r  )r3   r4   r2   r5   rL  )r   r   r0   r1   r^   rR   r   r2  r   )r   r   r   rg   r   re   	trim_meanrV  r  r  r^  rp  r   r   ri   )
rj   r   idxri  rj  idx4a4rS   r  r]  rs   rs   rt   test_trim_mean+  s<   "
zTestTrim.test_trim_meanN)r   r   r   r  r  r  rs   rs   rs   rt   r    s    r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSigmaClipc                 C   s   t t dddt dddf}d}t|\}}}t| |k t| |k  t||	 ||
    t||	 ||
    t|j|j d S )Nr  r]      r   r  r3   r2   r   rv  r  re   	sigmaclipr   minmaxr   rh   r   rM  rj   r   factr  r  upprs   rs   rt   test_sigmaclip1S  s   "zTestSigmaClip.test_sigmaclip1c                 C   s   t t dddt dddf}d}t|||\}}}t| |k t| |k  t||	 ||
    t||	 ||
    t|jd t|jd	 d S )
Nr  r]   r  r   r  r3   r:   r2   $   r  r  rs   rs   rt   test_sigmaclip2]  s   "zTestSigmaClip.test_sigmaclip2c                 C   s   t t dddt dddf}d}t|||\}}}t| |k t| |k  t||	 ||
    t||	 ||
    t|t ddd d S )Nr  r]   rY   r1   ?)r   rv  r  re   r  r   r  r  r   rh   r   r  rs   rs   rt   test_sigmaclip3h  s   zTestSigmaClip.test_sigmaclip3c                 C   sF   t t dddt dddf}d}t|||}d}t|| d S )	Nr  r]   rY   r  r  r1   r  )clippedrQ  rR  )r   rv  r  re   r  r   )rj   r   r  r   r   rs   rs   rt    test_sigmaclip_result_attributess  s   z.TestSigmaClip.test_sigmaclip_result_attributesc                 C   s"   t d}tt|d | d S )NrX   r   )r   ru  r   re   r  r  rs   rs   rt   test_std_zero{  s   
zTestSigmaClip.test_std_zeroN)r   r   r   r  r  r  r  r  rs   rs   rs   rt   r  R  s    
r  c                   @   s   e Zd Zdd Zejdddgg fddgdfddgdgfg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 )TestAlexanderGovernc           
      C   s   g dg dg dg dg}dd |D }dd |D }dd |D }d	d |D }t j| }t j| }t j| }t j| }	|j|j  krR|j  krR|	jksUJ  J |j|j  kri|j  kri|	jkslJ  J d S )
N)	r[   r[   r[   r[   r[   r[   r[   rZ   rZ   )	rV   r[   rZ   rZ   rZ   rZ   rZ   rY   rY   )	rV   rV   r[   r[   r[   r[   r[   rZ   rZ   )	r  rV   r[   r[   r[   rZ   rZ   rZ   rY   c                 S      g | ]
}t j|t jd qS r  )r   rb   r  r  argrs   rs   rt   r    r  z;TestAlexanderGovern.test_compare_dtypes.<locals>.<listcomp>c                 S   r
  r  )r   rb   r-  r  rs   rs   rt   r    r  c                 S   r
  r  )r   rb   r  r  rs   rs   rt   r    r  c                 S   r
  r  )r   rb   r   r  rs   rs   rt   r    r  )re   alexandergovernr   r   )
rj   r  
args_int16
args_int32
args_uint8args_float64	res_int16	res_int32	res_uint8res_float64rs   rs   rt   test_compare_dtypes  s.   



z'TestAlexanderGovern.test_compare_dtypesr>  r   r0   c                 C   r  r  )r  r  r   r   re   r  r   r   r   ri   r   r  rs   rs   rt   test_too_small_inputs  r  z)TestAlexanderGovern.test_too_small_inputsc                 C   sd   t jdd tddgt jt jg}W d    n1 sw   Y  t|jt j t|jt j d S )Nr?  r@  r   r0   )	r   rB  re   r  r  r   r   ri   r   r  rs   rs   rt   test_bad_inputs  s
   z#TestAlexanderGovern.test_bad_inputsc                 C   sd   g d}g d}g d}t |t |t |}}}t|||}t|jd t|jd dS )a  
        Data generated in R with
        > set.seed(1)
        > library("onewaytests")
        > library("tibble")
        > y <- c(rnorm(40, sd=10),
        +        rnorm(30, sd=15),
        +        rnorm(20, sd=20))
        > x <- c(rep("one", times=40),
        +        rep("two", times=30),
        +        rep("eight", times=20))
        > x <- factor(x)
        > ag.test(y ~ x, tibble(y,x))

        Alexander-Govern Test (alpha = 0.05)
        -------------------------------------------------------------
        data : y and x

        statistic  : 1.359941
        parameter  : 2
        p.value    : 0.5066321

        Result     : Difference is not statistically significant.
        -------------------------------------------------------------
        Example adapted from:
        https://eval-serv2.metpsy.uni-jena.de/wiki-metheval-hp/index.php/R_FUN_Alexander-Govern

        )(g5gb?gl"k g^s/@gQ\
@gRh gIF@gpZ>q@g7D @g-ѪZng(Q<.@gON/@g	Ogҷ%6gs&@gw)ܿg789Ŀgzp"@gzl @g57@g>m@*a"@g,ZbI@gX9
]?g3g1@gg"Jbgy:@j-g2A g;@gL97vp,+@gp/rg"@gfT|7g^v+g٘Yg0/gglA! &@go@)g!_5*gqTEgg1$@g	a, @gˤ$g9%gZ@gT6U'@gS g6aGn*@gO@g\\"g^4w@g0gr~5@gDP=@gٿԙg:4R/gOx]r!@gU4 gta)B@g,Gg2$@gD%?gI,VL&g@gч
;g5@gWJc@gYjK@@)gj7#@g<e,g}m(@gr2g#^9gr/P@g:RO!g'9?g6F
?gcʱ'gt*&gg~*0Ώ7@gWzx>gIK'@g?Ң@g7C5@g;C>ϯUg7@g)n}.^@gFQ?gsdlT6?Nr   rb   re   r  r
   r   r   )rj   r  twoeightsolnrs   rs   rt   test_compare_r  s   "z"TestAlexanderGovern.test_compare_rc                 C   s   g d}g d}g d}t |t |t |}}}t|||}t|jddd t|jddd 	 t|jd	 t|jd
 dS )z
        Data taken from 'The Modification and Evaluation of the
        Alexander-Govern Test in Terms of Power' by Kingsley Ochuko, T.,
        Abdullah, S., Binti Zain, Z., & Soaad Syed Yahaya, S. (2015).
        )g{G&~@g(\E~@g=
ףp~@gfffff~@gp=
~@gףp=
k@gR@gQ2@g8@g`@g)\`@g=
ףp@g(\#@g@g=
ףpE@gQ@g
ףp=@gףp=
Մ@g33333#@)g=
ףpt@g{G&u@gq=
ףv@gQDy@g     X{@g\(P}@g]~@gt~@gzG~@g)\~@g1@gzG@)gGz8@g     @gp=
ב@g
ףp=@gGzԀ@gq=
ףր@gRi@g{Gt@gw@g=
ףp@gQS@gQ@g(\©@gQ-@gQ@g]FxK@rT  r   g R8߱?r  g.UikL@g&Zݱ?Nr  )rj   youngmiddleoldr  rs   rs   rt   test_compare_scholar  s   "z(TestAlexanderGovern.test_compare_scholarc                 C   sp   g d}g d}t |t |}}t||}t|jddd t|jddd 	 t|jd t|jd d	S )
aA  
        Data taken from 'Robustness And Comparative Power Of WelchAspin,
        Alexander-Govern And Yuen Tests Under Non-Normality And Variance
        Heteroscedasticity', by Ayed A. Almoied. 2017. Page 34-37.
        https://digitalcommons.wayne.edu/cgi/viewcontent.cgi?article=2775&context=oa_dissertations
        )gQhgMOgY9gnSgdȿg}"Ogиp $?g8~4?g
p?gZ?g)J=?gX?gpG?gᛦ?gg?gh8en?g?guwg?gbX?g9SI?)gN]g	cZgAJigMg'gk,	Pg<gΈ׿g%zrKտg0BxҿgPNg:ǀgvꭁg?k~?gI\߇?gi?g<)?g0Xr?g
F%u?gsFZ*o?g7n:?g[z4?rx  r   gOZ}?g9$?g6MDd}?Nr  )rj   r  r  r  rs   rs   rt   test_compare_scholar3  s   z)TestAlexanderGovern.test_compare_scholar3c                 C   sH   t g dt dt jgf}tj| }t|jt j t|jt j d S )Nr'  r   r   rb   ri   re   r  r   r   r   )rj   r  r   rs   rs   rt   test_nan_policy_propagateO  s   
z-TestAlexanderGovern.test_nan_policy_propagatec                 C   s`   t g dt dt jgf}ttdd tj|ddi W d    d S 1 s)w   Y  d S )Nr'  r   r   r   r   r   )r   rb   ri   r   r   re   r  )rj   r  rs   rs   rt   test_nan_policy_raiseV  s   "z)TestAlexanderGovern.test_nan_policy_raisec                 C   s   t dddt jdgt dt jddgf}t g dt g df}tj|d	d
i}tj| }t|j|j t|j|j d S )Nr   r0   r1   r2   rK  r  r'  )r   rK  r  r   r   r$  )rj   args_nanargs_no_nanres_nan
res_no_nanrs   rs   rt   test_nan_policy_omit[  s   *
z(TestAlexanderGovern.test_nan_policy_omitc                 C   sv   t g d}t g d}tjtdd t||}W d    n1 s&w   Y  t|jt j	 t|j
t j	 d S )Nr   r   r  r   )r   rb   r  r  r   re   r  r   r   ri   r   )rj   r  r  r   rs   rs   rt   r	  c  s   z'TestAlexanderGovern.test_constant_inputN)r   r   r   r  r  r  r  r  r  r  r"  r#  r%  r&  r+  r	  rs   rs   rs   rt   r	    s    ,
D33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e	j
deg deg dejdffeg deg dejejffgdd Ze	j
dg ddd Zdd Zdd Zdd Zdd Ze	j
dd g d!fgd"d# Zd$d% Zd&d' Zd(S ))TestFOneWayc                 C   s0   t ddgddg\}}t|d t|d d S )Nr   r0   r   r   re   f_onewayr   rj   r  r  rs   rs   rt   test_trivialo  s   
zTestFOneWay.test_trivialc                 C   s>   t ddgddg\}}t|d t|dtd dd d S )	Nr   r0   r2   r  r   r9   r  r*  )re   r.  r   r
   r   r   r/  rs   rs   rt   r   u  s   
zTestFOneWay.test_basicc                 C   s2   t dgdgg d\}}t|d t|d d S )Nr0   r   r2  r  r-  r/  rs   rs   rt   test_known_exact|  s   
zTestFOneWay.test_known_exactc                 C   sJ   t jddgt jd}t jddgt jd}t||\}}t|ddd d S )	N    r      gŸ?r  r*  )r   r   uint16re   r.  r
   )rj   r   r   r  r  rs   rs   rt   test_large_integer_array  s   z$TestFOneWay.test_large_integer_arrayc                 C   sF   t jddgt jd}t jddgt jd}t||}d}t|| d S )Nr2  r3  r  r4  r5  r  )r   r   r6  re   r.  r   )rj   r   r   r   r   rs   rs   rt   test_result_attributes  s
   z"TestFOneWay.test_result_attributesc              	      s
  g d}|D ]|}d}t jt jt jtd|}t|}| d}W d    n1 s0w   Y  dd |dd D }t	j
|d	d
}|j\ tt	}	t|d d } fdd|	D }
tj|
 }d}||v rud}t|d ||d| d qd S )N)z
SiRstv.datz
SmLs01.datz
SmLs02.datz
SmLs03.datzAtmWtAg.datz
SmLs04.datz
SmLs05.datz
SmLs06.dat
SmLs07.dat
SmLs08.dat
SmLs09.datr8  zdata/nist_anova
c                 S   s   g | ]
}|  r| qS rs   )stripsplit)r  liners   rs   rt   r    s    z)TestFOneWay.test_nist.<locals>.<listcomp>r  r  rb  )skiprowsr   r^   c                    s   g | ]} |k qS rs   rs   r  r%  rs   rt   r    r  )r9  r:  r;  r  zFailing testcase: )r+  r  )ospathabspathjoindirname__file__openreadr>  r   loadtxtri  r,  r  uniquer  re   r.  r
   )rj   	filenames	test_caser+  fnamer  content	certifieddatafcatyxlistr   hard_tcrs   r%  rt   	test_nist  s0   




zTestFOneWay.test_nistza, b, expected)r}  r}  r}  r  r   c                 C   sZ   d}t jtj|d t||\}}|sJ ||kW d    d S 1 s&w   Y  d S )N%Each of the input arrays is constant;r   )r  r  re   r  r.  )rj   r   r   r/  r   r  r  rs   rs   rt   r	    s
   "zTestFOneWay.test_constant_inputrS   )r#  r^   r   r   c                 C   s  t g dg dg dg dg dg}t g dg dg dg dg d	g d
g dg dg}t g dg dg dg dg}|dv rR|j}|j}|j}d}nd}d}tjtj|d tj||||d\}}W d    n1 stw   Y  dD ],}	tt ||	|t ||	|t ||	|\}
}t	||	 |
dd t	||	 |dd q{dD ]@}	tjtj|d. tt ||	|t ||	|t ||	|\}
}t
||	 |
 t
||	 | W d    n1 sw   Y  qd S )N)r   r2   r1   r1   )r0   r3   r1   r1   )r1   r4   r1   r1   r  )r1   r   r3   r1   )r2   r4   r3   r1   )r2   r1   r3   r1   )r   r3   r3   r1   )r3   r3   r3   r1   )r0   r1   r3   r1   )r6   r0   r3   r1   )r0   r0   r3   r1   )r2   r1   r2   r1   )r2   r0   r2   r1   )r3   r2   r2   r1   r^   r   r   r   rU  r   rR   r  r  r*  r  )r   r   ri  r  r  re   r  r.  taker
   r   )rj   rS   r   r   r  	take_axisrM  r  r  r  fjpjrs   rs   rt   test_2d_inputs  s`   


zTestFOneWay.test_2d_inputsc           
   
   C   s  dt ddddd }dt dddd	d }t dt dd
ddd }tj|||dd\}}|jdks<J |jdksCJ t|jd D ]<}t|jd D ]2}t||d d |f ||d d |f ||d d |f \}}	t||||f  t|	|||f  qSqJd S )Nr   r      r2   r3   r5   r0      r6   q   rR   )r2   r5   r   )	r   r   rg   cosre   r.  rk  rj  r
   )
rj   r   r   r  r  r  rl  r  fijpijrs   rs   rt   test_3d_inputs  s    <zTestFOneWay.test_3d_inputsc                 C   s\   t jttd tg dg g d}t|tjtjf W d    d S 1 s'w   Y  d S )Nr   r:  r  )	r  r  r   r   re   r.  r   r   ri   r  rs   rs   rt   test_length0_1d_error   s   "z!TestFOneWay.test_length0_1d_errorc                 C   s   t jttd< d}td|f}td|f}td|f}t|||\}}tj|ftj	d}t
|| t
|| W d    d S 1 sFw   Y  d S )Nr   r1   r2   r   r3   r7  )r  r  r   r   r   ru  re   r.  r   ri   r   )rj   ncolsr   r   r  r  r  nansrs   rs   rt   test_length0_2d_error   s   
"z!TestFOneWay.test_length0_2d_errorc                 C   sZ   t t tdgdgdgdg}t|tjtjf W d    d S 1 s&w   Y  d S )NrX   rY   rZ   r[   )r  r  r   re   r.  r   r   ri   r  rs   rs   rt   test_all_length_one   s   "zTestFOneWay.test_all_length_oner  rs   r:  c                 C   s@   d}t t|d tj|  W d    d S 1 sw   Y  d S )Nz$At least two samples are required...r   )r   r  re   r.  )rj   r  rA  rs   rs   rt   test_too_few_inputs   s   "zTestFOneWay.test_too_few_inputsc                 C   R   t d}t d}tt tj||dd W d    d S 1 s"w   Y  d S )Nr~  r3   r2   r0   rR   )r   ru  r   r%   re   r.  rj   r   r   rs   rs   rt   test_axis_error   
   


"zTestFOneWay.test_axis_errorc                 C   ri  )Nr~  rj  r   rR   )r   ru  r   r   re   r.  rk  rs   rs   rt   test_bad_shapes#   rm  zTestFOneWay.test_bad_shapesN)r   r   r   r0  r   r1  r7  r8  rT  r  r  r  r   r   r  ri   r	  r[  rb  rc  rf  rg  rh  rl  rn  rs   rs   rs   rt   r,  m  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S )TestKruskalc                 C   s|   dg}dg}t ||\}}t|d t|t jj|d t t|t|\}}t|d t|t jj|d d S )Nr   r0   r   )	re   kruskalr   r	   r7  r+  r8  r   r   rj   rl   rm   hr  rs   rs   rt   test_simple+   s   

zTestKruskal.test_simplec                 C   s   g d}g d}t ||\}}t|ddd t|t jjdd t t|t|\}}t|ddd t|t jjdd d S )Nr   r0   r2   r4   r6   rX   r  rX   r  r   )re   rp  r	   r7  r+  r8  r   r   rq  rs   rs   rt   r   5   s   zTestKruskal.test_basicc                 C   s<   dg}ddg}d}d}|| }t ||\}}t|| d S )Nr   r0   r  r  )re   rp  r   rj   rl   rm   h_uncorrr  r/  rr  r  rs   rs   rt   test_simple_tie?   s   zTestKruskal.test_simple_tiec                 C   sJ   g d}g d}d}dt dd  }|| }t||\}}t|| d S )N)r   r   r   r0   )r0   r0   r0   r0   r   r        )r  re   rp  r	   ru  rs   rs   rt   test_another_tieJ   s   zTestKruskal.test_another_tiec           	      C   sj   g d}g d}ddg}d}dt dd  }|| }t|||\}}t|| t|tjj|d d S )Nr  rK  r0   rK   r   rx  ry  )r  re   rp  r	   r7  r+  r8  )	rj   rl   rm   r  rv  r  r/  rr  r  rs   rs   rt   test_three_groupsS   s   
zTestKruskal.test_three_groupsc                 C   sd   g d}g d}g }t jttd tt|||tjtjf W d    d S 1 s+w   Y  d S )Nr  rK  r   )	r  r  r   r   r   re   rp  r   ri   )rj   rl   rm   r  rs   rs   rt   r  _   s   "zTestKruskal.test_emptyc                 C   s.   g d}g d}t ||}d}t|| d S )Nr   rt  r  )re   rp  r   )rj   rl   rm   r   r   rs   rs   rt   test_kruskal_result_attributesg   s
   z*TestKruskal.test_kruskal_result_attributesc                 C   rC  )Nr   r7   r   r   r  r   r   )	r   r   ri   r   re   rp  r   r   r   r  rs   rs   rt   r  n   s   

zTestKruskal.test_nan_policyc                 C   sB   d}t j|}t j|d }t||\}}d}t|| d S )Nr  r  r   )r   rV  r  re   rp  r	   )rj   r  rl   rm   rr  r  r/  rs   rs   rt   test_large_no_samplesv   s   z!TestKruskal.test_large_no_samplesc                 C   s@   d}t jt|d t  W d    d S 1 sw   Y  d S )Nz-Need at least two groups in stats.kruskal\(\)r   )r  r   r   re   rp  r  rs   rs   rt   test_no_args_gh20661   s   
"z TestKruskal.test_no_args_gh20661N)r   r   r   rs  r   rw  rz  r{  r  r|  r  r}  r~  rs   rs   rs   rt   ro  *   s    

		ro  zADelegation for `special.stdtr` only implemented for CuPy and JAX.)r   
exceptionsrE   c                   @   s   e Zd Zejdg ddd Zejdg dddfg d	d
dfgdd Zg dZejdg dejdedd Z	ejdedd Z
ejdeejdddgdd ZdS )TestCombinePvaluesz+method, expected_statistic, expected_pvalue))r  g'"x-@g({#H?)stoufferv!:@/?)r3  gQ4gF?)tippettrS  gL^i?)mudholkar_georgegzP@guKqN?c                 C   sD   g d}t j|||d}t|j|| t|j|| d S )NrS  r  r  r>  )re   combine_pvaluesrb   r.   r   r   )rj   rk   r?  r  r!  rl   r   rs   rs   rt   test_reference_values   s   	z(TestCombinePvalues.test_reference_valuesz,weights, expected_statistic, expected_pvaluer   r   r   r  r  )r   r   r   ga;?grmT?c                 C   sL   | g d}tj|d| |d}t|j| | t|j| | d S )Nr  r  )r?  rF  )rb   re   r  r.   r   r   )rj   rk   rF  r  r!  rl   r   rs   rs   rt   test_weighted_stouffer   s   z)TestCombinePvalues.test_weighted_stouffer)r  r3  r  r  r  rj  )singler  rV  r?  c           	         s  t |d}d\}}tjd}|dkr>||||||f|j||dd|dd d dd f gddn)|d	krQ||dd|||fj	n|d
krg|j
||jdd||fddd| fddtjd D }||dd  |d d  dksJ d S )Nr   )rX   r5   l	   TrU(	"b-= r  r  r  rV  rR   r  rV  r   rL  c                    s*   g | ]}t j|d d f  dd qS )Nr>  r   )re   r  r  r?  pvaluessrs   rt   r     s    z8TestCombinePvalues.test_monotonicity.<locals>.<listcomp>r^   )r(   rb   r   rV  rW  r{  r  rg   r  ri  r  r  rj  rk  r  )	rj   rj  r?  rk   r   r  r  rO  combined_pvaluesrs   r  rt   test_monotonicity   s$   $*z$TestCombinePvalues.test_monotonicityc                 C   s<   t j|g d|d}t|j|d  t|j|d  d S )Nr  r>  r   r   )re   r  rb   r/   r   r   )rj   r?  rk   r   rs   rs   rt   r     s   zTestCombinePvalues.test_resultrS   r   r   c                 C   s  t jd}||jdd}|dkr|jn|}tj|||d}|d u rA||d}tj||d}t|j	|j	 t|j
|j
 d S |dkrH|jn|}|dd d f |dd d f }}	tj||d}
tj|	|d}t|j	d |
j	 t|j	d |j	 t|j
d |
j
 t|j
d |j
 d S )	Nl   2'$FV r  rL  r   )rS   r?  r  r>  r   )r   rV  rW  rb   ri  re   r  rg   r.   r   r   )rj   r?  rS   rk   rO  rl   r   r\  rz  r  ref0ref1rs   rs   rt   r     s$   "zTestCombinePvalues.test_axisN)r   r   r   r  r  r  r  r  r[  r  r  r  rs   rs   rs   rt   r     s,    



r  c                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )TestCdfDistanceValidationzg
    Test that _cdf_distance() (via wasserstein_distance()) raises ValueErrors
    for bad inputs.
    c                 C   s<   t ttjdgdgdgddg t ttjdgdgddg d S )Nr   r0   r2   r1   r   r   r   re   wasserstein_distancer  rs   rs   rt   &test_distinct_value_and_weight_lengths   s   z@TestCdfDistanceValidation.test_distinct_value_and_weight_lengthsc                 C   s@   t ttjddgdgddg t ttjddgdgddgdg d S )Nr   r   r0   r1   r  r  rs   rs   rt   test_zero_weight   s   z*TestCdfDistanceValidation.test_zero_weightc                 C   s(   t ttjddgddgddgddg d S )Nr   r   r0   r1   r^   r  r  rs   rs   rt   test_negative_weights!  s   z/TestCdfDistanceValidation.test_negative_weightsc                 C   s*   t ttjg ddg t ttjdgg  d S r  r  r  rs   rs   rt   test_empty_distribution!  s   z1TestCdfDistanceValidation.test_empty_distributionc                 C   s,   t ttjg dddgdtjdgddg d S )Nr  r   )r   r   re   r  r   r  r  rs   rs   rt   test_inf_weight!  s   z)TestCdfDistanceValidation.test_inf_weightN)	r   r   r   r   r  r  r  r  r  rs   rs   rs   rt   r     s    r  c                   @   sN  e Zd ZdZdd Zejddejddejdd	d
d Zejddejddejdddd Z	ejddejddejdddd Z
dd Zejddejddejdddd Zejddejddejdddd  Zd!d" Zejd#g d$ejd%g d$d&d' Zd(S ))TestWassersteinDistanceNDz8 Tests for wasserstein_distance_nd() output values.
    c                 C   s^   g d}g d}t ||}tg d}tg d}t|| t| }t|| d S )N)r  r  r  r  r  r  r  r  r  r  )r2   r0   r4   r   r  )rs  rs  r[  r[  r[  rT  rT  rT  rT  rT  rT  rT  )r5   r   )r  r   rK   r   r   r   )r   gw@r   r  r   r   )re   wasserstein_distance_ndr   r   r  r
   )rj   r  r  r   flowdistr\  rs   rs   rt   test_published_values!  s   z/TestWassersteinDistanceND.test_published_valuesn_value)r2   r  r	  r  )r1   r2   r5   max_repeats)r3   rX   c                 C   s   t jd}|jd||td}|j||fd}t j||dd}|t |}t t t||}	t j	|	|d}
|
t|}|| || }}t|||
|}t|ddd	 d S )
Nl   na{F.aP	 r   )rM  r
  rL  r   rR   rw  r   r   )r   rV  rW  integersr  rA  r  r   r  bincountrF  re   r  r
   )rj   r  r  r  rO  repeatsu_valuesv_values	v_weightsrange_repeat	u_weightsr  r   rs   rs   rt   test_same_distribution_nD.!  s   z3TestWassersteinDistanceND.test_same_distribution_nDnu)r6   r7   &   nv)r6   rZ   r`   )r1   r3   r  c                 C   sz   t jd}|j||fd}t ||f}|j|d}|j|d}t jt jj|dd|d}	t||||}
t	|
|	 d S )N   }&=:! rL  r   rR   rw  )
r   rV  rW  r  r  r>  r  re   r  r
   )rj   r  r  r  rO  r  r  r  r  r\  r   rs   rs   rt   test_collapse_nDB!  s   z*TestWassersteinDistanceND.test_collapse_nD)r6   r   ro  )r   r0   r4   c                 C   s   t jd}|j||fd}|j||fd}|j|d}|j|d}t||||}	|jd|dd\}
}|j||fd}t j||
|dd}t j||
t |dd}t||||}t||	 d S )Nr  rL  r   r0   rR   )	r   rV  rW  re   r  r  insertr  r
   )rj   r  r  r  rO  r  r  r  r  r\  add_rownrows	add_valuer   rs   rs   rt   test_zero_weight_nDR!  s   z-TestWassersteinDistanceND.test_zero_weight_nDc                 C   s   ddgddggt jt j ggddg}}}t|||}t|t j t jdd% t jt jggt jt j gg}}t||}t|t j W d    d S 1 sQw   Y  d S )Nr   r0   r?  r@  )r   r  re   r  r   rB  ri   )rj   uvvvuwdistancers   rs   rt   test_inf_valuese!  s   , "z)TestWassersteinDistanceND.test_inf_valuesr  )r   r1   r3   c                 C   s   t jd}|j||fd}|j||fd}|j|d}|j|d}t||||}	|d|}
| }t j||
|dd}t j||
|dd}t||||}t||	 d S )Nl   Lq/ rL  r   r   rR   )r   rV  rW  re   r  r  r  r
   )rj   r  r  r  rO  r  r  r  r  r\  add_dimr  r   rs   rs   rt   test_multi_dim_nDp!  s   z+TestWassersteinDistanceND.test_multi_dim_nD)r5   r[   rK  )r0   r2   r5   c                 C   s   t jd}|j||fd}|j||fd}|j|d}|j|d}t||||}	t|}
|
j|d}|j|d}t|| | || | ||}t||	 d S )Nl   uAh~rL  r_  )r   rV  rW  re   r  ortho_grouprQ  r
   )rj   r  r  r  rO  r  r  r  r  r\  r  	transformshiftr   rs   rs   rt   test_orthogonal_nD!  s   

z,TestWassersteinDistanceND.test_orthogonal_nDc                 C   s  t jd}tjtdd |jdd}|jdd}t||}W d    n1 s*w   Y  tjtdd |jdd}|jd	d}t||}W d    n1 sSw   Y  tjtd
d |jdd}|jdd}t||}W d    d S 1 s}w   Y  d S )Nl   e36^[Y{lz Invalid input values. The inputsr   )r2   rX   r  rL  )r4   r0   r5   z Invalid input values. Dimensions)r  )r1   r  z(Invalid input values. If two-dimensionalr  r\  )r   rV  rW  r  r   r   re   r  )rj   rO  r  r  r  rs   rs   rt   test_error_code!  s$   "z)TestWassersteinDistanceND.test_error_codeu_size)r   rX   r  v_sizec                 C   s   t jd}|j|dfd}|j|dfd}| }| }t||}t||}	t||}
t|	| t|
| |j|d}|j|d}t||||}t||||}	t||||}
t|	| t|
| d S )Nl   Ku@* r   rL  )r   rV  rW  rp  re   r  r  r
   )rj   r  r  rO  r  r  u_values_flatv_values_flatd1d2d3r  r  rs   rs   rt   test_optimization_vs_analytical!  s.   


z9TestWassersteinDistanceND.test_optimization_vs_analyticalN)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  rs   rs   rs   rt   r  !  s8    r  c                   @   sH   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dS )TestWassersteinDistancez5 Tests for wasserstein_distance() output values.
    c                 C   s   t tddgdgddgdgd t tddgdgddgdgd t tddgdgddgdgd t tg dg dd d S )	Nr   r   r9   r1   r.  r0   r  r:  r
   re   r  r  rs   rs   rt   rs  !  s&   z#TestWassersteinDistance.test_simplec                 C   D   t tg dg dd t tg dddgg dddgd d S 	Nr:  r$  r   )r   r   r   r2   r2   r   rX  r1   )r   re   r  r  rs   rs   rt   test_same_distribution!  s   z.TestWassersteinDistance.test_same_distributionc                 C   sp   t tdgdgd t tdgdgd t tg dg dd t tg dg d	g d
g dd d S )Nr   r   rf  r3   rX   r2  )rY   rZ   r[   rV   r  )r=   g@r7  )r4  r5   r$  )r1   r   r   )r   r1   r   r;   r  r  rs   rs   rt   
test_shift!  s   z"TestWassersteinDistance.test_shiftc              	   C   F   t tg dg dg dg dtg dg dg dg d d S N)r   r   r   r   r   r   r3   )r   r1   r1   r1   r1   r2   r2   )r   r   r   r   r   r   r   )r3   r   r   )r   r2   r1   r   r0   r2   r  r  rs   rs   rt   test_combine_weights!  s   z,TestWassersteinDistance.test_combine_weightsc                 C   s|   t ddd}t |}tt||t t | t t|}|d d d }tt||||t j	t ||d d S )Nr<  r  r  r^   rw  )
r   r   r  r
   re   r  rh   r  r  r  )rj   r  r  r  r  rs   rs   rt   test_collapse!  s   

z%TestWassersteinDistance.test_collapsec              	   C   F   t tg dddgg dddgtddgddgddgddg d S N)r   r0   r)  r   r  r0   r  r  rs   rs   rt   r  
"  s   z(TestWassersteinDistance.test_zero_weightc                 C      t tddtjgddgtj t tddtjgtj dgtj t tdtj tjgddgtj t  }|td t tddtjgtjdgtj W d    d S 1 sZw   Y  d S Nr   r0   r   )	r   re   r  r   r  r   r   r   ri   rj   r   rs   rs   rt   r  "  s&   "z'TestWassersteinDistance.test_inf_valuesN)r   r   r   r   rs  r  r  r  r  r  r  rs   rs   rs   rt   r  !  s    	
r  c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )TestEnergyDistancez0 Tests for energy_distance() output values.
    c                 C   s   t tddgdgddgdgtdd  t tddgdgddgdgtdd  t tddgdgddgdgd t tg dg d	tdd
  d S )Nr   r   r0   r9   r1   r.  r   r  r:  r  r   re   energy_distancer   r   r  rs   rs   rt   rs  ("  s$   zTestEnergyDistance.test_simplec                 C   r  r  )r   re   r  r  rs   rs   rt   r  8"  s
   z)TestEnergyDistance.test_same_distributionc                 C   s@   t tdgdgtd t tdgdgtdd  d S )Nr   r   r0   rf  r3   gS[:XL	@r  r  rs   rs   rt   r  @"  s
   zTestEnergyDistance.test_shiftc              	   C   r  r  r   re   r  r  rs   rs   rt   r  H"  s   z'TestEnergyDistance.test_combine_weightsc              	   C   r  r  r  r  rs   rs   rt   r  P"  s   z#TestEnergyDistance.test_zero_weightc                 C   r  r  )	r   re   r  r   r  r   r   r   ri   r  rs   rs   rt   r  V"  s     "z"TestEnergyDistance.test_inf_valuesN)
r   r   r   r   rs  r  r  r  r  r  rs   rs   rs   rt   r  $"  s    r  c                   @   s   e Zd Zg dZg dZdZdd Zdd Zdd	 Zd
d Z	dd Z
dd Zejddg idg ig g dgdd Zdd Zdd Zdd Zdd Zdd Zd S )!TestBrunnerMunzel)r   r0   r   r   r   r   r   r   r   r   r0   r2   r   r   r1   r1   r2   r1   r   r0   r1   r   r   r3   r2   r[   c           	      C   s   t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t||| jd t||| jd t||k t|d| jd t|d| jd t|d| jd t|d| jd t|d| jd t|d| jd d S )	Nr#  r(  r%  r  |	&	@|	&	gҏGg?g@-pL?)re   brunnermunzelrc   r$  r	   r  r   r%  rs   rs   rt   test_brunnermunzel_one_sidedm"  s2   
z.TestBrunnerMunzel.test_brunnermunzel_one_sidedc                 C   t   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nr!  r(  r  r  r   ҏGw?re   r  rc   r$  r	   r  r-  rs   rs   rt   test_brunnermunzel_two_sided"  s   
z.TestBrunnerMunzel.test_brunnermunzel_two_sidedc                 C   sl   t | j| j\}}t | j| j\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nr  r  r  r  r  r-  rs   rs   rt   test_brunnermunzel_default"  s   
z,TestBrunnerMunzel.test_brunnermunzel_defaultc                 C   6   d}d}d}t |dv tttj| j| j||| d S )Nr  r  r  r  r   r   r   re   r  rc   r$  rj   r)  distributionr   rs   rs   rt   $test_brunnermunzel_alternative_error"     z6TestBrunnerMunzel.test_brunnermunzel_alternative_errorc                 C   r  )NrX  r  r  r  r  g "H[?r  r-  rs   rs   rt   $test_brunnermunzel_distribution_norm"  s   
z6TestBrunnerMunzel.test_brunnermunzel_distribution_normc                 C   r  )Nr!  r  r  )r  rX  r  r  rs   rs   rt   %test_brunnermunzel_distribution_error"  r  z7TestBrunnerMunzel.test_brunnermunzel_distribution_errorkwarg_updaterm   rl   r%  c                 C   sv   | j | jd}|| tjttd tjdi |\}}W d    n1 s(w   Y  t	|t
j t	|t
j d S )Nr%  r   rs   )rc   r$  r9  r  r  r   r   re   r  r   r   ri   )rj   r  r  r   r   rs   rs   rt   test_brunnermunzel_empty_imput"  s   
z0TestBrunnerMunzel.test_brunnermunzel_empty_imputc                 C   s   ddddddddddddddt jg}g d}tj||dd\}}tj||dd\}}t|t j t|t j t|t j t|t j d S )Nr   r0   r2   r  r  r   )r   ri   re   r  r   rj   rc   r$  r&  rS  r'  r  rs   rs   rt   &test_brunnermunzel_nan_input_propagate"  s   $z8TestBrunnerMunzel.test_brunnermunzel_nan_input_propagatec                 C   sh   ddddddddddddddt jg}g d}d}d}d}tttj||||| tttj||||| d S )Nr   r0   r2   r  r!  r  r   )r   ri   r   r   re   r  )rj   rc   r$  r)  r  r   rs   rs   rt   "test_brunnermunzel_nan_input_raise"  s*   $z4TestBrunnerMunzel.test_brunnermunzel_nan_input_raisec                 C   s   ddddddddddddddt jg}g d}tj||dd\}}tj||dd\}}t||| jd t|d| jd t|d	| jd t|d
| jd d S )Nr   r0   r2   r  r   r   r  r  r  r  )r   ri   re   r  r	   r  r  rs   rs   rt   !test_brunnermunzel_nan_input_omit"  s   $
z3TestBrunnerMunzel.test_brunnermunzel_nan_input_omitc                 C   sX   g d}g d}d}t jt|d tj||dd W d   dS 1 s%w   Y  dS )z| tests that a warning is emitted when p is nan
        p-value with t-distributions can be nan (0/0) (see gh-15843)
        r:  r  zDp-value cannot be estimated|divide by zero|invalid value encounteredr   r  r  N)r  r  r   re   r  rD  rs   rs   rt   test_brunnermunzel_return_nan"  s   "z/TestBrunnerMunzel.test_brunnermunzel_return_nanc                 C   s`   g d}g d}t jtdd tj||dd\}}W d   n1 s$w   Y  t|d dS )	zo tests that a p is 0 for datasets that cause p->nan
        when t-distribution is used (see gh-15843)
        r:  r  zdivide by zeror   rX  r  Nr   )r  r  r   re   r  r   )rj   rl   rm   r  r  rs   rs   rt   test_brunnermunzel_normal_dist#  s   z0TestBrunnerMunzel.test_brunnermunzel_normal_distN)r   r   r   rc   r$  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rs   rs   rs   rt   r  g"  s&    
r  c                   @   s   e Zd ZdZdd Zejdg dg dddej	 d	d
gdddej	dggdd Z
ejdg dg dgdd Zejdddgejdd
dgejdddgdd Zdd ZdS ) TestQuantileTestzb Test the non-parametric quantile test,
    including the computation of confidence intervals
    c                 C   s  g d}d}t jt|d t|g W d    n1 sw   Y  d}t jt|d tj|ddgd W d    n1 s@w   Y  d}t jt|d tj|d	d
gd W d    n1 sbw   Y  t jt|d tj|dd W d    n1 sw   Y  t jt|d tj|dd W d    n1 sw   Y  d}t jt|d tj|dd W d    n1 sw   Y  d}t jt|d t|d W d    d S 1 sw   Y  d S )Nr:  z/`x` must be a one-dimensional array of numbers.r   z`q` must be a scalar.r   r0   )ra  z-`p` must be a float strictly between 0 and 1.r9   r  r  r  z`alternative` must be one of...z	one-sidedr(  r  )r  r   r   re   quantile_testr  r  rs   rs   rt   test_quantile_test_iv#  s6   "z&TestQuantileTest.test_quantile_test_ivzp, alpha, lb, ub, alternative)r  r  gX݊?g蜶?r!  )r9   r  g-tA?gP"?r!  r.  r  g{gA?r#  r  r  gg @r%  c                 C   s@   t t ddd}tj|||d}t||||gdd d S )Nr   r  rS  )r  r)  r   r*  )r   r^  r   re   r  r
   r  )rj   r  r  lbubr)  rl   r   rs   rs   rt   test_R_ci_quantile3#  s   z#TestQuantileTest.test_R_ci_quantilezq, p, alternative, ref)r  r  r!  gͯI	?)r  r9   r!  gɍQ%e?c                 C   s:   t t ddd}tj||||d}t|j|dd d S )Nr   r  rS  ra  r  r)  r8   r*  )r   r^  r   re   r  r
   r   )rj   ra  r  r)  r\  rl   r   rs   rs   rt   test_R_pvalueG#  s   zTestQuantileTest.test_R_pvaluer>  
continuousdiscreter)  r  c                 C   s  t dt| t| | }tj|}|dkr'|jdd\}}|jdd}n|jdddd}| }|dd}tj||||d}	|	j|d	}
|d
krR||
j	k}n||
j
k}|| D ]}tj||||d}	|	jd| ksoJ q[||  D ]}tj||||d}	|	jd| k sJ qud S )Nr5   r	  r0   rL  rJ  r   rY   r  r  r#  )r  r  r   rV  rW  r  re   r  r  r  r  r   )rj   r>  r)  r  r  rO  r  ra  rQ  r   r2  i_insiderl   rs   rs   rt   test_pval_ci_matchV#  s(   
z#TestQuantileTest.test_pval_ci_matchc                 C   s~   g d}d}t j|dddd}t|j|dd d	gd
 dgd  }t jdddjd
d}t j|dddd}t|j|dd d S )N)                                    r        geX?r	  r  r!  r  rx  r*  ;   r6   rT   h   r9   p   )r  r  r  rb  r%  r  r   )re   r  r
   r   r   r  )rj   rl   pvalue_expectedr   rs   rs   rt   test_match_conover_examples#  s   
z,TestQuantileTest.test_match_conover_examplesN)r   r   r   r   r  r  r  r  r   r  r  r 	  r	  r	  rs   rs   rs   rt   r  #  s0    


&r  c                    @   s  e Zd Zejd ejddZejddZdddd	efd
ddd	efdddd	g dg dg dgfddddg dg dg dgfddd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fddd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fd"d#ddg d$g d$g d%gfd&d'ddg d(g d(g d(g d(g d(g d(g d)g d*g d*g d*g
fd+d,d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fd-d.ddg d/g d/g d0g d1gfd2d3ddg dg dg dg dg dg dg dg dg dg d g d!gfgZ	e
jd4e	d5d6 Zd7d8ddg d9g d:gfd;d<ddg d9g d9g d9g d=g d>gfd?d@ddg dAg dAg dAg dAg dAg dAg dAg dAg dAg dBg dCg dCg dCg dCg dCgfgZe
jd4e	e
j dDdE ZdFdG ZdHdI ZdJdK ZdLS )MTestPageTrendTestr   r1   r  rX      i2  g:hў?Fr=  i  gsH?i,0  gY@?)r  r  I   r	  r  `   r  r	  r  r   r  1   r  +   r  r  r  r  r  r  rT   r  rd  r  r  )D   r  rb  "   r  r  A   X   rU   r  r  r  r  C   E   r  r  r  r  W   r  r	  r  r	  r	  )r  r[   U   r	  O   rZ   \   V   rU   @   r   r)	  r	  r`   r   Y   rW  r	  r	  r   6   r[   B   r  rM  i
  gXY?r@  )r:   r   g @r3   rK  rY   )r3   r2   r<   rX   r  rU   )r  r5  rX   rZ   rV   r  iL  gs˜?T)r2   r1   r0   r   )r1   r2   r   r0   r'     gĞ?)r1   r0   r   r$  r:     g>K=?)r4   r3   r2   r1   r0   r   )r   r1   r2   r3   r0   r4   i  gqူ?)r3   r2   r1   r0   r   )r2   r   r1   r0   r3   r2     ga?i  g;?)r5   r4   r3   r2   r1   r0   r   )r4   r3   r5   r2   r1   r0   r   r  u   g[^6?zL, p, ranked, method, datac                 C   D   t jd tj|||d}t||j t||j t||j	 d S Nr}  )rankedr?  
r   rV  r  re   page_trend_testr   r   r
   r   r?  rj   Lr  r3	  r?  r  r   rs   rs   rt   test_accuracy#  s
   zTestPageTrendTest.test_accuracyi  g-lpW?)
rX   r7   r6   r5   r4   r3   r2   r1   r0   r   )
r   r6   r2   r5   r4   r3   r7   r1   r0   rX   i*  gh[?)
r7   r0   r6   r5   r4   r3   r2   r1   rX   r   r  i  g&]2?)r6   r5   r4   r3   r2   r1   r0   r   )r   r1   r3   r4   r2   r5   r0   r6   r  c                 C   r1	  r2	  r4	  r6	  rs   rs   rt   test_accuracy2#  s
   z TestPageTrendTest.test_accuracy2c                 C   s   t jd d\}}t d|d }t jt |}t j||}tj|dd}t|}tj|dd}tj|dd}	tj||d}
tj|d d |f || d}t	|j
|j
 t	|j
|	j
 t	|j
|
j
 t	|j
|j
 d S )	Nr}  )rX   r  r   rR   Tr3	  F)predicted_ranks)r   rV  r  r   rF  r  re   rankdatar5	  r   r   )rj   r  r  r;	  permr  ranksr  r]  r.  res4res5rs   rs   rt   test_options$  s"   
zTestPageTrendTest.test_optionsc                 C   s   t jd g dg dg dg dg dg dg}t |j}t dd	}tj|d
|dd}t|j	d t
|jddd tj|d
|dd}t|j	d t
|jddd d S )Nr}  )r  r0	  o   )r  rJ  k   )g      y   )r
  r  rx  )r        )   rc  t   r   r5   Fr=  )r3	  r;	  r?  i  gy&1l?r2   r$  r@  gHPsb?)r   rV  r  r   ri  r   re   r5	  r   r   r   r   )rj   r  r;	  r   rs   rs   rt   test_Ames_assay$  s$   z!TestPageTrendTest.test_Ames_assayc                 C   s  t tdd td  W d    n1 sw   Y  t tdd tg  W d    n1 s1w   Y  t tdd tddg W d    n1 sNw   Y  t tdd tdggg W d    n1 slw   Y  t tdd ttjdd W d    n1 sw   Y  t tdd ttjdd W d    n1 sw   Y  d}t t|d tjg dg dgg d	d
 W d    n1 sw   Y  t t|d tjg dg dgg dd
 W d    n1 sw   Y  t t|d tjg dg dgg dd
 W d    n	1 sw   Y  t t|d tjg dg dgdd
 W d    n	1 sBw   Y  t tdd tg dg dgd W d    n	1 sew   Y  t tdd tg dg dgd W d    n	1 sw   Y  t tdd tjg dddtjggdd W d    n	1 sw   Y  t tdd tjg dg dgdd W d    n	1 sw   Y  t tdd tjg dg dgdd W d    d S 1 sw   Y  d S )Nz`data` must be a 2d array.r   r   r0   zPage's L is only appropriater1   z+`predicted_ranks` must include each integerr:  r  )r  r;	  )r  r0   r1   )r   r0   r1   r1   rA  z`data` is not properly ranked)r   r0   r1   Tr  z`data` contains NaNsFr:	  z`method` must be inekki)r  r?  z`ranked` must be boolean.)r  r3	  )	r   r   re   r5	  r   rV  r  ri   r  r  rs   rs   rt   rB  *$  sx   $z'TestPageTrendTest.test_input_validationN)r   r   r   r   rV  r  r  	data_3_25
data_10_26tsr  r  r  r8	  ts2r  r9	  rA	  rK	  rB  rs   rs   rs   rt   r	  #  s    $$$$$$$,
r	  iv5z	fun, argsc                 C   s|   | |ddi}| |ddi}t || | j d}tjtt|d | |ddd W d    d S 1 s7w   Y  d S )Nr?  r@  r  z#() got multiple values for argumentr   )r?  r  )r   r   r  r   r  reescape)r  r  r   r]  errrs   rs   rt   test_rename_mode_methoda$  s   
"rT	  c                   @   sr   e Zd Zdd Zdd Zdd Zdd Zej	d	g d
ej	dddgdd Z
ej	dddgdd ZdS )TestExpectilec                 C   6   t jd}|jdd}ttj|ddt | d S )Nr}  r  rL  r9   r  )r   rV  rW  r
   re   	expectilerh   rj   rO  rl   rs   rs   rt   test_same_as_means$     zTestExpectile.test_same_as_meanc                 C   rV	  )Nr}  r  rL  r   rW	  )r   rV  rW  r
   re   rX	  aminrY	  rs   rs   rt   test_minimumx$  r[	  zTestExpectile.test_minimumc                 C   rV	  )Nr}  r  rL  r   rW	  )r   rV  rW  r
   re   rX	  amaxrY	  rs   rs   rt   test_maximum}$  r[	  zTestExpectile.test_maximumc           	         sj   t jd}dd   fdd}d}||}| }||}tj|||d}||||}t|| d S )Nl   b@lN c                 S   s8   t j||d}d| ||| k< t || ||  d  S )Nr7  r   r0   )r   r9  r  )r  r   r  rF  r  rs   rs   rt   r  $  s   z'TestExpectile.test_weights.<locals>.func                    s,   t | t | f}tj || ||fdjS )N)bracketr  )r   r  r  r   minimize_scalarrl   )r   r  rF  r`	  r  rs   rt   
expectile2$  s   z.TestExpectile.test_weights.<locals>.expectile2rX   rw  )r   rV  rW  re   rX	  r
   )	rj   rO  rc	  r  r   r  rF  r   r\  rs   rb	  rt   test_weights$  s   

zTestExpectile.test_weightsr  )r  g?r9   g/#    ?r  r  r  rH  c              	   C   s  t jd}|j|d}dD ]}ttjt j||d|d| q| }ttj|| |dtj||d|  ttj|| |dtj||d|  ttj|| |d|tj||d  |j	|dd}|dkrmd	d
 }n|dkrvdd
 }ndd
 }|tjt j
||  |dtj||dtj||d  |j|dd}tj||dtj||dksJ |j	|dd}dD ]&}|tjd| | ||  |dd| tj||d |tj||d   qttj| |dtj|d| d  dS )u  
        See Section 6 of
        I. Steinwart, C. Pasin, R.C. Williamson & S. Zhang (2014).
        "Elicitation and Identification of Properties". COLT.
        http://proceedings.mlr.press/v35/steinwart14.html

        and

        Propositions 5, 6, 7 of
        F. Bellini, B. Klar, and A. Müller and E. Rosazza Gianin (2013).
        "Generalized Quantiles as Risk Measures"
        http://doi.org/10.2139/ssrn.2225751
        r}  rL  )rf  r   r9   )rk  r8  rW	  rX   r  r9   c                 S   s   t | | d S r  )r
   r   r   rs   rs   rt   	assert_op$  r'  z:TestExpectile.test_expectile_properties.<locals>.assert_opc                 S   s   | |k sJ d S r  rs   re	  rs   rs   rt   rf	  $  r  c                 S   s   | |ksJ d S r  rs   re	  rs   rs   rt   rf	  $  r  r3   )r  r9   r  r   N)r   rV  rW  rX  r
   re   rX	  r   exponentiallogisticr_)rj   r  r  rO  rl   r  rm   rf	  rs   rs   rt   test_expectile_properties$  s\   


 z'TestExpectile.test_expectile_propertiesc                 C   s   t jd}|jd|d}g }t dt dd}t jd|d|d d	d	  df D ]}|tj	||d
 q)t 
t |dksBJ d S )Nr}  r0   )r   rM  r  r9   rJ  r   r   r^   rW	  )r   rV  rW  paretologspacelog10ri	  r  re   rX	  r  diff)rj   r  rO  rl   e_list	alpha_seqr  rs   rs   rt   test_monotonicity_in_alpha%  s   $z(TestExpectile.test_monotonicity_in_alphaN)r   r   r   rZ	  r]	  r_	  rd	  r  r  r  rj	  rq	  rs   rs   rs   rt   rU	  r$  s    arU	  c                	   @   s   e Zd Zg dZdg dejejdgZdd Ze	dd Z
ejd	ed
dg g dgg dd Zejdedd Zejdedd Zejdedd Zejd	ddg dgejdddgejdddgdd Zdd  Zd!S )"TestLMoment)yףp=
?rs	  p=
ף?r:   r8  r  r:   r9   r   r  r6  {Gz?g@(\?gףp=
?
ףp=
?g)\(?gRQ @r  {Gz?ffffff @r  g{Gz@gRQ?gGz@gQ?(\?rt	  gzG?g
ףp=
?gQ?ffffff?gGz
@g(\?g(\?gQ?q=
ףp?g(\@Q?gGz	@r  Q?rt	  p=
ף @rx	  gp=
ף@gq=
ףp@gRQ?Gz?g
ףp=
?r  gHzG?g      @r  gQ?r~  r~	  RQ?r	  gQ?p=
ף?gQ@gGz?gQ?gp=
ף?q=
ףp?r9  gp=
ף?gQ?ru	  r	  g@ry	  g)\( @gzG@r	  r  gGz?g(\?r~  333333?)\(?r  rv	  gGz@r  g(\?g=
ףp=?rx	  rs	  gHzG?{Gz?r	  g
ףp=
?gףp=
?r}	  r	  ru	  gQ?r  g?r	  r	  g(\?rs	  gQ?gffffff@gQ?g?r{	  gGz?ru	  g{Gz?gHzG@rz	  r	  r|	  g\(\?g(\?rw	  g(\?r:   )r   r0   r<   za duckc                 C   sP   d}t jt|d ttj| jtjd W d    d S 1 s!w   Y  d S Nz*`sample` must be an array of real numbers.r   r  )	r  r   r   re   lmomentr   r   r  r  r  rs   rs   rt   test_dtype_iv%  rl  zTestLMoment.test_dtype_ivc                 C   sN   d}t jt|d ttj| jtd W d    d S 1 s w   Y  d S r	  )	r  r   r   re   r	  r   r   r  r  r  rs   rs   rt   test_dtype_iv_non_numeric"%  s   "z%TestLMoment.test_dtype_iv_non_numericr  r   r^   r:  c                 C   H   d}t jt|d tj| j|d W d    d S 1 sw   Y  d S )Nz*`order` must be a scalar or a non-empty...r   r  r  r   r   re   r	  r  )rj   r  rA  rs   rs   rt   test_order_iv(%  r  zTestLMoment.test_order_ivrS   c                 C   r	  )Nz"`axis` must be an integer, a tupler   rR   r	  )rj   rS   rA  rs   rs   rt   test_axis_iv.%  r  zTestLMoment.test_axis_ivsortedc                 C   r	  )Nz`sorted` must be True or False.r   )r	  r	  )rj   r	  rA  rs   rs   rt   test_sorted_iv4%  r  zTestLMoment.test_sorted_ivstandardizec                 C   r	  )Nz$`standardize` must be True or False.r   )r	  r	  )rj   r	  rA  rs   rs   rt   test_standardize_iv:%  r  zTestLMoment.test_standardize_ivr   r2   r'  FTc                 C   sn   t g d}|s|dd   |d 9  < |rt | jn| j}tj||||d}t||t |d   d S )N)g0ʻEH?gk?gz[?g+3 ?r0   r   )r	  r	  )r   rb   r  r  re   r	  r
   )rj   r  r	  r	  r\  r  r   rs   rs   rt   test_lmoment@%  s   	zTestLMoment.test_lmomentc                 C   s   t j}t | j}t||}t|}|jj|ksJ t	||dd t j
}t g d}t||}t|t j}|jjt jksIJ t	||dd d S )Nr  r*  r2  r   )r   r   rb   r  re   r	  r,  r
  r  r
   int64r   )rj   r
  sampler   r\  rs   rs   rt   
test_dtypeT%  s   
zTestLMoment.test_dtypeN)r   r   r   r  r   ri   r  not_integersr	  r'   r	  r  r  r  r	  r	  r	  r	  r	  r	  rs   rs   rs   rt   rr	  %  s&    




rr	  c                   @   s   e Zd Zejdg dejdddgejdddg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 )TestXP_MeanrS   Nr   r^   )r#  r0   rF  NTr  Fc                 C   s   t jd}|d}||}d  }}	|r(|d}||}	t ||\}}t||	||d}
t j||||d}t|
|| d S )N   -fH r  r{   )rF  rS   r  )r   rV  rW  rb   r4  r"   r  r.   )rj   rk   rS   rF  r  rO  rl   x_xpr  w_xpr   r\  rs   rs   rt   test_xp_mean_basicf%  s   



zTestXP_Mean.test_xp_mean_basicc                 C   sZ   | d|d}}d}tjt|d t||d W d    d S 1 s&w   Y  d S )Nr   r3   z/Array shapes are incompatible for broadcasting.r   rw  )r   r  r  r   r   r"   )rj   rk   rl   r  rA  rs   rs   rt   test_non_broadcastabley%  s
   "z"TestXP_Mean.test_non_broadcastablec                 C   s   | g d}t| g d|d}t|| |j t| g d|d}t|| tj  t| g d|d}t|| tj d S )Nr  r  rw  )r  r   r   )r   r   r  )rb   r"   r.   ri   r   r  )rj   rk   rF  r   rs   rs   rt   test_special_cases%  s   zTestXP_Mean.test_special_casesc           
      C   sn  | d}|dk}||||j|}d}tjt|d t|dd W d    n1 s.w   Y  t|}t|dd}||j}t|| t|| t|dd}|	||  }t
|| |d	}	||||j|	}	t| d|	dd
}|	||  }t
|| d}tjt|d t|tj dd}||j}t|| W d    d S 1 sw   Y  d S )Nr   r1   r   r   r   r   r  r   rX   )rF  r   After omitting NaNs...)r   r  rb   ri   r  r   r   r"   r/   rh   r.   ru  r  r   r   )
rj   rk   rl   r  rA  r  r]  r\  r   rF  rs   rs   rt   r  %  s4   





"zTestXP_Mean.test_nan_policyc                 C      d}t jt|d t|g }||j}t|| W d    n1 s&w   Y  d}t jt|d t|g gdd}||jg}t|| W d    n1 sUw   Y  t|g gdd}|g }t|| d S Nz,One or more sample arguments is too small...r   z2All axis-slices of one or more sample arguments...r   rR   r   )r  r  r   r"   rb   ri   r/   rj   rk   rA  r   r\  rs   rs   rt   r  %     
zTestXP_Mean.test_emptyc                 C   s   | |jj}tj||gtjd}||}tjdd! t|}t|}tj	|tj
 t||| W d    n1 s@w   Y  t||jd}|ttj|tjd}t|| d S )Nr  r?  over)r   r   r  r   rb   rB  r"   rh   r  r   r  r.   r   rj   rk   r  x_npr	  r   r\  rs   rs   rt   r	  %  s   

zTestXP_Mean.test_dtypec                 C   sD   | d}| d}tt|t| tt||dt||d d S )NrX   r   rw  )r   r/   r"   rj   rk   rl   rm   rs   rs   rt   test_integer%  s   

zTestXP_Mean.test_integerc           	      C   sx   t jd}|d\}}}}t|||d  |||d  d}t j||d  ||d  d}t||| d S )Nr	  )r2   r  r  rw  )r   rV  rW  r"   rb   r  r.   )	rj   rk   rO  rl   rm   wxwyr   r\  rs   rs   rt   r   %  s
   (z TestXP_Mean.test_complex_gh22404)r   r   r   r  r  r  r	  r	  r	  r  r  r	  r	  r   rs   rs   rs   rt   r	  d%  s    $r	  r   c                   @   s   e Zd Zejdg dejdddgejdddgejd	d
dgdd Zdd Zdd Zdd Z	dd Z
dd Zejjddddd ZdS )
TestXP_VarrS   r	  r  FTry   r   r   r   r  r   c                 C   s   t jd}|d}t j}|dkr#|j|jddk}	t j||	< t j}||}
t|
||||d}t	 }|
td |||||d}W d    n1 sMw   Y  t||| d S )	Nr	  r  r   rL  r9   )rS   r  ry   r   r  )rS   r  r  )r   rV  rW  r~   rk  ri   nanvarrb   r#   r   r   r   r.   )rj   rk   rS   r  ry   r   rO  rl   var_refnan_maskr	  r   r   r\  rs   rs   rt   test_xp_var_basic%  s    



zTestXP_Var.test_xp_var_basicc                 C   s,   t |ddgdd}t|||j d S )Nr   r  r1   rx   )r#   rb   r.   ri   )rj   rk   r   rs   rs   rt   r	  %  s   zTestXP_Var.test_special_casesc           
      C   s(  | d}|dk}||||j|}d}tjt|d t|dd W d    n1 s.w   Y  t|}t|dd}||j}t|| t|| t|dd}t	|}	|	
||  }t|| d	}tjt|d t|tj dd}||j}t|| W d    d S 1 sw   Y  d S )
Nr   r1   r   r   r   r   r  r   r	  )r   r  rb   ri   r  r   r   r#   r/   r(   r~   r.   r  r   r   )
rj   rk   rl   r  rA  r  r]  r\  r   r   rs   rs   rt   r  &  s,   



"zTestXP_Var.test_nan_policyc                 C   r	  r	  )r  r  r   r#   rb   ri   r/   r	  rs   rs   rt   r  "&  r	  zTestXP_Var.test_emptyc                 C   s   | |jj}tj||d gtjd}||}tjdd! t|}t|}tj	|tj
 t||| W d    n1 sBw   Y  t||jd}|ttj|tjd}t|| d S )Nr0   r  r?  r	  )r   r   r  r   rb   rB  r#   r~   r  r   r  r.   r   r	  rs   rs   rt   r	  3&  s   

zTestXP_Var.test_dtypec                 C   s*   | d}| d}tt|t| d S )NrX   r   )r   r/   r#   r	  rs   rs   rt   r	  D&  s   

zTestXP_Var.test_integerrF   r  rD   c                 C   sZ   t jd}|d\}}t|||d  }t ||d  }t|||dd d S )Nr	  )r0   r  r  F)check_dtype)r   rV  rW  r#   rb   r~   r.   )rj   rk   rO  rl   rm   r   r\  rs   rs   rt   r   J&  s
   zTestXP_Var.test_complex_gh22404N)r   r   r   r  r  r  r	  r	  r  r  r	  r	  rG   r   rs   rs   rs   rt   r	  %  s    r	  c                 C   s   t jd}|jdd}| |}d}t||| d\}}t|| | t|| d }t||| d\}}t|| |  t|d d}t|d || d\}}t|| t |d  t|| d S )	Nl   ~Mr   rL  r   ri  r   r0   r/  )	r   rV  rW  rb   r   r/   r   rp  
atleast_1d)rk   rO  rz  rl   rS   x_outaxis_outrs   rs   rt   test_chk_asarrayS&  s   


r	  numpyz,These parameters *are* compatible with NumPyc                 C   s   |  g d}d}tjt|d tj|dd W d    n1 s"w   Y  tjt|d tj|dd W d    d S 1 sAw   Y  d S )Nr'  r  r   r   r   Tr  )rb   r  r   r  re   r  )rk   rl   rA  rs   rs   rt   'test_axis_nan_policy_keepdims_nanpolicyi&  s   	"r	  rX  )r   rA  rQ	  rs  collectionsr   	itertoolsr   hypothesis.extra.numpyextrar	  r  r  r  numpy.testingr   r   r   r   r   r	   r
   r   r   r  r   r   numpy.ma.testutilsrt  	testutilsrp  r   r   r   r   r   scipy.statsre   scipy.stats.mstatsr  scipy.stats._mstats_basic_mstats_basicr  scipy.stats._ksstatsr   scipy.special._testutilsr   scipy.specialr   scipyr   common_testsr   scipy.stats._axis_nan_policyr   r   r   r   r   r   r  r   r   r    r!   r"   r#   r$   scipy._lib._utilr%   scipy.conftestr&   r'   scipy._lib._array_apir(   r)   r*   r+   r,   r-   scipy._lib._array_api_no_0dr.   r/   r  rG   r  rc   r  r   r   r   r   r   r  rH   r   r   r  r  r1  r|  r  r  r  r  r  r  r  r  r  r  rS  r^  rd  re  r  r  r  r!  rG  rH  ry  r  r  r  r  	compositer  r  r  PowerDivCaser  rJ  ri  re  r0  rf  rn  r  r  r  r  r  r  r  r  r  r  r#  r$  r  r  r&  r*  r2  r3  r4  rF  r5  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r!  r;  rE  rI  rM  rO  rQ  rR  r  r  r  r  r  r  r  r  r	  r,  ro  r  r  r  r  r  r  r  r	  rV  rW  rO  rl   rm   wilcoxonr  r  r  r  r  rT	  rU	  rr	  r	  r	  r	  r	  rs   rs   rs   rt   <module>   s   , $ 

 6s
     	  L [
 WZ

)  "u j-

  ? j 7{j

 
s,,	 J+V70_  (u	



T:
	  
TI 
K
Q









	
<

 >2=~+rizS^W/ m >[
f& 0^C -  ?



 W}
n

