a
    BCCfV                    @   sn  d dl Zd dlZd dlmZmZmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ ddlmZ d dlmZ d d	lmZ d
d Zejdg dejdg ddd Zejdg ddd Zejdg dejdg dejdddgdd Zejdejdg ddd ZddddZejde d d! Zd"d#d#dZd$d% Z d&d' Z!ejde d(d) Z"d*d+d,Z#ejde# d-d. Z$ejdd/d0gejdd d1gd2d3 Z%ejd4ejdg dejdd d1gd5d6 Z&ejdg dd7d8 Z'ejdg dd9d: Z(d;d< Z)ejd=d d>gd?d@ Z*ejdAejdg ddBdC Z+dDdE Z,ejdFdGdHgdIdJ Z-ejdKg dLejdg ddMdN Z.dOdP Z/ejdg ddQdR Z0ejdg ddSdT Z1ejj2ej3dUdVdW Z4G dXdY dYZ5G dZd[ d[Z6d\d] Z7ejd^g d_d`da Z8dS )b    N)	bootstrapmonte_carlo_testpermutation_test)assert_allcloseassert_equalsuppress_warnings)stats)special   )_resampling)rng_integers)rootc                  C   sB  d} t jt| d tdtj W d    n1 s40    Y  d} t jt| d tt tj W d    n1 st0    Y  d} t jt| d& tg ddgftj W d    n1 s0    Y  d} t jt| d, tg dg dftjd	d
 W d    n1 s0    Y  d} t jt| d  tdtjdd W d    n1 sP0    Y  d} t jt| d& tg dftjdd W d    n1 s0    Y  d} t jt| d& tg dftjdd W d    n1 s0    Y  d} t jt| d& tg dftjdd W d    n1 s.0    Y  d} t jt| d& tg dftjdd W d    n1 sx0    Y  d} t jt| d& tg dftjdd W d    n1 s0    Y  d} t jt| d& tg dftjdd W d    n1 s0    Y  d} t jt| d& tg dftjdd W d    n1 sV0    Y  d} t jt| d& tg dftjdd W d    n1 s0    Y  d} t jt| d& tg dftjd d W d    n1 s0    Y  d!} t jt| d& tg dftjd"d# W d    n1 s40    Y  d S )$Nz%`data` must be a sequence of samples.match   z(`data` must contain at least one sample.z>each sample in `data` must contain two or more observations...r   r
      z=When `paired is True`, all samples must have the same length r   r
   r      T)paired0`vectorized` must be `True`, `False`, or `None`.ekki
vectorized`axis` must be an integer.      ?axisz!could not convert string to floatni)confidence_levelz-`n_resamples` must be a non-negative integer.n_resamples     D@+`batch` must be a positive integer or None.batchz`method` must be inmethodz?`bootstrap_result` must have attribute `bootstrap_distribution'
   )bootstrap_resultz5Either `bootstrap_result.bootstrap_distribution.size`r   "'herring' cannot be used to seed aherringrandom_state)pytestraises
ValueErrorr   npmeantuple)message r6   ]/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/stats/tests/test_resampling.pytest_bootstrap_iv   sZ    *,4<0666666666r8   r(   )basic
percentileBCar   r   r   r
   c              	   C   s   t jd t jddd}t|ft jd | d|dd}t|ft jd| d|dd}t|jj|jj t|jj	|jj	 t|j
|j
 d S )Nr   r)         d   )r&   r(   r.   r   r"   )r2   randomseedrandr   r3   r   confidence_intervallowhighstandard_error)r(   r   xres1res2r6   r6   r7   test_bootstrap_batchK   s    rJ   c                    s   t jd d}t j|t j|ddd d fdd	}t t}t|f|dd}tf d	dd
}t|j|j t|j	|j	 d S )Nr   r?   c                 S   s   | | d j |dS )Nr
   r   r3   rG   yr   r6   r6   r7   my_statisticd   s    z+test_bootstrap_paired.<locals>.my_statisticc                    s   |  }|  } ||}|S Nr6   )ir   abresrO   rG   rN   r6   r7   my_paired_statisticg   s    
z2test_bootstrap_paired.<locals>.my_paired_statisticr-   T)r   r.   )rK   )rK   )
r2   r@   rA   rB   arangelenr   r   rC   rF   )r(   nrV   rQ   rH   rI   r6   rU   r7   test_bootstrap_paired\   s    
rZ   r   TFc              	   C   sR  t jd d
dd}d}|| }t j|}t j|}t j|}t|||f||| dddd}	|	jj|	jjd kszJ g d	}
||
|< t |	|
|}t |	|
|}t |	|
|}t|||f||| d|dd}t
|jj|	jj t
|jj|	jj t
|j|	j t|}|| t|jjj| t|jjj| t|jj| d S )Nr   rK   c                 S   s$   | j |d|j |d |j |d S Nr   rL   )rG   rN   zr   r6   r6   r7   rO      s    z/test_bootstrap_vectorized.<locals>.my_statistic)r)   r=   r>   r?   )r   r(   r.   r   r"   )r?   )r   r   r   )rK   )r2   r@   rA   rB   r   bootstrap_distributionshaperF   broadcast_toreshaper   rC   rD   rE   listpopr   )r(   r   r   rO   r^   Z	n_samplesrG   rN   r\   rH   r`   rI   Zresult_shaper6   r6   r7   test_bootstrap_vectorizedv   sB    


rc   z#MemoryError with BCa observed in CIc           	      C   s4  t jd}tjjddd|d}d}tjt|d t |t	|d}|j
|d	}| }t|ft jd| |d
}tf i |d|i}t|j|dd t|j|dd |td|d tf i ||dd}t|jj||dd |td|d tf i ||dd}t|jj|d| dd d S )Nl   )ICbX     r
     )locscalesizer.   ffffff?r   )dfrf   rg   )
confidence)data	statisticr"   r(   r.   r   gMb@?rtolga2U0*3?atolr   r"   r*   lessr   alternativegreater)r2   r@   default_rngr   normrvstrX   r3   Zsemintervalstddictr   r   rC   rF   updaterE   ZppfrD   )	r(   rngrl   alphadistZexpected_intervalZexpected_seconfigrT   r6   r6   r7   test_bootstrap_against_theory   s$    $r   )gQ7@gHzS@)g\(<@g=
ףpU@)gHz'@@gQV@zmethod, expectedc                 C   s8   t g d}t|ft jd| dd}t|j|dd d S )N)r)   r>         )@r   g+@            "   2   Q   Y   y         i@B r   )r"   r(   r.   g{Gzt?rn   )r2   arrayr   r3   r   rC   )r(   expectedrG   rT   r6   r6   r7   test_bootstrap_against_R   s
    r   i  i  c                  C   s   g d} g d}dd }t jd}tj| |f|dd|d}tj| |f|d	d|d}tj| |f|d
