U
    Hvfq'                    @   s	  d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
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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,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 edddddddddg	e:Z;edddddddddg	e:Z<eddddddd d!d"g	e:Z=ed#d$d%d&d'd(d)d*d+g	e:Z>ed,d-d.d/d0d1d2d3d4g	e:Z?ed5d6d7d8d9d:d;d<d=g	e:Z@ed>d?d@dAdBdCdDdEdFg	e:ZAG dGdH dHZBG dIdJ dJZCG dKdL dLZDG dMdN dNZEG dOdP dPZFdQdR ZGdSdT ZHdUdV ZIdWdX ZJG dYdZ dZZKd[d\ ZLd]d^ ZMd_d` ZNdadb ZOG dcdd ddZPG dedf dfZQdgdh ZRdidj ZSdkdl ZTG dmdn dnZUejVWdoG dpdq dqZXdrds ZYG dtdu duZZG dvdw dwZ[G dxdy dyZ\dzd{ Z]G d|d} d}Z^G d~d dZ_G dd dZ`G dd dZaedddddddddgZbebddddgdddddde cd> de cd?   dde cd de cd   ddebddddgddddgddddde cd de cd>  de cd   dde cd> de cd  de cd   ddebddddgdddddde cd> de cd?   dde cd de cd   ddebddddgddddgdddddddgZdebg ddddddddebe g g g gjeddddddgdddgdddgdddgdebe g g g gdddg g g g dgZfG dd dZgdd ZhejVidde jjfde jkfgdd Zldd Zmdd Zndd ZoG dd dZpG dd dZqG dd dZrdd Zsdd Ztdd ZuejVide vddfe vddfgdd Zwdd ZxejViddddgdd ZyejVide"jze d¡dffe"j{e d¡e d¡ffgddĄ Z|d0ddƄZ}ddȄ Z~G ddʄ dʃZG dd̄ d̃ZG dd΄ d΃ZddЄ Zdd҄ ZddԄ Zddք ZejVide vddfe vddfgdd؄ Zddڄ Zdd܄ Zddބ Zdd Zdd Zdd ZG dd dZdd ZG dd dZG dd dZdd Zdd ZG dd dZdd Zdd Zd1ddZd2ddZd3ddZG dd dZG d d dZG dd dZG dd dZejViddddgdd Zdd	 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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%ZG d&d' d'ZG d(d) d)Ze jd*Zed¡Zed¡ZejVid+e"jeffe"jee"jjffe"jeeffe"jeeffgd,d- ZG d.d/ d/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assert_warnssuppress_warningsassert_array_less)raises)arrayarangefloat32float64power)kolmogn)FuncData)binom)optimize   )check_named_results)cdist)NumpyVersion)_broadcast_concatenate)_permutation_distribution_t                     	   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ʣ=      ?      ?      @      @      @      @      @      @      !@c                   @   sJ   e Zd ZeejjZdd Zdd Z	dd Z
dd Zd	d
 Zdd ZdS )TestTrimmedStatsc              
   C   s>  t tdd}t|d| jd t jtddd}t jtd d}t||| jd tdtd	d
d}t j|d d}t|| | jd t j|dd}t	||jdddd t j|dd}t	||jdddd t j|dd d}t|d| jd t j|ddd}ddd
ddddg}t	||dd t j|dddd}ddd
ddddg}t	||dd t
|}t
j|ddd f< t j|d dd}dd!d"d#t
jt
jt
jg}t	||dd t }|td$ t j|ddd}d%dd&d't
jt
jt
jt
jt
jg	}t	||dd t j|dd(dd}d!dd&d't
jt
jt
jt
jt
jg	}t	||dd W 5 Q R X d S ))Nr   r$   TT      @significant)FFlimits	inclusiver7   ?   dtyper%   r#   axisr   r$   decimalr   )r   =   )r7   r>   g     ?@)r               '@
            TF)r7   r8   r>         %@)r   rH   r+   r,   r-   Mean of empty slicer       rB   FT)statsZtmeanXr	   dprecr   r   reshapemeanr   npr   nanr   recordRuntimeWarning)selfyy1y2x_2dZy_trueZx_2d_with_nansup r_   @/tmp/pip-unpacked-wheel-96ln3f52/scipy/stats/tests/test_stats.py
test_tmeanE   sH    
   zTestTrimmedStats.test_tmeanc              	   C   sr  t jtddd}t|d| jd t jtd d}t|tjdd| jd td	td
d}t j|d d}t||jdd| jd t j|dd}t	|d t
dddd t j|dd}t	|d t
dddd t |dd d f }t|d| jd t n}|td t j|dddd}t|d d| jd t j|dddd}t|d d| jd t|d t
j W 5 Q R X d S )Nr1   r2   r6   g@r4   r9   r   ddofr:   r;   )r%   r#   r=   r   )r   r#   g     v@r$   r?   )r   r%   g㪪@r   g@z"Degrees of freedom <= 0 for slice.)r   r!   )r7   r>   r8   r)   r   r"   )rP   tvarrQ   r	   rR   varr   r   rS   r   rU   fullr   rW   rX   r   rV   )rY   rZ   r]   r^   r_   r_   r`   	test_tvart   s(    zTestTrimmedStats.test_tvarc                 C   sH   t tdd}t|d| jd t jtd d}t|tjdd| jd d S )Nr1   r2   gBĆ/H@r4   r9   r   rb   )rP   ZtstdrQ   r	   rR   stdrY   rZ   r_   r_   r`   	test_tstd   s    zTestTrimmedStats.test_tstdc              
   C   sT  t tdd t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
dd	dddg t tj|d d
d td}tj|d< t }|t	d t t|tj t tj|ddd t
ttj|dd t
ttj|dd d}t
t|d tj|dd W 5 Q R X W 5 Q R X d S )Nr    rE   r   )
lowerlimitF)rl   r8   r   r!   r   r   r=   r"   r$         $@r%   invalid value*omit
nan_policy        raisefoobarz'propagate', 'raise', 'omit'matchZfoo)r   rP   ZtminrU   r   rS   rV   r   rW   rX   assert_raises
ValueError)rY   xr^   msgr_   r_   r`   	test_tmin   s(    



zTestTrimmedStats.test_tminc              	   C   s*  t tdd t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d
ddd	dg t tj|d dd td}tj|d< t \}|t	d t t|tj t tj|ddd t
ttj|dd t
ttj|dd W 5 Q R X d S )Nr    rE   r%   )
upperlimitF)r}   r8   r$   rm   r#   r   r=   r   r!   rn   r"   ro   rp   rq         "@rt   ru   )r   rP   ZtmaxrU   r   rS   rV   r   rW   rX   rx   ry   )rY   rz   r^   r_   r_   r`   	test_tmax   s"    



zTestTrimmedStats.test_tmaxc                 C   st   t jtddd}tdddddg}t||jd	d
t|j | j	d tt jtddgdt jtd d| j	d d S )N)r   r$   rO   r6   r    r!   r"   r#   r$   r   rb   r4   rK   rE   r9   )
rP   ZtsemrQ   rU   r   r	   ri   sqrtsizerR   )rY   rZ   Zy_refr_   r_   r`   	test_tsem   s    zTestTrimmedStats.test_tsemN)__name__
__module____qualname__rU   Zfinfor   Z	precisionrR   ra   rh   rk   r|   r   r   r_   r_   r_   r`   r0   A   s   / r0   c                	   @   sZ  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#e$j%&dBdCdDdEdFdGdHgdIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUS )VTestCorrPearsonrE   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   s"   t tt}|d }t|d d S Nr         ?)rP   pearsonrrQ   r	   rY   rZ   rr_   r_   r`   test_pXX   s    zTestCorrPearsonr.test_pXXc                 C   s"   t tt}|d }t|d d S r   )rP   r   rQ   BIGr	   r   r_   r_   r`   
test_pXBIG   s    zTestCorrPearsonr.test_pXBIGc                 C   s"   t tt}|d }t|d d S r   )rP   r   rQ   LITTLEr	   r   r_   r_   r`   test_pXLITTLE   s    zTestCorrPearsonr.test_pXLITTLEc                 C   s"   t tt}|d }t|d d S r   )rP   r   rQ   HUGEr	   r   r_   r_   r`   test_pXHUGE   s    zTestCorrPearsonr.test_pXHUGEc                 C   s"   t tt}|d }t|d d S r   )rP   r   rQ   TINYr	   r   r_   r_   r`   test_pXTINY   s    zTestCorrPearsonr.test_pXTINYc                 C   s"   t tt}|d }t|d d S r   )rP   r   rQ   ROUNDr	   r   r_   r_   r`   test_pXROUND   s    zTestCorrPearsonr.test_pXROUNDc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r	   r   r_   r_   r`   test_pBIGBIG   s    zTestCorrPearsonr.test_pBIGBIGc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r   r	   r   r_   r_   r`   test_pBIGLITTLE  s    z TestCorrPearsonr.test_pBIGLITTLEc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r   r	   r   r_   r_   r`   test_pBIGHUGE  s    zTestCorrPearsonr.test_pBIGHUGEc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r   r	   r   r_   r_   r`   test_pBIGTINY  s    zTestCorrPearsonr.test_pBIGTINYc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r   r	   r   r_   r_   r`   test_pBIGROUND  s    zTestCorrPearsonr.test_pBIGROUNDc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r	   r   r_   r_   r`   test_pLITTLELITTLE  s    z#TestCorrPearsonr.test_pLITTLELITTLEc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r   r	   r   r_   r_   r`   test_pLITTLEHUGE  s    z!TestCorrPearsonr.test_pLITTLEHUGEc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r   r	   r   r_   r_   r`   test_pLITTLETINY  s    z!TestCorrPearsonr.test_pLITTLETINYc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r   r	   r   r_   r_   r`   test_pLITTLEROUND$  s    z"TestCorrPearsonr.test_pLITTLEROUNDc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r	   r   r_   r_   r`   test_pHUGEHUGE)  s    zTestCorrPearsonr.test_pHUGEHUGEc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r   r	   r   r_   r_   r`   test_pHUGETINY.  s    zTestCorrPearsonr.test_pHUGETINYc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r   r	   r   r_   r_   r`   test_pHUGEROUND3  s    z TestCorrPearsonr.test_pHUGEROUNDc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r	   r   r_   r_   r`   test_pTINYTINY8  s    zTestCorrPearsonr.test_pTINYTINYc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r   r	   r   r_   r_   r`   test_pTINYROUND=  s    z TestCorrPearsonr.test_pTINYROUNDc                 C   s"   t tt}|d }t|d d S r   )rP   r   r   r	   r   r_   r_   r`   test_pROUNDROUNDB  s    z!TestCorrPearsonr.test_pROUNDROUNDc                 C   s,   t tt}d}t|| t|j|j d S Ncorrelationpvalue)rP   r   rQ   r   r   r   	statisticrY   res
attributesr_   r_   r`   test_pearsonr_result_attributesG  s    
z0TestCorrPearsonr.test_pearsonr_result_attributesc              	   C   sH   t d}t||\}}t|ddd t|dtdtd d d S )N      @r   V瞯<atolrs   r   r   rP   r   r
   rU   r   spacingrY   ar   probr_   r_   r`   test_r_almost_exactly_pos1M  s    z+TestCorrPearsonr.test_r_almost_exactly_pos1c              	   C   sJ   t d}t|| \}}t|ddd t|dtdtd d d S )Nr         r   r   rs   r   r   r   r   r_   r_   r`   test_r_almost_exactly_neg1V  s    z+TestCorrPearsonr.test_r_almost_exactly_neg1c                 C   sN   t dddg}t dddg}t||\}}t|tdd  t|d d S )NrK   r   r   r   r   UUUUUU?)r   rP   r   r	   rU   r   )rY   r   br   r   r_   r_   r`   
test_basic_  s
    zTestCorrPearsonr.test_basicc              	   C   sV   d}t tj|d: tdddgdddg\}}t|tj t|tj W 5 Q R X d S )NAn input array is constantrv   MbX?rh|?v/?sh|??)r   rP   ConstantInputWarningr   r   rU   rV   )rY   r{   r   pr_   r_   r`   test_constant_inputh  s
    z$TestCorrPearsonr.test_constant_inputc              	   C   s^   dddt d g}ddddt d  g}d}ttj|d t||\}}W 5 Q R X d S )Nr   r   r"   z/An input array is nearly constant; the computedrv   )rU   r   r   rP   ZNearConstantInputWarningr   )rY   rz   rZ   r{   r   r   r_   r_   r`   test_near_constant_inputq  s
    z)TestCorrPearsonr.test_near_constant_inputc                 C   sD   dddddg}dddd	d
g}t ||\}}t|d t|d d S )Ngy)r?gxd{s?gnp?g$9"o?ge =:k?goȟg`
,gzg2l?g>??'ge;E?g3R?)rP   r   r
   rY   rz   rZ   r   r   r_   r_   r`   test_very_small_input_values{  s
    
z-TestCorrPearsonr.test_very_small_input_valuesc              
   C   sR   dt dddddddg }dt d }t||\}}t|d t|d d S )NgY)	kRr   r   r#   gLXz?g͗~-?)rU   r   r   rP   r   r
   r   r_   r_   r`   test_very_large_input_values  s
    
z-TestCorrPearsonr.test_very_large_input_valuesc                 C   sL   t ddddg}t ddddg}t||\}}t|d	 t|d
 d S )Ng7	igNig_b4igZbigDig<'(½igmQiZbtig*D{?gݣ?)rU   r   rP   r   r
   r   r_   r_   r`   !test_extremely_large_input_values  s
    
z2TestCorrPearsonr.test_extremely_large_input_valuesc                 C   sB   t ddgddg}|\}}t|d t|d t| d d S )Nr   r   r   r!   rK   r   )rP   r   r   confidence_interval)rY   r   r   r   r_   r_   r`   test_length_two_pos1  s
    

z%TestCorrPearsonr.test_length_two_pos1c                 C   s0   t ddgddg\}}t|d t|d d S )Nr   r   r   r!   rK   )rP   r   r   )rY   r   r   r_   r_   r`   test_length_two_neg2  s    
z%TestCorrPearsonr.test_length_two_neg2z$alternative, pval, rlow, rhigh, sign)	two-sided?gmgƎ?r   )lessK˅?rK   g?
?r   )greater.?gդζr   r   )r   r   gfǎgl?rK   )r   r   r   gդζ?rK   )r   r   g?
r   rK   c           
      C   st   ddddg}t ddddg| }tj|||d}t|jd| d	d
 t|j|dd
 | }	t|	||fdd
 d S )Nr   r   r   r    r   r'   alternativeg?r&   rtolư>)rU   r   rP   r   r
   r   r   r   )
rY   r   pvalZrlowZrhighsignrz   rZ   resultcir_   r_   r`   test_basic_example  s    z#TestCorrPearsonr.test_basic_examplec                 C   sP   t d}| }tj||dd}tj||dd}t|jd t|jddd d S )	NrE   r   r   r   r   r   g#B;r   )rU   r   rP   r   r
   r   )rY   rz   rZ   Ztest_greaterZ	test_lessr_   r_   r`   (test_negative_correlation_pvalue_gh17795  s    
z9TestCorrPearsonr.test_negative_correlation_pvalue_gh17795c                 C   sR   dddg}dddg}t ||}|\}}t|d t|dd	d
 t| d d S )Nr   r   r   r!   ir   rs   Hz>r   r   )rP   r   r
   r   r   )rY   rz   rZ   r   r   r   r_   r_   r`   #test_length3_r_exactly_negative_one  s    


z4TestCorrPearsonr.test_length3_r_exactly_negative_onec                 C   s&   dddg}ddg}t ttj|| d S Nr   r   r   r    r!   rx   ry   rP   r   rY   rz   rZ   r_   r_   r`   test_unequal_lengths  s    
z%TestCorrPearsonr.test_unequal_lengthsc                 C   s    dg}dg}t ttj|| d S Nr   r   r   r   r_   r_   r`   	test_len1  s    zTestCorrPearsonr.test_len1c              	   C   sB   dddg}dddg}d}t jt|d t|| W 5 Q R X d S )Ny             y              y             z+This function does not support complex datarv   )pytestr   ry   rP   r   )rY   rz   rZ   messager_   r_   r`   test_complex_data  s
    

z"TestCorrPearsonr.test_complex_dataN)-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   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r   r   r   r   r_   r_   r_   r`   r      s`   				
	
	r   c                   @   s|   e Zd ZdZdd Zdd Zdd Zdd	 Zej	j
d
d Zdd Zdd Zdd Zdd Zej	ddddg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?r    r4   d   r     r!   g,Ԛ?r#   r$   g2c?r"   rE   gY
A?      g_?      gO^M?r   gօa?r   r   ggE?g$I$I?)rP   fisher_exactr	   )rY   r   r   r_   r_   r`   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 ]4\}}tt |}t jj|d	 |d	 ddd qd S )Nr   r   r   r!   )gAn&	?g}K
T?r#   r$   )g	7?g?r   rE   )g!@j)A?r   r   )gU!a?gKY?r   r   )g7X?g~ltP?)gFu|?r   r   )rs   gQN^?r    gaa?rs   r   gaa?r   rF   T)r@   verbose)rU   infrP   r   asarraytestingr   )rY   ZtablisttableZres_rr   r_   r_   r`   test_precise  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 )Nr"   %   l      r   gmt?   r   f   g,:^   0   i  i\B  gNQ8rP   r   r
   rY   rz   r   r_   r_   r`   test_gh41301  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  r_   r_   r`   test_gh9231G  s    
zTestFisherExact.test_gh9231c                 C   sx   dddg}t |dddgD ]0\}}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 )Ng?=gNuP=gs=K   L   M   i(E  i  i)  r   r    r4   iPF  i8 r   i_ g^K=?)ziprP   r   r	   )rY   pvalsr   numr   r_   r_   r`   test_large_numbersN  s    
z"TestFisherExact.test_large_numbersc                 C   s    t ttjtddd d S )Nr"   r   r   )rx   ry   rP   r   rU   r   rS   rY   r_   r_   r`   test_raisesY  s    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   r!   rE   r   )rP   r   r   rU   rV   )rY   tablesr  Z	oddsratior   r_   r_   r`   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 ]L\}}g }|tj|ddd  |tj|d dd  t||dd!d" qd S )#Nr   r#   r$   r  i,     rB   r"   i     i   i  r   r   r   r    gI[?gq}!?r   g2\&gQp6g:O_?g a?皙?ffffff??333333?UUUUUU?r   r   r   r   r   )r   r   )r  appendrP   r   r
   )rY   r  r  r  r   r   r_   r_   r`   test_less_greaterh  s2    z!TestFisherExact.test_less_greaterc                 C   s   t ddgddgg\}}d S )Nr   r   r%   i")rP   r   )rY   Zoddsr   r_   r_   r`   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   )rU   r   rP   r   r   r   r   )rY   r   r  r   r_   r_   r`   test_result  s    zTestFisherExact.test_resultN)r   r   r   r   r   r  r  r  r   r   slowr  r  r  r#  r$  r   r%  r_   r_   r_   r`   r     s   


"r   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFS )GTestCorrSpearmanrr   c                 C   s"   t dd}tt|  d S )N      @       @)rP   	spearmanrr   rU   isnanallrj   r_   r_   r`   test_scalar  s    zTestCorrSpearmanr.test_scalarc                 C   s4   t ttjdddgddg t ttjdddgd d S )Nr   r   r$   r%   )rx   ry   rP   r*  r  r_   r_   r`   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@ttj|j	|j	ddj
jdks`ttttj||dd tttj|j	|j	 d S )N鄋 r    r   r   r!   r!   r   r=   )rU   randomseedrandnrP   r*  r   shapeAssertionErrorTr   rx   ry   r   r_   r_   r`   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/  r    r   r   r=   r   )
rU   r1  r2  r3  rx   ry   rP   r*  r
   flattenrY   rz   r_   r_   r`   test_ndim_too_high  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 )Nrn   r%   rp   rq   )r   rs   rt   ru   )rU   r   rV   r   rP   r*  rx   ry   r9  r_   r_   r`   test_nan_policy  s    

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 )Nr!   rE   r"   r   r=   rp   rq   r   +=r   )	rU   r1  r2  randrV   deleterP   r*  r
   )rY   rz   krZ   ZcorxZpxZcorypyr_   r_   r`   test_nan_policy_bug_12458  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 )
Nr!   rE   r   r   )r   rK   r   	propagater>   rr   c                    s$   g | ]  fd dt D qS )c              	      s2   g | ]*}t |d d f  d d f jqS N)rP   r*  r   .0i)jrz   r_   r`   
<listcomp>  s     zJTestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>.<listcomp>rangerG  mrz   rI  r`   rJ    s   z?TestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>)	rU   r1  r2  r3  rV   rP   r*  rL  r
   )rY   ncorrr   r   r_   rN  r`   test_nan_policy_bug_12411  s    

z+TestCorrSpearmanr.test_nan_policy_bug_12411c                 C   s"   t tt}|d }t|d d S r   )rP   r*  rQ   r	   r   r_   r_   r`   test_sXX  s    zTestCorrSpearmanr.test_sXXc                 C   s"   t tt}|d }t|d d S r   )rP   r*  rQ   r   r	   r   r_   r_   r`   
test_sXBIG  s    zTestCorrSpearmanr.test_sXBIGc                 C   s"   t tt}|d }t|d d S r   )rP   r*  rQ   r   r	   r   r_   r_   r`   test_sXLITTLE  s    zTestCorrSpearmanr.test_sXLITTLEc                 C   s"   t tt}|d }t|d d S r   )rP   r*  rQ   r   r	   r   r_   r_   r`   test_sXHUGE  s    zTestCorrSpearmanr.test_sXHUGEc                 C   s"   t tt}|d }t|d d S r   )rP   r*  rQ   r   r	   r   r_   r_   r`   test_sXTINY  s    zTestCorrSpearmanr.test_sXTINYc                 C   s"   t tt}|d }t|d d S r   )rP   r*  rQ   r   r	   r   r_   r_   r`   test_sXROUND  s    zTestCorrSpearmanr.test_sXROUNDc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r	   r   r_   r_   r`   test_sBIGBIG  s    zTestCorrSpearmanr.test_sBIGBIGc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r   r	   r   r_   r_   r`   test_sBIGLITTLE  s    z!TestCorrSpearmanr.test_sBIGLITTLEc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r   r	   r   r_   r_   r`   test_sBIGHUGE  s    zTestCorrSpearmanr.test_sBIGHUGEc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r   r	   r   r_   r_   r`   test_sBIGTINY  s    zTestCorrSpearmanr.test_sBIGTINYc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r   r	   r   r_   r_   r`   test_sBIGROUND  s    z TestCorrSpearmanr.test_sBIGROUNDc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r	   r   r_   r_   r`   test_sLITTLELITTLE  s    z$TestCorrSpearmanr.test_sLITTLELITTLEc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r   r	   r   r_   r_   r`   test_sLITTLEHUGE  s    z"TestCorrSpearmanr.test_sLITTLEHUGEc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r   r	   r   r_   r_   r`   test_sLITTLETINY  s    z"TestCorrSpearmanr.test_sLITTLETINYc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r   r	   r   r_   r_   r`   test_sLITTLEROUND$  s    z#TestCorrSpearmanr.test_sLITTLEROUNDc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r	   r   r_   r_   r`   test_sHUGEHUGE)  s    z TestCorrSpearmanr.test_sHUGEHUGEc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r   r	   r   r_   r_   r`   test_sHUGETINY.  s    z TestCorrSpearmanr.test_sHUGETINYc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r   r	   r   r_   r_   r`   test_sHUGEROUND3  s    z!TestCorrSpearmanr.test_sHUGEROUNDc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r	   r   r_   r_   r`   test_sTINYTINY8  s    z TestCorrSpearmanr.test_sTINYTINYc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r   r	   r   r_   r_   r`   test_sTINYROUND=  s    z!TestCorrSpearmanr.test_sTINYROUNDc                 C   s"   t tt}|d }t|d d S r   )rP   r*  r   r	   r   r_   r_   r`   test_sROUNDROUNDB  s    z"TestCorrSpearmanr.test_sROUNDROUNDc                 C   s,   t tt}d}t|| t|j|j d S r   )rP   r*  rQ   r   r   r   r   r   r_   r_   r`    test_spearmanr_result_attributesG  s    
z2TestCorrSpearmanr.test_spearmanr_result_attributesc                 C   sP   ddddddg}ddddddg}t ||}t t||gj}t|| d S )Nr   r   r   r    r!   r"   )rP   r*  rU   r  r6  r
   rY   x1x2res1res2r_   r_   r`   test_1d_vs_2dM  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)rC  rp   r   r   r    r!   r"   r   rq   )rU   rV   rP   r*  r  r6  r
   )rY   rr   rk  rl  rm  rn  r_   r_   r`   test_1d_vs_2d_nansT  s    z$TestCorrSpearmanr.test_1d_vs_2d_nansc                 C   s   t d}| }t ddddddg}t |||gj}t|}t ddd	gddd
gd	d
dgg}t jdtd}d|dddf< d|dddf< t	|j
| t	|j| d S )Nr"   r   r   r   r   r!   r    rK   g3+?g3+r   r   r;   g+Hs]s?)rU   r   r   r  r6  rP   r*  zerosfloatr
   r   r   )rY   rk  rl  x3rz   actualZexpected_corrZexpected_pvaluer_   r_   r`   
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d
ddddddg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(  r3   ffffff@      @ffffff"@ffffff@g333333@皙@r'   ffffff@ffffff@       @ffffff@r   rC  rq   rp   r   r   r   )gacJC?g%ln?g_0nYt!޿r   r   )rU   r   rV   r6  r
   rP   r*  r   )rY   rz   rR  r   r_   r_   r`   test_gh_9103m  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}dddg}	t|||g|	 d S )	Nr   iH r  r'   rp   rq   gonj?g)Wn%?)rU   r1  r2  r=  r   rP   r*  r   rV   astypeint32r
   )
rY   rQ  rz   rO  r   r   rm  rn  res3expectedr_   r_   r`   test_gh_8111|  s    


zTestCorrSpearmanr.test_gh_8111N)&r   r   r   r   r-  r.  r7  r:  r;  rA  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  re  rf  rg  rh  ri  ro  rp  rv  r  r  r_   r_   r_   r`   r'    sF   
		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   sT   dddddg}dddddg}d	}t ||}t|d
 |d
  t|d |d  d S )Nr   r   r   r    r!   r"   r#   r$   gh