d|d}t |j}t |j}t |j}	d}
||
 t|
 }||
 t|
 }|	|
 t|
 }|dk sJ |dksJ t|dk sJ d S )N)gbF?gp?g|Hܿgxy[e}u׿g*g_?ggi6g2?)gF?gK?g&F}/?g?g(iC?g}$ץ?g hu?gfj}!?c                 S   s$   t j| |d}t j||d}|| S r[   )r   skew)rG   rN   r   s1s2r6   r6   r7   rm      s    z1test_multisample_BCa_against_R.<locals>.statisticl   tgy4r9   r?   )r(   r&   r.   r:   Zbcag1*g333333ÿg333333?Q?)r2   r@   rw   r   r   r3   rC   abs)rG   rN   rm   r   Z	res_basicZres_percentZres_bcaZ	mid_basicZmid_percentZmid_bcaZ	mid_wbootZ
diff_basicZdiff_percentZdiff_bcar6   r6   r7   test_multisample_BCa_against_R   s.    r   c                  C   st   t g d} t g d}d
dd}|| g}t||}d}d}|j}d}t||||||\}	}	}
t|
d	 d S )N)	r)         (   .   r   4   h      )   r   &   ^   c         r   c                 S   s   t j| |dt j||d S r[   r2   r3   )r\   rN   r   r6   r6   r7   rm   $  s    z:test_BCa_acceleration_against_reference.<locals>.statisticrK   ri   r?   ge{?)r   )r2   r   r   r   r]   r   Z_bca_intervalr   )rN   r\   rm   rl   rT   r   r   Ztheta_hat_br&   _Za_hatr6   r6   r7   'test_BCa_acceleration_against_reference  s    

r   c              	   C   s   t jd d}d}d}tjddd}| }d}|j||fd	}t|ft j||d
| dd}	|	j}
t 	|
d |k ||
d k @ }||ksJ t
|||j}|dksJ d S )Nr   r?     ?rd   r   rf   rg   i  rh   r   rK   rm   r   r"   r&   r(   r   皙?r2   r@   rA   r   rx   r3   ry   r   rC   sum	binomtestpvalue)r(   r   rY   r"   r   r   	stat_truen_replicationsrl   rT   cici_contains_truer   r6   r6   r7   #test_bootstrap_against_itself_1samp3  s.    r   i|  iz  )r9   r:   c              	   C   s   t jd d}d}d}d}ddd}tjdd	d
}tjdd	d
}| |  }	d}
|j|
|fd}|j|
|fd}t||f|||d| dd}|j}t 	|d |	k |	|d	 k @ }||ksJ t
||
|j}|dksJ d S )Nr   r?   x   r   r   rK   c                 S   s$   t j| |d}t j||d}|| S r[   r   )data1data2r   Zmean1Zmean2r6   r6   r7   my_statm  s    z4test_bootstrap_against_itself_2samp.<locals>.my_statr   r   r     r   r   r   )rK   r   )r(   r   n1n2r"   r   r   Zdist1Zdist2r   r   r   r   rT   r   r   r   r6   r6   r7   #test_bootstrap_against_itself_2samp^  s6    
r   r9   r:   r   c              	      s   dddd  fdd}t jd t jdd}t jdd}t jdd}t|||f d	|d
| dd}t|||f|d|d
| dd}t|j|j t|j|j d S )Nr   r   c                    s   t  fdd|D S )Nc                 3   s   | ]}|  V  qd S rP   rL   .0sampler   r6   r7   	<genexpr>      zEtest_bootstrap_vectorized_3samp.<locals>.statistic.<locals>.<genexpr>r   r   rl   r6   r   r7   rm     s    z2test_bootstrap_vectorized_3samp.<locals>.statisticc                     s&   | D ]}|j dksJ q | ddiS Nr   r   r   ndimrl   r   rm   r6   r7   statistic_1d  s    z5test_bootstrap_vectorized_3samp.<locals>.statistic_1dr   rd   Tr?   )r   r   r"   r(   r.   Fr2   r@   rA   rB   r   r   rC   rF   )r(   r   r   rG   rN   r\   rH   rI   r6   r   r7   test_bootstrap_vectorized_3samp  s    r   z'Failure is not concerning; see gh-14107c              
      s   ddd  fdd}t jd t jdd}t|f d|d	d | dd
}t|f|d|d	d| dd
}t|j|j t|j|j d S )Nr   c                 S   s   | j |dS r[   rL   rG   r   r6   r6   r7   rm     s    z2test_bootstrap_vectorized_1samp.<locals>.statisticc                    s   | j dksJ  | ddS )Nr   r   r   r   rG   r   r6   r7   r     s    z5test_bootstrap_vectorized_1samp.<locals>.statistic_1dr   rd   Tr?   )r   r   r"   r&   r(   r.   Fr)   )r   r   )r(   r   r   rG   rH   rI   r6   r   r7   test_bootstrap_vectorized_1samp  s    
r   c              	   C   s   ddg }| dkrt jddj d}tjtj|d6 t|gt j| d}t|j	t j
t j
f W d    n1 sp0    Y  W d    q1 s0    Y  nt|gt j| d}t|j	d	 t|jd
 d S )N#        @r;   ignore)invalidz0The BCa confidence interval cannot be calculatedr   r'   )r   r   r   )r2   Zerrstater/   Zwarnsr   ZDegenerateDataWarningr   r3   r   rC   nanrF   )r(   rl   msgrT   r6   r6   r7   test_bootstrap_degenerate  s    
Rr   c                 C   s   t jd}tjddd}|jd|d}|f}t|tj| dt jdd}t|tj| dt jdd	d
}t|j	|j	 t|j
|j
 t|j
t jsJ d S )Nl   E<1

 r
   r   r   r?   rh   r.   i[%  r(   r"   r.   F)r(   r"   r.   r   )r2   r@   rw   r   rx   ry   r   r   r   rC   rF   
isinstanceZfloat64)r(   r   r   rl   rT   refr6   r6   r7   test_bootstrap_gh15678  s    
r   c                  C   s   t jd} tjddd}|jd| d}t |}|f}t|t jddt jdd	}||jj	ksdJ tt 
| t jddt jdd	}t|jj	 |jj t|jj |jj	 d S )
Nl   n!|'x`5 r
   r   r   r?   r   r;   if  r   )r2   r@   rw   r   rx   ry   minr   rC   rD   r   maxr   rE   )r   r   rl   Ztrue_minrT   rI   r6   r6   r7   test_bootstrap_min  s$    