C?gR?r   )rP   r*  r	   rY   rk  rl  r  r   r_   r_   r`   test_spearmanr_vs_r  s    z&TestCorrSpearmanr2.test_spearmanr_vs_rc                 C   s   t tg g tjtjf d S rE  )r   rP   r*  rU   rV   r  r_   r_   r`   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scaler   r   r   )gCzYW?ge*=r   )rU   r1  r2  r   normaldotlinalgcholeskyrP   r*  r	   )rY   rz   rR  r  r   r_   r_   r`   test_normal_draws  s    z$TestCorrSpearmanr2.test_normal_drawsc                 C   s&   t tdddgdddgd d d S )Nr   r   r   r   )r	   rP   r*  r  r_   r_   r`   test_corr_1  s    zTestCorrSpearmanr2.test_corr_1c                 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 )Nrn   r%   rp   rq   )r   r   rt   ru   )	rU   r   rV   r   rP   r*  r
   rx   ry   r9  r_   r_   r`   test_nan_policies  s    

z$TestCorrSpearmanr2.test_nan_policiesc                 C   s(   t d}t d}tttj|| d S )Nrn         4@)rU   r   rx   ry   rP   r*  r   r_   r_   r`   r     s    

z'TestCorrSpearmanr2.test_unequal_lengthsc                 C   sX   ddddg}dddt jg}tj||dd	}tj|d d |d d dd	}t|| d S )
Nr   r   r   r    r$   r#   r"   rp   rq   )rU   rV   rP   r*  r   rj  r_   r_   r`   test_omit_paired_value  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  r%   r   i  rE   i  i  r   rp   rq   gV-?)listrL  r"  rU   rV   r   rP   r*  r   r_   r_   r`   #test_gh_issue_6061_windows_overflow  s    
z6TestCorrSpearmanr2.test_gh_issue_6061_windows_overflowc              	   C   s   d}t tj|d tdddgdddg\}}t|tj t|tj tdddgdddg\}}t|tj t|tj tdddgdddg\}}t|tj t|tj W 5 Q R X d S )Nr   rv   r   r   )r   rP   r   r*  r   rU   rV   )rY   warn_msgr   r   r_   r_   r`   	test_tie0  s    zTestCorrSpearmanr2.test_tie0c                 C   sV   ddddg}ddddg}ddddg}ddddg}t ||}t ||}t|| d S )Nr   r)  r   r(  r)   )rP   r*  r   r   )rY   rz   rZ   Zxryrsrprr_   r_   r`   	test_tie1  s    zTestCorrSpearmanr2.test_tie1c                 C   sb   ddddg}ddddg}ddddt jg}ddddt jg}t||}tj||dd}t|| d S )Nr   r   r)   r   r    rp   rq   )rU   rV   rP   r*  r   )rY   rk  r[   rl  r\   Zsr1Zsr2r_   r_   r`   	test_tie2  s    zTestCorrSpearmanr2.test_tie2c              	   C   s   t ddddgddddgg}t ddddgddddgg}t ddddgddddgg}d}ttj|d 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 5 Q R X d S )Nr   r   r   r    r   rv   r=   rU   r   r   rP   r   r*  r   rV   )rY   z1Zz2Zz3r  r   r   r_   r_   r`   test_ties_axis_1  s    z#TestCorrSpearmanr2.test_ties_axis_1c                 C   s   t ddddddddddg
}t ddddddddddg
}d}ttj|d	. t||\}}t|t j t|t j W 5 Q R X d S )
Nr   r   N}	?	/`?Y%uX-H?C1tq1?*I?r   rv   r  )rY   rz   rZ   r  r   r   r_   r_   r`   test_gh_11111  s       z TestCorrSpearmanr2.test_gh_11111c                 C   sT   t ddddddddddg
}t dddddddddd	g
}tttj||d
d d S )Nr         @r)  r   r  r  r  r  r  r   r=   )rU   r   rx   ry   rP   r*  r   r_   r_   r`   test_index_error  s       z#TestCorrSpearmanr2.test_index_errorc              	   C   s   dddddg}dddddg}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 5 Q R X d S )Nr   r   r   r    r!   r"   r#   r$   r  r   r   r   r   alternative must be 'less'...rv   	ekki-ekki)rP   r*  r	   r   r   ry   r  r_   r_   r`   test_alternative   s    z#TestCorrSpearmanr2.test_alternativer   r   r   r   c           	   	   C   s   dddddg}dddddg}|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 5 Q R X d}tjt|d tj||d|d
 W 5 Q R X d S )Nr   r   r   r    r!   r"   r#   r$   rp   rr   r   r   The input contains nan valuesrv   rt   nan_policy must be one of...r  )	rU   rV   r   rP   r*  r
   r   r   ry   )	rY   r   rk  rl  x1nanx2nan
res_actualres_expectedr   r_   r_   r`   test_alternative_nan_policy7  s(    



z.TestCorrSpearmanr2.test_alternative_nan_policyN)r   r   r   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   r   r  r_   r_   r_   r`   r    s$   
	r  c                  C   s
  d} dddddddd	g}dddddd	ddg}d
}| D ]4}t ||}t|d |d  t|d |d  q4ddddddddd	g	}ddddddd	ddg	}d
}| D ]4}t ||}t|d |d  t|d |d  qdddddddg}dddddddg}d}| D ]6}t ||}t|d |d  t|d |d  q ddddddd	g}ddddd	ddg}d}| D ]6}t ||}t|d |d  t|d |d  qdt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  qxtd}t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:|d }|d |d< ||d< d}| D ]:}t j|||d}t|d |d  t|d |d  qtdddddddd	ddg
}tddddddd	d	d	dg
}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 d ddd dg}dddddg}d!}t ||}t|d |d  t|d |d  d"}	| D ].}t j|||d}t||	 t	|j
|j q| D ]}t	t jdddgdddg|dtjtjf t	t jdddgdddg|dtjtjf t	t jdddgdddg|dtjtjf qt	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|
|}d(}t |d |d }t|d |d  t|d |d  tt jdddgdddgddd d& tt jdddgdddgddd d) td*}tj|d< tt ||tjtjf tt j||d+d,d-d.d/ tt j||d+d0d1d2d.d/ ttt j||d3d, ttt j||d4d, td*}td5}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d6td7}tj|d8}tjd6td7}t|d9d  |d d9 f}ttt ||d  d S ):N)r   cr!   r   r   r   r"   r    r#   r$   r   r   )gJ$I¿gmK?)gJkaa?r   rE   )r   紞xO~>)variant)g?>?aV>)g}'}'?o&5>rK   )r   r  )g?>r  )g}'}'r  r%   gok|?r   gffffff?r  exactmethodZbananaZrmsrG   )g}+޿g`=i?r   r  r  r  r   r   )g\zf?g^n)=g#q?rn   rp   rq   )r   g/>r   r   
asymptotic)rr   r  )r   g&?rt   ru   r  r  r;   i  r   )rP   
kendalltaur	   rU   r   r   rx   ry   r   r   r   r   rV   r1  r2  r  r  r  r  r   r
   rs  maZmasked_greaterconcatenater   isfinite)variantsrz   rZ   r  Ztauxr   r   rk  rl  r   rR  taup_valuer_   r_   r`   test_kendalltau_  s0   






  

  

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*   r   rE   r   r   )
rU   r1  r2  rL  r  shufflemstats_basicr  rP   r	   )sr   rH  r   r  ru  r_   r_   r`   test_kendalltau_vs_mstats_basic9  s    r  c                  C   s\   ddddg} t jdddg}tj| |dd}t| d	d  |d	d  }t|j|jd
d d S )Nr   r)  r   r(  333333@333333@rp   rq   r   r   r   )rU   rV   rP   r  r
   r   )rz   rZ   r1r2r_   r_   r`   test_kendalltau_nan_2nd_argI  s
    r  c                	   C   s.   t jtdd tjg g dd W 5 Q R X d S )Nz/'kendalltau' keyword argument 'initial_lexsort'rv   T)Zinitial_lexsort)r   warnsDeprecationWarningrP   r  r_   r_   r_   r`   #test_kendalltau_dep_initial_lexsortS  s
    r  c                   @   sX  e Zd Zdd ZdZejejejgZdddgZdddgZ	dddgZ
d	dd	gZd
dd
gZdddgZdddgZdddg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/d0ejd1d2d3d4 Z+d5S )6TestKendallTauAlternativec              	   C   sz  dddddg}dddddg}t j||d	d
}|d dks<t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 st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 5 Q R X d S )Nr   r   r   r    r!   r"   r#   r$   r   r   r   r   r   r  rv   r  )	rP   r  r5  r   r
   reverser   r   ry   r  r_   r_   r`   &test_kendalltau_alternative_asymptotic\  s*    z@TestKendallTauAlternative.test_kendalltau_alternative_asymptotic)r   r   r   r   r'   gRUUUU?gZUUUU?g~?g?gˮ[?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 )NrK   r  r  r   )rU   r  rP   r  r
   )	rY   rz   rZ   r   revstat_expected
p_expectedr   r  r_   r_   r`   
exact_test  s    z$TestKendallTauAlternative.exact_testFr   Tzalternative, p_expected, revc                 C   s,   dgdg }}t j}| |||||| d S r   )rU   rV   r  rY   r   r  r  rz   rZ   r  r_   r_   r`   test_against_R_n1  s    z+TestKendallTauAlternative.test_against_R_n1c                 C   s.   ddgddg }}d}|  |||||| d S )Nr   r   r   r    g?r  r  r_   r_   r`   test_against_R_n2  s    z+TestKendallTauAlternative.test_against_R_n2c                 C   s2   dddgdddg }}d}|  |||||| d S Nr   r   r   r  r  r_   r_   r`   test_against_R_c0  s    z+TestKendallTauAlternative.test_against_R_c0c                 C   s6   ddddgddddg }}d}|  |||||| d S )Nr   r   r   r    gVUUUUU?r  r  r_   r_   r`   test_against_R_c1  s    z+TestKendallTauAlternative.test_against_R_c1c                 C   s:   dddddgdddddg }}d}|  |||||| d S )Nr   r   r   r    r!   r   r  r  r_   r_   r`   test_against_R_no_correlation  s    z7TestKendallTauAlternative.test_against_R_no_correlationc              	   C   sF   ddddddddgddddddddg }}d	}|  |||||| d S )
Nr   r   r   r    r!   r"   r#   r$   r   r  r  r_   r_   r`   test_against_R_no_correlationb  s    *z8TestKendallTauAlternative.test_against_R_no_correlationbc              	   C   sH   ddddddddd	g	}d
ddddddddg	}d}|  |||||| d S )Ng333333F@g33333F@g33333D@gfffffJ@gYF@gF@gYI@gF@gN@g@@r)   r3   @r(  g@ffffff@r}  gqq?r  r  r_   r_   r`   test_against_R_lt_171  s    z/TestKendallTauAlternative.test_against_R_lt_171c                 C   s@   t jd t jd}t jd}d}| |||||| d S )Nr   r   gUm*,rU   r1  r2  r=  r  r  r_   r_   r`   test_against_R_lt_171b  s
    z0TestKendallTauAlternative.test_against_R_lt_171bc                 C   s@   t jd t jd}t jd}d}| |||||| d S )Nr      gH4?r  r  r_   r_   r`   test_against_R_lt_171c  s
    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   MbP?r   )rU   r1  r2  r=  rP   r  r   r
   )rY   r   r  rz   rZ   res0rm  r_   r_   r`   test_gt_171  s    

z%TestKendallTauAlternative.test_gt_171r  )r  r  r   r  c           
   	   C   s   dddddg}ddddd	g}|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 5 Q R X d}	tjt|	d tj||d||d W 5 Q R X d S )Nr   r   r   r    r!   r"   r#   r$   r%   r  rp   )rr   r  r   r  rv   rt   r  r  )rU   rV   rP   r  r
   r   r   ry   )
rY   r  r   rk  rl  r  r  r  r  r   r_   r_   r`   r;    s<     

 


 
 z)TestKendallTauAlternative.test_nan_policyN),r   r   r   r  ZalternativesrU   rV   Zp_n1Zp_n2Zp_c0Zp_c1Zp_no_correlationZp_no_correlationbZ
p_n_lt_171Zp_n_lt_171bZp_n_lt_171cr  r  r  reversedZ	case_R_n1r   r   r   r  Z	case_R_n2r  Z	case_R_c0r  Z	case_R_c1r  Zcase_R_no_corrr  Zcase_no_cor_br  Zcase_R_lt_171r  Zcase_R_lt_171br  Zcase_R_lt_171cr  Zcase_gt_171r  r;  r_   r_   r_   r`   r  [  s   4

















r  c                  C   sX  dddddg} dddddg}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dddg ttt jddgddgdg dddddg} ddddtjg}t | |\}}t|d ddtjddg} t | |\}}t|d dddddg} ddd dtjg}t | |\}}t|d ddtjddg} t | |\}}t|d dddddg} ddd ddg}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 )"NrG   r   r   r    r#   r   gs$F)additivegROoc                 S   s   dS Nr   r_   rz   r_   r_   r`   <lambda>;      z"test_weightedtau.<locals>.<lambda>)weigherr  r   )rankgڿgn)r  r  g @ڿg[đ(gIکnTc                 S   s   dS r  r_   r  r_   r_   r`   r  V  r  )r  r  c                 S   s   dS r  r_   r  r_   r_   r`   r  Y  r  r;         (@r)  r   r(  r  gt34+)rP   weightedtaur	   r   rU   rV   r   r   r   r  r   int16rx   ry   )rz   rZ   r  r  r   r   r_   r_   r`   test_weightedtau1  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   )rP   r  rU   rV   r_   r_   r_   r`   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   rK   r  rp   )r  rr   rs   )rU   r   r  rs  rV   rP   r  r   )rQ  rz   rZ   _r   r_   r_   r`   test_kendall_tau_large  s    
r  c               
   C   s   dd } dd }t jd tddD ]}g }t|D ]}||g| 7 }q6t|}t j| t j| t jt|t jd}td	D ]H}d
D ]2}| |||||}	t	
|||||j}
t|	|
 qt j| qq&d S )Nc                 S   s`  d } } } }}	t tt| tt| D ]
\}
}|rT|||
 |||  n|||
 |||  }||7 }| |
 | | kr||7 }||
 || kr|	|7 }	| |
 | | k r||
 || k s| |
 | | kr||
 || kr||7 }q.| |
 | | k r||
 || ks2| |
 | | kr.||
 || k r.||7 }q.|| t||  t||	  S Nr   )r   rL  lenrU   r   )rz   rZ   r  r  addZtotZconcZdiscuvrH  rI  wr_   r_   r`   wkq  s    $@
D
z*test_weightedtau_vs_quadratic.<locals>.wkqc                 S   s   d| d  S )Nr   r   r_   r  r_   r_   r`   r    s    z.test_weightedtau_vs_quadratic.<locals>.weigherr  r   rE   r;   r   rI   )rU   r1  r2  rL  r  r  r   r  ZintprP   r  r   r	   )r  r  r  r   rH  r   r  r  r  r  ru  r_   r_   r`   test_weightedtau_vs_quadratic  s"    r  c                   @   s   e Zd Zdd Zdd ZdS )TestFindRepeatsc                 C   sP   dddddddddddg}t |\}}t|ddddg t|ddddg d S r   rP   Zfind_repeatsr   )rY   r   r   numsr_   r_   r`   r     s    zTestFindRepeats.test_basicc                 C   s>   dddddgg fD ]&}t |\}}t|g  t|g  qd S )NrE   r   2      (   r  )rY   r   Zrepeatedcountsr_   r_   r`   test_empty_result  s    
z!TestFindRepeats.test_empty_resultN)r   r   r   r   r  r_   r_   r_   r`   r    s   r  c                   @   s   e Zd Zdd Zdd Zdd Zd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 )(TestRegressionc                 C   s@   t tt}t|jd t|jd t|jd t|jd d S )Nir   rs   )	rP   
linregressrQ   r   r   	interceptrvaluestderrintercept_stderrrY   r   r_   r_   r`   test_linregressBIGX  s
    z"TestRegression.test_linregressBIGXc                 C   s@   t tt}t|jd t|jd t|jd t|jd d S )Nrs   r   )rP   r  rQ   r   r  r  r  r  r  r_   r_   r`   test_regressXX  s
    zTestRegression.test_regressXXc                 C   s(   t tt}t|jd t|jd d S )Nrs   )rP   r  rQ   ZEROr   r  r  r  r_   r_   r`   test_regressZEROX  s    z TestRegression.test_regressZEROXc                 C   sn   t ddd}dt ddd d }|t t ddd7 }t||}tjj}tt|| t	|j
d d S )Nr   r   皙?rE   r   穷4_Qc?)rU   linspacesinrP   r  _stats_mstats_commonLinregressResultr   
isinstancer   r  )rY   rz   rZ   r   lrr_   r_   r`   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 5 Q R X tj||d
d	}tj||dd	}t|j	d|j	d   tj||dd	}t|j	|j	d  |j
|j
  kr|j
ksn td S )Nr   r   r!  rE   r   r  rv   r  r   r   r   r   r   r   )rU   r#  r$  r   r   ry   rP   r  r
   r   r  r5  )rY   rz   rZ   rm  rn  r  r_   r_   r`   test_regress_alternative  s    z'TestRegression.test_regress_alternativec              
   C   s   ddddddddd	d
g
}ddddddddddg
}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                              r:   Q   8   [   /   9   r  H   >   r  r   r   gؗh?gJK@:Cgag?g->g5ՒO?g]؊E @)rP   r  r
   sloper  r  rU   r   r   r  r  rY   rz   rZ   r   r_   r_   r`   test_regress_against_R!  s    z%TestRegression.test_regress_against_Rc                 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   r   r!  rE   r   r"  8?)	rU   r#  r$  vstackrP   r  r   r  r  )rY   rz   rZ   Zrowsr   r_   r_   r`   test_regress_simple_onearg_rows4  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   r   r!  rE   r   r   r"  r?  )
rU   r#  r$  hstackexpand_dimsrP   r  r   r  r  )rY   rz   rZ   columnsr   r_   r_   r`   test_regress_simple_onearg_cols@  s    
z.TestRegression.test_regress_simple_onearg_colsc                 C   s   t ttjtd d S )Nrq  )rx   ry   rP   r  rU   onesr  r_   r_   r`   test_regress_shape_errorJ  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 )NrF   r!   r   r   r   rK   c                 S   s   t | |ddS )NrC   r?   )r   rz   rZ   r_   r_   r`   r  \  r  z0TestRegression.test_linregress.<locals>.<lambda>r   r3   gePUn?g.bt>gڽE?gʺL7?)
rU   r   rP   r  r<  r  r  r   r  r  )rY   rz   rZ   r   Z	assert_aer_   r_   r`   test_linregressO  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順 r   rK   )
rU   r#  rP   r  r   r  r   r+  r  r  )rY   r   rQ  rz   rZ   r   r_   r_   r`    test_regress_simple_negative_cord  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jj}tt|| d}t	|| dt
|ks|td S )Nr   r   r!  rE   r   )r<  r  r  r   r  r  )rU   r#  r$  rP   r  r%  r&  r   r'  r   dirr5  )rY   rz   rZ   r   r(  r   r_   r_   r`   !test_linregress_result_attributesv  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 )Nr   r   r!   rs   )rU   r   rP   r  r   r   r  r  rY   rz   rZ   r   r_   r_   r`   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 )Nr   r   rs   )	rU   r   rF  rP   r  r   r   r  r  rO  r_   r_   r`   'test_regress_two_inputs_horizontal_line  s    

z6TestRegression.test_regress_two_inputs_horizontal_linec              $   C   s   ddddddddd	d
ddddddddddddddddddddddd d!d"d#g$}d$d%d&d'd(dd)d*d+d,d-dd$d.d/d0d"d1d2d3d4d5d6ddd7d0d'd*d,d8d9d:d;d<dg$}t ||}t|jd= t|jd> t|jd? d@ t|jdA t|jdB t|jdC d S )DNr!  gfffffu@ǧ]@g̤@333333$@g     Pl@gfffff҄@gfffff"@g	|@g     H@gq@皙?333333?g     <@g33333ׄ@g      u@g     {@g333333'@g     `@g33333l@gfffff@g̼@g^@r   gffffff@g1u@g@g     8@g     X@g333333&@g33333]@gfffffl@g@gfffff|@r'   r  g,u@gfffff]@g     @ry  g     @g     4@g|@g33333W@gy@gP@gfffff@g4u@g%@gm@gl@g     0@gfffffƋ@gfffff]@gl@gffffff$@gffffff]@g̜l@g33333@g33333|@g?g!пr   gpX?rs   gh-h*<?gg?)	rP   r  r   r<  r  r  r   r  r  rO  r_   r_   r`   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   r   r!  rE   r   r   )	rU   r#  r$  rP   r  Zpolyfitr   r<  r  )rY   rz   rZ   r   Zpolyr_   r_   r`   test_compare_to_polyfit  s    z&TestRegression.test_compare_to_polyfitc                 C   s   t ttjg g  d S rE  )rx   ry   rP   r  r  r_   r_   r`   test_empty_input  s    zTestRegression.test_empty_inputc              	   C   sr   t d}t j|d< t jdd t||}W 5 Q R X tjj}tt	|| t
|t jfd  t|jt j d S )Nrn   r%   ignoreinvalidr!   )rU   r   rV   errstaterP   r  r%  r&  r   r'  r   r   r  )rY   rz   r   r(  r_   r_   r`   test_nan_input  s    

zTestRegression.test_nan_inputc              	   C   sB   t d}t jd}d}tt|d t|| W 5 Q R X d S )NrE   z$Cannot calculate a linear regressionrv   )rU   rr  r1  rx   ry   rP   r  )rY   rz   rZ   r{   r_   r_   r`   test_identical_x  s
    
zTestRegression.test_identical_xN)r   r   r   r  r  r   r)  r*  r>  rA  rE  rG  rJ  rL  rN  rP  rQ  rU  rV  rW  r\  r]  r_   r_   r_   r`   r    s&   
	
r  c               	   C   sJ  t dddg\} }}}t| d t|d d}tjt|d t jdddgdd W 5 Q R X t jdddgdd\} }}}t| d t|d	 dd
dddddg}dddddddg}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 )Nr   r   r'   zHmethod must be either 'joint' or 'separate'.'joint_separate' is invalid.rv   Zjoint_separater  Zjointrs   r   r   r    rE   rG      r%   r      r   -   7   N   gQ?Zseparater(  gQ@r?   gGz@rx  )rP   Ztheilslopesr   r   r   ry   )r<  r  lowerupperr{   rz   rZ   r_   r_   r`   test_theilslopes  s6    









re  c                  C   s   ddddddg} t j| dd\}}}}t|tdddd	g t j| dd
d\}}}}t|dk d}t j| dd
d}t|| d S )Nr   r    r   r   numbinsr   r(  r3   rx  )r(   r!   )rg  Zdefaultreallimits)Zcumcountrl   binsizeextrapoints)rP   Zcumfreqr   rU   r   r   r   )rz   Zcumfreqslowlimrh  ri  r   r   r_   r_   r`   test_cumfreq  s    rk  c                  C   s   t ddddddg} tj| dd\}}}}t|tddddg d}tj| dd}t|| tjddddddgdd\}}}}t|| d S )	Nr   r    r   r   rf  r'   gK}\UU?)Z	frequencyrl   rh  ri  )rU   r   rP   Zrelfreqr   r   )r   Zrelfreqsrj  rh  ri  r   r   Z	relfreqs2r_   r_   r`   test_relfreq  s    
rl  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   sD   dddddddg| _ ddd	d
ddddg| _ddddddddg| _d S )Nr   r    r!   rE   rL   r"   irH  r$   r#   r   r   r   r  )a1a2a3r  r_   r_   r`   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 )	Nr$   r'   r   rs   r   r*   r        ?)r   r   rP   scoreatpercentiler9  r_   r_   r`   r     s    z TestScoreatpercentile.test_basicc                 C   s0  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dddgdd	d
 t|tdddg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dddgdd	ddd
 t|tdddgddddd d S )NrE   r  r+   r   r#   r   r   r$   )limitr   rE   r   ra  r   rE   r,   fractioninterpolation_methodrw  r|  rP   rt  r   r  rL  rU   r   rY   scoreatpercr_   r_   r`   test_fraction%  s:    z#TestScoreatpercentile.test_fractionc                 C   sB  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ddd
gddddd t|tddd
gdddd	d
 t|tddd
gddddd t|tddd
gdddd	d d S )NrE   r  rc  r{  r    higherr!   ru  r}  r   rv  r   rx  ry  r~  r  r_   r_   r`   test_lower_higher?  sf    z'TestScoreatpercentile.test_lower_higherc              	   C   s   t dd }tdddg}t|dddg}t|| tt|tj tt|tdddg| tjt d	d	tdd
ddgd
d}tdddgdddgdddgdddgg}t|| d S )Nr$   r'   r   r*   rs  r   r  rG   r   r    r   r=   r    Q?gQ@g(\ @r   r#   rF   )
r   rU   r   rP   rt  r
   r   r'  ZndarrayrS   )rY   rz   r  r   rn  Z	expected2r_   r_   r`   test_sequence_perX  s$    
 