r   additional_resamplesr   c              	   C   s   t jd}|jdd}d}| }||  }t jd}tj|ft j||ddd}tj|ft j||d	d
|d}t jd}tj|ft j||d	d
d}t|j|jdd t|j|jdd d S )Nl    ]4M r?   r   r   l   mdpi4 ri   r:   )r"   r.   r   r(   r   r;   )r"   r.   r   r(   r*   +=rn   )	r2   r@   rw   r   r   r3   r   rF   rC   )r   r   rG   r   r   Zn3rT   r   r6   r6   r7   test_re_bootstrap  s*    
r   zSensible to machine precisionc                 C   s6  t jd}tjddd}|jd|df}t|t j|dd}tjf i |d	d
i}|	td|d tjf i |ddd}tjf i |ddd}t
|jj|jjdd t
|jj|jjdd t |jjsJ t |jjsJ tjtdd( tjf i |ddi W d    n1 s(0    Y  d S )Nl   @Qixt r
   r   r   r?   r   rK   )rl   rm   r.   r   r   r   r   rr   ri   rs   rt   rv   r   rn   z`alternative` must be one ofr   ru   z	ekki-ekki)r2   r@   rw   r   rx   ry   r}   r|   r   r~   r   rC   rE   rD   ZisneginfZisposinfr/   r0   r1   )r(   r   r   rl   r   rz   lgr6   r6   r7   test_bootstrap_alternative  s$    r   c                  C   s   d} t jd t jj|  }tt|}t| d D ]6}|d|d d f }t j||dd}t 	||s6J q6t j
ttj|dddd}t 	||sJ d S )	Nr   r   rd      r   rK   .r   r
   r%   )r2   r@   rA   rB   nextr   Z_jackknife_resamplerangedeletearray_equalZconcatenatera   )r^   rG   rN   rQ   slcr   y2r6   r6   r7   test_jackknife_resample'  s    r   rng_nameRandomStaterw   c                 C   s   t tj| d }|d u r&t|  d |d}|d}d}d}tjd tjj| }tj|||d}t	|D ]H}|d|d d f }	t
|d|d |d }
|d|
f }t|	|snJ qnd S )Nz not available.r   r)   r   r-   .rK   )getattrr2   r@   r/   skiprA   rB   r   Z_bootstrap_resampler   r   r   )r   r   rng1rng2r"   r^   rG   rN   rQ   r   jsr   r6   r6   r7   test_bootstrap_resample:  s    r   score)r         ?r   c                 C   sV   d}t jd t jj| }tj|| dd}dd }||| ddd }t||d d S )	N)r)         r   rK   r   c                 S   s   t tj|| |S rP   )r2   Zapply_along_axisr   Zpercentileofscore)rR   r   r   r6   r6   r7   vectorized_pos\  s    z0test_percentile_of_score.<locals>.vectorized_posr?   V瞯<)r2   r@   rA   rB   r   Z_percentile_of_scorer   )r   r   r^   rG   pr   p2r6   r6   r7   test_percentile_of_scoreT  s    r  c                  C   s   d} t jd t jj|  }t jj| d d  d }t||}t| d D ]0}|| }t j|| || dd}t||d qLd S )N)r)   r   r   rK   r?   r   r   )	r2   r@   rA   rB   r   Z_percentile_along_axisr   r:   r   )r^   rG   qrN   rQ   rT   r   r6   r6   r7   test_percentile_along_axisd  s    r  c                    s   dd   fdd}t |}tjd tjddd}tjdd	d}tjd	dd} |||| d
}||||| d
}t|| d S )Nc                    s   t  fdd|D S )Nc                 3   s   | ]}|  V  qd S rP   rL   r   r   r6   r7   r   {  r   z>test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>r   r   r6   r   r7   rm   y  s    z+test_vectorize_statistic.<locals>.statisticc                     s&   | D ]}|j dksJ q | ddiS r   r   r   r   r6   r7   r   }  s    z.test_vectorize_statistic.<locals>.statistic_1dr   r   rd   r   r   r   )r   _vectorize_statisticr2   r@   rA   rB   r   )r   r   Z
statistic2rG   rN   r\   rH   rI   r6   r   r7   test_vectorize_statisticu  s    
r  c                 C   s   t jd}d}tjj|d|d}dd }t|f|| ddd	d
}t j|jj	j
|k |jjj
|k@ dd}t |dkszJ t |dksJ |jj	jdksJ |jjjdksJ |jjdksJ |jjdksJ d S )Nl   s: )r   r   )r?   r?   r   c                 S   s"   t t | |t j| |ddgS )Nr   )Zddof)r2   Zasarrayr3   r|   )rl   r   r6   r6   r7   rm     s    z/test_vector_valued_statistic.<locals>.statisticrK   '     )r(   r   r"   r&   r   r   Z   r?   r
   r?   )r
   r?   r  )r2   r@   rw   r   rx   ry   r   r   rC   rD   TrE   allr^   rF   r]   )r(   r   paramsr   rm   rT   countsr6   r6   r7   test_vector_valued_statistic  s$    
r  zignore::RuntimeWarningc                     s   t jd} dd   fddfdd}g dg d	g d
g dg dg}t |j}t||| dd}t|| dd}t|jjd |jjdd t|jj	d |jj	dd d S )Nl   \Qc                 S   sZ   |  |}| |}| |d  ||d    |}d| | ||| || d   S )N).Nr
   )r3   var)rG   rN   r   ZxmZymZcovr6   r6   r7   concordance  s    

z9test_vector_valued_statistic_gh17715.<locals>.concordancec                    s"   | | }| | }t  |||S rP   )r2   Z
nan_to_num)tptnfpfnr   actualr   )r  r6   r7   rm     s    z7test_vector_valued_statistic_gh17715.<locals>.statisticc                    s    g || R  t jdf S )N.)r2   Znewaxisr   argsr   r6   r7   statistic_extradim  s    z@test_vector_valued_statistic_gh17715.<locals>.statistic_extradim)r   r   r   r
   )r
   r   r
   r   )r   r   r   r   )r   r   r   r   )r      r   r   T)r.   r   r   r   rp   )
r2   r@   rw   r   r
  r   r   rC   rD   rE   )r   r  rl   rT   r   r6   )r  rm   r7   $test_vector_valued_statistic_gh17715  s&    r  c                
   @   sH  e Zd ZdZdd Zdd Zdd Zej	de
d	d
dd Zej	ddej	deddddd Zej	dejejfej	ddej	deddddd Zej	dedd
dd Zej	deddddd Zej	dd ej	d!e
dd"d# Zd$d% Zd&d' Zd(d) Zejd*d+d, Zd-S ).TestMonteCarloHypothesisTestg?c                    s    fddS )Nc                     s   | d i|S )Nr.   r6   )r  kwdsrsrvs_inr6   r7   <lambda>  r   z2TestMonteCarloHypothesisTest.rvs.<locals>.<lambda>r6   )selfr  r  r6   r  r7   ry     s    z TestMonteCarloHypothesisTest.rvsc                 C   s  dd }d}t dt df}tjjtjjf}tjt|d$ t||dd d	d
 W d    n1 sh0    Y  d}tjt|d( tg dtjj|dd
 W d    n1 s0    Y  d}tjt|d( tg dtjj|dd W d    n1 s0    Y  d}tjt	|d  tg dd | W d    n1 s@0    Y  tjt	|d0 tddgddggdd d g| W d    n1 s0    Y  d}tjt|d. tg dgdd dd g| W d    n1 s0    Y  d}tjt	|d$ tg dtjjd  W d    n1 s*0    Y  d}tjt|d( tg dtjj|dd W d    n1 sv0    Y  d}tjt|d( tg dtjj|dd W d    n1 s0    Y  d}tjt|d( tg dtjj|dd W d    n1 s0    Y  d}tjt|d( tg dtjj|dd W d    n1 sZ0    Y  d}tjt|d( tg dtjj|d d! W d    n1 s0    Y  d S )"Nc                 S   s   t | jS rP   )r   skewnormrm   r   r6   r6   r7   stat  s    z@TestMonteCarloHypothesisTest.test_input_validation.<locals>.statz/Array shapes are incompatible for broadcasting.r
   rd   )r   rd   r   c                 S   s   dS Nr   r6   rG   rN   r6   r6   r7   r     r   zDTestMonteCarloHypothesisTest.test_input_validation.<locals>.<lambda>rK   r   r   r   r   r   r   z0`rvs` must be callable or sequence of callables.r   r
   r   r   c                 S   s   | S rP   r6   r   r6   r6   r7   r     r   zIf `rvs` is a sequence...c                 S   s   | S rP   r6   r   r6   r6   r7   r     r   z`statistic` must be callable.)`n_resamples` must be a positive integer.r    r!   r#   r$   r%   `alternative` must be in...r   ru   )
r2   zerosr   rx   ry   r/   r0   r1   r   	TypeError)r!  r#  r5   rl   ry   r6   r6   r7   test_input_validation  sX    2660@>4&&88z2TestMonteCarloHypothesisTest.test_input_validationc                    s6  t jd}|d} fdd d _d _| ddd}| tjjt jd	|d
< tf ddi|}t	 jd t	 jd | tjjt jd	|d
< d _tf ddi|}t	 jd t	 jd | tjjt jd	|d
< d _tf i |}t	 jd t	 jd t	|j
|j
 t	|j
|j
 d S )Nl   )p r)   c                    sB   | j dkrdnt| }t| j _  jd7  _tj| |djS Nr   r   )r   rX   r   
batch_sizecounterr   skewtestrm   )rG   r   r.  r   r6   r7   rm     s    z:TestMonteCarloHypothesisTest.test_batch.<locals>.statisticr   r   T)r   rm   r"   r   i"ry   r&   r     r   r   r
   )r2   r@   rw   r/  r.  ry   r   rx   r   r   r   )r!  r   rG   r  rH   rI   res3r6   r   r7   
test_batch  s0    
z'TestMonteCarloHypothesisTest.test_batchr   r   c           	      C   s   t jd}| tjj|}g d}d||< ||d}tj||d}dd }t|||dd	|d
}t|j	|j	 t|j
|j
| jd d S )Nit$ r
   r   r   r?   r   r   c                 S   s   t j| |djS r[   )r   r0  rm   r   r6   r6   r7   rm   I  s    z9TestMonteCarloHypothesisTest.test_axis.<locals>.statisticTi N  )r   r"   r   rp   )r2   r@   rw   ry   r   rx   r0  r   r   rm   r   rq   )	r!  r   r   norm_rvsrh   rG   r   rm   rT   r6   r6   r7   	test_axis=  s    

z&TestMonteCarloHypothesisTest.test_axisru   rs   rv   rR   g      r   rd   c           	         s   t jd}tjj|d|d}tj|tjj d} fdd}| tjj|}t	|||dd d	}t
|j|j  d
krt
|j|j| jd n  dkrt
d|j |j| jd d S )Ni)r   rR   rh   r.   r)  c                    s   t j| t jjd djS Nasymp)moderu   )r   ks_1samprx   cdfrm   r   r)  r6   r7   statistic1d[  s    zGTestMonteCarloHypothesisTest.test_against_ks_1samp.<locals>.statistic1dr   Fr"   r   ru   rv   rp   rs   r   )r2   r@   rw   r   r"  ry   r=  rx   r>  r   r   rm   r   rq   )	r!  ru   rR   r   rG   r   r?  r6  rT   r6   r)  r7   test_against_ks_1sampR  s    z2TestMonteCarloHypothesisTest.test_against_ks_1samphypotestrs   rv   	two-sidedr   r
   c           
         s~   t jd}tjj|d|d} ||d} fdd}| tjj|}t|||d|d}	t|	j	|j	 t|	j
|j
| jd	 d S )
Ni	   r9  r)  c                    s    | |dj S r[   r   r   rB  r6   r7   rm   t  s    zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statisticTr   ru   rp   )r2   r@   rw   r   r"  ry   rx   r   r   rm   r   rq   )
r!  rB  ru   rR   r   rG   r   rm   r6  rT   r6   rF  r7   test_against_normality_testsj  s    
z9TestMonteCarloHypothesisTest.test_against_normality_testsc                 C   sx   t jd}tjj|d|d}t|}dd }| tjj|}t|||ddd}t	|j
|j
 t	|j|j| jd	 d S )
Ni!M rE  r9  c                 S   s   t j| |djS r[   )r   
normaltestrm   r   r6   r6   r7   rm     s    zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statisticTrv   rG  rp   )r2   r@   rw   r   r"  ry   rI  rx   r   r   rm   r   rq   )r!  rR   r   rG   r   rm   r6  rT   r6   r6   r7   test_against_normaltest~  s    

z4TestMonteCarloHypothesisTest.test_against_normaltestc                 C   s   t jd}tjj|d|d}t|tjj}dd }| tjj|}t	|||dddd	}t
|j|j t
|j|j| jd
 d S )Nir   r9  c                 S   s   t | t jjjS rP   )r   cramervonmisesrx   r>  rm   r   r6   r6   r7   r?    s    zMTestMonteCarloHypothesisTest.test_against_cramervonmises.<locals>.statistic1dr   Frv   r@  rp   )r2   r@   rw   r   r"  ry   rK  rx   r>  r   r   rm   r   rq   )r!  rR   r   rG   r   r?  r6  rT   r6   r6   r7   test_against_cramervonmises  s    z8TestMonteCarloHypothesisTest.test_against_cramervonmises	dist_name)rx   ZlogisticrQ   c              	      s&   fdd}t  &}|t t|dd}W d    n1 s@0    Y  |jsTJ |jd }tjd}t	j