z'TestScoreatpercentile.test_sequence_perc                 C   s  t j}tddd}t||ddddg dddd	gdd	d
dgddddgg}t||ddd| dddgdddgdddgg}t||ddd| tdddgdddgdddgdddgdddgg}t |d}t|jd t|d t j|ddd}t|jd t|dddg d S )NrG   r   r    )r   r  r   g      @r,         &@r   r!   r"   r#   r$   r%   rE   rF   r   r=         ?g      @g     !@r(         #@r   r  r_   r   r   )rP   rt  r   rS   r   r   r4  )rY   r  rz   Zr0r  scorer_   r_   r`   	test_axisj  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   r   r6  ru   r{  e   rK   )rx   ry   rP   rt  r  r_   r_   r`   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   rP   rt  rU   rV   r   r  r_   r_   r`   
test_empty  s    z TestScoreatpercentile.test_emptyN)r   r   r   rr  r   r  r  r  r  r  r  r_   r_   r_   r`   rm    s   rm  zignore::FutureWarningc                
   @   s  e Zd 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dd Zdd Zdd Zej	
ddddddgdejddddgdddgdejddggdd Zdd  Zej	
d
ed!dej	
d"ejd#gd$d% Zd&d' Zd(d) Zd*d+ Zd,S )-TestModez2Support for non-numeric arrays has been deprecatedc                 C   s2   t g \}}t|tg  t|tg  d S rE  rP   moder   rU   r   rY   valsr  r_   r_   r`   r    s    zTestMode.test_emptyc                 C   s6   t d\}}t|tdg t|tdg d S )Nr(  r   r  r  r_   r_   r`   r-    s    zTestMode.test_scalarc                 C   sN   ddddddddddddg}t |}t|d	 d	 d t|d d	 d d S )
Nr   r!   r   rE      r   r"   r$   r   rP   r  r   rY   data1r  r_   r_   r`   r     s    
zTestMode.test_basicc              	   C   s6  ddddg}ddddg}ddddg}ddddg}ddddg}t |||||g}tj|d d}t|d t dg t|d t dg tj|dd}t|d t ddddgg t|d t d	d
d
d	gg tj|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 )NrE   r  r  r   r=   r   r   r$   r   r   r    )rU   r   rP   r  r   )rY   r  data2Zdata3Zdata4Zdata5arrr  r_   r_   r`   	test_axes  s    (zTestMode.test_axesr>   r   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:rE   rF   rG   rH   r=   )	rU   r1  r2  r=  rP   r  ndimr  r   )rY   r>   r   r  rm  r_   r_   r`   test_negative_axes_gh_15375  s
    z$TestMode.test_negative_axes_gh_15375c              	   C   sX   dddg}t jt| jd t|}W 5 Q R X t|d d d t|d d d d S )NZrainZshowersrv   r   r   r   )r   r  r  deprecation_msgrP   r  r   r  r_   r_   r`   test_strings  s
    
zTestMode.test_stringsc              	   C   sx   ddt jddg}t jdtd}||d d < tjt| jd t	|}W 5 Q R X t
|d d d t
|d d d	 d S )
NrE   Thellor!   r;   rv   r   r   r   )rU   rV   emptyobjectr   r  r  r  rP   r  r   )rY   Zobjectsr  r  r_   r_   r`   test_mixed_objects  s    zTestMode.test_mixed_objectsc              	      s   G dd d  fdddD }t jdtd}||d d < ttt|dk tt |jd	 t	j
t| jd
 t|}W 5 Q R X t|d d  d t|d d d d S )Nc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )z$TestMode.test_objects.<locals>.Pointc                 S   s
   || _ d S rE  r  r9  r_   r_   r`   __init__  s    z-TestMode.test_objects.<locals>.Point.__init__c                 S   s   | j |j kS rE  r  rY   otherr_   r_   r`   __eq__  s    z+TestMode.test_objects.<locals>.Point.__eq__c                 S   s   | j |j kS rE  r  r  r_   r_   r`   __ne__  s    z+TestMode.test_objects.<locals>.Point.__ne__c                 S   s   | j |j k S rE  r  r  r_   r_   r`   __lt__  s    z+TestMode.test_objects.<locals>.Point.__lt__c                 S   s
   t | jS rE  )hashrz   r  r_   r_   r`   __hash__  s    z-TestMode.test_objects.<locals>.Point.__hash__N)r   r   r   r  r  r  r  r  r_   r_   r_   r`   Point  s
   r  c                    s   g | ]} |qS r_   r_   )rG  rz   r  r_   r`   rJ    s     z)TestMode.test_objects.<locals>.<listcomp>)r   r   r   r    r   r   r   r   )r$   r;   r    )r    rv   r   r   r   )rU   r  r  r   r  setr   uniquer4  r   r  r  r  rP   r  )rY   Zpointsr  r  r_   r  r`   test_objects  s    zTestMode.test_objectsc                 C   sP   ddddddddddddg}g }t |}d	}t|| t |}t|| d S )
Nr   r!   r   rE   r  r   r"   r$   )r  count)rP   r  r   )rY   r  r  ru  r   Zactual2r_   r_   r`   test_mode_result_attributes  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 )Nr   r!   r   rE   r  r   r"   r$   )r"   r   rp   rq   rt   ru   )rU   rV   rP   r  r   rx   ry   )rY   r  ru  r_   r_   r`   test_mode_nan  s     


zTestMode.test_mode_nandatar   r!   r   c                 C   s$   t j|dd}t|d d d d S )Nrp   rq   r   r   r  )rY   r  r   r_   r_   r`   test_smallest_equal 	  s    zTestMode.test_smallest_equalc              	   C   s  dgdgdgdgg}t j|td}tjt| jd tj|dd}W 5 Q R X t 	|jdkrh|jj
dksltt 	|jd	kr|jj
dkst|t jgg }t j|td}tjt| jd tj|dd}W 5 Q R X t 	|jdkr|jj
dkstt 	|jd	kr|jj
dkstd S )
NZ	OxidationZPolymerizationZ	Reductionr;   rv   r   r=   r   r   r   )rU   r   r  r   r  r  r  rP   r  r,  r4  r5  r  rV   )rY   r  arrO  r  Zar1r_   r_   r`   test_obj_arrays_ndim
	  s       zTestMode.test_obj_arrays_ndimrL   r<   r  c              	   C   s   t jd}|jdd|}|dkrTtjt| jd t	j
||dd}W 5 Q R X nt	j
||dd}t|j}|| t j|j
j| t j|jj| d S )Nr  )r   r    r!   r   r  rv   Fr>   keepdims)rU   r1  default_rnguniformr  r   r  r  r  rP   r  r  r4  popr  r   r  )rY   r>   r<   rngr   r   Zreference_shaper_   r_   r`   test_mode_shape_gh_9955	  s    

z TestMode.test_mode_shape_gh_9955c              	   C   s   dt jdt jg}tt jdkrJt|}t |jd rF|jd dksJtt j	|dd}t
jt| jd t|}W 5 Q R X t |jd r|jd dkstt j	dd	d
dgdd}t
jt| jd t|}W 5 Q R X t|dgdgg d S )Nr   r   z1.21.0r   r  r;   rv   rE   Tr  )rU   rV   r   __version__rP   r  r+  r  r5  r   r   r  r  r  r   )rY   r   r   r_   r_   r`   !test_nan_policy_propagate_gh_9815)	  s    
""z*TestMode.test_nan_policy_propagate_gh_9815c                 C   s
  t d}tj|ddd}|jj|jj  kr6dks<n ttj|ddd}|jj|jj  krhdksnn t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rHdksNn ttj|d dd}tj|
 dd
}t|| |jj|jj  krdksn t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dd	dg t|jd	dd	g 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rdksn ttj|d ddd}tj|
 ddd}t|| |jj|jj  kr dksn td S )N)r   r   r   r   r   Fr  )r   r   r   T)r   r   r   r   r   r   r  r_   r   r!   rp   )r>   r  rr   )r  rr   )rU   rr  rP   r  r4  r  r5  rV   r   r   ravel)rY   r   r   refr_   r_   r`   test_keepdims=	  sP    
""

&
&

&
zTestMode.test_keepdimsc                 C   sV   d}t |}t j|d< tj|dddd}t|jddddg t|jddddg d S )	N)r    r   r   r   r   Frp   )r   r>   r  rr   r   r   )rU   rF  rV   rP   r  r   r  )rY   r4  r  r   r_   r_   r`   test_gh16952u	  s    

zTestMode.test_gh16952N)r   r   r   r  r  r-  r   r  r   r   r   rU   r   r  r  r  r  r  r  rV   r  r  r   r  r  r  r  r_   r_   r_   r`   r    s4   
		

8r  c               	   C   s   dddddg} d}t jt|d t| }W 5 Q R X t|dgdgf tj| dd}t|dgdgf tj| d	d}t|ddg d S )
Nr   r   r!   r   z#Unlike other reduction functions...rv   Tr  F)r   r  FutureWarningrP   r  r   )r   Z
future_msgr   r_   r_   r`   test_mode_futurewarning	  s    r  c                   @   s$   e Zd ZddddgZdZdd ZdS )	TestSEMr   r   r   r    r(  c              
   C   s  t  6}tjdd |td t| j}W 5 Q R X W 5 Q R X tt	| t| j
}t|d t| j
}ttj| j
ddt||d   tj| j
dd td}tj|d	< tt|tj ttj|d
dd tttj|dd tttj|dd d S )NrX  rY  !Degrees of freedom <= 0 for sliceg㝎?r   rb   r   rn   r%   rp   rq   gH=6?rt   ru   )r   rU   r[  filterrX   rP   Zsemscalar_testcaser   r+  testcaser	   r  r
   r   r   rV   r   rx   ry   )rY   r^   rZ   rQ  rz   r_   r_   r`   test_sem	  s      

"

zTestSEM.test_semN)r   r   r   r  r  r  r_   r_   r_   r`   r  	  s   r  c                
   @   s0  e Zd Zejdddddgddddgfdddgdddddg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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,eg ed-gd.d/ Zd0d1 Zd2d3 Zd4S )5TestZmapZscorezx, yr   r   r   r    r   c                 C   s6   t ||}|t| t| }t||dd d S )Nr&   r   )rP   zmaprU   rT   ri   r
   )rY   rz   rZ   zr  r_   r_   r`   	test_zmap	  s    zTestZmapZscore.test_zmapc           	      C   s   t ddddgddddgddddgg}dt d }t dd }t d}tj||dd}tj||d	d}| | d
 | d
 dgd|| d
 |g|| d
 || gg}ddddg| | | t dgddddgg}t|| t|| d S Nrs   r   r)  r!  r   r   r   r=   r   r   r   )rU   r   r   rP   r  r   	rY   rz   t1t2t3z0r  z0_expectedz1_expectedr_   r_   r`   test_zmap_axis	  s&    





zTestZmapZscore.test_zmap_axisc                 C   s   t ddddgddddgg}tj||ddd}t ddddgdt d	  }t d
dddgt d }t|d | t|d | d S Nrs   r   r)  r   r   r>   rc         r'   r         r(   g?r   )rU   r   rP   r  r   r   rY   rz   r  r  r  r_   r_   r`   test_zmap_ddof	  s    
 zTestZmapZscore.test_zmap_ddofrc   c                 C   sd   t dddt jg}t dddddt jg}tj|||dd}t|tj||t |  |d	 d S )
NrL   rK   r   r#   rG   rp   rc   rr   rb   )rU   r   rV   rP   r  r
   r+  )rY   rc   scorescomparer  r_   r_   r`   test_zmap_nan_policy_omit	  s    z(TestZmapZscore.test_zmap_nan_policy_omitc              
   C   s   t dddd}t ddddd}t j|d< t j|d	< t j|d
< tj||dd|d}t tj|d |d t |d   |dtj|d |d t |d   |dg}t	||dd d S )N      r~   r   rK   r  r"      )r   r    rd   r  rp   r   )rr   r>   rc   r   rb   r<  r   )
rU   r   rS   r#  rV   rP   r  r   r+  r
   )rY   rc   r  r  r  r  r_   r_   r`   #test_zmap_nan_policy_omit_with_axis	  s     



z2TestZmapZscore.test_zmap_nan_policy_omit_with_axisc              	   C   sV   t dddg}t dddddt jg}tjtdd	 tj||d
d W 5 Q R X d S )Nr   r   r   r  rL   r#   rG   zinput contains nanrv   rt   rq   )rU   r   rV   r   r   ry   rP   r  )rY   r  r  r_   r_   r`   test_zmap_nan_policy_raise	  s    z)TestZmapZscore.test_zmap_nan_policy_raisec                 C   s0   t ddddg}ddddg}t||d	d
 d S )Nr   r   r   r    gOT\wg%ܿg%?gOT\w?rG   r?   )rP   zscorer   )rY   rZ   desiredr_   r_   r`   test_zscore	  s
    zTestZmapZscore.test_zscorec           	      C   s   t ddddgddddgddddgg}dt d }t dd }t d}tj|dd}tj|d	d}| | d
 | d
 dgd|| d
 |g|| d
 || gg}ddddg| | | t dgddddgg}t|| t|| d S r  )rU   r   r   rP   r  r   r  r_   r_   r`   test_zscore_axis
  s&    





zTestZmapZscore.test_zscore_axisc                 C   s   t ddddgddddgg}tj|ddd}t ddddgdt d	  }t d
dddgt d }t|d | t|d | d S r  )rU   r   rP   r  r   r   r  r_   r_   r`   test_zscore_ddof
  s    
 zTestZmapZscore.test_zscore_ddofc                 C   s:   t ddt jddg}tj|dd}tt |s6td S )Nr   r   r    r!   rC  rq   )rU   r   rV   rP   r  r,  r+  r5  rY   rz   r  r_   r_   r`   test_zscore_nan_propagate)
  s    z(TestZmapZscore.test_zscore_nan_propagatec                 C   sH   t ddt jddg}tj|dd}t ddt jd	d
g}t|| d S )Nr   r   r    r!   rp   rq   gIHb=gIHb=gIHb=?gIHb=?)rU   r   rV   rP   r  r   rY   rz   r  r  r_   r_   r`   test_zscore_nan_omit.
  s    z#TestZmapZscore.test_zscore_nan_omitc                 C   s\   t t jdddddg}tj|ddd}t jt jtj|dd  dd	f }t||d
d d S )Nr   r   r3   r  r~   r   rp   r  rb   vIh%<=r   )rU   r   rV   rP   r  r_r
   r  r_   r_   r`   test_zscore_nan_omit_with_ddof;
  s    "z-TestZmapZscore.test_zscore_nan_omit_with_ddofc                 C   s,   t ddt jddg}tttj|dd d S )Nr   r   r    r!   rt   rq   )rU   r   rV   rx   ry   rP   r  r9  r_   r_   r`   test_zscore_nan_raiseA
  s    z$TestZmapZscore.test_zscore_nan_raisec                 C   s0   dgd }t |}t|tt|tj d S )NgʡEr   )rP   r  r   rU   rg   r  rV   r  r_   r_   r`   test_zscore_constant_input_1dF
  s    

z,TestZmapZscore.test_zscore_constant_input_1dc              	   C   s   t ddddgddddgg}tj|dd}t|t t jdddgt jdddgg tj|d	d}t|t t jt jt jt jgt|d	 g tj|d d}t|t| |j t 	d
}tj|d d}t|t 
|jt j d S )Nrn   r  r        *@r   r=   r   r   r   )r   r"   )rU   r   rP   r  r   rV   r  rS   r4  rF  rg   )rY   rz   r  r  r  rZ   r_   r_   r`   test_zscore_constant_input_2dK
  s     

z,TestZmapZscore.test_zscore_constant_input_2dc                 C   s   t ddddgdddt jgddt jdgg}tj|ddd}t d}t d}t|t t j| d	t jgt jdd
t jgt j|t jt jgg tj|ddd}t|t t jt jt jt jg| d|t jg| d |t j| d gg d S )Nrn   r  r  rp   r   rr   r>   r(   r   r   r   r   )rU   r   rV   rP   r  r   r
   )rY   rz   r  r  s2r  r_   r_   r`   -test_zscore_constant_input_2d_nan_policy_omit[
  s     

z<TestZmapZscore.test_zscore_constant_input_2d_nan_policy_omitc              	   C   sf   t t jt jt jt jgddddgg}tj|ddd}t|t t jt jt jt jgddddgg d S )Nrn   r  rp   r   r  r   r   )rU   r   rV   rP   r  r   r  r_   r_   r`   test_zscore_2d_all_nan_rowj
  s    

z)TestZmapZscore.test_zscore_2d_all_nan_rowc                 C   s,   t dt j}tj|dd d}t|| d S )Nr   r   rp   r  )rU   rg   rV   rP   r  r   )rY   rZ   r  r_   r_   r`   test_zscore_2d_all_nanr
  s    z%TestZmapZscore.test_zscore_2d_all_nanrz   )r   r   r!   c                 C   s   t |}t|| d S rE  )rP   r  r   r  r_   r_   r`   test_zscore_empty_inputx
  s    
z&TestZmapZscore.test_zscore_empty_inputc                 C   s,   t ddddg}ddddg}t|| d S )	Nr   r   r   r    0j甹`ȿ/A?(/?)rP   gzscorer
   )rY   r  r  r_   r_   r`   test_gzscore_normal_array}
  s
    z(TestZmapZscore.test_gzscore_normal_arrayc                 C   sV   t dddddg}t jj|dddddgd}t|}dd	t jd
dg}t|| d S )Nr   r   rK   r   r    r   maskr  r	  r
  r  )rU   r   r  masked_arrayrP   r  r   r
   )rY   rz   Zmxr  r  r_   r_   r`   test_gzscore_masked_array
  s    

z(TestZmapZscore.test_gzscore_masked_arrayN)r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  rU   r   rr  r  r  r  r_   r_   r_   r`   r  	  s<   

	

r  c                
   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dddddg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dddgfdgdd Zdd  ZdS )!TestMedianAbsDeviationc                 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t jg| _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g| _d S )Ng@r  r)   皙@r  333333@g=
ףp=@r  g(\
@r  r*   r  g@g)\(@gQ@g33333<@)rU   r   rV   dat_nandatr  r_   r_   r`   setup_class
  sF                               z"TestMedianAbsDeviation.setup_classc                 C   sR   t tj| jd dd | jdd}tj|dd}tdddd	g}t|| d S )
Nr=   gQ?r"   r    r   gףp=
?r'   ?rS  )r   rP   median_abs_deviationr  rS   rU   r  r   )rY   r  madZmad_expectedr_   r_   r`   test_median_abs_deviation
  s    z0TestMedianAbsDeviation.test_median_abs_deviationc                 C   s   t j| jdd}t|d d S )Nrp   rq   g(\?)rP   r  r  r   )rY   r  r_   r_   r`   test_mad_nan_omit
  s    z(TestMedianAbsDeviation.test_mad_nan_omitc                 C   sL   t ddddt jgdddddgg}tj|dd	}t|t t jdg d S )
Nr   r)  r   r(  r3   r~  r~   r   r=   rU   r   rV   rP   r  r   )rY   rz   r  r_   r_   r`   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   r   r    r"   r  rp   rq   r   )rU   r   rV   r   rP   r  r   )Zsefr  r  r_   r_   r`   test_nan_policy_omit_with_inf
  s    z4TestMedianAbsDeviation.test_nan_policy_omit_with_infr>   r   r   r   Nc                 C   s:   t d}tj||d}t|t j|j|dt jd d S )N)r   r   r    r=   
fill_value)rU   rr  rP   r  r   	full_likesumrV   )rY   r>   rz   r  r_   r_   r`   test_size_zero_with_axis
  s    
z/TestMedianAbsDeviation.test_size_zero_with_axisznan_policy, expectedrp   r(   rC  c              
   C   sb   t t jt jt jt jt jt jgddddt jt jgddddddgg}tj||dd}t|| d S )	Nr   r!   r   r"   r#   r%   rE   r  r  )rY   rr   r  rz   r  r_   r_   r`   test_nan_policy_with_axis
  s    z0TestMedianAbsDeviation.test_nan_policy_with_axiszaxis, expectedr)   r)  r  )Nr+   c              	   C   sX   t ddddt jgdddddgdddddgg}tj|t jd	|d
}t||ddd d S )Nr   r   r    r%   r   rG   r   rp   )centerrr   r>   r   )r   r   )rU   r   rV   rP   r  rT   r
   )rY   r>   r  rz   r  r_   r_   r`   test_center_mean_with_nan
  s    z0TestMedianAbsDeviation.test_center_mean_with_nanc              	   C   s4   t jtdd tjddddgdd W 5 Q R X d S )	Ncallablerv   r   r   r   r!   r  )r'  )r   r   	TypeErrorrP   r  r  r_   r_   r`   test_center_not_callable
  s    z/TestMedianAbsDeviation.test_center_not_callable)r   r   r   r  r  r  r  r  r   r   r   r$  rU   r   rV   r%  r(  r+  r_   r_   r_   r`   r  
  s$   


r  c                 C   s,   t t| |d | D ]}t|j|k 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)Z	warn_listZexpected_typeexpected_lenZwarn_r_   r_   r`   _check_warnings
  s    r.  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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 )Nr$   r'   rs  )rU   r   r1  r  r   rP   iqrr9  r_   r_   r`   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 )Nr0  r   r   r   )rE   Z   )r  r   r   )r   r  r(   rC  )r  r  r  rt   lineargٿrp   rc  T)rU   rF  rP   r0  )rY   dr_   r_   r`   test_api
  s    

zTestIQR.test_apic                 C   s.   t tg tj t ttdtj d S r  )r   rP   r0  rU   rV   r   r  r_   r_   r`   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)r#   r    rs   r   r=   r    r   r#   r3  interpolationmidpointnearestrc  r  )r    r!   r"   r"   )r!   r"   )r    r"   r   )r    r!   r)   r1  r   r   r!   r   r   r   )	rU   rF  r   rP   r0  r   rr  r   rg   r   r_   r_   r`   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   rs   Tr  )rU   r   r   rP   r0  r   r9  r_   r_   r`   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   r   r!   r  r   r=   r!   r3   r   r   r)  r1  rB  )rU   r   rS   r   rP   r0  r   rg   r9  r_   r_   r`   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 jtj|dd tttj|dd d S )N)G   r  r  rE   r1  r=   rK   r   )r   r   r   r:  r   r   r   r   i  r   r!   r#   rF   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   rH  )r   r   r   r   r    r  )rU   r1  r  dstackrP   r0  r   moveaxisZswapaxesr   r  rS   r  rx   	AxisErrorry   )rY   orz   qr4  r_   r_   r`   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 )Nr!   r   )r   g     U@)r  r)   )g      )@r  )rE   r  g?)r   r  r   )r   r  <   )
rU   r   r   rP   r0  r   rx   ry   rV   r*  r9  r_   r_   r`   test_rng:  s    
zTestIQR.test_rngc                 C   s~  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 tt jdkrhdD ]}tj||d qRtttj|dd d S )Nr!   r    r   r(   r3  r6  r  )r   P   )r  r7  r   rc  r9  r   r8  r)   z1.22.0)Zinverted_cdfZaveraged_inverted_cdfZclosest_observationZinterpolated_inverted_cdfZhazenZweibullZmedian_unbiasedZnormal_unbiasedru   )	rU   r   r   rP   r0  r   r  rx   ry   )rY   rz   rZ   r  r_   r_   r`   test_interpolationE  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 )NrC  Fr  r_   r   )r   r!   rF   r1  )r#   rF   )r   r   )r!   r#   r  )r   r#   rF   )r   r   r   r   r  rD  )r#   T)r   r   r   r   )r   r!   r   rF   )r   r   r#   rF   )r   r!   r#   r   )r   r   r#   rF   )r   r   r#   r   )rU   rF  r   rP   r0  r4  r9  r_   r_   r`   r  h  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
f 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 5 Q R X tjd	d
^ t	d ttj|ddd ttj|dddt 
dd ttj|ddddddg W 5 Q R X 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      .@r>  rC  rq   r#   rp   rt   r;  TrW   alwaysr   rD  r!   r   r   r.   r)   Zbarfood)rU   r   rS   r   rP   r0  rV   warningscatch_warningssimplefilterrg   rx   ry   r9  r_   r_   r`   test_nanpolicy{  s&    

"(
&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 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 5 Q R X 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 tjtdd tjdgdd W 5 Q R X d S )NrP  r>  r   r  r#   r  g=V^w@r)  r*   r;  TrQ  rR  rC  )r  rr   r   )r>   r  rr   r   gF7k?rp   r.   g	I1=@g      @ru   zThe use of 'scale="raw"'rv   raw)rU   r   rS   r   rP   r0  r   rV   rS  rT  rU  r   rx   ry   r   r  r  r9  r_   r_   r`   
test_scale  sD    



zTestIQR.test_scaleN)r   r   r   r   r5  r  r<  r=  r?  r  rM  rO  r  rV  rY  r_   r_   r_   r`   r/  
  s   )#r/  c                   @   s   e Zd ZdZddddgZdZejd ej	dZ
d	d
dddgZdddddZdd Zejdejejej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(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Z d2d3 Z!dS )4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.
    r   r   r   r    r(    r  gp=
ף?g?߾?gD9?gQI?g}?5^INr4  r<   c                C   sH   t |}|d k	rt ||}t|| |d kr6|j}|j|ksDtd S rE  )rU   r  broadcast_tor   r<   r5  )rY   ru  expectr4  r<   r_   r_   r`   _assert_equal  s    

zTestMoments._assert_equalc              	   C   sH  t | j}t|d t | jd}t|d t | jd}t|dd t | jd}t|d t | jd}t|d t | jd	}t|d
 t | jdddd	g}t|dddd
g t | jd}t|d ttt j| jd t | jddddg}t|dddd
g d}tj	t
|d t g }| j|tjtjd t tjg tjd}| j|tjtjd t jtddd}| j|g dtjd t jg gdd}| j|tjdtjd t jg gddgdd}| j|g dd W 5 Q R X 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 )Nrs   r   r   r   rE   r         ?r   r    g     @333333?r(  Mean of empty slice.rv   r;   rB  r=   rB  r\  r  )momentr>   )r   r   )r4  rn   r%   rp   rq   rt   ru   )rP   rc  r  r	   r  r
   rx   ry   r   r  rX   r_  rU   rV   r   r   r   rr  r   r   r   )rY   rZ   r   rz   r_   r_   r`   test_moment  sJ    








zTestMoments.test_momentr<   zexpect, momentr1  rB  c                 C   s   t jd|}tj||d}| j|||d tjt |dd|d}| j||d|d tjt |d	d
|d}| j||d|d tjt |d	d |d}| j||d|d d S )Nr!   rc  r;   )r"   r!   r   )r>   rc  r  r\  )r   r   r   r    r!   r   )r   r   r    r!   r_   )rU   r1  r=  r  rP   rc  r_  r]  )rY   r<   r^  rc  rz   rZ   r_   r_   r`   test_constant_moments
  s    z!TestMoments.test_constant_momentsc                 C   sP   t dddt}t j|d< tj|dddd}t jj	|dt jgd	d
 d S )Nr$   r   rK   rB  r   rC  rD  r`  r   r   )
rU   r   rS   r  rs  rV   rP   rc  r  r
   )rY   r   mmr_   r_   r`   test_moment_propagate_nan  s    