j|d|d}t	| }	|	j}
|	j d } fdd	}| tt	 j|}t  .}|t t|||d
ddd}W d    n1 s0    Y  t|j|
 t|j|d| j d d S )Nc                    s:   t jd}tjj| d|d}t| }|j|j  S )Nxr?   r   )	r2   r@   rw   r   tukeylambdary   andersonrm   Zcritical_values)rR   r   rG   r   rM  rQ   r6   r7   fun  s    z?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.funr   )Zx0rN  r?   r   c                    s   t |  jS rP   )r   rP  rm   r   )rM  r6   r7   r?    s    zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1dr   Frv   r@  r
   rp   )r   filterRuntimeWarningr   successrG   r2   r@   rw   r   rO  ry   rP  rm   Zsignificance_levelr   r   r   r   rq   )r!  rM  rQ   rR  supZsolrR   r   rG   r   expected_stat
expected_pr?  Zdist_rvsrT   r6   rQ  r7   test_against_anderson  s*    
*


$z2TestMonteCarloHypothesisTest.test_against_andersonc                 C   s>   t jd}t d}t||jt jddd}|jdks:J d S )Nl   IL~QH(s r?   Trs   rG  g-C6?)r2   r@   rw   r*  r   r3   r   )r!  r   rG   rT   r6   r6   r7   test_p_never_zero  s    
z.TestMonteCarloHypothesisTest.test_p_never_zeroc                 C   s   t jd}|jdd|jddf}|j|jf}dd }tj|||dd}tj|d	 |d
 gdd}t|j|j t|j	|j	dd d S )N   F:fmPr$  r      c                 S   s   t | ||jS rP   r   	ttest_indrm   rM   r6   r6   r7   rm     s    zFTestMonteCarloHypothesisTest.test_against_ttest_ind.<locals>.statisticrK   r   r   r   g{Gz?rn   )
r2   r@   rw   normalr   r   r^  r   rm   r   r!  r   rl   ry   rm   rT   r   r6   r6   r7   test_against_ttest_ind  s    z3TestMonteCarloHypothesisTest.test_against_ttest_indc                 C   s   t jd}|jdd|jdd|jdd|jddf}|j|j|j|jf}dd }tj|||d	d
d}tj|dd	i}t|j|j t|j	|j	dd d S )Nr[  r	  r   )r
   e   )r
   f   )r
   g   c                 W   s   t j|d| ijS )Nr   )r   f_onewayrm   r  r6   r6   r7   rm     s    zETestMonteCarloHypothesisTest.test_against_f_oneway.<locals>.statisticrK   rv   r   ru   r   {Gz?rp   )