z%TestMoments.test_moment_propagate_nanc              	   C   s4   t jtdd tjddddgg d W 5 Q R X d S )Nz7'moment' must be a scalar or a non-empty 1D list/array.rv   r   r   r   r    re  )r   r   ry   rP   rc  r  r_   r_   r`   test_moment_empty_moment$  s    z$TestMoments.test_moment_empty_momentc              	   C   s   t jtdd  t| j}t|s*tW 5 Q R X t| j	}t
|dd tj| j	dd}t
|dd t| j}t
|dd td	}tj|d
< tjdd tt|tj W 5 Q R X ttj|ddd tttj|dd tttj|dd d S )NPrecision loss occurredrv   g7l*ҿrE   r   biasg2۠ۿrs   rn   r%   rX  rY  rp   rq   rt   ru   )r   r  rX   rP   skewr  rU   r+  r5  testmathworksr	   r  r   rV   r[  r   rx   ry   rY   rZ   rz   r_   r_   r`   test_skewness*  s     

zTestMoments.test_skewnessc                 C   s   t ttdd d S )NrE   rs   )r   rP   rm  r   r  r_   r_   r`   test_skewness_scalar@  s    z TestMoments.test_skewness_scalarc              	   C   sf   t dddt}t j|d< t jdd tj|ddd	}W 5 Q R X t j	j
|d
t jgdd d S )Nr$   r   rK   rB  rX  rY  r   rC  rD  r   r   r   )rU   r   rS   r  rs  rV   r[  rP   rm  r  r
   )rY   r   r  r_   r_   r`   test_skew_propagate_nanD  s
    
z#TestMoments.test_skew_propagate_nanc              
   C   s   t jtdd tdd}tt|s0ttt|t	d sLttt|t	d shtttj|ddstttdgd	 stttd
t
ddd  stW 5 Q R X d S )Nrj  rv   9ѿrE              Frk  g,@r#   r   rL   r    gؗҜ<)r   r  rX   rU   repeatr+  rP   rm  r5  rs  r   rY   r   r_   r_   r`   test_skew_constant_valueM  s    z$TestMoments.test_skew_constant_valuec              	   C   s   t jtdd  t| j}t|s*tW 5 Q R X tj| j	dddd}t
|dd tj| j	ddd}t
|dd t| jdd}t
|d	 td
}tj|d< tt|tj ttj|ddd tttj|dd tttj|dd d S )Nrj  rv   r   r   fisherrl  gO߻S@rE   gx|N@g=
ףp=?rn   r%   rp   rq   Gzrt   ru   )r   r  rX   rP   kurtosisr  rU   r+  r5  rn  r	   r  r   rV   r   r   rx   ry   ro  r_   r_   r`   test_kurtosis[  s    


zTestMoments.test_kurtosisc                 C   s   t ttdddgt d S r  )r   typerP   r{  rs  r  r_   r_   r`   test_kurtosis_array_scalarw  s    z&TestMoments.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 )Nr$   r   rK   rB  r   rC  rD  g(\r   r   )
rU   r   rS   r  rs  rV   rP   r{  r  r
   )rY   r   r?  r_   r_   r`   test_kurtosis_propagate_nanz  s    
z'TestMoments.test_kurtosis_propagate_nanc              	   C   s   t dd}tjtddx t tj|dds4tt tj|t	d ddsTtt tj|t	d ddsttt tj|dddstW 5 Q R X d S )	Nrs  rE   rj  rv   F)ry  rt  rx  )
rU   ru  r   r  rX   r+  rP   r{  r5  rs  rv  r_   r_   r`   test_kurtosis_constant_value  s      z(TestMoments.test_kurtosis_constant_valuec                 C   s6   | j t| j  }tt|d t| j d d S )Nr  )testcase_moment_accuracyrU   rT   r
   r   rP   rc  )rY   Z
tc_no_meanr_   r_   r`   test_moment_accuracy  s    
z TestMoments.test_moment_accuracyc              	   C   sT   t jtdd< tjd}|jdd}d|d d df< t|d  W 5 Q R X d S )Nrj  rv   l   :"z` )r   rE   r  )\(?r   )r   r  rX   rU   r1  r  rP   rm  )rY   r  r   r_   r_   r`   test_precision_loss_gh15554  s
    z'TestMoments.test_precision_loss_gh15554c              	   C   sP   d}t jt|d tg  W 5 Q R X t jt|d tg  W 5 Q R X d S )Nrb  rv   )r   r  rX   rP   rm  r{  rY   r   r_   r_   r`   test_empty_1d  s
    zTestMoments.test_empty_1d)"r   r   r   r   r  r  rU   r1  r2  r=  r  rn  r_  rd  r   r   r   r   r   Z
complex128rf  rh  ri  rp  rq  rr  rw  r|  r~  r  r  r  r  r  r_   r_   r_   r`   rZ    s0   		/	

rZ  c                   @   s   e Zd ZedddgZedddg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ejddddgdd Zdd ZdS )TestStudentTestrK   r   r   r   gSzgE.?g {gB4t?g {?g?c                 C   s  t  T}tjdd< tjtdd" |td tdd\}}W 5 Q R X W 5 Q R X W 5 Q R X t	t
| t	t
| t| jd\}}t|| j t|| j t| jd}d	}t|| t| jd\}}t|| j t|| j t| jd
\}}t|| j t|| j t| jd\}}t|| j t|| j tjjddddd}tj|d< tjdd^ 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 5 Q R X d S )NrX  rY  rj  rv   r  r(  r   r   r   r   r   r   r!   rE   3   it r  r  r   random_stater  r3   rp   rq   )g̈́^Bg/kCm?rt   ru   )r   rU   r[  r   r  rX   r  rP   ttest_1sampr   r+  X1r   T1_0P1_0r   X2T2_0P2_0T1_1P1_1T1_2P1_2normrvsrV   r   rx   ry   )rY   r^   tr   r   r   rz   r_   r_   r`   test_onesample  sB    .

zTestStudentTest.test_onesamplec                 C   sv   t ttj| jddd tj| jddd\}}t|| j t|| j tj| jddd\}}t|| j t|| j d S )Nr   errorr   r   r   r   )	rx   ry   rP   r  r  r
   P1_1_lr  P1_1_g)rY   r  r   r_   r_   r`   test_1samp_alternative  s    z&TestStudentTest.test_1samp_alternativer   r   r   r   c           	      C   s   t j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   <PleH rE   r(   r   r   r  r  gÍ]?g$(}w@gS1?g]@r   r   r   )popmeanr   333333?Zconfidence_levelr   )rU   r1  r  r  r   rP   r  r   r
   r   df)	rY   r   r  rQ  rz   r  r  r   r   r_   r_   r`   test_1samp_ci_1d  s    
z TestStudentTest.test_1samp_ci_1dc              	   C   s@   t tdd}d}tjt|d |jdd W 5 Q R X d S )NrE   r   4`confidence_level` must be a number between 0 and 1.rv   r  )rP   r  rU   r   r   r   ry   r   )rY   r   r   r_   r_   r`   test_1samp_ci_iv  s    z TestStudentTest.test_1samp_ci_ivN)r   r   r   rU   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r  r_   r_   r_   r`   r    s"   ,
r  c                   @   s  e Zd Zdd Zejdddddgdd	 Zejdd
dddgdd Zejdddddgdd Z	ejdddddgdd Z
ejdddddgdd Zejdddddgdd Zejdddddgdd Zejddd d!d"d"gfd#d d$d%d"gfd&d d d'd"gfd(d d!d"d"gfgd)d* Zejddd d!d"gfd#d d$d%gfd&d d d'gfd(d d!d"gfgd+d, Zd-g d.ejfd-ejgd.ejfd-ejgd d.d/gejejejgfd-d.d/gd.d/ejgd0d"ejgfd1d.d/ejgd d.d/gd d0d"gfd1d.d/gd d.ejgd d0ejgfd1ejejgd d.d/gejejejgfgZejd2ed3d4 Zd5d.d/d6ejgd.d/d6gd7fd5d.d/d6gd.d/d6ejgd7fgZejd8ed9d: Zejd;d<d=d>d?gd@dA ZdBS )CTestPercentileOfScorec                 O   s   t j||S rE  )rP   Zpercentileofscore)rY   argskwargsr_   r_   r`   f  s    zTestPercentileOfScore.fzkind, result)r  r  )rT   #   )strictr  )weakr  c              
   C   s2   ddddddddd	d
g
}t | j|d|d| d S )Nr   r   r   r    r!   r"   r#   r$   r%   rE   kindr   r  rY   r  r   r   r_   r_   r`   test_unique  s    z!TestPercentileOfScore.test_unique)r  r`  )rT   r  )r  r  c              
   C   s2   dddddddddd	g
}t | j|d|d
| d S Nr   r   r   r    r!   r"   r#   r$   r%   r  r  r  r_   r_   r`   test_multiple2  s    z$TestPercentileOfScore.test_multiple2)r  r  )rT   r`  )r  rL  c              
   C   s2   ddddddddddg
}t | j|d|d	| d S )
Nr   r   r   r    r!   r"   r#   r$   r  r  r  r_   r_   r`   test_multiple3  s    z$TestPercentileOfScore.test_multiple3)r  r  )rT   r  )r  r  c              
   C   s2   ddddddddd	d
g
}t | j|d|d| d S )Nr   r   r   r!   r"   r#   r$   r%   rE   rF   r    r  r  r  r_   r_   r`   test_missing&  s    z"TestPercentileOfScore.test_missingc              
   C   s2   ddddddddd	d
g
}t | j|d|d| d S )NrE   r   r  r  r  rL  F   rN  r2  r   r  r  r  r_   r_   r`   r  .  s    z(TestPercentileOfScore.test_large_numbersc              
   C   s2   ddddddddddg
}t | j|d|d	| d S )
NrE   r   r  r  r  rL  r  rN  r  r  r  r_   r_   r`   test_large_numbers_multiple36  s    z2TestPercentileOfScore.test_large_numbers_multiple3c              
   C   s2   ddddddddd	d
g
}t | j|d|d| d S )NrE   r   r  r  rL  r  rN  r2  r   n   r  r  r  r  r_   r_   r`   test_large_numbers_missing>  s    z0TestPercentileOfScore.test_large_numbers_missingr  r   rE   r   rT   r!   _   r  r2  r  c              
   C   s:   ddddddddd	d
g
}t | j|ddd
dg|d| d S )NrE   r   r  r  rL  r  rN  r2  r   r  r   r  r  r  r  r_   r_   r`   test_boundariesF  s    z%TestPercentileOfScore.test_boundariesc              
   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 r  )rU   r   r   r  r  r_   r_   r`   test_infN  s    zTestPercentileOfScore.test_infrC  r   r   r  rp   zpolicy, a, score, resultc                 C   s   t | j|||d| d S )Nrq   r  )rY   policyr   r  r   r_   r_   r`   test_nans_ok^  s    z"TestPercentileOfScore.test_nans_okrt   r   r  zpolicy, a, score, messagec              	   C   s,   t t|d | j|||d W 5 Q R X d S )Nrv   rq   )rx   ry   r  )rY   r  r   r  r   r_   r_   r`   test_nans_faili  s    z$TestPercentileOfScore.test_nans_failr4  )r"   r  )r   r   r   )r   r   r   r   c              
   C   sZ   t ddddddg}||}|d }ddddddd	d
ddg
}t| j||dd| d S )Nr   r   r   r   r    r!   rE   r"   r#   r$   r%   r  r  )rU   r   rS   r   r  )rY   r4  r   r  resultsr_   r_   r`   test_ndn  s
    
zTestPercentileOfScore.test_ndN)r   r   r   r  r   r   r   r  r  r  r  r  r  r  r  r  rU   rV   Zcasesr  r  r  r_   r_   r_   r`   r  	  s   















 $

r  ZCasef_obsf_exprc   r>   chi2logmod_logcrrG   r)  r!  gfx(@)r  r  rc   r>   r  r  r  r  r   r  r(        ?g{T4@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 )TestPowerDivergencec              	   C   s   t |}|d kr|j}nt ||}|j| }t d}	|	td tj	|||||d\}
}t
|
| |dksv|dkrtj||||d\}
}t
|
| W 5 Q R X t |}tjj||d | }t
|| d S )NrM   r  r  rc   r>   lambda_r   pearson)r  r  rc   r>   )rU   r  r   	broadcastr4  r   r  rX   rP   power_divergencer
   	chisquaredistributionsr  sf)rY   r  r  rc   r>   r  expected_statZnum_obsr   r^   statr   Z
expected_pr_   r_   r`   check_power_divergence  s2    

   






z*TestPowerDivergence.check_power_divergencec              	   C   s   t D ]}| |j|j|j|jd |j | |j|j|j|jd|j | |j|j|j|jd|j | |j|j|j|jd|j | |j|j|j|jd|j | |j|j|j|jd|j	 | |j|j|j|jd|j	 qd S Nr  r   log-likelihoodmod-log-likelihoodcressie-readr!  )
power_div_1d_casesr  r  r  rc   r>   r  r  r  r  rY   caser_   r_   r`   r     sr                                zTestPowerDivergence.test_basicc              	   C   s   t D ]}tj|j}| ||j|j|jd |j	 | ||j|j|jd|j	 | ||j|j|jd|j	 | ||j|j|jd|j
 | ||j|j|jd|j | ||j|j|jd|j | ||j|j|jd|j qd S r  )r  rU   r  r   r  r  r  rc   r>   r  r  r  r  )rY   r  mobsr_   r_   r`   test_basic_masked  st                                z%TestPowerDivergence.test_basic_maskedc              	   C   s   t d }t d }t|j|jf}tt|jt|j |jf}| ||ddd|j|jg | ||ddd|j	|j	g | ||ddd|j
|j
g | ||ddd|j|jg | t|jddd dd d|j d S )Nr   r   r  r  r  r  r   )r  rU   r@  r  	ones_likerT   r  r  r  r  r  r  r   rS   )rY   case0case1r  r  r_   r_   r`   r  	  s\        
    
    
    
    zTestPowerDivergence.test_axisc                 C   s   t d }t d }t|j|jfj}tt|jt|j |jfj}|j|jg}t	dgdgg}t
j|||d\}}t|| t
j|||d d\}	}
t
j|||d d\}}t|t|
|f d S )Nr   r   rb   r  rB  )r  rU   r@  r  r6  r  rT   r  r  r   rP   r  r
   r   )rY   r  r  r  r  Zexpected_chi2rc   r  r   Zstat0p0Zstat1p1r_   r_   r`   test_ddof_broadcasting#  s    
z*TestPowerDivergence.test_ddof_broadcastingc              
   C   s   t   tD ]|}| |j|j|j|jd|j | |j|j|j|jd|j	 | |j|j|j|jd|j
 | |j|j|j|jd|j qW 5 Q R X d S )Nr  r  r  r  )rS  rT  power_div_empty_casesr  r  r  rc   r>   r  r  r  r  r  r_   r_   r`   test_empty_cases?  sD    
                z$TestPowerDivergence.test_empty_casesc                 C   sN   t d j}t d j}t d j}t d j}tj||||dd}d}t|| d S )Nr   r  r  r  )r  r  r  rc   r>   rP   r  r   )rY   r  r  rc   r>   r   r   r_   r_   r`   'test_power_divergence_result_attributesO  s    




 z;TestPowerDivergence.test_power_divergence_result_attributesc              	   C   s   t ddgddgg}t ddgddgg}ttdd	 tjddgdd
gd W 5 Q R X ttdd	 tj||dd W 5 Q R X tj||d\}}t|ddg t|ddg d S )NrE   r   r  r!   r   r  r   For each axis slice...rv   rL  r  r  r   )r  r  r>   g̑m@gUUU@gj^4;?g4;?)rU   r   rx   ry   rP   r  r
   )rY   r  r  r  r   r_   r_   r`   test_power_divergence_gh_12282Z  s     z2TestPowerDivergence.test_power_divergence_gh_12282N)r   r   r   r  r   r  r  r  r  r  r  r_   r_   r_   r`   r    s   r  c                	   C   s2   t tdd tjddgddgd W 5 Q R X d S )Nr  rv   rE   r   r  rL  r  )rx   ry   rP   r  r_   r_   r_   r`   test_gh_chisquare_12282g  s    r  zn, dtyper  i@B c                 C   sN   t j| dg|d}t j| d | d g|d}t||\}}t|| dd d S )Nr   r;   r   r  r   )rU   r   rP   r  r
   )rQ  r<   obsexpr  r   r_   r_   r`   test_chiquare_data_typeso  s    r  c               
   C   s  t dddddgdddddggj} t ddddd	gd	d	dddg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dddddgdddd	dgd}	t jjdddddgddddd	gd}
tj	|	|
d\}}t
|d tj	t jd	ddg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 5 Q R X W 5 Q R X 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4 t "}|td t	|j\}}W 5 Q R X W 5 Q R X tt|t jj t|jd  tt |j d S )!Nr$   r       rK   r   r    r!   r   r   g      8@r'   r   r)  r  r`  r=   r  r  r   r?   )r>   r  r"   r  rE   r  )r  r   rX  rY  rM   r_   r  )rU   r   r6  r  r  r  rP   r  r  r  matr   r   r  r  r  r   r'  r   r   r   r[  r   r  rX   ZMaskedArrayr4  r  r,  )r  r  r  Zexpected_chisqZ
expected_gr  Zchisqr   gZobs1Zexp1r^   Zempty3r_   r_   r`   test_chisquare_masked_arraysx  sn    $$"$$ 
*
$r  c               "   C   s&  t ddddddddddd	d
ddddddg} d}t dt| d }t |  t ||   }t |||  }t | |fj}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(d)d*d+d,d-d.g 	d/d0}|D ]B\}}t
j|d d d1f |d d df |d2\}	}
t|	|d3d4 qd S )5Nr   rF   rC   rN   r!   rE   r    r$   r#   r%   r   r"   r   g*kqg      $g    @r  g     r@g      gffffffP@g       gLD@r  g      A@r   g     =@r  g     :@rs   g8@r'   gffffff7@gq=
ףp?g7@r   g333336@r(   g6@r)  gfffff6@r   g8@r3   g     A@rn   g     j@rK   r   r   r  g{Gzt?r   )rU   r   r   r  r  r#  r  r@  r6  rS   rP   r  r
   )r  betarH  alphaZexpected_countsZtable4Ztable5r  r  r  r   r_   r_   r`   /test_power_divergence_against_cressie_read_data  st    	                           
r  c                  C   sV  t ddddddddd	d
ddddgt dddddddddd
ddddgt ddddddd d!d"d
d#d$d%d&gt d'd(d)d*d+dd,d-d.d
dd/d0d1gg} t d2d3d4d3d4d3d5d4d2d2d2d3gt d5d5d6d5d3d6d5d3d5d6d6d3gt d5d2d3d3d2d3d3d2d2d6d5d6gt d3d4d2d3d2d2d3d3d3d2d2d2gg}t d7d8d9d:d;gt d<d=d>d?d@gt dAdBdCdDdEgt dFdGdHdIdJgg}tt| dK | d6 | d5 | d3 dL tt|dK |d6 |d5 |d3 dM tt|dK |d6 |d5 |d3 dN tttj|dK |d6  dO}tj|  }t|| tt| dK | d6 | d5 | d3 dL tt|dK |d6 |d5 |d3 dN tttj|dK |d6  d S )PNg"~j?g^I+?gI+?gjt?gMbX9?gʡE?gx&?g-?g?r   gGz?g+?gv?g9v?g~jt?gx?gOn?g"~j?gn?gK7A`?g7A`?gbX9?gZd;O?g1Zd?gK?gy&1?gzG?g`"?g!rh?g'1Z?gZd;O?grh|?gjt?gʡE?gzG?gS?gJ4?gʡE?gK7?gh|?5?gl?g/$?g#~j?gQ?      ?g      ?g rh?g333333?
ףp=
?r    r   r!   r   r   r  g#@r/   rw  g$@g333333@g@g@r*   g@r{  r  r,   r   @g!@g!@333333 @ffffff
@g333333"@r   )gNt$@gBv?)g
__2@g5"]i2?)g\(\%@g+ԋ?r  )r   r   rP   Zfriedmanchisquarerx   ry   r   mstats)rk  rl  rt  r   r   r_   r_   r`   test_friedmanchisquare  s                        
   

  r  c                   @   s4   e Zd ZdZdddZdddZdd	 Zd
d ZdS )
TestKSTestzLTests kstest and ks_1samp agree with K-S various sizes, alternatives, modes.autorC   c           	      C   s8   t j|d||d}t||g}tt|||d d S Nr  r   r  r?   )rP   kstestrU   r   r   	rY   rz   r   expected_statisticexpected_probr  r@   r   r  r_   r_   r`   _testOne(  s    zTestKSTest._testOnec                 C   s@   t j|d||d}t j|t jj||d}tt|||d d S r  )rP   r  ks_1sampr  cdfr   rU   r   )rY   rz   r   r  r@   r   Zresult_1sampr_   r_   r`   _test_kstest_and_ks1samp-  s    z#TestKSTest._test_kstest_and_ks1sampc                 C   s,   t ddd}d}t|d}t|| d S )NrK   r   r%   r  r  )rU   r#  rP   r  r   rY   rz   r   r   r_   r_   r`   test_namedtuple_attributes2  s    z%TestKSTest.test_namedtuple_attributesc              
   C   s|   t ddd}| |d t ddd}| |d ddd	d
ddddddg
}| |d | j|ddd | j|ddd d S )NrK   r   r%   r   r   rz  Q?333333(\?Q?(\ſ{GzHzG?\(\Gzr   r  r  r   )rU   r#  r
  r9  r_   r_   r`   test_agree_with_ks_1samp9  s    z#TestKSTest.test_agree_with_ks_1sampN)r   rC   )r   rC   )r   r   r   r   r  r
  r  r  r_   r_   r_   r`   r  %  s
   

r  c                   @   sn   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ddddgdd ZdS )TestKSOneSamplezOTests kstest and ks_samp 1-samples with K-S various sizes, alternatives, modes.r   rC   c           	      C   s<   t j|t jj||d}t||g}tt|||d d S )Nr  r?   )rP   r  r  r	  rU   r   r   r  r_   r_   r`   r  K  s    zTestKSOneSample._testOnec                 C   s0   t ddd}d}t|tjj}t|| d S )NrK   r   r%   r  )rU   r#  rP   r  r  r	  r   r  r_   r_   r`   r  P  s    z*TestKSOneSample.test_namedtuple_attributesc              
   C   s   t ddd}| |ddd t ddd}| |dd	d
 ddddddddddg
}| |ddd | j|ddddd | j|ddddd d S )NrK   r   r%   r   g|N?g7.s?r  r   g{CTp?g M<b*?rz  r  r  r  r  r  r  r  r  r  gZL?g86J4?r   g+?r  r  r   gHD?gr?rU   r#  r  r9  r_   r_   r`   test_agree_with_rW  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!  r   h:)r  r   r  r   ghх?g7?asympr  r   g^h?r   gv!ԉ}?g*z)?)rP   r  r  r  r9  r_   r_   r`   test_known_examplesd  s    z#TestKSOneSample.test_known_examplesc                 C   s   t tttjdd ttdd tddd W 5 Q R X t ttddd tddd	d
ddddddddddg}tt|ddj	t
ttgd d S )Nr   Tzn is not integral: 1.5rv   r(   rK   )r  r   Tr   )r  皙?Tr   )r  r   Trs   )r  gTrs   )r        ?Trs   )r  r   Fr   )r  r'   Tgb?)r  r'   FgiNq>)r        ?Tgv(?)r  r  TgT	?)@  g\(\?Frs   )r"        ?Fg(>)r"  gQ?Fg@c?)r"        ?FgX+ʳP?rA  r   )Zdtypes)r   rU   r+  r   rV   rx   ry   r  r   checkintrs  bool)rY   Zdatasetr_   r_   r`   test_ks1samp_allpathsk  s*    z%TestKSOneSample.test_ks1samp_allpathsksfunc*alternative, x6val, ref_location, ref_sign)r   r"   r"   r   )r   r#   r#   rK   )r   r"   r"   r   )r   r#   r#   rK   c           	      C   sb   t dd }||d< tjddj}||||d}t|jddd |j|ksPt|j	|ks^td S )	NrE   r'   r"   rW  r   r  r   r   )
rU   r   rP   r  r	  r
   r   statistic_locationr5  statistic_sign)	rY   r)  r   x6valref_locationref_signrz   r	  r   r_   r_   r`   test_location_sign  s    
z"TestKSOneSample.test_location_signN)r   rC   )r   r   r   r   r  r  r  r  r(  r   r   r   rP   r  r  r0  r_   r_   r_   r`   r  H  s   
r  c                   @   s  e Zd ZdZd4d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d%d& Zejjd'd( Zd)d* Zejd+ejejgejd,d-d.d/d0gd1d2 Z d3S )5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  )rP   ks_2samprU   r   r   )	rY   rk  rl  r   r  r  r  r   r  r_   r_   r`   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   r'   r   rs   )r  r  r_   r_   r`   	testSmall  s    zTestKSTwoSamples.testSmallc                 C   s   t ddg}|d }|d }t dddg}| ||ddd | ||ddd | ||d	dd | ||dd
d | ||dd
d | ||d	dd d S )Nr   r)  {Gz?r   r   r   r   r  r   r!  rT  r   r   rU   r   r  rY   r  Zdata1pZdata1mr  r_   r_   r`   testTwoVsThree  s    zTestKSTwoSamples.testTwoVsThreec                 C   s   t ddg}|d }|d }t ddddg}| ||ddd | ||d	dd
 | ||ddd | ||ddd | ||d	dd | ||ddd d S )Nr   r)  r4  r   r(  r   r'   g?r   g?r   r  皙?r  rS  r!  r   r5  r6  r_   r_   r`   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   r   r   r  r   r  g~z?r   gz;.B?r   r   r   {Gz?gn2IU?r  )rY   x100Z	x100_2_p1Z	x100_2_m1r_   r_   r`   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   r   r  r   r  r   g?g@߿?r   g}n?r   r   g:[?g]O);?gѫ);?rs   r   r  )rY   r;  Zx110Z
x110_20_p1Z
x110_20_m1r_   r_   r`   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 )Nr   r   r    r!   r"   r;   r   rE   r#   r   g      ?g^dH?r   gQl6y?r   rs   r   gVdEVdE?g(f^?g!?gii?g+ ϖ?)rU   r   r&  r  )rY   Zx2233Zx3344Zx2356Zx3467r_   r_   r`   testRepeatedValues  s    222z#TestKSTwoSamples.testRepeatedValuesc                 C   s   t dddg}| ||d ddd | ||d ddd | ||d d	d
d | ||d ddd | ||d ddd | ||d d	d
d | ||d ddd | ||d dd
d | ||d d	dd d S )Nr   r)  r   r   r   r   r   r  r   rs   r'   r5  )rY   r  r_   r_   r`   testEqualSizes  s    zTestKSTwoSamples.testEqualSizesc           	   	   C   sb  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 R}d}|t| | j||dd| | ddd	 | j||dd| | ddd	 W 5 Q R X tjdd:}td | j||dd| | ddd	 t	|td W 5 Q R X d S )N)r  iX  r   r   r   r  r   g     @@r   r  r  r   g2JE?r   g     @@gsW\nc?)ks_2samp: Exact calculation unsuccessful.r  TrQ  rR  
rU   r#  r  r   r  rX   rS  rT  rU  r.  	rY   n1n2deltarz   rZ   r^   r   r  r_   r_   r`   testMiddlingBoth  s"    (
z!TestKSTwoSamples.testMiddlingBothc           	   	   C   sb  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 R}d}|t| | j||dd| | ddd	 | j||dd| | ddd	 W 5 Q R X tjdd:}td | j||dd| | ddd	 t	|td W 5 Q R X d S )N)r   L  r   r   r   r  r   g     ȹ@r  r  r   r   gZ?r   g     @@g@J?r@  r  TrQ  rR  rA  rB  r_   r_   r`   testMediumBoth  s"    (
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   r   r   r  r   r   g    `@g      <r   g     @g򼉷?r   gimb:r  )rY   rC  rD  lcmrE  rz   rZ   r_   r_   r`   	testLarge"  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  r  i  r(   r   gC?      <r  r  r  rU   r1  r2  r  r  r   r_   r_   r`   test_gh11184-  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 )NrL  rI  r  i'  r(   r   g 	_r!?gAD5r  r  rM  r  r   gלN#y7r   gvqw?rN  r   r_   r_   r`   test_gh11184_bigger5  s    z$TestKSTwoSamples.test_gh11184_biggerc                 C   s   t jd tdddD ]f}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 )NrL  r   i.  r  rE   r'   r   r  r  r  r  r   )	rU   r1  r2  rL  r  rP   r2  r   r   )rY   rz   Zvals1Zvals2r  r  r_   r_   r`   test_gh12999@  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 J}d}|t| | j||dd| ddd | j||dd| ddd W 5 Q R X d S )N)rI  i*  r  r   r   r   r  r   g     @gkHY?r  r  gLɔ.?r  r   r   g.LbG2?r   rn   gr?֎?r@  )rU   r#  r  r   r  rX   )	rY   rC  rD  rJ  rE  rz   rZ   r^   r   r_   r_   r`   testLargeBothL  s    zTestKSTwoSamples.testLargeBothc                 C   s$   d}t ddgdg}t|| d S )Nr  r   r   r   )rP   r2  r   rY   r   r   r_   r_   r`   testNamedAttributes_  s    z$TestKSTwoSamples.testNamedAttributesc              	   C   sl   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 5 Q R X d S )Nr   )_count_paths_outside_method!_compute_outer_prob_inside_methodr   r   i  rt   rY  rG  iK  r  )scipy.stats._stats_pyrV  rW  rU   r[  rx   FloatingPointError)rY   rV  rW  r_   r_   r`   test_some_code_pathse  s           z%TestKSTwoSamples.test_some_code_pathsc                 C   s8   t ttjg dg t ttjdgg  t ttjg g  d S r  )rx   ry   rP   r2  r  r_   r_   r`   test_argument_checkingv  s    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    rs   r   r  r   r  r  r   r   N)rU   r1  r2  rP   r  r  r2  )rY   rC  rvs1rvs2r_   r_   r`   test_gh12218|  s    zTestKSTwoSamples.test_gh12218c              	   C   sr   t jttd}|jddd }|jdd}d}tjt|d& tj	||dd	}t
|jd
dd W 5 Q R X d S )Ntest_warnings_gh_14019iq  r  r'   iq  z(ks_2samp: Exact calculation unsuccessfulrv   r   r   r   r<  r   )rU   r1  r  absr  r   r  rX   rP   r2  r
   r   )rY   r  r  r  r   r   r_   r_   r`   r`    s    z'TestKSTwoSamples.test_warnings_gh_14019r)  r*  )r   皙@rb  r   )r   ffffff@rx  rK   )r   rb  rb  r   )r   rc  rx  rK   c           	      C   s^   t jdt jd}| }||d< tj|||d}|jdks>t|j|ksLt|j	|ksZtd S )NrE   r;   r"   r   r  )
rU   r   r   copyrP   r2  r   r5  r+  r,  )	rY   r)  r   r-  r.  r/  rz   rZ   r   r_   r_   r`   r0    s    
z#TestKSTwoSamples.test_location_signN)r   )!r   r   r   r   r  r3  r7  r9  r<  r=  r>  r?  r   r   r&  rF  rH  rK  rO  xslowrP  rR  rS  rU  rZ  r[  r_  r`  r   rP   r  r2  r0  r_   r_   r_   r`   r1    sJ   








r1  c                  C   sh  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}	t jdd	< t	j
td
d" |	td tdd\}}W 5 Q R X W 5 Q R X W 5 Q R X 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 5 Q R X ttj||d d!d" tttj||d#d! tttj||d$d! t	j
td
d" tdddgdddg\}}W 5 Q R X tt ||ft jdf t jdd	l ttdddgdddg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 5 Q R X t  d'}tttj|!d(|!d) d*d+ }t "|}t j|d d d,d-f< t j|d d d.d/f< tj||dd d!\} }tj||dd dd0\}}t|| d1d2 t jdd	 t||| |dd1d2 W 5 Q R X tj||dd dd0\}}t|| d1d2 t jdd	 t||| |dd1d2 W 5 Q R X d S )3N)gu?gȵI?r   r   r  gKX@r   r=   rX  rY  rj  rv   r  r(  r   r  r  r   rE  r  r   r   r>   r   r   r\  r!   rE     r  r  r!  )r  r   r  rp   rq   )ghm#1?gry̧?rt   ru   rK   rF  r  )r$   r   )r   r   r    c                 S   s4   | dk r|dks | dkr(|dkr(|d S d|d  S Nr   r   r   r   r   r_   r  r   altr_   r_   r`   convert  s     ztest_ttest_rel.<locals>.convertr   r  r   r   r  r<  r   )#rU   r#  r   rP   	ttest_relr   r6  r   r[  r   r  rX   r  r   r+  r   rG  ra  r   r4  rH  rx   ry   r
   r1  RandomStater  r  rV   r   r   rr  r   rS   	vectorize)trr  tprr]  r^  rvs1_2Drvs2_2Dr  r   r^   r   r   rvs1_3Drvs2_3Dr  rz   rZ   ananrk  	converterr_   r_   r`   test_ttest_rel  s    "".





$&&


 
rw  c                  C   s   t jdddg} ddddg}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   rp   rq   r   r   r   )rH  grh|?-C6?)rU   rV   rP   rl  r
   r   r   rz   rZ   r  r  r3r_   r_   r`   test_ttest_rel_nan_2nd_arg  s    r{  c                  C   s4   t g g } t| t jjstt| tjtjf d S rE  )	rP   rl  r'  	_stats_pyTtestResultr5  r   rU   rV   r   r_   r_   r`   #test_ttest_rel_empty_1d_returns_nan.  s    r  zb, expected_shape)r   r!   r   r>  )r   r   r   )r   r   c                 C   sX   t d}tj|| dd}t|tjjs,tt j|t j	d}t
|j| t
|j| d S N)r   r   r   rK   r=   r   )rU   r  rP   rl  r'  r|  r}  r5  rg   rV   r   r   r   r   Zexpected_shaper   r   Zexpected_valuer_   r_   r`   test_ttest_rel_axis_size_zero6  s    
r  c                  C   sV   t d} t d}tj| |dd}t|tjjs6tt|j	j
d t|jj
d d S N)r   r$   r   r!   r$   r   r   r=   r!   r   )rU   r  rP   rl  r'  r|  r}  r5  r   r   r4  r   r   r   r   r_   r_   r`    test_ttest_rel_nonaxis_size_zeroE  s    

r  r   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:  rE   r(   r   r  gZ?Ygi{a?g8 gC?r  r   r  r  r   )rU   r1  r  r  r   rP   rl  r   r
   r   r  )r   r  rQ  rz   rZ   r  r   r   r_   r_   r`   test_ttest_rel_ci_1dR  s    	
r  ztest_fun, argsrE   c              	   C   s6   | | }d}t jt|d |jdd W 5 Q R X d S )Nr  rv   rE   r  )r   r   ry   r   )Ztest_funr  r   r   r_   r_   r`   test_ttest_ci_ivj  s    r  c                 C   s   ddd}|| |||| S )Nr   c                 S   s<   t | } t j| |d}t j| |dd}| j| }|||fS )Nr=   r   r  )rU   r  rT   ri   r4  )rz   r>   muri   nobsr_   r_   r`   _statsv  s
    

z_desc_stats.<locals>._stats)r   r_   )rk  rl  r>   r  r_   r_   r`   _desc_statsu  s    
r  c                  C   s  d} d}| |  g||gf}t ddd}t ddd}t ||g}t ||g}tj||dd\}}t||g| |f ttjt|| ||g tj|j|jdd\}}t||g| t|j|j}	ttj|	 ||g tj||dd\}}t||g| t||dd}	ttj|	 ||g t	 T}
t j
d	d
< tjtdd" |
td tdd\}}W 5 Q R X W 5 Q R X W 5 Q R X tt | tt | t |||g}t |||g}tj||dd\}}tt |t |  tt || t|jd tjt |ddt |dddd\}}tt |t |  tt || t|jd tttj||dd tttjft|j|jddi 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tj|	ddi||g tj|j|jddd\}}t|j|j}	ttj|	ddi||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 5 Q R X ttj||ddd  tttj||d!d tttj||d"d tjtdd" tdddgdddg\}}W 5 Q R X tt ||ft j df t j
d	d
l ttdddgdddg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 5 Q R X 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 )-N	ru?g8Mѱ?r   r   r!   i   r   r=   rX  rY  rj  rv   r  r(  r   r  r   rE  r  r   r   r   r   rf  r\  rE   rg  r  r  rp   rq   )guͷ?g*,?rt   ru   rK   rF  r   r"   rG   c                 S   s4   | dk r|dks | dkr(|dkr(|d S d|d  S rh  r_   ri  r_   r_   r`   rk    s     ztest_ttest_ind.<locals>.convertr  r<  r   )#rU   r#  r   rP   	ttest_indr   ttest_ind_from_statsr  r6  r   r[  r   r  rX   r  r   r+  rG  r   ra  r   r4  rH  rx   ry   r
   r1  rm  r  r  rV   r   r   rr  rn  )ro  r  rp  r^  r]  rq  rr  r  r   r  r^   rs  rt  r  rz   rZ   ru  rk  rv  r_   r_   r`   test_ttest_ind  s    


.



  
$&&


r  c                   @   s8  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dddddg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)dS )0Test_ttest_ind_permutationsr   r   r   r    r   rE   r   r   r!   r  r  r$   '^P?gCq?g$R?g=B?g?goŜ?gp?g'^?r>   N)r  r>   	equal_varTrK   )r>   r  r   za,b,update,p_dc                 C   sn   d dd}d dddd}| | | | tj||f|\}}tj||f|\}	}
t||	d t|
| d S )NFr>   r  r   r   )r>   r  permutationsr  r!   )updaterP   r  r   )rY   r   r   r  p_dZ	options_a	options_pZstat_ar  Zstat_pr   r_   r_   r`   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|}tj||f|}|jd	d tj||f|}tj||f|}|jd
d tj||f|}	tj||f|}
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   r   r   r   r   )r>   r  r   r   r   r   r'   
rU   r1  r2  r=  r  rP   r  r   r   r   )rY   Nr   r   r  res_g_abres_g_bares_l_abres_l_bares_2_abZres_2_bar  r_   r_   r`    test_ttest_ind_exact_alternative3  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svt|j|jkst|j|jkstd S )Nr   r   r   r  )	rU   r1  r2  r=  rP   r  r   r   r5  )rY   r  r   r   r  rm  rn  r  r_   r_   r`   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~t	t||	kst	d S )Nr   r   r    rK  T)
rU   r1  r2  r=  r  r  r   r  r   r5  )
rY   r   r   r  nanbr  Zt_statr  Zn_uniquer_   r_   r`   !test_ttest_ind_exact_distributionk  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|}tj||f|}|jd
d	 tj||f|}tj||f|}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  r   r   rK   r   )r>   r  r  r   r   r   r   r  r  )	rY   r  r   r   r  r  r  r  r  r_   r_   r`   #test_ttest_ind_randperm_alternative~  s(    z?Test_ttest_ind_permutations.test_ttest_ind_randperm_alternativec           	      C   sB  t jd d}t j|d}t j|d}ddd}|jdd tj||f|}|jdd tj||f|}|jd	d tj||f|}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  r    r   r  r  r   r   r   r   r   r  r'   r   r:  r   )
rU   r1  r2  r=  r  rP   r  r   r   r
   )	rY   r  r   r   r  r  r  r  r  r_   r_   r`   $test_ttest_ind_randperm_alternative2  s>    

 
 
  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|}W 5 Q R X t
 }|td |jdd
 tj	||f|}t |jddt |jddB }tj	|d d | f |d d | f f|}t|j| t j t|j| t j t|j|  |j t|j|  |j tj	| | f|}t |jstt |jstW 5 Q R X d S )Nr   r  r!   )r!   r   )r$   r   )r%   r   r   r  rt   rq   r  rv   ro   rC  r=   )rU   r1  r2  r=  rV   r  rx   ry   rP   r  r   rW   rX   r+  anyr   r   r   r
   r  r5  )	rY   r  r   r   r  r   r^   r  rn  r_   r_   r`   $test_ttest_ind_permutation_nanpolicy  s2    





$,z@Test_ttest_ind_permutations.test_ttest_ind_permutation_nanpolicyc              	   C   s   t tdd tj| j| jdd W 5 Q R X t tdd tj| j| jdd W 5 Q R X t tdd tj| j| jddd	 W 5 Q R X d S )
NzPermutations must berv   rL   r  r(   z'hello' cannot be usedr   r  r  )rx   ry   rP   r  rp  b2r   r   r  r_   r_   r`   'test_ttest_ind_permutation_check_inputs  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|k d|ksJtd S )NrE   r   r   r  rs   )rU   r1  r=  rP   r  r   printr5  )rY   r  r   r   Zp_valuesr_   r_   r`   )test_ttest_ind_permutation_check_p_values  s    zETest_ttest_ind_permutations.test_ttest_ind_permutation_check_p_values)*r   r   r   r  rU   r1  r2  r@  r   r   r   rp  r  rq  Zb3rP   r  r  rS   r6  r]  r^  r  Zp_d_genZp_d_bigtolistrm  r  paramsr   r   r   r  r  r  r  r  r&  r  r  r  r  r_   r_   r_   r`   r    sX   ,(

  *2

*
!$	r  c                   @   s   e Zd Zej ejjddddddii gdddg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dddgd	ejdddgdd ZdS )Test_ttest_ind_commonkwdsr  r   r  trimr!  r  basic)idsr  TFZ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 ]B}|| }|| }tj||fd	di|}|j||< |j||< qVt||j t||j d S )Nr   r!   r    r#   r   r"   r$   r   r>   rL   )r   r   r   rH  r   r   r   r   r   r   rK   r!   r   r    r   r   r   c                 s   s   | ]}t |V  qd S rE  rK  rF  r_   r_   r`   	<genexpr>  s     z=Test_ttest_ind_common.test_ttest_many_dims.<locals>.<genexpr>)rU   r1  r2  r=  rP   r  r   r   r   rH  tiler4  rr  r   r
   )rY   r  r  r   r   r   rH  rI  r?  rp  r  rn  rz   rZ   r4  Z
statisticspvaluesindicesxiyir  r_   r_   r`   test_ttest_many_dims  s6    
 


z*Test_ttest_ind_common.test_ttest_many_dimsr>   rK   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 N}t jd
d6 |	t
d |	t
d tj||fd|i|}W 5 Q R X W 5 Q R X t |j}t|| t |j}	t|	| d S )NrE   )r!   r   rE   r  rs  r   r   r   r"   r=   rX  rY  z'invalid value encountered in less_equalrj  r>   )rU   r1  randintr  rV   r+  r#  r   r[  r  rX   rP   r  r   r   r   )
rY   r  r>   r   r   r  r^   r   Zp_nansZstatistic_nansr_   r_   r`   test_nans_on_axis   s    ,
z'Test_ttest_ind_common.test_nans_on_axisN)	r   r   r   r   r   r&  r   r  r  r_   r_   r_   r`   r    s&    # r  c                   @   s\  e Zd Zdddgdddgddd	gd
ddddddgdddgddd	gd
ddddddgdddgdddgdddddddddddgddddddd d!d"d#d$gd%d&d	gd'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:gd;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNgdOdPd	ggZejdQedRdS ZdTdU ZdVdW Z	ejdXdYdZd[ Z
d\d] Zejd^d_ddgd`da ZdbS )cTest_ttest_trimr   r   r   r  r  @9(?er!  r6  g33333`@rG   g33333^@g(\P@rb  gfffffڇ@gBM)u?g]@gyd?g	s5v@g{Gz?r  r   ffffff?r}  r   r-   皙@r  r*   r'   333333@r{  r  @rz  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r  r  r   r   NrP   r  r
   )rY   r   r   r  ro  r  r   r   r_   r_   r`   test_ttest_compare_rQ  s     z$Test_ttest_trim.test_ttest_compare_rc                 C   sr   ddddddddddddg}ddddd	d
dddddd	d
dg}t j||ddd\}}t|ddd t|ddd d S )NrG   rC   r^  r   r  ,   rN   r  r     r_  g
ףp=
?Fr  gRbv?r   r   gOi?r  rY   r   r   r   r   r_   r_   r`   test_compare_SASu  s
     z Test_ttest_trim.test_compare_SASc                 C   sh   dddddddddddg}ddd	d
dddddddg}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   r  r}  r   r-   r  r  r*   r'   r  r{  r  r  rz  r!  r  gR?绽|=r   g^Nr  r  r_   r_   r`   test_equal_var  s
    zTest_ttest_trim.test_equal_varz	alt,pr,tr))r   gjΜ>5?r  )r   gn4aƂW?r  c                 C   sl   dddddddddddg}ddd	d
dddddddg}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   r  r}  r   r-   r  r  r*   r'   r  r{  r  r  rz  r!  F)r  r  r   r  r   Nr  )rY   rj  r  ro  r   r   r   r   r_   r_   r`   test_alternatives  s    
z!Test_ttest_trim.test_alternativesc              	   C   st   d}t t|d  tjddgddgddd W 5 Q R X d}t t|d$ tjddgdtjdgdd	d
 W 5 Q R X d S )Nz7Permutations are currently not supported with trimming.rv   r   r   r   r!  )r  r  z4not supported by permutation tests or trimmed tests.rp   )r  rr   )rx   ry   rP   r  rU   rV   )rY   rw   r_   r_   r`   test_errors_unsupported  s    $z'Test_ttest_trim.test_errors_unsupportedr  gɿc              	   C   s8   d}t t|d tjddgddg|d W 5 Q R X d S )Nz/Trimming percentage should be 0 <= `trim` < .5.rv   r   r   r  )rx   ry   rP   r  )rY   r  rw   r_   r_   r`   test_trim_bounds_error  s    z&Test_ttest_trim.test_trim_bounds_errorN)r   r   r   r  r   r   r   r  r  r  r  r  r  r_   r_   r_   r`   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 ]}|\}}}}}}	|| jd	 k r| ||||||	f |||||||	f kstqv|||||| jd	  ||	f |||||||	f ksvtqvd S )Nr   r!   r    r   r   r"   r$   r   rL   r=   r  )N.r  c                 s   s   | ]}t |V  qd S rE  rK  rF  r_   r_   r`   r    s     z.test__broadcast_concatenate.<locals>.<genexpr>)	rU   r1  r2  r=  r   r  r   r4  r5  )
r   r   r  indexrH  rI  r?  lrO  rQ  r_   r_   r`   test__broadcast_concatenate  s    .r  c               	   C   s  d} d}d}d}t j| |dd\}}t||g||g tt jt| |ddi||g d} d	}d
}t j| |dd\}}t||g||g tt jt| |ddi||g d}d}d}d}|| g||gf}tddd}	tddd}
tddd}t||
g}t|
|g}t j||
ddd\}}t||g||f tt jt||
ddi||f t j||	ddd\}}t||g||f tt jt||	ddi||f t j|j|jddd\}}t||g| t|j|j}tt j|ddi||f t j||ddd\}}t||g| t||dd}tt j|ddi||f d}t j||
ddd}t	|| t
|||g}t
|||g}t j||ddd\}}tt|t| tt|| t|jd t||dd}t j|ddi\}}tt|t| tt|| t|jd t jt|ddt|ddddd\}}tt|t| tt|| t|jd tt|ddt|dddd}t j|ddi\}}tt|t| tt|| t|jd tjtdd& t jdddgdddgdd\}}W 5 Q R X tt||ftjdf tjddt tt jdddgdddgddtjtjf tdtjgddgg}tt j|td dddtjgdtjgf W 5 Q R X d S )!N)r   r   r   )r  r  r  r  r  Fr  r  )r   r   r   r    gJ?g*ʿr  g@[?gωұ?ghG?r   r   r   r!   r  r   r  r=   r  r  r   rE  rj  rv   rX  r,  rK   rF  )rP   r  r   r  r  rU   r#  r   r6  r   rG  r   ra  r   r4  rH  r   r  rX   r   r[  rV   rr  )r   r   r  ro  r  r   Z	tr_uneq_nZ	pr_uneq_nrp  Zrvs3r^  r]  rq  rr  r  r   r   rs  rt  ru  r_   r_   r`   test_ttest_ind_with_uneq_var  s    




 
 *
r  c                  C   s   t jdddg} ddddg}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   rp   rq   r   r   r   )g8HgW@?)rU   rV   rP   r  r
   r   r   ry  r_   r_   r`   test_ttest_ind_nan_2nd_argB  s    r  c                  C   s4   t g g } t| t jjstt| tjtjf d S rE  )	rP   r  r'  r|  Ttest_indResultr5  r   rU   rV   r~  r_   r_   r`   #test_ttest_ind_empty_1d_returns_nanX  s    r  c                 C   sX   t d}tj|| dd}t|tjjs,tt j|t j	d}t
|j| t
|j| d S r  )rU   r  rP   r  r'  r|  r  r5  rg   rV   r   r   r   r  r_   r_   r`   test_ttest_ind_axis_size_zero`  s    
r  c                  C   sV   t d} t d}tj| |dd}t|tjjs6tt|j	j
d t|jj
d d S r  rU   r  rP   r  r'  r|  r  r5  r   r   r4  r   r  r_   r_   r`    test_ttest_ind_nonaxis_size_zeroo  s    

r  c                  C   sV   t d} t d}tj| |dd}t|tjjs6tt|j	j
d t|jj
d d S )N)r   r#   r   r  r   r=   r  r  r  r_   r_   r`   2test_ttest_ind_nonaxis_size_zero_different_lengths|  s    

r  c                  C   sr   t ddgt ddg } }t ddgt ddg }}t ddgt dd	g }}t| ||||| d S )
Nr   r   r   r    r!         r      )rU   r   rP   r  )Zmean1Zmean2Zstd1Zstd2Znobs1Znobs2r_   r_   r`   test_gh5686  s    r  c               	   C   s.   t jdddddddd} t| tjtjg d S )Nr   r"   Fr  )rP   r  r   rU   rV   r~  r_   r_   r`   %test_ttest_ind_from_stats_inputs_zero  s    r  c               	   C   sz  d\} }}t jjdd| ||fd}t j|d d d d d d f t||fdd\}}t j|d d d d d d f ddd\}}t |d d ddf d\}}	t||dd	 t|d
 |dd	 t|j	||f t j|d d d d d d f t| d|fdd\}}t j|d d d d d d f ddd\}}t |dd d df d\}}	t||dd	 t|d
 |dd	 t|j	| |f t j|d d d d d d f t| |dfdd\}}t j|d d d d d d f ddd\}}t |ddd d f d\}}	t||dd	 t|d
 |dd	 t|j	| |f t dddgd\}
}tt
|
|ftjdf dd }t|}t |d d d d d d f d\}}t j|d d d d d d f ddd\}
}|||d}t|| t|
| t j|d d d d d d f ddd\}
}|||d}t|| t|
| tjdd` tt dddgdtjtjf tdtjgddgg}tt |ddtjgdtjgf W 5 Q R X t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\}
}|||d}t|| t|
| t j|d d d d d d f dddd\}
}|||d}t|| t|
| d S )N)rE   r   r   r!   rE   r  r   r=   r   rC   r?   r  r   c                 S   s4   | dk r|dks | dkr(|dkr(|d S d|d  S rh  r_   ri  r_   r_   r`   rk    s     z%test_ttest_1samp_new.<locals>.convertr   r   r   rX  r  rK   r   r    r$   rp   rq   r  )rP   r  r  r  rU   rF  r   r   r   r4  ra  r   rn  r
   r[  rV   r   )rC  rD  Zn3Zrvn1r  r  r  p2r  p3r  r   rk  rv  ro  r  Zpcru  r_   r_   r`   test_ttest_1samp_new  sf    
4*6*6*
&*

*

 ,* 


 

r  c               	   C   s   t jd} | jdd}d}| jdd}tjt|d tj||dd W 5 Q R X | jd	d}tj||dd}|jj	d
ks~t
t j| dd}tj||dd}t|jd d S )Nl   iI}pC )r   r   r   r  z%`popmean.shape\[axis\]` must equal 1.)r!   r   r   rv   rH  )r  r>   )r!   r   r   )r!   r   r=   g?)rU   r1  r  r   r   ry   rP   r  r   r4  r5  rC  r   r
   r   )r  rz   r   r  r   r   r_   r_   r`   test_ttest_1samp_popmean_array  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S )TestDescribec                 C   s   t  Z}tjddB tjtdd( |td td\}}}}}}W 5 Q R X W 5 Q R X W 5 Q R X t	|d t	|d t	|d t