r2   r@   rw   r_  r   r   re  r   rm   r   r`  r6   r6   r7   test_against_f_oneway  s    z2TestMonteCarloHypothesisTest.test_against_f_onewayz2Statistic may not depend on sample order on 32-bitc                    s   t jd d} fdd}|d}tj||t jd|d}t |j|jk}t |j|jd k}||ksnJ |j	|d	 |d	  ksJ d S )
Nl   U5<H r  c                    s   dt jddj|  d S )Ng      ?gZd;O?)r   r   )r   Z	bernoulliry   r   r   r6   r7   ry     s    zITestMonteCarloHypothesisTest.test_finite_precision_statistic.<locals>.rvsr?   rs   )ru   r"   g     ?r   )
r2   r@   rw   r   r   r  r   null_distributionrm   r   )r!  r"   ry   rG   rT   Zc0c1r6   ri  r7   test_finite_precision_statistic  s    z<TestMonteCarloHypothesisTest.test_finite_precision_statisticN)__name__
__module____qualname__rq   ry   r,  r3  r/   markparametrizer   r7  r2   ZlinspacerA  r   r0  ZkurtosistestrH  rW   rJ  rL  rY  rZ  ra  rh  xfail_on_32bitrl  r6   r6   r6   r7   r    s2   :%


*	
r  c                   @   s  e Zd ZdZdd Zdd Zejde	j
je	j
jgejdg dd	d
 Zejde	j
je	j
jgejddedd fddeddfgdd Zdd Zej dd Zdd Zejddejddejddd d! Zejdd"d#d$ Zejdd"d%d& Zejdd"d'd( Zd)d* Zej ejdd+d,d- Zejdd"d.d/ Zejdd"d0d1 Zd2d3 Zejdd"d4d5 Z ej ejdd6d7d8 Z!g d9g d:d;d<d=d>d?d@dAZ"g dBg dCdDdEdFdGdHdIdAZ#ej ejdJe"e#fdKdL Z$ejdMdNdOdP Z%ejdQdRdSdT Z&e'dUdg fe'ddg dg dVgfe'dWdg dg dVddXggfgZ(ejdYe(dZd[ Z)d\d] Z*d^S )_TestPermutationTestr   c                 C   s   t jd| _d S )Nl   F )r2   r@   rw   r   )r!  r6   r6   r7   setup_method  s    z TestPermutationTest.setup_methodc                 C   s  dd }d}t jt|d$ tg ddgf| W d    n1 sD0    Y  d}t jt|d td| W d    n1 s0    Y  t jt|d td| W d    n1 s0    Y  d	}t jt|d* tg dg df|d
d W d    n1 s0    Y  d}t jt|d* tg dg df|dd W d    n1 sT0    Y  d}t jt|d* tg dg df|d
d W d    n1 s0    Y  d}t jt|d* tg dg df|dd W d    n1 s0    Y  d}t jt|d* tg dg df|dd W d    n1 s>0    Y  d}t jt|d* tg dg df|dd W d    n1 s0    Y  d}t jt|d* tg dg df|dd W d    n1 s0    Y  d}t jt|d* tg dg df|dd W d    n1 s(0    Y  d}t jt|d* tg dg df|dd W d    n1 sv0    Y  d S )Nc                 S   s   t | |f|jS rP   r]  rM   r6   r6   r7   r#    s    z:TestPermutationTest.test_permutation_test_iv.<locals>.statz2each sample in `data` must contain two or more ...r   r   r   z6`data` must be a tuple containing at least two samples)r   r   r   r   z `permutation_type` must be in...r   )permutation_typer   r   r'  r    r!   r#   r$   r%   r(  r)  r+   r,   r-   )r/   r0   r1   r   r+  )r!  r#  r5   r6   r6   r7   test_permutation_test_iv  sP    2((:&::::::z,TestPermutationTest.test_permutation_test_ivr.   ru  )pairingssamplesindependentc           	         s  | j d}| j d} fdd d _d _d|dd}tj||f fd|dd	|}t jd
 t jd d _tj||f fd|dd	|}t jd t jd d _tj||f fd|dd	|}t jd t jd t|j|j t|j|j d S )Nr)   c                    sN   | j dkrdnt| }t| j _  jd7  _tj| |dtj||d S r-  )r   rX   r   r.  r/  r2   r3   )rG   rN   r   r.  r   r6   r7   rm   S  s    z1TestPermutationTest.test_batch.<locals>.statisticr   r   T)r"   ru  r   r   )r&   r.   r1  r   r   r
   )r   r@   r/  r.  r   r   r   r   )	r!  ru  r.   rG   rN   r  rH   rI   r2  r6   r   r7   r3  I  sB    zTestPermutationTest.test_batchzpermutation_type, exact_sizerw  r   r
   )rx  r  ry  r   c           	      C   s   | j d}| j d}dd }|dd}tj||f|fd|dd|}t|jjd tj||f|fi |}t|jj| d S )Nr   c                 S   s   t j| |dt j||d S r[   r   rM   r6   r6   r7   rm   }  s    z8TestPermutationTest.test_permutations.<locals>.statisticT)ru  r   r   )r"   r.   )r   r@   r   r   r   rj  rh   )	r!  ru  Z
exact_sizer.   rG   rN   rm   r  rT   r6   r6   r7   test_permutationsq  s    	z%TestPermutationTest.test_permutationsc                 C   s   d\}}d\}}}t || ||ks*J tjj|d}tjj|d}||f}dd }	ddd||d	}
t||	fd
|i|
}t||	fd
tji|
}|j|jksJ t	|j
|j
dd d S )N)rs   r   )r  	   i]  r   c                 S   s   t j| |dt j||d S r[   r   rM   r6   r6   r7   rm     s    zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statisticTry  r?   r   ru  r&   ru   r.   r"   rg  rp   )r	   binomr   rx   ry   r   r2   infrm   r   r   r!  ru   r   nxnypermutationsrG   rN   rl   rm   r  rT   rI   r6   r6   r7   'test_randomized_test_against_exact_both  s     
z;TestPermutationTest.test_randomized_test_against_exact_bothc                 C   s   d\}}d\}}}d| |ks"J t jj|d}t jj|d}||f}dd }	ddd	||d
}
t||	fd|i|
}t||	fdtji|
}|j|jksJ t|j|jdd d S )N)rv   N)r   r   i }  r
   r   c                 S   s   t j| | |dS r[   r   rM   r6   r6   r7   rm     s    zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statisticTrx  r?   r|  r"   rg  rp   )	r   rx   ry   r   r2   r~  rm   r   r   r  r6   r6   r7   *test_randomized_test_against_exact_samples  s     
z>TestPermutationTest.test_randomized_test_against_exact_samplesc                    s   d| j  }}d\}}}t||ks(J tjj|d}tjj|d |g} fdd}t|}	ddd||d	}
t||	fd
|i|
}t||	fd
t	j
i|
}|j|jksJ t|j|jdd d S )NrD  )r  r  i@  r   c                    s   t |  d S Nr   r   Zpearsonrr   rN   r6   r7   r?    s    zTTestPermutationTest.test_randomized_test_against_exact_pairings.<locals>.statistic1dTrx  r?   r|  r"   rg  rp   )r   r	   	factorialr   rx   ry   r   r  r   r2   r~  rm   r   r   )r!  ru   r   r  r  r  rG   rl   r?  rm   r  rT   rI   r6   r  r7   +test_randomized_test_against_exact_pairings  s"    

z?TestPermutationTest.test_randomized_test_against_exact_pairingsru   r8  r  )r   g    eAr   r<   c              	   C   s   t dddd}t t dd d d d f d|}t jd}tj||||||d}dd	 }t jd}	t||f|d
||||	d}
t	|j
|
j
| jd t	|j|
j| jd d S )N<   r   r   rd   r   l   ;WNa )r  r   r.   ru   c                 S   s   t j| ||djS r[   r]  rM   r6   r6   r7   rm     s    zETestPermutationTest.test_against_permutation_ttest.<locals>.statisticTr   r"   ru   r   r.   rn   )r2   rW   r`   Zmoveaxisr@   rw   r   r^  r   r   rm   ro   r   )r!  ru   r  r   rG   rN   r   rH   rm   r   rI   r6   r6   r7   test_against_permutation_ttest  s    
"z2TestPermutationTest.test_against_permutation_ttestrC  c                    s   | j jddd}| j jdddd}tj|| dd} fd	d
}t||f|tjd| j d}t|j|j| j	d t|j
|j
| j	d d S )Nr   r   rh   rg   rd   r   )rh   rf   rg   exact)ru   r<  c                    s   t j| |d djS r:  )r   ks_2samprm   r&  r)  r6   r7   r?    s    
z>TestPermutationTest.test_against_ks_2samp.<locals>.statistic1drv   r"   ru   r.   rn   )r   r_  r   r  r   r2   r~  r   rm   ro   r   )r!  ru   rG   rN   r   r?  rT   r6   r)  r7   test_against_ks_2samp  s    z)TestPermutationTest.test_against_ks_2sampc           	      C   s   | j jddd}| j jddd}dddd	}|| }tj|||d
}dd }t||f|tj|| j d}t|j|j| j	d t|j
|j
| j	d d S )Nr   r   r  rd   r   rv   rs   rD  rC  r)  c                 S   s   t | |jS rP   r   ansarirm   r&  r6   r6   r7   r?    s    z<TestPermutationTest.test_against_ansari.<locals>.statistic1dr  rn   )r   r_  r   r  r   r2   r~  r   rm   ro   r   )	r!  ru   rG   rN   Zalternative_correspondenceZalternative_scipyr   r?  rT   r6   r6   r7   test_against_ansari  s    z'TestPermutationTest.test_against_ansaric              	   C   s   t jjdd| jd}t jjdd| jd}t j||d|d}dd }t||f|d	tj|d| jd
}t|j	|j	| j
d t|j|j| j
d d S )N)r   rd   r
   r   rh   rf   r.   皙?r   rf  c                 S   s   t j| ||djS r[   )r   mannwhitneyurm   rM   r6   r6   r7   rm   0  s    z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statisticTr  rn   )r   uniformry   r   r  r   r2   r~  r   rm   ro   r   )r!  ru   rG   rN   r   rm   rT   r6   r6   r7   test_against_mannwhitneyu(  s    z-TestPermutationTest.test_against_mannwhitneyuc                 C   s   t jjdd| jd}t jjddd| jd}t j||dd}d	d
 }t||f|tjd| jd}t|j	|j	| j