|stt
|stt
|std S )	NrX  rY  rj  rv   r  r(  r   )r(  r(  )r   rU   r[  r   r  rX   r  rP   describer   r+  r5  )rY   r^   rQ  rg  rO  r
  skkurtr_   r_   r`   test_describe_scalar  s    4


z!TestDescribe.test_describe_scalarc                 C   s  t t dt ddf}dddddgddddgf }}t ddddg}t ddddg}d	gd
 }dgd
 }t|\}}	}
}}}t|| t|	| t|
| t|| t||dd t||dd tj|j	dd\}}	}
}}}t|| t|	| t|
| t|| t||dd t||dd t 
d}t j|d< d\}}d}d}d}d}tj|dd\}}	}
}}}t|| t|	| t|
| t|| t|| t||dd tttj|dd tttj|dd d S )Nr  r   r    r   r!   r   r)  ffffff?r   H,p ?r    TUUUUUrH   r?   r   r=   rn   r%   )r%   )rs   r~  r(  r.   rs   gGzrp   rq   rt   ru   )rU   r@  rF  rg   r   rP   r  r   r   r6  r   rV   rx   ry   rY   rz   ZncZmmcZmcZvcZskcZkurtcrQ  rg  rO  r
  r  r  r_   r_   r`   test_describe_numbers  sH    
















z"TestDescribe.test_describe_numbersc                 C   s"   t td}d}t|| d S )Nr!   )r  minmaxrT   varianceskewnessr{  )rP   r  rU   r   r   )rY   ru  r   r_   r_   r`   test_describe_result_attributes-  s    z,TestDescribe.test_describe_result_attributesc                 C   s   t t dt ddf}dddddgddddgf }}t ddddg}t ddddg}d	gd
 }dgd
 }tj|dd\}}	}
}}}t|| t|	|dd t|
|dd t||dd t	||dd t	||dd d S )Nr  r  r   r!   r   r)  r  gQ?r  r    r  r   rb   r   r   rH   r?   )
rU   r@  rF  rg   r   rP   r  r   r
   r   r  r_   r_   r`   test_describe_ddof3  s    


zTestDescribe.test_describe_ddofc           	      C   s   t t dt ddf}d\}}d}d}d}d}tj|d d	}t|j| t|j	| t|j
| t|j| t|j|d
d t|j|d
d d S )Nr  r  r   )r   )r   r)  r  ga+?gE,p ?gUUUUUUr=   rH   r?   )rU   r@  rF  rg   rP   r  r   r  r   r  rT   r  r   r  r{  )	rY   rz   Ze_nobsZe_minmaxZe_meanZe_varZe_skewZe_kurtr   r_   r_   r`   test_describe_axis_noneB  s    z$TestDescribe.test_describe_axis_nonec                 C   s   t ttjg  d S rE  )rx   ry   rP   r  r  r_   r_   r`   test_describe_emptyV  s    z TestDescribe.test_describe_emptyN)	r   r   r   r  r  r  r  r   r  r_   r_   r_   r`   r    s   )r  c               
   C   s8  t jtdd0 tttjd tttjd tttjd W 5 Q R X d\} }}d\}}}d|d  |d  }}|d d|d   }}	t	
dd }
d	}tt|
| |f tt|
| tt|
||f ttj|
d
d||f ttj|
dd||f tt|
| tt|
||f ttj|
d
d||f ttj|
dd||	f tt|
| tjjdddd}tj|ddj}t|ddd tjjddd}tj|ddj}t|d ttj|
d d| |f ttj|
d d||f ttj|
d d||f t	d}
t	j|
d< t	jdd tt|
t	jt	jf W 5 Q R X d}ttj|
dd| t	j|dd< tj|dd\}}tj|dd
d\}}tj|ddd\}}t||dd  t||dd  t|d|d  dd  t||d dd  t	jdd! tttj|
d"d W 5 Q R X tttj|
d#d tttjttd$d#d t	d%}
t	j|
d&< t	jdd! tt|
t	jt	jf W 5 Q R X d'}ttj|
dd| t	j|dd(< tj|d d dd\}}tj|d d dd
d\}}tj|d d ddd\}}t||dd  t||dd  t|d|d  dd  t||d dd  tttj|
d"d tttj|
d#d tttjttd(d#d t	jdd! tt|
t	jt	jf W 5 Q R X d)}ttj|
dd| tttj|
d"d tttj|
d#d d*d+d,d-d+d.d/d+d+d0g
}t	d1d2 t|D }
tt|
d d3k d4 d S )5Nrj  rv   r(  )gMc@gO?g{\᛿)g2$?gגe`?gǃK@?r   r   )rH  rK   r   r   r   r   rH  rK   r   r   r   r   rH  rK   r   r   r   r   rH  rK   r   r   r   r   r  r   r   r   rI  {   )r   r   r  rs   r!   r?   r   r  r=   rn   r%   rX  rY  )geGK?gZ^<ý?rp   rq   rE   r   r  r   r   r  rt   ru   r$   g      >@r  )g9+%g?*ݗ?r   )gwGw@g{8NĦ?r/  r   :   r#   )   r      c                 S   s   g | ]\}}t ||qS r_   )rU   rg   )rG  rH  r  r_   r_   r`   rJ    s     z'test_normalitytests.<locals>.<listcomp>r4  T)r   r  rX   rx   ry   rP   skewtestkurtosistestZ
normaltestrU   r   r   r   Zskewnormr  r   r   Zlaplacer   rV   r[  r   r
   r  rL  rB  	enumerater   )Z	st_normalZst_skewZst_kurtZ	pv_normalZpv_skewZpv_kurtZpv_skew_lessZpv_kurt_lessZpv_skew_greaterZpv_kurt_greaterrz   r   ro  r   rp  r  r  r   ZzlplZzgZpgr  r_   r_   r`   test_normalitytestsZ  s    




"

"

"r  c                   @   sV   e Zd Zejd ejdd\ZZe	j
ddddgdd	 Zd
d Zdd ZdS )TestRankSumsr   r   rE   r   r   r   r   c                 C   s<   t j| j| j|dj}t j| j| jd|dj}t|| d S )Nr   F)Zuse_continuityr   )rP   ranksumsrz   rZ   r   mannwhitneyur
   )rY   r   rm  rn  r_   r_   r`   test_ranksums_result_attributes  s    z,TestRankSums.test_ranksums_result_attributesc                 C   s   t | j| j}t|d d S )Nr  )rP   r  rz   rZ   r   )rY   r   r_   r_   r`   test_ranksums_named_results  s    z(TestRankSums.test_ranksums_named_resultsc              	   C   s0   t tdd tj| j| jdd W 5 Q R X d S )Nzalternative must be 'less'rv   ru   r   )rx   ry   rP   r  rz   rZ   r  r_   r_   r`   test_input_validation  s    z"TestRankSums.test_input_validationN)r   r   r   rU   r1  r2  r=  rz   rZ   r   r   r   r  r  r  r_   r_   r_   r`   r    s   
r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestJarqueBerac                 C   s  t jd t jddd}t jdd}t jdd}tt|d t|j	 tt|d t|j
 tt|d t|j	 tt|d t|j
 tt|d t|j	 tt|d t|j
 tt|d t|d k tt|j
t|j
k tt|d t|d k tt|j
t|j
k tt|d t|d k tt|j
t|j
k d S )Nr  r   r   rK  rI  )rU   r1  r2  r  r  Zrayleighr   rP   jarque_berar   r   r   rY   rz   rZ   r  r_   r_   r`   test_jarque_bera_stats  s        z%TestJarqueBera.test_jarque_bera_statsc                 C   s   t jd t jddd}tt| }\}}tt| }\}}t|dd }\}	}
t	||  ko|	  ko|j
  ko|j
  ko|j
kn   t	||  ko|
  ko|j  ko|j  ko|jkn   d S )Nr  r   r   rK  r   P  )rU   r1  r2  r  rP   r  r  tuplerS   r   r   r   )rY   rz   Zjb_test1ZJB1r  Zjb_test2ZJB2r  Zjb_test3ZJB3r  r_   r_   r`   test_jarque_bera_array_like  s    @z*TestJarqueBera.test_jarque_bera_array_likec                 C   s   t ttjg  d S rE  )rx   ry   rP   r  r  r_   r_   r`   test_jarque_bera_size  s    z$TestJarqueBera.test_jarque_bera_sizec           	      C   s   t jttd}|jdd}ttj|d dt|  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	|| d S )NZ
JarqueBera)r   r`  r  r=   r   r   )rU   r1  r  ra  r  r   rP   r  r  r
   r   r   r6  )	rY   r  rz   r   s0r  s1r  ZresTr_   r_   r`   r  
  s    zTestJarqueBera.test_axisN)r   r   r   r  r  r  r  r_   r_   r_   r`   r    s   r  c                  C   s   t d} tttj|  d S )Nr  )rU   r   rx   ry   rP   r  r  r_   r_   r`   test_skewtest_too_few_samples  s    
r  c                  C   s   t d} tttj|  d S )Nr(  )rU   r   rx   ry   rP   r  r  r_   r_   r`   !test_kurtosistest_too_few_samples"  s    
r  c                   @   s   e Zd Zddddddddd	d
ddddddddddddddddddddgZdd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2gZd3Zd4d5 Zd6d7 Zd8d9 Zd:d; Z	d<d= Z
d>d? Zd@S )ATestMannWhitneyUg	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@rC   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?r4   glPz.?rP   r  rQ   Yr   r   r	   r5   	rY   u1r  u2r  u3r  Zu4Zp4r_   r_   r`   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.?r4   rP   r  rQ   r!  r   r	   r5   rY   r#  r  r$  r  r_   r_   r`   test_mannwhitneyu_two_sidedK  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?r4   g22?r   r"  r_   r_   r`   &test_mannwhitneyu_no_correct_one_sidedU  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?r4   r'  r(  r_   r_   r`   &test_mannwhitneyu_no_correct_two_sidedi  s    




z7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sidedc                 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ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddg}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ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddg}ttj||ddd ttj||ddd ttj||d	dd
 d S )Nr   r)  r   r   r   )     @g ?չ>r   )r,  g&)E?r   )r,  g?չ?)rU   r   r
   rP   r  r   r_   r_   r`   test_mannwhitneyu_onesu  s                                                                                                                                                                                                                                                                                                                                                               z'TestMannWhitneyU.test_mannwhitneyu_onesc                 C   s&   d}t j| j| jdd}t|| d S )Nr  r   r   )rP   r  rQ   r!  r   rT  r_   r_   r`   #test_mannwhitneyu_result_attributes  s    z4TestMannWhitneyU.test_mannwhitneyu_result_attributesN)r   r   r   rQ   r!  r5   r&  r)  r*  r+  r-  r.  r_   r_   r_   r`   r  )  sj                      	            
+r  c               "   C   s   dddddddddddddddddddddddddddddddddd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g"}t t| |d d d! d"}t| |}t|| t|j|j d S )#Nr   r   g-@g+@g(@rR  r|  rc  g333333@ffffff@g333333@r*   r  皙	@r   r  r)   r  gffffff@ @g333333?r(   g?ra  r  r8  r  rT  r'   r!  r  g/"?r!   r   )r   rP   Zpointbiserialrr   r   r   r   )rz   rZ   r   r   r_   r_   r`   test_pointbiserial  sF    :                       
r2  c                  C   s  t dddg} t| }dddg}t|d | t ddddg}t|}t d	ddd	g}t|d | t| |\}}t||d  t||d  t| || \}}}t||d  t||d  t||d  t d
} t dddddgdddddgg}tt| d|  |dd td
d}	t d
dddddg}
t 	|	|
}t ddddddg}t 	||
}t|}t|d |dd d S )Nr   r   r    r#   rH  r   r"   r%   r  r!   g㪪@gI?g&>ڿg5@g㪪@gIr$   r?   rF   g_v	@g1%?g"u?gZӼ?g!u @gq&@)
rU   r   rP   Zobrientransformr
   r   r   r   rL  ru  )rk  r  r  rl  r  r   r   r  r   valuesrepsr  Ztransformed_valuesr_   r_   r`   test_obrientransform  sB    





  
r5  r   c                 C   s0   t j| |||d}t|||d t|j| d S N)r>   r<   weightsr   )rP   gmeanr
   r   r<   
array_liker  r>   r<   r   r7  rz   r_   r_   r`   check_equal_gmean  s    r;  c                 C   s0   t j| |||d}t|||d t|j| d S r6  )rP   hmeanr
   r   r<   r9  r_   r_   r`   check_equal_hmean  s    r=  c                 C   s2   t j| ||||d}t|||d t|j| d S r6  )rP   pmeanr
   r   r<   )r:  r  r  r>   r<   r   r7  rz   r_   r_   r`   check_equal_pmean  s    r?  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) TestHarMeanc                 C   s   dddg}d}t || d S Nr   r   r   r=  rY   r   r  r_   r_   r`   test_0  s    
zTestHarMean.test_0c              
   C   sD   ddddddddd	d
g
}d}t || ddddg}d}t || d S )NrE   r   r  r  r  rL  r  rN  r2  r   =b#A@r   r   r   r    gQ?rB  rC  r_   r_   r`   test_1d_list  s    
zTestHarMean.test_1d_listc                 C   s0   t ddddddddd	d
g
}d}t|| d S )NrE   r   r  r  r  rL  r  rN  r2  r   rE  rU   r   r=  rC  r_   r_   r`   test_1d_array	  s    zTestHarMean.test_1d_arrayc                 C   s&   t ddg}d}tt|| d S )Nr   r   rs   )rU   r   r   rP   r<  rC  r_   r_   r`   test_1d_array_with_zero  s    z#TestHarMean.test_1d_array_with_zeroc                 C   s"   t dddg}tttj| d S )Nr   r   rK   )rU   r   rx   ry   rP   r<  rv  r_   r_   r`   !test_1d_array_with_negative_value  s    z-TestHarMean.test_1d_array_with_negative_valuec                 C   s4   ddddgddddgd	d
ddgg}d}t || d S NrE   r   r  r  r  rL  r  rN  r2  r   r  x   gmWUC@rB  rC  r_   r_   r`   test_2d_list  s    "zTestHarMean.test_2d_listc                 C   s:   ddddgddddgd	d
ddgg}d}t t|| d S rK  )r=  rU   r   rC  r_   r_   r`   test_2d_array  s    "zTestHarMean.test_2d_arrayc                 C   sF   ddddgddddgd	d
ddgg}t ddddg}t||dd d S )NrE   r   r  r  r  rL  r  rN  r2  r   r  rL  U|ϊ6@g4.=C@JQ6LsJ@E]P@r   r=   rG  rC  r_   r_   r`   test_2d_axis0%  s    "zTestHarMean.test_2d_axis0c                 C   sL   ddddgddddgd	d
ddgg}t ddddg}ttj|dd| d S )NrE   r   r  r  r  rL  r  rN  r2  r   r  rL  rO  rs   rP  rQ  r=   rU   r   r
   rP   r<  rC  r_   r_   r`   test_2d_axis0_with_zero+  s    "z#TestHarMean.test_2d_axis0_with_zeroc                 C   sD   ddddgddddgd	d
ddgg}t dddg}t||dd d S )NrE   r   r  r  r  rL  r  rN  r2  r   r  rL  g3333333@O@y@Y@r   r=   rG  rC  r_   r_   r`   test_2d_axis10  s    "zTestHarMean.test_2d_axis1c                 C   sJ   ddddgddddgd	d
ddgg}t dddg}ttj|dd| d S )NrE   r   r  r  r  rL  r  rN  r2  r   r  rL  rs   rU  rV  r   r=   rS  rC  r_   r_   r`   test_2d_axis1_with_zero6  s    "z#TestHarMean.test_2d_axis1_with_zeroc                 C   s,   dddg}dddg}d}t |||dd d S )Nr   rE   r"   r!   r   h㈵>r7  r   rB  rY   r   r7  r  r_   r_   r`   test_weights_1d_list;  s    

z TestHarMean.test_weights_1d_listc                 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 )
Nr   r!   rE   r"   r   r   r   rY  r>   r7  r   rG  r[  r_   r_   r`   test_weights_2d_array_axis0C  s    z'TestHarMean.test_weights_2d_array_axis0c                 C   sX   t dddgdddgg}t dddgdddgg}t ddg}t||d|dd	 d S )
Nr   rE   r"   r#   r!   r   r   rY  r]  rG  r[  r_   r_   r`   test_weights_2d_array_axis1K  s    z'TestHarMean.test_weights_2d_array_axis1c                 C   sJ   t ddddg}t jjddddgddddgd	}d}t|||d
d d S )Nr   rE   r"   r  r!   r   r   r   r  rY  rZ  )rU   r   r  r=  r[  r_   r_   r`   test_weights_masked_1d_arrayS  s     z(TestHarMean.test_weights_masked_1d_arrayN)r   r   r   rD  rF  rH  rI  rJ  rM  rN  rR  rT  rW  rX  r\  r^  r_  r`  r_   r_   r_   r`   r@    s   
r@  c                   @   s|   e Zd Zdd Zdd Zdd Zd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 )TestGeoMeanc                 C   s   dddg}d}t || d S rA  r;  rC  r_   r_   r`   rD  ]  s    
zTestGeoMean.test_0c              
   C   sN   ddddddddd	d
g
}d}t || ddddg}tdd}t ||dd d S )NrE   r   r  r  r  rL  r  rN  r2  r   sŤF@r   r   r   r    r  r  r<  r   )r;  r   rC  r_   r_   r`   rF  b  s    

zTestGeoMean.test_1d_listc                 C   sZ   t ddddddddd	d
g
}d}t|| tddddgt}tdd}t||td d S )NrE   r   r  r  r  rL  r  rN  r2  r   rc  r   r   r   r    r  r  r;   )rU   r   r;  r   r   rC  r_   r_   r`   rH  l  s    

zTestGeoMean.test_1d_arrayc                 C   s4   ddddgddddgd	d
ddgg}d}t || d S NrE   r   r  r  r  rL  r  rN  r2  r   r  rL  g/,$qJ@rb  rC  r_   r_   r`   rM  w  s    "zTestGeoMean.test_2d_listc                 C   s8   ddddgddddgd	d
ddgg}d}t t|| d S rd  )r;  r   rC  r_   r_   r`   rN  }  s    "zTestGeoMean.test_2d_arrayc                 C   s   ddddgddddgd	d
ddgg}t ddddg}t||dd tddddgddddgddddgg}tddddg}t||ddd d S )NrE   r   r  r  r  rL  r  rN  r2  r   r  rL  g4@A@g5H@g`8|wЭN@gm~&+R@r   r=   r   r   r   r    r<  r>   r   rU   r   r;  rC  r_   r_   r`   rR    s    "&zTestGeoMean.test_2d_axis0c                 C   s   ddddgddddgd	d
ddgg}t dddg}t||dd tddddgddddgddddgg}tdd}t|||g}t||ddd d S )NrE   r   r  r  r  rL  r  rN  r2  r   r  rL  gD" 6"6@gcP@g
ҧZ@r   r=   r   r   r    r  r  r<  re  )rU   r   r;  r   )rY   r   r  r
  r_   r_   r`   rW    s    "&
zTestGeoMean.test_2d_axis1c                 C   s$   t dddg}d}t||dd d S )Ng}Ô%ITr   gu <7~r  r   )r   r;  rC  r_   r_   r`   test_large_values  s    zTestGeoMean.test_large_valuesc              
   C   sB   ddddddddd	d
g
}d}t jdd t|| W 5 Q R X d S )NrE   r   r  r  r  rL  r  rN  r2  r   rs   rX  r  )rU   r[  r;  rC  r_   r_   r`   test_1d_list0  s    zTestGeoMean.test_1d_list0c                 C   sH   t ddddddddd	d
g
}d}t jdd t|| W 5 Q R X d S )NrE   r   r  r  r  rL  r  rN  r2  r   rs   rX  )divide)rU   r   r[  r;  rC  r_   r_   r`   test_1d_array0  s    zTestGeoMean.test_1d_array0c              
   C   sD   ddddddddd	d
g
}t j}t jdd t|| W 5 Q R X d S )NrE   r   r  r  r  rL  r  rN  r2  rK   rX  rY  )rU   rV   r[  r;  rC  r_   r_   r`   test_1d_list_neg  s    zTestGeoMean.test_1d_list_negc                 C   s4   dddddg}dddddg}d}t |||dd	 d S 
Nr   r   r   r    r!   r"   GZ*oG8@rY  rZ  rb  r[  r_   r_   r`   r\    s    z TestGeoMean.test_weights_1d_listc                 C   s@   t dddddg}t dddddg}d}t|||dd	 d S rl  rf  r[  r_   r_   r`   test_weights_1d_array  s    z!TestGeoMean.test_weights_1d_arrayc                 C   sV   t ddddddg}t jjddddddgddddddgd}d	}t|||d
d d S )Nr   r   r   r    r!   r"   r   r  rm  rY  rZ  )rU   r   r  r;  r[  r_   r_   r`   r`    s    (z(TestGeoMean.test_weights_masked_1d_arrayN)r   r   r   rD  rF  rH  rM  rN  rR  rW  rg  rh  rj  rk  r\  rn  r`  r_   r_   r_   r`   ra  \  s   

ra  c                
   @   sx  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jdddg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ddddgddddgddddggdfdd ddgddddgddddggdfgd!d" Ze
jdddddgddddgddddggdfdd ddgddddgddddggdfgd#d$ Zd%d& Zd'd( Ze
jd)d*d+d,gd-d. Zd/S )0TestPowMeanc                 C   s   t | | | j d|  S r  )rU   r#  r   r   r   r_   r_   r`   pmean_reference  s    zTestPowMean.pmean_referencec                 C   s$   t || |  t | d|  S r  )rU   r#  )r   r   r7  r_   r_   r`   wpmean_reference  s    zTestPowMean.wpmean_referencec              	   C   sf   t jtdd tdddgdg W 5 Q R X t jtdd  tdddgtdg W 5 Q R X d S )NzPower mean only defined forrv   r   r   r   r   )r   r   ry   rP   r>  rU   r   r  r_   r_   r`   test_bad_exponent  s    zTestPowMean.test_bad_exponentc              
   C   sh   ddddddddd	d
g
d }}t t||}t||| ddddgd }}td}t||| d S )NrE   r   r  r  r  rL  r  rN  r2  r   r*   r   r   r   r    r.   )ro  rq  rU   r   r?  r   rY   r   r   r  r_   r_   r`   rF    s    
zTestPowMean.test_1d_listc                 C   s@   t ddddddddd	d
g
d }}t||}t||| d S )NrE   r   r  r  r  rL  r  rN  r2  r   g      )rU   r   ro  rq  r?  rt  r_   r_   r`   rH    s    $zTestPowMean.test_1d_arrayc                 C   s.   t ddgd }}d}tt||| d S )Nr   r   rK   rs   )rU   r   r   rP   r>  rt  r_   r_   r`   rI    s    z#TestPowMean.test_1d_array_with_zeroc              	   C   s@   t dddgd }}tjtdd t|| W 5 Q R X d S )Nr   r   rK   gGz?zPower mean only defined if allrv   )rU   r   r   r   ry   rP   r>  )rY   r   r   r_   r_   r`   rJ    s    z-TestPowMean.test_1d_array_with_negative_valuerp  rE   r   r  rL  r2  r   r  r'   c                 C   s"   t t||}t||| d S rE  )ro  rq  rU   r   r?  rt  r_   r_   r`   test_2d_axisnone  s    zTestPowMean.test_2d_axisnoner  r  r  rN  r  rL  r   c                    s4    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 r_   r_   rF  )r   rI  r_   r`   rJ    s     z=TestPowMean.test_2d_list_axis0.<locals>.<listcomp>.<listcomp>)ro  rq  rU   r   rL  r  rM  rp  rP  r`   rJ     s
     z2TestPowMean.test_2d_list_axis0.<locals>.<listcomp>r   r=   )rL  r  r?  rt  r_   rp  r`   test_2d_list_axis0  s    zTestPowMean.test_2d_list_axis0c                    s&    fdd|D }t | |dd d S )Nc                    s   g | ]}t t| qS r_   )ro  rq  rU   r   )rG  Za_r   r_   r`   rJ    s     z2TestPowMean.test_2d_list_axis1.<locals>.<listcomp>r   r=   )r?  rt  r_   rw  r`   test_2d_list_axis1  s    zTestPowMean.test_2d_list_axis1c                 C   sD   dddgd }}dddg}t t|||}t||||dd d S )	Nr   rE   r"   gރBr!   r   rY  rZ  )ro  rr  rU   r   r?  rY   r   r   r7  r  r_   r_   r`   r\    s    