d t|j|j| j
d d S )Nr   r   )rh   rg   r.   rd   r   )rh   rf   rg   r.   r  r'   c                 S   s   t j| |ddjS N
asymptoticr'   )r   cramervonmises_2samprm   r&  r6   r6   r7   r?  A  s    z9TestPermutationTest.test_against_cvm.<locals>.statistic1drv   r  rn   )r   rx   ry   r   r  r   r2   r~  r   rm   ro   r   )r!  rG   rN   r   r?  rT   r6   r6   r7   test_against_cvm:  s    z$TestPermutationTest.test_against_cvm)rK   r
   c                 C   s.  t jd}|jdd}|jdd}|jdd}|||f}dd }dd	 }t|}	t|}
t |d
}t |d}t |d}|	||||d}|
||||d}d|dd| jd}t||fdt ji|}t||fddi|}t	|j
|| jd t	|j
|j
| jd t	|j|dd t	|j|jdd d S )Nl   Y}y!dh r   r   )r   r   r
   )r
   r   r   c                  W   s   t j|  jS rP   )r   kruskalrm   rl   r6   r6   r7   r?  ^  s    zITestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.statistic1dc                  W   s   t j|  jS rP   )r   r  r   r  r6   r6   r7   pvalue1da  s    zFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1d)r
   r   r   )r
   r   r
   r5  r   Frv   ry  r   r   ru   ru  r.   r"   r   rn   gQ?rp   r   )r2   r@   rw   r   r  r_   r   r   r~  r   rm   ro   r   )r!  r   r   rG   rN   r\   rl   r?  r  rm   r   Zx2r   Zz2expected_statisticexpected_pvaluer  rT   rI   r6   r6   r7    test_vectorized_nsamp_ptype_bothL  s.    


z4TestPermutationTest.test_vectorized_nsamp_ptype_bothc                    s  t jjdd| jd}t jjdd| jd}dd }dd } fd	d
}t|}|||dd}|d }	|d }
dd d| jtjd}t|| f|fi |}t||f|fi |}t	|j
|j
| jd  dkrt	|j
|	| jd t	|j|
| jd t	|j|j| jd d S )N)r   r   r
   r   r  r  c                 S   s   t j| ddjS Nrs   r)  r   wilcoxonrm   )r\   r6   r6   r7   statistic_1samp_1d  s    zETestPermutationTest.test_against_wilcoxon.<locals>.statistic_1samp_1dc                 S   s   t j| |ddjS r  r  r&  r6   r6   r7   statistic_2samp_1d  s    zETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1dc                    s   t j| | dS )Nr)  )r   r  r&  r)  r6   r7   test_1d  s    z:TestPermutationTest.test_against_wilcoxon.<locals>.test_1dr   r   Frx  )r   r   ru   ru  r.   r"   rn   rD  )r   r  ry   r   r   r  r2   r~  r   r   rm   ro   r   )r!  ru   rG   rN   r  r  r  testr   rW  rX  r  rH   rI   r6   r)  r7   test_against_wilcoxon|  s(    
z)TestPermutationTest.test_against_wilcoxonc           	   	   C   s   | j jdddd}d||dk< ddd}||dd  }}}tj||||d	}tj|f|d
dtj| j |d}t|j|j| j	d d S )Nr   r
   r)   r   rK   c                 S   s   t j| dk|dS )Nr   r   r2   r   r   r6   r6   r7   rm     s    z=TestPermutationTest.test_against_binomtest.<locals>.statisticr   r)  Trx  )r   ru  r"   r.   ru   rn   )r   )
r   Zintegersr   r   r   r2   r~  r   r   ro   )	r!  ru   rG   rm   krY   r   r   rT   r6   r6   r7   test_against_binomtest  s    
z*TestPermutationTest.test_against_binomtestc                    s   | j jdd}|| j jdd  tj| dd} fdd}t|f|dtj| j d}t|j|j| j	d	 t|j
|j
| j	d	 d S )
Nr   r   r  r'   c                    s   t j|  ddjS r  )r   
kendalltaurm   r   r  r6   r7   r?    s    z@TestPermutationTest.test_against_kendalltau.<locals>.statistic1drw  )ru  r"   r.   rn   )r   r_  r   r  r   r2   r~  r   rm   ro   r   )r!  rG   r   r?  rT   r6   r  r7   test_against_kendalltau  s    
z+TestPermutationTest.test_against_kendalltauc                    s    fdd}t jd}|ddkt}|dd|  dkt tj| d }t|f|dt j	||d	}tj
||d
}t|j|d  d S )Nc                    s   t | dk dk@ S r%  r  r   r  r6   r7   rm     s    z@TestPermutationTest.test_against_fisher_exact.<locals>.statisticl   	(yM4 r\  g333333?g      ?r   rw  )ru  r"   ru   r.   r)  )r2   r@   rw   Zastypefloatr   ZcontingencyZcrosstabr   r~  Zfisher_exactr   r   )r!  ru   rm   r   rG   tabrT   rI   r6   r  r7   test_against_fisher_exact  s    
z-TestPermutationTest.test_against_fisher_exact)r   r   c                 C   s>  | j jdd}| j jdd}| j jdd}tj||d}tj||d}tj||d}|d }|||f}dd }d	d
 }t|}t|}	|tj| d|i}
|	tj| d|i}d|dddd}t||fdtj	i|}t||fddi|}t
|j|
| jd t
|j|j| jd t
|j|| jd t
|j|jdd d S )N)r
   r   r   r   )r   r   r   )r
   r   r   r   r   c                  W   s   t j| dddjS )NTr  Zrankedr(   )r   page_trend_testrm   r  r6   r6   r7   r?    s    zLTestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.statistic1dc                  W   s   t j| dddjS )NTr  r  )r   r  r   r  r6   r6   r7   r    s    zITestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.pvalue1dr   Frv   rw  r  r"   re   rn   r   rp   )r   r@   r   Zrankdatar   r  r2   Zbroadcast_arraysr   r~  r   rm   ro   r   )r!  r   rG   rN   r\   rl   r?  r  rm   r   r  r  r  rT   rI   r6   r6   r7   #test_vectorized_nsamp_ptype_samples  s.    	


z7TestPermutationTest.test_vectorized_nsamp_ptype_samplesr   )r   r
   g      @g?g?g&_?g      @gd~$I"@glu?)rG   rN   expected_lessexpected_2sidedexpected_Pr_gte_S_meanr  expected_avgexpected_std)o   k   r?   r   rc  j   m   l   )	r  r  r  b   i   rd  n   r  r   gd?gd?gYo5 ?g     @@@g{C@gDmFA@casec                 C   sT  |d }|d }|d }|d }|d }|d }|d }|d }	d	d
 }