z TestPowMean.test_weights_1d_listc                 C   s\   t ddddgd }}t jjddddgddddgd	}t j||d
}t||||dd d S )Nr   rE   r"   r  r   r!   r   r   r  r7  rY  rZ  )rU   r   r  averager?  ry  r_   r_   r`   r`    s     z(TestPowMean.test_weights_masked_1d_array)r>   fun_namer   )Nrr  g3E#@)r   r8  r   )r   r<  rK   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 )Nrr  c                    s   t |  |S rE  )ro  rr  )r   r>   r7  rw  r_   r`   fun%  s    z.TestPowMean.test_weights_2d_array.<locals>.funr   r!   rE   r"   r   r   )r>   r7  rY  r]  )getattrrP   rU   r   r?  )rY   r>   r|  r   r}  r   r7  r  r_   rw  r`   test_weights_2d_array  s    
z!TestPowMean.test_weights_2d_arrayN)r   r   r   rq  rr  rs  rF  rH  rI  rJ  r   r   r   rU   r   ru  rv  rx  r\  r`  r  r_   r_   r_   r`   ro    sL   	
$$
	$$
ro  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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 )$TestGeometricStandardDeviationr  r   gv aZ@r   r   r    c                 C   s   t | j}t|| j d S rE  )rP   gstdarray_1dr
   gstd_array_1drY   gstd_actualr_   r_   r`   rH  5  s    z,TestGeometricStandardDeviation.test_1d_arrayc                 C   s    t t| j}t|| j d S rE  )rP   r  r  r  r
   r  r  r_   r_   r`    test_1d_numeric_array_like_input9  s    z?TestGeometricStandardDeviation.test_1d_numeric_array_like_inputc              	   C   s(   t jtdd td W 5 Q R X d S )NzInvalid array inputrv   z3This should fail as it can not be cast to an array.)r   r   ry   rP   r  r  r_   r_   r`   ,test_raises_value_error_non_array_like_input=  s    zKTestGeometricStandardDeviation.test_raises_value_error_non_array_like_inputc              	   C   s4   t jtdd tt| jdg W 5 Q R X d S )NNon positive valuerv   r   r   r   ry   rP   r  rU   r"  r  r  r_   r_   r`   "test_raises_value_error_zero_entryA  s    zATestGeometricStandardDeviation.test_raises_value_error_zero_entryc              	   C   s4   t jtdd tt| jdg W 5 Q R X d S )Nr  rv   rK   r  r  r_   r_   r`   &test_raises_value_error_negative_entryE  s    zETestGeometricStandardDeviation.test_raises_value_error_negative_entryc              	   C   s6   t jtdd tt| jtjg W 5 Q R X d S )NzInfinite valuerv   )	r   r   ry   rP   r  rU   r"  r  r   r  r_   r_   r`   !test_raises_value_error_inf_entryI  s    z@TestGeometricStandardDeviation.test_raises_value_error_inf_entryc                 C   sF   t ddddgtjdddgg}tj|dd}t|t dtjg d S )Nr   r   r   r   r=   r    )r   rU   rV   rP   r  r
   )rY   r   r  r_   r_   r`   test_propagates_nan_valuesM  s    z9TestGeometricStandardDeviation.test_propagates_nan_valuesc              	   C   s2   t jtdd tj| j| jjd W 5 Q R X d S )NzDegrees of freedom <= 0rv   rb   )r   r   ry   rP   r  r  r   r  r_   r_   r`   )test_ddof_equal_to_number_of_observationsR  s    zHTestGeometricStandardDeviation.test_ddof_equal_to_number_of_observationsc                 C   s    t j| jd d}t|| j d S )Nr=   )rP   r  array_3dr
   r  r  r_   r_   r`   test_3d_arrayV  s    z,TestGeometricStandardDeviation.test_3d_arrayc                 C   s"   t j| jdd}t|ddg d S )Nr;  r=   g~d@g<
?)rP   r  r  r
   r  r_   r_   r`   test_3d_array_axis_type_tupleZ  s    z<TestGeometricStandardDeviation.test_3d_array_axis_type_tuplec                 C   sF   t j| jdd}tddddgddd	d
gddddgg}t|| d S )Nr   r=   gĶ?@gQӫ@g֌@gן7R@g%Ȁ@ge@gv6B5 @g _?gE ?gީ?gk̊Y?g%:?rP   r  r  rU   r   r
   rY   r  gstd_desiredr_   r_   r`   test_3d_array_axis_0^  s    


z3TestGeometricStandardDeviation.test_3d_array_axis_0c                 C   s<   t j| jdd}tddddgddd	d
gg}t|| d S )Nr   r=   gN@g85@g'ĥ?gwth?gHnaX?gG?gBu?gE?r  r  r_   r_   r`   test_3d_array_axis_1g  s    

z3TestGeometricStandardDeviation.test_3d_array_axis_1c                 C   s8   t j| jdd}tdddgdddgg}t|| d S )	Nr   r=   gt80?gі?g?gۘ]~?gmT6(?g	G?r  r  r_   r_   r`   test_3d_array_axis_2o  s    z3TestGeometricStandardDeviation.test_3d_array_axis_2c                 C   sb   t j| jdk| j}tj|dd}tj| jdd}dddgdddgg}t|| t|j| d S )Nr   r   r=   r   r   )	rU   r  Zmasked_wherer  rP   r  r
   r   r  )rY   r  r  r  r  r_   r_   r`   test_masked_3d_arrayw  s    
z3TestGeometricStandardDeviation.test_masked_3d_arrayN)r   r   r   rU   r   r  r  rS   r  rH  r  r  r  r  r  r  r  r  r  r  r  r  r  r_   r_   r_   r`   r  /  s"   	r  c              
   C   s   d}d}t jd}|dd|f}||dd|f }|dd|f}t|||D ]R\}}}	tjt|d t	j
|||	| d}
W 5 Q R X |
t	j|||	| djksTtqTd S )	Nzk'binom_test' is deprecated in favour of 'binomtest' from version 1.7.0 and will be removed in Scipy 1.12.0.rE   l	   }l6wIK&Ww^?9u r   r   r   rv   r   )rU   r1  r  Zintegersr  r  r   r  r  rP   Z
binom_test	binomtestr   r5  )r   r  r  r  rQ   r  Prz   rQ  r   r   r_   r_   r`   test_binom_test_deprecation  s    r  c                  C   s   t t dddt dddt dddf} d}d	}d
d
dddddddddddddg}t| |D ](\}}tt|||j|dd| d qbttdddjddd d S )Nr  r!  r!   r  g?r  gffffff?rg  i  rs   gs  gG|G{g	ɺM>6g>
ztt+g#ӌRM/gF׸fz2gU8u5g8M8gФ)Ba?g%վ?g*+a5?gś?gڒJ|>rG   zfail forp=%f)r5   err_msgr  r   gVݶ3;r4   )rU   r  r#  r  r	   rP   r  r   )pprQ  rz   r  r   r   r_   r_   r`   test_binomtest  s:           r  c                     s   ddgdddgddddgdddddgddddddgdd	d
dd
d	dgddddddddgdddddddddg	ddddddddddg
dddddddddddgg
} t ddD ]4  fddt  d D }t||  d  dd qd S ) Nr   r'   r  r!  r  r#        ?r$  g      ?      ?r   g      ?g      ?g      ?g     ?     @?g      p?g      ?g      ?g     @?g      `?g      ?g      ?g      ?      ?r   rF   c                    s   g | ]}t | d jqS )r'   )rP   r  r   )rG  r
  r?  r_   r`   rJ    s     z#test_binomtest2.<locals>.<listcomp>rE   r?   )rL  r   )rn  rm  r_   r  r`   test_binomtest2  sB    
  
    
    r  c               \   C   s  dd t ddD } t| tt| t 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dd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^gZ}tdd_d`dadbdcdddedfddgdhdidjdkdldmdnddodpdqdrdsdtdudvd dwdxdydzd{d|d}d~d)ddddddddd2ddddddddd;dddddddddDdddddddddMdddddddddVddddddddgZ}dd t ddD }dd t ddD }t||dd t||dd d S )Nc              	   S   s4   g | ],}t d dD ]}t||| d| jqqS )r   rF   r   rL  rP   r  r   rG  r
  r?  r_   r_   r`   rJ    s     z#test_binomtest3.<locals>.<listcomp>r   rF   r'   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  ?g     ?gg*),?g}A_?g}aA?gH]@_?g
y7s?gPG?g>)\R?gjc6?gK?go; ,?g!O0?g?g}e?g5?g?!A^?gN/#?g*?g    @?g?g?g3?g.1?gdT\1-?gt0W59?goQC?gX4J?g   ?g
?gf?C"?g\6I?g4b?g|$or?gWNS~?gT?gXnc?g   \?gY\?gp ^a?gX-K?g#c?g
3?g75Q?gMJ[?gP8R?gw	%?g     ?gS g?gv^?g*uCi?g  a?g]?gE9Q?g/?g     ?g	x&~?g#?g5B?g	A'9?gpZ?gWV$u?gqIb?g  @N?g1Y?g5?gO?gc-?gk?g )?glMV?g?$?gT*r?gCqRv?grx?gωZ?gExY?g<T ?gJ9Ͻd?g `Ԗt?gT?gEz?gQ?g7C<*?g<?g~ K?g8?g~ȍEt?g⿒?g<v?gHE:?g8Z$?gbº5?gvC?g`Yw?gA?$??gE=?g4?g3?g{G9?gp?gH ?gz6f?g¯F?g(+?g	$V?gq^ws?g!?gXNJ?gK?g4P?g<q?gdV;?gy?g$w?gU<vO?gMX?g	șz*?giqSp?gMM?g0V$)?g]
yi/Q?gl?gl?g3Ȇ?gѾ_c?c              	   S   s8   g | ]0}t d dD ] }t|d || d| jqqS r   rF   r   r   r  r  r_   r_   r`   rJ    s     c              	   S   s8   g | ]0}t d dD ] }t|d || d| jqqS r  r  r  r_   r_   r`   rJ    s     rH   r?   )rL  r   rU   rF  r  r&  r   r   )r  Zbinom_testm1Zbinom_testp1Zres4_p1Zres4_m1r_   r_   r`   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 )NrF   r  rE   r!  r%   left)tailr   tE]t?r   r   r!  r  r"   r    r!   r   )r  r>   r=   r   )rU   r   r   sortrP   Ztrim1rS   r6  )rY   r   r  r>   Ztrimmedr_   r_   r`   
test_trim1  s,    


zTestTrim.test_trim1c                 C   s(  t d}tt t|dt dd tt t|dt ddddd	d
dg tt tt dd	ddt dddd tt tt ddd	jdt ddddgddddg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 )NrF   r  r   r$   r!  r   r    r!   r"   r#   r  r   r   rC   r%   r   rB   r!  r  )rU   r   r   r  rP   Ztrimbothr   rS   r6  rx   ry   rv  r_   r_   r`   test_trimboth;  s(    
   zTestTrim.test_trimbothc           
      C   s,  t ddddddddd	d
dg}t d
dddddg}t ddd|d d f }t djdddd|d d f }tt|dt ddddg tt|dt ddddg t ddd
dg}t ddd|d d f }tt|dt ddddddg d	dddddddddddd dd!d"d#d$dd%dd&dd
g}tt|dd' ttddd
dddgdd t jd( t jj	d$d)d*}d+D ]6}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 )/Nr    r$   r   r   r%   r!   rE   r   r#   r   r"   r  F)orderr   r)   r/   g      -@g     4@rn   r  r  r  r~   g      ,@rF   rG   rB   r   r  r^  rN   r_  r   r  r   rC   rH   rD   r[  )r!   r"   r    r#   r  )r   r   r   r   rK   r=   rT  rs   )rU   r   r   rS   r   rP   Z	trim_meanr1  r2  r  rH  r  rx   ry   rV   )
rY   r   idxrp  rq  Zidx4Za4r>   rm  rn  r_   r_   r`   test_trim_meanM  sL     ""      
zTestTrim.test_trim_meanN)r   r   r   r  r  r  r_   r_   r_   r`   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  rJ      r   r   r!   r    rU   r  r#  rP   	sigmaclipr   minmaxr   rT   ri   r   rY   r   factr  lowZuppr_   r_   r`   test_sigmaclip1u  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  rJ   r  r   r   r!   r(   r    $   r  r  r_   r_   r`   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  rJ   rF   r   ?)rU   r  r#  rP   r  r   r  r  r   rT   ri   r  r_   r_   r`   test_sigmaclip3  s    zTestSigmaClip.test_sigmaclip3c                 C   sF   t t dddt dddf}d}t|||}d}t|| d S )	Nr  rJ   rF   r  r  r   r  )Zclippedrc  rd  )rU   r  r#  rP   r  r   )rY   r   r  r   r   r_   r_   r`    test_sigmaclip_result_attributes  s    z.TestSigmaClip.test_sigmaclip_result_attributesc                 C   s"   t d}tt|d | d S )NrE   r   )rU   rF  r   rP   r  r9  r_   r_   r`   test_std_zero  s    
zTestSigmaClip.test_std_zeroN)r   r   r   r  r  r  r  r  r_   r_   r_   r`   r  t  s
   
r  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestAlexanderGovernc           
      C   s  dddddddddg	dddddddddg	dddddddddg	dddddddddg	g}t j|t jd}t j|t jd}t j|t jd}t j|t jd}tj| }tj| }tj| }tj| }	|j|j  kr|j  kr|	jksn t	|j
|j
  kr|j
  kr|	j
ksn t	d S )NrH   rG   rC   rF   r   r;   )rU   r   r  r  uint8r   rP   alexandergovernr   r5  r   )
rY   r  Z
args_int16Z
args_int32Z
args_uint8Zargs_float64Z	res_int16Z	res_int32Z	res_unit8Zres_float64r_   r_   r`   test_compare_dtypes  s.    




z'TestAlexanderGovern.test_compare_dtypesc              	   C   s   t tdd tddgg  W 5 Q R X t tdd tddgd W 5 Q R X t tdd tddgdg W 5 Q R X t tdd tddgtjtjg W 5 Q R X t tdd" tddgddgddgg W 5 Q R X d S )	Nz+Input sample size must be greater than one.rv   r   r   zInput samples must be finite.z%Input samples must be one-dimensionalr   r    )rx   ry   rP   r  rU   r   r  r_   r_   r`   test_bad_inputs  s    "z#TestAlexanderGovern.test_bad_inputsc              (   C   s   ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(g(}d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFg}dGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZg}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rP   r  r
   r   r   )rY   ZoneZtwoZeightsolnr_   r_   r`   test_compare_r  s                                                         z"TestAlexanderGovern.test_compare_rc                 C   s   ddddddddd	d
dddddddddg}ddddddddddddg}d d!d"d#d$d%d&d'd(d)d*d+d,d-d.g}t |||}t|jd/d0d1 t|jd2d3d1 t|jd4 t|jd5 d6S )7z
        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@r  r   g R8߱?rx  g.UikL@g&Zݱ?Nr  )rY   ZyoungZmiddleoldr  r_   r_   r`   test_compare_scholar  sF                         z(TestAlexanderGovern.test_compare_scholarc                 C   s   ddddddddd	d
ddddddddddg}dddddddddddd d!d"d#d$d%d&d'd(g}t ||}t|jd)d*d+ t|jd,d*d+ t|jd- t|jd. d/S )0aA  
        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?rY  r   gOZ}?g9$?g6MDd}?Nr  )rY   rk  rl  r  r_   r_   r`   test_compare_scholar3A  sJ                          z)TestAlexanderGovern.test_compare_scholar3c                 C   s@   ddddgdt jgg}tj| }t|jt j t|jt j d S )Nr   r   r   r    rU   rV   rP   r  r   r   r   )rY   r  r   r_   r_   r`   test_nan_policy_propogates  s    
z-TestAlexanderGovern.test_nan_policy_propogatec              	   C   sB   ddddgdt jgg}ttdd tj|ddi W 5 Q R X d S )	Nr   r   r   r    r  rv   rr   rt   )rU   rV   rx   ry   rP   r  rY   r  r_   r_   r`   test_nan_policy_raisez  s    z)TestAlexanderGovern.test_nan_policy_raisec                 C   sl   dddd dgdt jddgg}ddddgdddgg}tj|ddi}tj| }t|j|j t|j|j d S )	Nr   r   r   r    r_  r   rr   rp   r  )rY   Zargs_nanZargs_no_nanZres_nanZ
res_no_nanr_   r_   r`   test_nan_policy_omit  s    
z(TestAlexanderGovern.test_nan_policy_omitc              	   C   sV   d}t tj|d: tdddgdddg}t|jtj t|jtj W 5 Q R X d S )Nz9An input array is constant; the statistic is not defined.rv   r   r   r   r   )	r   rP   r   r  r   r   rU   rV   r   )rY   r{   r   r_   r_   r`   r     s    z'TestAlexanderGovern.test_constant_inputN)r   r   r   r  r  r  r  r  r  r  r  r   r_   r_   r_   r`   r    s   B22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dddgedddgejdffedddgedddgejejffgdd Ze	j
dddddgdd Zdd Zdd Zdd Zdd  Ze	j
d!d"dd#d$g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   r   rs   r   rP   f_onewayr   rY   r  r   r_   r_   r`   test_trivial  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   r   r    r)  r   r'   r<  r   )rP   r  r   r
   rU   r   r  r_   r_   r`   r     s    
zTestFOneWay.test_basicc                 C   s4   t dgdgdddg\}}t|d t|d d S )Nr   r   r    rT  r  r  r  r_   r_   r`   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   )rU   r   uint16rP   r  r
   )rY   r   r   r  r   r_   r_   r`   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 )Nr  r  r;   r  r  r  )rU   r   r  rP   r  r   )rY   r   r   r   r   r_   r_   r`   test_result_attributes  s
    z"TestFOneWay.test_result_attributesc                    s  ddddddddd	d
dg}|D ]}d}t jt jt jtd|}t|d}| d}W 5 Q R X dd |dd D }t	j
|dd}|j\ tt	}	t|d d } fdd|	D }
tj|
 }d}||krd}t|d ||d| d qd S )Nz
SiRstv.datz
SmLs01.datz
SmLs02.datz
SmLs03.datzAtmWtAg.datz
SmLs04.datz
SmLs05.datz
SmLs06.dat
SmLs07.dat
SmLs08.dat
SmLs09.datr   zdata/nist_anovar   
c                 S   s   g | ]}|  r| qS r_   )stripsplit)rG  liner_   r_   r`   rJ    s    z)TestFOneWay.test_nist.<locals>.<listcomp>r  r  rL  )Zskiprowsr   rK   c                    s   g | ]} |k qS r_   r_   rF  rI  r_   r`   rJ    s     )r  r  r  rx  zFailing testcase: %s)r   r  )ospathabspathjoindirname__file__openreadr  rU   Zloadtxtr6  r  r&  r  rs  rP   r  r
   )rY   	filenamesZ	test_caser   fnamer  contentZ	certifiedZdatafZcatyZxlistr   Zhard_tcr_   rI  r`   	test_nist  s>          



zTestFOneWay.test_nistza, b, expectedr  r#   r   c              	   C   sB   d}t tj|d& t||\}}|s4t||kW 5 Q R X d S )N%Each of the input arrays is constant;rv   )r   rP   r   r  r5  )rY   r   r   r  r{   r  r   r_   r_   r`   r     s    zTestFOneWay.test_constant_inputr>   rH  rK   r   c                 C   s  t ddddgddddgddddgddddgddddgg}t ddddgddddgddddgddddgddddgddddgddddgddddgg}t ddddgddddgddddgddddgg}|dkr|j}|j}|j}d	}nd}d
}ttj|d tj||||d\}}W 5 Q R X dD ]Z}	tt ||	|t ||	|t ||	|\}
}t||	 |
dd t||	 |dd q$dD ]l}	ttj|dR tt ||	|t ||	|t ||	|\}
}t	||	 |
 t	||	 | W 5 Q R X qd S )Nr   r    r   r   r!   r"   r$   r   r   r  rv   r=   r1  r<  r   r  )
rU   r   r6  r   rP   r   r  Ztaker
   r   )rY   r>   r   r   r  Z	take_axisr  r  r   rI  fjZpjr_   r_   r`   test_2d_inputs  sX    













 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sxt|jdkstt|jd D ]x}t|jd D ]d}t||d d |f ||d d |f ||d d |f \}}	t	||||f  t	|	|||f  qqd S )Nr   r      r    r!   r#   r      r$   q   r=   )r    r#   r   )
rU   r   rS   cosrP   r  r4  r5  rL  r
   )
rY   r   r   r  r  r   rH  rI  ZfijZpijr_   r_   r`   test_3d_inputs  s     <zTestFOneWay.test_3d_inputsc              	   C   sP   d}t tj|d4 tdddgg dddd	g}t|tjtjf W 5 Q R X d S )
Nall input arrays have length 1.rv   r   r   r   r    r!   r"   r#   r   rP   DegenerateDataWarningr  r   rU   rV   rY   r{   r   r_   r_   r`   test_length0_1d_error%  s    z!TestFOneWay.test_length0_1d_errorc           	   	   C   s   d}t tj|dl d}td|f}td|f}td|f}t|||\}}tj|ftjd}t|| t|| W 5 Q R X d S )Nr  rv   r   r    r   r!   r   )	r   rP   r   rU   rF  r  rg   rV   r   )	rY   r{   Zncolsr   r   r  r  r   Znansr_   r_   r`   test_length0_2d_error,  s    
z!TestFOneWay.test_length0_2d_errorc              	   C   sL   d}t tj|d0 tdgdgdgdg}t|tjtjf W 5 Q R X d S )Nr  rv   rE   rF   rG   rH   r  r  r_   r_   r`   test_all_length_one8  s    zTestFOneWay.test_all_length_oner  r_   r   r   c              	   C   s"   t t tj|  W 5 Q R X d S rE  )rx   r*  rP   r  r  r_   r_   r`   test_too_few_inputs>  s    
zTestFOneWay.test_too_few_inputsc              	   C   s>   t d}t d}tt j tj||dd W 5 Q R X d S )Nr  r!   r    r   r=   )rU   rF  rx   rI  rP   r  rY   r   r   r_   r_   r`   test_axis_errorC  s    

zTestFOneWay.test_axis_errorc              	   C   s<   t d}t d}tt tj||dd W 5 Q R X d S )Nr  r  r   r=   )rU   rF  rx   ry   rP   r  r  r_   r_   r`   test_bad_shapesI  s    


zTestFOneWay.test_bad_shapesN)r   r   r   r  r   r  r  r  r  r   r   r   rU   r   r   rV   r   r  r  r  r  r  r  r  r	  r_   r_   r_   r`   r    s*   
 &(

/
r  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )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   r   r   )	rP   kruskalr   r	   r  r  r  rU   r   rY   rz   rZ   hr   r_   r_   r`   test_simpleQ  s    

zTestKruskal.test_simplec                 C   s   dddddg}dddd	d
g}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   r   r!   r#   r%   r   r    r"   r$   rE   r  r4   )rP   r  r	   r  r  r  rU   r   r  r_   r_   r`   r   [  s    zTestKruskal.test_basicc                 C   s<   dg}ddg}d}d}|| }t ||\}}t|| d S )Nr   r   r  r  )rP   r  r   rY   rz   rZ   h_uncorrrR  r  r  r   r_   r_   r`   test_simple_tiee  s    zTestKruskal.test_simple_tiec                 C   sR   ddddg}ddddg}d}dt dd  }|| }t||\}}t|| d S )Nr   r   r        )rs  rP   r  r	   r  r_   r_   r`   test_another_tiep  s    zTestKruskal.test_another_tiec           	      C   sn   dddg}dddg}ddg}d}dt dd  }|| }t|||\}}t|| t|tjj|d d S )Nr   r   r3   r  r  )rs  rP   r  r	   r  r  r  )	rY   rz   rZ   r  r  rR  r  r  r   r_   r_   r`   test_three_groupsy  s    


zTestKruskal.test_three_groupsc                 C   s8   dddg}dddg}g }t t|||tjtjf d S r   )r   rP   r  rU   rV   r  r_   r_   r`   r    s    

zTestKruskal.test_emptyc                 C   s:   dddddg}dddd	d
g}t ||}d}t|| d S )Nr   r   r!   r#   r%   r   r    r"   r$   rE   r  )rP   r  r   )rY   rz   rZ   r   r   r_   r_   r`   test_kruskal_result_attributes  s
    z*TestKruskal.test_kruskal_result_attributesc                 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 )Nrn   r%   rp   rq   r   rt   ru   )	rU   r   rV   r   rP   r  r   rx   ry   r9  r_   r_   r`   r;    s    

zTestKruskal.test_nan_policyc                 C   sB   d}t j|}t j|d }t||\}}d}t|| d S )Nr  r  r   )rU   r1  r3  rP   r  r	   )rY   rQ  rz   rZ   r  r   r  r_   r_   r`   test_large_no_samples  s    z!TestKruskal.test_large_no_samplesN)r   r   r   r  r   r  r  r  r  r  r;  r  r_   r_   r_   r`   r
  P  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dddgZejddddgejdedd Zejdedd  Zd!S )"TestCombinePvaluesc                 C   s*   t jdddgdd\}}t|ddd d S )	Nr4  r!  r   ry  r  gf?r    r4   rP   combine_pvaluesr	   )rY   Zxsqr   r_   r_   r`   test_fisher  s    zTestCombinePvalues.test_fisherc                 C   s*   t jdddgdd\}}t|ddd d S )	Nr4  r!  r   stoufferr  S:X?r    r4   r  rY   Zr   r_   r_   r`   test_stouffer  s    z TestCombinePvalues.test_stoufferc                 C   s*   t jdddgdd\}}t|ddd d S )Nr'   r  r  r    r4   r  r  r_   r_   r`   test_stouffer2  s    z!TestCombinePvalues.test_stouffer2c                 C   s2   t jdddgdtdd\}}t|ddd	 d S )
Nr4  r!  r   r  r   r  r7  r  r    r4   )rP   r  rU   rF  r	   r  r_   r_   r`   test_weighted_stouffer  s    
z)TestCombinePvalues.test_weighted_stoufferc                 C   s2   t jdddgdtdd\}}t|ddd	 d S )
Nr4  r!  r   r  )r   r    r%   r"  g46<?r    r4   )rP   r  rU   r   r	   r  r_   r_   r`   test_weighted_stouffer2  s    
z*TestCombinePvalues.test_weighted_stouffer2c                 C   s*   t jdddgdd\}}t|ddd d S )	Nr4  r!  r   r  r  gE
)??r    r4   r  r  r_   r_   r`   test_pearson  s    zTestCombinePvalues.test_pearsonc                 C   s*   t jdddgdd\}}t|ddd d S )	Nr4  r!  r   tippettr  gBi?r    r4   r  r  r_   r_   r`   test_tippett  s    zTestCombinePvalues.test_tippettc                 C   s*   t jdddgdd\}}t|ddd d S )Nr  mudholkar_georger  g&?r    r4   r  r  r_   r_   r`   test_mudholkar_george  s    z(TestCombinePvalues.test_mudholkar_georgec                 C   sb   t jdddgdd\}}t jdddgdd\}}t jdddgdd\}}td||  |d	d
 d S )Nr4  r!  r   r(  r  ry  r  r'   r    r4   r  )rY   r  r   ZZ_fZp_fZZ_pZp_pr_   r_   r`   2test_mudholkar_george_equal_fisher_pearson_average  s    zETestCombinePvalues.test_mudholkar_george_equal_fisher_pearson_averagery  r  r&  r  r(  r  singler,  r1  r  c                    s   d\}}t jd}|dkrNt ||f||}t dd||d d df< nL|dkrtt ||ft dd|j}n&|dkrt j|jdd	||fd
dd} fdd|D }t t 	|dkst
d S )N)rE   r#   l	   TrU(	"b-= r+  r  r  r   r,  r1  r   r  r=   c                    s   g | ]}t j| d d qS )r  r   )rP   r  )rG  r  r  r_   r`   rJ    s   z8TestCombinePvalues.test_monotonicity.<locals>.<listcomp>)rU   r1  r  rg   r#  r6  r  r  r,  diffr5  )rY   r  r  rO  rQ  r  ZpvaluessZcombined_pvaluesr_   r  r`   test_monotonicity  s    
z$TestCombinePvalues.test_monotonicityc                 C   s*   t jdddg|d}t|j|jf| d S )Nr4  r!  r   r  )rP   r  r   r   r   )rY   r  r   r_   r_   r`   r%    s    zTestCombinePvalues.test_resultN)r   r   r   r  r   r!  r#  r$  r%  r'  r)  r*  methodsr   r   r   r-  r%  r_   r_   r_   r`   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   r   r    r   r   rx   ry   rP   wasserstein_distancer  r_   r_   r`   &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   r   r   r0  r  r_   r_   r`   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   r   r   rK   r0  r  r_   r_   r`   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 )Nr   r   r0  r  r_   r_   r`   test_empty_distribution  s    z1TestCdfDistanceValidation.test_empty_distributionc                 C   s.   t ttjdddgddgdtjdgddg d S r   )rx   ry   rP   r1  rU   r   r  r_   r_   r`   test_inf_weight  s      
 z)TestCdfDistanceValidation.test_inf_weightN)	r   r   r   r   r2  r3  r4  r5  r6  r_   r_   r_   r`   r/    s   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dddgdddgd d S )Nr   r   r'   r   r  r   r   rP   r1  r  r_   r_   r`   r    s4           z#TestWassersteinDistance.test_simplec              	   C   sP   t tdddgdddgd t tddddgddgddddgddgd d S Nr   r   r   r   r    )r   rP   r1  r  r_   r_   r`   test_same_distribution+  s    
 z.TestWassersteinDistance.test_same_distributionc              	   C   s   t tdgdgd t tdgdgd t tdddddgd	d
dddgd t tdddgdddgdddgdddgd d S )Nr   r   rn  r!   rE   r   r   r    rF   rG   rH   rC   r   r+   g@r1  r/  r#   ry  r)   r8  r  r_   r_   r`   
test_shift4  s     z"TestWassersteinDistance.test_shiftc                 C   sv   t tdddddddgdddddddgdddddddgdddddddgtdddgdddgdddgdddg d S Nr   r   r!   r   r    r   r8  r  r_   r_   r`   test_combine_weightsA  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   rK   rz  )
rU   r   Z
zeros_liker   rP   r1  rT   ra  r  r{  )rY   r	  r
  Z	u_weightsZ	v_weightsr_   r_   r`   test_collapseK  s    

z%TestWassersteinDistance.test_collapsec              	   C   sJ   t tdddgddgdddgddgtddgddgddgddg d S Nr   r   rK  r   r8  r  r_   r_   r`   r3  Z  s     z(TestWassersteinDistance.test_zero_weightc              	   C   s   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 4}|td t tddtjgtjdgtj W 5 Q R X d S Nr   r   ro   )	r   rP   r1  rU   r   r   rW   rX   rV   rY   r^   r_   r_   r`   test_inf_valuesa  s$    z'TestWassersteinDistance.test_inf_valuesN)r   r   r   r   r  r:  r;  r=  r>  r3  rB  r_   r_   r_   r`   r7    s   	
r7  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dddgdddgtdd  d S )	Nr   r   r   r'   r   r  r   g3Ey?r   rP   energy_distancerU   r   r  r_   r_   r`   r  x  s0          zTestEnergyDistance.test_simplec              	   C   sP   t tdddgdddgd t tddddgddgddddgddgd d S r9  )r   rP   rE  r  r_   r_   r`   r:    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   r   rn  r!   gS[:XL	@rD  r  r_   r_   r`   r;    s
    zTestEnergyDistance.test_shiftc                 C   sv   t tdddddddgdddddddgdddddddgdddddddgtdddgdddgdddgdddg d S r<  r   rP   rE  r  r_   r_   r`   r=    s    $ &z'TestEnergyDistance.test_combine_weightsc              	   C   sJ   t tdddgddgdddgddgtddgddgddgddg d S r?  rF  r  r_   r_   r`   r3    s    "z#TestEnergyDistance.test_zero_weightc              	   C   s   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 4}|td t tddtjgtjdgtj W 5 Q R X d S r@  )	r   rP   rE  rU   r   r   rW   rX   rV   rA  r_   r_   r`   rB    s     z"TestEnergyDistance.test_inf_valuesN)
r   r   r   r   r  r:  r;  r=  r3  rB  r_   r_   r_   r`   rC  t  s   rC  c                   @   s   e Zd ZddddddddddddddgZdddddddddddgZdZdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) TestBrunnerMunzelr   r   r    r   r!   rH   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   r4   |	&	@|	&	gҏGg?g@-pL?)rP   brunnermunzelrQ   r!  r	   r5   r   r"  r_   r_   r`   test_brunnermunzel_one_sided  s2    z.TestBrunnerMunzel.test_brunnermunzel_one_sidedc                 C   st   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nr   r   r4   rH  rI   ҏGw?rP   rJ  rQ   r!  r	   r5   r(  r_   r_   r`   test_brunnermunzel_two_sided  s    z.TestBrunnerMunzel.test_brunnermunzel_two_sidedc                 C   sl   t | j| j\}}t | j| j\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nr4   rH  rI  rL  rM  r(  r_   r_   r`   test_brunnermunzel_default  s    z,TestBrunnerMunzel.test_brunnermunzel_defaultc                 C   s6   d}d}d}t |dk tttj| j| j||| d S )Nr  r  rC  r  r   rx   ry   rP   rJ  rQ   r!  rY   r   distributionrr   r_   r_   r`   $test_brunnermunzel_alternative_error  s    z6TestBrunnerMunzel.test_brunnermunzel_alternative_errorc                 C   st   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nr  rR  r4   rH  rI  g "H[?rM  r(  r_   r_   r`   $test_brunnermunzel_distribution_norm  s    z6TestBrunnerMunzel.test_brunnermunzel_distribution_normc                 C   s6   d}d}d}t |dk tttj| j| j||| d S )Nr   r  rC  )r  r  rP  rQ  r_   r_   r`   %test_brunnermunzel_distribution_error  s    z7TestBrunnerMunzel.test_brunnermunzel_distribution_errorc                 C   s   t | jg \}}t g | j\}}t g g \}}t|tj t|tj t|tj t|tj t|tj t|tj d S rE  )rP   rJ  rQ   r!  r   rU   rV   )rY   r#  r  r$  r  r%  r  r_   r_   r`   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}dddddddddddg}tj||dd\}}tj||dd\}}t|t j t|t j t|t j t|t j d S )Nr   r   r    r   r!   rC  rq   )rU   rV   rP   rJ  r   rY   rQ   r!  r#  r  r$  r  r_   r_   r`   &test_brunnermunzel_nan_input_propagate  s    $z8TestBrunnerMunzel.test_brunnermunzel_nan_input_propagatec                 C   sz   ddddddddddddddt jg}dddddddddddg}d}d}d}tttj||||| tttj||||| d S )	Nr   r   r    r   r!   r   r  rt   )rU   rV   rx   ry   rP   rJ  )rY   rQ   r!  r   rR  rr   r_   r_   r`   "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}dddddddddddg}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   r   r    r   r!   rp   rq   r4   rH  rI  rL  )rU   rV   rP   rJ  r	   r5   rX  r_   r_   r`   !test_brunnermunzel_nan_input_omit@  s    $z3TestBrunnerMunzel.test_brunnermunzel_nan_input_omitc              	   C   sF   dddg}dddddg}t jtd	d
 tj||dd W 5 Q R X 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   r   r!   r"   r#   r$   r%   zp-value cannot be estimatedrv   r  rT  N)r   r  rX   rP   rJ  r   r_   r_   r`   test_brunnermunzel_return_nanN  s    
z/TestBrunnerMunzel.test_brunnermunzel_return_nanc              	   C   sT   dddg}dddddg}t jtd	d
 tj||dd\}}W 5 Q R X 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   r   r!   r"   r#   r$   r%   zdivide by zerorv   r  rT  r   N)r   r  rX   rP   rJ  r   )rY   rz   rZ   r  r   r_   r_   r`   test_brunnermunzel_normal_distX  s
    
z0TestBrunnerMunzel.test_brunnermunzel_normal_distN)r   r   r   rQ   r!  r5   rK  rN  rO  rS  rU  rV  rW  rY  rZ  r[  r\  r]  r_   r_   r_   r`   rG    s    
rG  c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )TestRatioUniformsz# Tests for rvs_ratio_uniforms.
    c                 C   s   t jj}t|tdtd }t|d| |  }}}t j||||ddd}tt |dd dkd	 t jd
d dddtd ddd}tt |dd dkd	 d S )Nr   r   i	  i90  r  r  r   r  Tc                 S   s   t |  S rE  )rU   r  r  r_   r_   r`   r  s  r  z6TestRatioUniforms.test_rv_generation.<locals>.<lambda>rK   r   )umaxvminvmaxr   r  Zexpon)	rP   r  pdfrU   r   rvs_ratio_uniformsr   r  r  )rY   r  v_boundr_  r`  ra  r  r_   r_   r`   test_rv_generationh  s      z$TestRatioUniforms.test_rv_generationc                 C   sR  t jj}t|tdtd }t|d| |  }}}t j||||ddd}t j||||ddd}t j||||ddd}t|| t||  t|jd t|jd t j||||dd	d}	t j||||d
d	d}
t|	 |
 t|	jd t j||||dd}t j||||ddd}t j||||ddd}t|| t|| d S )Nr   r   r   r[  r  r  )r   r   )r   r   r   rG      r  r   r  )	rP   r  rb  rU   r   rc  r   r8  r4  )rY   r  rd  r_  r`  ra  r  r  rz  Zr4Zr5Zr6Zr7r8r_   r_   r`   
test_shapex  sB    

zTestRatioUniforms.test_shapec                 C   s   t jj}t|tdtd }t|d| |  }}}tjd t j||||dd}t j||||ddd}t|| d S )Nr   r   r[  r  r  r  )	rP   r  rb  rU   r   r1  r2  rc  r   )rY   r  rd  r_  r`  ra  r  r  r_   r_   r`   test_random_state  s    z#TestRatioUniforms.test_random_statec                 C   sd   t jj}ttt j|dddd ttt j|dddd ttt j|dddd ttt j|dddd d S )Nr   r   )rb  r_  r`  ra  rK   r   )rP   r  rb  rx   ry   rc  )rY   r  r_   r_   r`   test_exceptions  s:                    z!TestRatioUniforms.test_exceptionsN)r   r   r   r   re  ri  rj  rk  r_   r_   r_   r`   r^  d  s
    
r^  c                   @   sb   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	j
dddgdd Zdd Zdd ZdS )TestMGCErrorWarningsz1 Tests errors and warnings derived from MGC.
    c                 C   s8   t d}dgd }tttj|| tttj|| d S )Nr   r!   rU   r   rx   ry   rP   multiscale_graphcorrr   r_   r_   r`   test_error_notndarray  s    

z*TestMGCErrorWarnings.test_error_notndarrayc                 C   s2   t ddd}|dd}tttj|| d S )Nr   r   r    rE   )rU   r   rS   rx   ry   rP   rn  r   r_   r_   r`   test_error_shape  s    z%TestMGCErrorWarnings.test_error_shapec                 C   s(   t d}t d}tttj|| d S )Nr   rm  r   r_   r_   r`   test_error_lowsamples  s    

z*TestMGCErrorWarnings.test_error_lowsamplesc                 C   sF   t jdtd}t j|d< tttj|| t d}tttj|| d S )Nr   r;   r   )rU   r   rs  rV   rx   ry   rP   rn  r   r_   r_   r`   test_error_nans  s
    

z$TestMGCErrorWarnings.test_error_nansc                 C   s&   t d}d}tttj|||d d S )Nr   r   )compute_distancerm  )rY   rz   rs  r_   r_   r`   test_error_wrongdisttype  s
    
z-TestMGCErrorWarnings.test_error_wrongdisttyper4  rK   1c                 C   s"   t d}tttj|||d d S )Nr   r4  rm  )rY   r4  rz   r_   r_   r`   test_error_reps  s    
z$TestMGCErrorWarnings.test_error_repsc                 C   s&   t d}d}tttj|||d d S )Nr   r   rv  )rU   r   r   rX   rP   rn  )rY   rz   r4  r_   r_   r`   test_warns_reps  s    
z$TestMGCErrorWarnings.test_warns_repsc                 C   s.   t d}t dt j }tttj|| d S )Nr   )rU   r   rF  r   rx   ry   rP   rn  r   r_   r_   r`   test_error_infty  s    
z%TestMGCErrorWarnings.test_error_inftyN)r   r   r   r   ro  rp  rq  rr  rt  r   r   r   rw  rx  ry  r_   r_   r_   r`   rl    s   	
rl  c                   @   s   e Zd ZdZdddZejjejddd	d
gdd Z	ejjejdddgdd Z
ejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd ZdS )TestMGCStatz) Test validity of MGC test statistic
    r   r    c                 C   st  |dkr<t jjdd|dfd}|dt jj|jdfd  }n|dkrt t jjdd|dfd}|t t j|  }|t t j|  d	t jj|jdfd  }n|d
kr.t jj	dd|dfd}t jj	dd|dfd}t jj
dd|dfd}	t jj
dd|dfd}
|d d|	  d }|d d|
  d }ntd|dkrlt jj	dd||d fd}t j||fdd}||fS )Nr3  rK   r   r  r   	nonlinearr   r!   rS  independencer'   )r   r   r   r   z3sim_type must be linear, nonlinear, or independencer=   )rU   r1  r  Zrandom_sampler   r   r  pir$  r  binomialry   r  )rY   sampsdimssim_typerz   rZ   Zunifr	  r
  Zu_2Zv_2Z
dims_noiser_   r_   r`   _simulations  s*    

zTestMGCStat._simulationszsim_type, obs_stat, obs_pvalue)r3  r  r  )r|  w/?r  )r}  gUN@g(\?c           	      C   sR   t jd | jdd|d\}}t||\}}}t||dd t||dd d S )Nr\  r   r   r  r  r  r4   rU   r1  r2  r  rP   rn  r	   	rY   r  Zobs_statZ
obs_pvaluerz   rZ   r  r   r  r_   r_   r`   	test_oned  s
    zTestMGCStat.test_oned)r3  gZd;O?r  )r|  g~jt?gʡE?c           	      C   sR   t jd | jdd|d\}}t||\}}}t||dd t||dd d S )Nr\  r   r!   r  r   r4   r  r  r_   r_   r`   
test_fived"  s
    zTestMGCStat.test_fivedc                 C   s   t jd t jjdddd}t jjdddd}t||\}}}t|d	dd
 t|ddd
 t jjdddd}tj||dd\}}}t|d	dd
 t|ddd
 d S )Nr\  r   r'   )r   r!   r  r   r   )rN  r!   r   r4   r  T)Z
is_twosamp)rU   r1  r2  r  r  rP   rn  r	   rY   rz   rZ   r  r   r  r_   r_   r`   test_twosamp2  s    zTestMGCStat.test_twosampc                 C   sV   t jd | jdddd\}}tj||dd\}}}t|ddd	 t|d
dd	 d S )Nr\  r   r   r3  r  r   )workersr  r4   r  r  r  r_   r_   r`   test_workersG  s
    zTestMGCStat.test_workersc                 C   sJ   | j dddd\}}tj||dd\}}}t|ddd t|ddd d S )	Nr   r   r3  r  rg  r  r4   r  )r  rP   rn  r	   r  r_   r_   r`   rj  S  s    zTestMGCStat.test_random_statec                 C   st   t jd | jdddd\}}t||dd}t||dd}tj||d dd\}}}t|d	dd
 t|ddd
 d S )Nr\  r   r   r|  r  Z	euclidean)Zmetric)rs  r  r  r4   r  )rU   r1  r2  r  r   rP   rn  r	   )rY   rz   rZ   ZdistxZdistyZ	stat_distZpvalue_distr  r_   r_   r`   test_dist_perm]  s    zTestMGCStat.test_dist_permc                 C   sD   t jd | jdddd\}}tj||dd\}}}t|d d S )Nr\  r   r   r3  r  rg  r  )rU   r1  r2  r  rP   rn  r
   )rY   rz   rZ   r  r   r_   r_   r`   test_pvalue_literaturek  s    z"TestMGCStat.test_pvalue_literaturec                 C   sB   t jd | jdddd\}}tj||dd}t|j|j d S )Nr\  r   r   r3  r  rg  )	rU   r1  r2  r  rP   rn  r   r  r   r=  r_   r_   r`   
test_aliasv  s    zTestMGCStat.test_aliasN)r   r   r{  )r   r   r   r   r  r   r   r&  r   r  r  re  r  r  rj  r  r  r  r_   r_   r_   r`   rz    s6   
"


	


rz  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	ddddddddddddddddddddddd d!d"gd#d$d%d&d'dd(d)d*dd+d,d,d-d.d/dd!d0d1ddd"ddgdd2d3dd4d5d6d7d*d8d9d8d#d:d9d;d<dddd=d2d>d?d@ggfdAdBddCdDdEdFdGdHdIgdGdJdKddd*gdLdMdd5dNdOggfdPdQdRdCdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgddJdTdSgdTdSddJgdTdSddJgdTdSddJgdTdSddJgdTdSddJggfdUdVdRdCddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgdSdTdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdggfdWdXdRdCdYdGdJddSdTgdYdGdJddSdTgdTddJdGdSdYggfdZd[dRdCdGdJddSdTgdGdJddSdTgdGdJddSdTgdGdJddSdTgdGdJddSdTgdGdJddSdTgdJdTddSdGgdTdSddJdGgdTdSddJdGgdTdSddJdGgg
fd\d]dRdCddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgdSdTdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdggfd^d_dRdCd`dYdGdJddSdTgd`dYdGdJddSdTgdYdGd`dJddSdTgdTdSddJdGdYd`ggfdadbdRdCddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgdSdTdgdTdSdggfgZ	e
jdce	ddde ZdfdgdRdCddhdid`dYdGdJddSdTg
dTdidJd`dYdGdhddSdg
gfdjdkdRdCddhdid`dYdGdJddSdTg
ddhdid`dYdGdJddSdTg
ddhdid`dYdGdJddSdTg
dhdSdid`dYdGdJdddTg
dTdSddJdGdYd`didhdg
gfdldmdRdCdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdTddGdYdJd`dSdigdTdSddJdGdYd`digdTdSddJdGdYd`digdTdSddJdGdYd`digdTdSddJdGdYd`digdTdSddJdGdYd`diggfgZe
jdce	e
j dndo Zdpdq Zdrds Zdtdu ZdvS )wTestPageTrendTestr   r   r   rE      i2  g:hў?Fr  i  gsH?i,0  gY@?r:  r8  I   r  `   r  ;   r  r  r6  1   r5  +   r  r  r;  r   rA   rN  r  r  D   r  rL  "   r  A   X   rB   r  r  C   E   r
  r  W   rH   U   O   rG   \   V   @   r   rN   Y   r@  6   B   r  ra  i
  gXY?r  r(   r(  g @r!   r_  rF   r    r*   r  r0  rC   r   iL  gs˜?Tr   r      gĞ?   g>K=?r"   i  gqူ?   ga?i  g;?r#   u   g[^6?zL, p, ranked, method, datac                 C   sD   t jd tj|||d}t||j t||j t||j	 d S Nr  )rankedr  
rU   r1  r2  rP   page_trend_testr   r   r
   r   r  rY   Lr   r  r  r  r   r_   r_   r`   test_accuracy  s
    zTestPageTrendTest.test_accuracyi  g-lpW?r%   r$   i*  gh[?i  g&]2?c                 C   sD   t jd tj|||d}t||j t||j t||j	 d S r  r  r  r_   r_   r`   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  )rE   r   r   r=   Tr  F)predicted_ranks)rU   r1  r2  r   Zpermutationr=  rP   Zrankdatar  r   r   )rY   rO  rQ  r  permr  Zranksrm  rn  r  Zres4Zres5r_   r_   r`   test_options  s"    
zTestPageTrendTest.test_optionsc                 C   s   t jd dddgdddgdd	d
gdddgdddgdddgg}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  r  o   r7  r2  k   g      y   r0  r  r  r           rL  t   r   r#   Fr  )r  r  r  i  gy&1l?r    r?   r  gHPsb?)rU   r1  r2  r   r6  r   rP   r  r   r   r   r   )rY   r  r  r   r_   r_   r`   test_Ames_assay  s(      z!TestPageTrendTest.test_Ames_assayc              	   C   s  t tdd td  W 5 Q R X t tdd tg  W 5 Q R X t tdd tddg W 5 Q R X t tdd tdggg W 5 Q R X t tdd ttjdd W 5 Q R X t tdd ttjdd W 5 Q R X d}t t|d* tjdddgdddggdddgd	 W 5 Q R X t t|d* tjdddgdddggd
ddgd	 W 5 Q R X t t|d, tjdddgdddggddddgd	 W 5 Q R X t t|d$ tjdddgdddggdd	 W 5 Q R X t tdd" tdddgdddggd W 5 Q R X t tdd" tdddgdddggd W 5 Q R X t tdd& tjdddgddtjggdd W 5 Q R X t tdd$ tjdddgdddggdd W 5 Q R X t tdd$ tjdddgdddggdd W 5 Q R X d S )Nz`data` must be a 2d array.rv   r   r   zPage's L is only appropriater   z+`predicted_ranks` must include each integerr   )r  r  r  rZ  z`data` is not properly rankedTr    z`data` contains NaNsFr  z`method` must be inZekki)r  r  z`ranked` must be boolean.)r  r  )	rx   ry   rP   r  rU   r1  r=  rV   r*  r  r_   r_   r`   r    sZ    
&&z'TestPageTrendTest.test_input_validationN)r   r   r   rU   r1  r2  r=  Z	data_3_25Z
data_10_26tsr   r   r   r  Zts2r&  r  r  r  r  r_   r_   r_   r`   r    s\                                   (
 
 
 

 
 
 

 
0            ,$    0            0    ,
, $      r  iv5z	fun, argsc              	   C   sf   | |ddi}| |ddi}t || | j d}tjtt|d | |ddd W 5 Q R X d S )Nr  r  r  z#() got multiple values for argumentrv   )r  r  )r   r   r   r   r*  reescape)r}  r  r   rn  errr_   r_   r`   test_rename_mode_methodD  s    
r  c                   @   sx   e Zd Zdd Zdd Zdd Zdd Zej	d	d
ddddgej	dddgdd Z
ej	dddgdd ZdS )TestExpectilec                 C   s6   t jd}|jdd}ttj|ddt | d S )Nr  r   r  r'   r  )rU   r1  r  r
   rP   	expectilerT   rY   r  rz   r_   r_   r`   test_same_as_meanV  s    zTestExpectile.test_same_as_meanc                 C   s6   t jd}|jdd}ttj|ddt | d S )Nr  r   r  r   r  )rU   r1  r  r
   rP   r  Zaminr  r_   r_   r`   test_minimum[  s    zTestExpectile.test_minimumc                 C   s6   t jd}|jdd}ttj|ddt | d S )Nr  r   r  r   r  )rU   r1  r  r
   rP   r  Zamaxr  r_   r_   r`   test_maximum`  s    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 )Nr   r   r   )rU   r"  r#  )r	  r   r  r7  r  r_   r_   r`   r}  l  s    z'TestExpectile.test_weights.<locals>.func                    s,   t | t | f}tj || ||fdjS )N)bracketr  )rU   r  r  r   Zminimize_scalarrz   )r   r  r7  r  r}  r_   r`   
expectile2q  s    z.TestExpectile.test_weights.<locals>.expectile2rE   rz  )rU   r1  r  rP   r  r
   )	rY   r  r  rQ  r   r  r7  r   r  r_   r  r`   test_weightse  s    

zTestExpectile.test_weightsr  r!  g?r'   g/#    ?r8  rQ  r   r  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rd	d
 }n|dkrd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sZt|j	|dd}dD ]N}|tjd| | ||  |dd| tj||d |tj||d   qlt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  r  )rn  r   r'   )r4  r!  r  rE   rQ  r'   c                 S   s   t | | d S rE  )r
   r   r   r_   r_   r`   	assert_op  s    z:TestExpectile.test_expectile_properties.<locals>.assert_opc                 S   s   | |k st d S rE  r5  r  r_   r_   r`   r    s    c                 S   s   | |kst d S rE  r  r  r_   r_   r`   r    s    r!   )r  r'   r8  r   N)rU   r1  r  r  r
   rP   r  rg   ZexponentialZlogisticr  r5  )rY   r  rQ  r  rz   r  rZ   r  r_   r_   r`   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
 qRt 
t |dkstd S )Nr  r   )r   r   r  r'   r   r   r   rK   r  )rU   r1  r  ZparetoZlogspacelog10r  r"  rP   r  r,  r,  r5  )rY   rQ  r  rz   Ze_listZ	alpha_seqr  r_   r_   r`   test_monotonicity_in_alpha  s    $z(TestExpectile.test_monotonicity_in_alphaN)r   r   r   r  r  r  r  r   r   r   r  r  r_   r_   r_   r`   r  U  s    ar  )r   )NNr   N)NNr   N)NNr   N)r   r  r  rS  collectionsr   	itertoolsr   Znumpy.testingr   r   r   r   r   r	   r
   r   r   r   r   r   rx   Znumpy.ma.testutilsr  Z	testutilsr  Znumpyr   r   r   r   r   rU   Zscipy.statsrP   Zscipy.stats.mstatsr  Zscipy.stats._mstats_basicZ_mstats_basicr  Zscipy.stats._ksstatsr   Zscipy.special._testutilsr   Zscipy.specialr   Zscipyr   Zcommon_testsr   Zscipy.spatial.distancer   Z	numpy.libr   Zscipy.stats._axis_nan_policyr   rX  r   rs  rQ   r  r   r   r   r   r   r0   r   r   r'  r  r  r  r  r  r  r   r  r  r  r  r  re  rk  rl  rm  r   filterwarningsr  r  r  r  r  r.  r/  rZ  r  r  ZPowerDivCaser  r  r6  r  r  r  r   r  r  r  r  r  r  r  r  r1  rw  r{  r  r  r  r  r  r  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r2  r5  r;  r=  r?  r@  ra  ro  r  r  r  r  r  r  r  r  r  r
  r  r/  r7  rC  rG  r^  rl  rz  r  r1  r  r  rz   rZ   Zwilcoxonr  r  r	  r2  r  r  r  r_   r_   r_   r`   <module>   s
  0       '    L [
 WY

)  "u
 q `? m ecs,,          	   -
K-5#V  r



~ xI m
Jcr8~+ 
 
   
codQ^W/ o @UL&]C .L<  ?