t j H}|td t||f|
t jdd}t||f|
t jdd}W d   n1 s0    Y  t|j|| j	d t|j
|dd t|j
|dd t|j |dd t|j |	dd |j}|j }t|j}t t |j| t || k| }t|| dS )a  
        Results above from SAS PROC NPAR1WAY, e.g.

        DATA myData;
        INPUT X Y;
        CARDS;
        1 1
        1 2
        1 3
        1 4
        2 1.5
        2 2
        2 2.5
        ods graphics on;
        proc npar1way AB data=myData;
            class X;
            EXACT;
        run;
        ods graphics off;

        Note: SAS provides Pr >= |S-Mean|, which is different from our
        definition of a two-sided p-value.

        rG   rN   r  r  r  r  r  r  c                 S   s   t | |jS rP   r  r&  r6   r6   r7   r?  >  s    z7TestPermutationTest.test_with_ties.<locals>.statistic1dz$Ties preclude use of exact statisticrs   )r"   ru   rD  Nrn   g|=rp   gư>)r2   testingr   rS  UserWarningr   r~  r   rm   ro   r   rj  r3   r|   rX   r   r   )r!  r  rG   rN   r  r  r  r  r  r  r?  rV  rT   rI   Sr3   rY   ZPr_gte_S_meanr6   r6   r7   test_with_ties  s>    $

z"TestPermutationTest.test_with_tieszalternative, expected_pvalue))rs   g?)rv   gOO?)rD  g<OO?c                    s\   g d}g d d} fdd}t |f|dtj|d}t|j|| jd t|j|d	d
 dS )aU  
        Results above from R cor.test, e.g.

        options(digits=16)
        x <- c(1.76405235, 0.40015721, 0.97873798,
               2.2408932, 1.86755799, -0.97727788)
        y <- c(2.71414076, 0.2488, 0.87551913,
               2.6514917, 2.01160156, 0.47699563)
        cor.test(x, y, method = "spearm", alternative = "t")
        )g@9?gY,?gOQ?g[iY@g|?g鈶BE)gQGn@gU?gz˱@?gmGA6@gB @g˭?g?c                    s   t |  jS rP   )r   Z	spearmanrrm   r   r  r6   r7   r?  o  s    zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1drw  )ru  r"   ru   rn   gvIh%<=rp   N)r   r2   r~  r   rm   ro   r   )r!  ru   r  rG   r  r?  rT   r6   r  r7   test_against_spearmanr_in_RV  s    
z/TestPermutationTest.test_against_spearmanr_in_Rr&   )rK   r   c                 C   sF   t jtdd$ ttg d| W d    n1 s80    Y  d S )Nz`batch` must be positive.r   r   )r/   r0   r1   ra   r   _batch_generator)r!  r&   r6   r6   r7   test_batch_generator_ivx  s    z+TestPermutationTest.test_batch_generator_ivr   )r   r   rd   r  r\  ziterable, batch, expectedc                 C   s    t t||}||ksJ d S rP   )ra   r   r  )r!  iterabler&   r   gotr6   r6   r7   test_batch_generator  s    z(TestPermutationTest.test_batch_generatorc           	      C   s   g d}g d}dd }t j||f|ddd}|j|j|j  }}}dt||d	 k t| }||  krvd
ks|n J d S )N)r   r
   r   r   )r
   r   r   r  c                 S   s   t | |d S r  r  r&  r6   r6   r7   rm     s    zFTestPermutationTest.test_finite_precision_statistic.<locals>.statisticFrw  )r   ru  r
   r   gUUUUUU?)r   r   rm   r   rj  r2   r   rX   )	r!  rG   rN   rm   rT   rr   nullZ	correct_pr6   r6   r7   rl    s    z3TestPermutationTest.test_finite_precision_statisticN)+rm  rn  ro  ro   rt  rv  r/   rp  rq  r2   r@   r   rw   r3  r	   r  r}  rz  r  slowr  r  r  r  r  r  r  Zxslowr  r  r  r  r  r  Z
tie_case_1Z
tie_case_2r  r  r  r   Zbatch_generator_casesr  rl  r6   r6   r6   r7   rs  
  s   6$



.
%

+<


rs  c                     s   t jg dtd t  } t }d}t D ]8}|d7 }t || d d }|t	dd |D  q0t 
 fddtt d D }t|| tt|| d S )	N)r   r
   r   )Zdtyper   r   rK   c                 S   s   g | ]}t |qS r6   )	frozensetr   rQ   r6   r6   r7   
<listcomp>  r   z4test_all_partitions_concatenated.<locals>.<listcomp>c              	      s4   g | ],}t t |d  t |d d  qS r%  )r	   r}  r   r  rY   r6   r7   r    s   )r2   r   intZcumsumsetr   Z_all_partitions_concatenatedsplitaddr4   prodr   rX   r   )ncZall_partitionsr/  Zpartition_concatenatedZpartitioningr   r6   r  r7    test_all_partitions_concatenated  s    

r  fun_namer   r   r   c                    s   t jd  jdd fdd}f ddf dd	|d
d}ddi}tt| }||  }|| fdd}|f |d d| |f |dd| dd }|f |d d| |f |dd| d S )Nl   r: r)   r   c                    s   t jj|  dS )Nr   )r   rx   ry   r   ri  r6   r7   ry     s    z&test_parameter_vectorized.<locals>.rvsr:   )rl   r.   r(   rx  )rl   r.   ru  )r   ry   r  r"   r?   c                    s(   | j dkst|  sJ tj| |dS r-  )r   r2   r   r3   r   )r   r6   r7   rm     s    z,test_parameter_vectorized.<locals>.statistic)rm   r   Tc                 S   s   | j dksJ t| S r%  )r   r2   r3   r   r6   r6   r7   rm     s    F)r2   r@   rw   r   r   r~   )r  ry   Zfun_optionsZcommon_optionsrR  optionsrm   r6   )r   r   r7   test_parameter_vectorized  s*    

r  )9numpyr2   r/   Zscipy.statsr   r   r   Znumpy.testingr   r   r   Zscipyr   r	    r   Zscipy._lib._utilr   Zscipy.optimizer   r8   rp  rq  rJ   rZ   rc   rr  r   Ztests_Ritemsr   Ztests_against_itself_1sampr   r   r   Ztests_against_itself_2sampr   r   r   r   r   r   r   r   r   r   r  r  r  r  r  filterwarningsr  r  rs  r  r  r6   r6   r6   r7   <module>   s   ?
+

:
%
.








&  4     