a
    Qe                    @   sV  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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.d/gejdd d0gd1d2 Z$ej%d3ejdg dejdd d0gd4d5 Z&ejdg dd6d7 Z'ejdg dd8d9 Z(d:d; Z)ejd<d d=gd>d? Z*ejdg dd@dA Z+dBdC Z,ejdDdEdFgdGdH Z-ejdIg dJejdg ddKdL Z.dMdN Z/ejdg ddOdP Z0ejdg ddQdR Z1ejj2ej3dSdTdU Z4G dVdW dWZ5G dXdY dYZ6dZd[ Z7ejd\g d]d^d_ Z8dS )`    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   U/var/www/sunrise/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   c           	      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   )Z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(   rngrk   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?rm   )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   rl      s    z1test_multisample_BCa_against_R.<locals>.statisticl   tgy4r9   r?   )r(   r&   r.   r:   Zbcag1*g333333ÿg333333?Q?)r2   r@   rv   r   r   r3   rC   abs)rG   rN   rl   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   rl   #  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\   rl   rk   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   rl   r   r"   r&   r(   r   皙?r2   r@   rA   r   rw   r3   rx   r   rC   sum	binomtestpvalue)r(   r   rY   r"   r   r   	stat_truen_replicationsrk   rT   cici_contains_truer   r6   r6   r7   #test_bootstrap_against_itself_1samp2  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_statl  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   rk   r6   r   r7   rl     s    z2test_bootstrap_vectorized_3samp.<locals>.statisticc                     s&   | D ]}|j dksJ q | ddiS Nr   r   r   ndimrk   r   rl   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   rl     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(   rk   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@   rv   r   rw   rx   r   r   r   rC   rF   
isinstancefloat64)r(   r~   r   rk   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@   rv   r   rw   rx   minr   rC   rD   r   maxr   rE   )r~   r   rk   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*   +=rm   )	r2   r@   rv   r   r   r3   r   rF   rC   )r   r~   rG   r   r   Zn3rT   r   r6   r6   r7   test_re_bootstrap  s*    
r   c                 C   s.  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 t
|jj|jj 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   )rk   rl   r.   r   r   r   r   rq   ri   rr   rs   ru   z`alternative` must be one ofr   rt   z	ekki-ekki)r2   r@   rv   r   rw   rx   r|   r{   r   r}   r   rC   rE   rD   ZisneginfZisposinfr/   r0   r1   )r(   r~   r   rk   r   ry   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RandomStaterv   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   Zjsr   r6   r6   r7   test_bootstrap_resample6  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_posX  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_scoreP  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_axis`  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   w  r   z>test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>r   r   r6   r   r7   rl   u  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   y  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_statisticq  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{   )rk   r   r6   r6   r7   rl     s    z/test_vector_valued_statistic.<locals>.statisticrK   '     )r(   r   r"   r&   r   r   Z   r?   r
   r?   )r
   r?   r  )r2   r@   rv   r   rw   rx   r   r   rC   rD   TrE   allr^   rF   r]   )r(   r~   paramsr   rl   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   rl     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   ro   )
r2   r@   rv   r   r	  r   r   rC   rD   rE   )r~   r  rk   rT   r   r6   )r  rl   r7   $test_vector_valued_statistic_gh17715  s&    r  c                
   @   s4  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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   rx     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   skewnormrl   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   rt   )
r2   zerosr   rw   rx   r/   r0   r1   r   	TypeError)r   r"  r5   rk   rx   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   skewtestrl   )rG   r   r-  r   r6   r7   rl     s    z:TestMonteCarloHypothesisTest.test_batch.<locals>.statisticr   r   T)r   rl   r"   r   i"rx   r&   r     r   r   r
   )r2   r@   rv   r.  r-  rx   r   rw   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   r/  rl   r   r6   r6   r7   rl   E  s    z9TestMonteCarloHypothesisTest.test_axis.<locals>.statisticTi N  )r   r"   r   ro   )r2   r@   rv   rx   r   rw   r/  r   r   rl   r   rp   )	r   r   r~   norm_rvsrh   rG   r   rl   rT   r6   r6   r7   	test_axis9  s    

z&TestMonteCarloHypothesisTest.test_axisrt   rr   ru   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)modert   )r   ks_1samprw   cdfrl   r   r(  r6   r7   statistic1dW  s    zGTestMonteCarloHypothesisTest.test_against_ks_1samp.<locals>.statistic1dr   Fr"   r   rt   ru   ro   rr   r   )r2   r@   rv   r   r!  rx   r<  rw   r=  r   r   rl   r   rp   )	r   rt   rR   r~   rG   r   r>  r5  rT   r6   r(  r7   test_against_ks_1sampN  s    z2TestMonteCarloHypothesisTest.test_against_ks_1samphypotestrr   ru   	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	   r8  r(  c                    s    | |dj S r[   r   r   rA  r6   r7   rl   p  s    zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statisticTr   rt   ro   )r2   r@   rv   r   r!  rx   rw   r   r   rl   r   rp   )
r   rA  rt   rR   r~   rG   r   rl   r5  rT   r6   rE  r7   test_against_normality_testsf  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 rD  r8  c                 S   s   t j| |djS r[   )r   
normaltestrl   r   r6   r6   r7   rl     s    zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statisticTru   rF  ro   )r2   r@   rv   r   r!  rx   rH  rw   r   r   rl   r   rp   )r   rR   r~   rG   r   rl   r5  rT   r6   r6   r7   test_against_normaltestz  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   r8  c                 S   s   t | t jjjS rP   )r   cramervonmisesrw   r=  rl   r   r6   r6   r7   r>    s    zMTestMonteCarloHypothesisTest.test_against_cramervonmises.<locals>.statistic1dr   Fru   r?  ro   )r2   r@   rv   r   r!  rx   rJ  rw   r=  r   r   rl   r   rp   )r   rR   r~   rG   r   r>  r5  rT   r6   r6   r7   test_against_cramervonmises  s    z8TestMonteCarloHypothesisTest.test_against_cramervonmises	dist_name)rw   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@   rv   r   tukeylambdarx   andersonrl   Zcritical_values)rR   r~   rG   r   rL  rQ   r6   r7   fun  s    z?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.funr   )Zx0rM  r?   r   c                    s   t |  jS rP   )r   rO  rl   r   )rL  r6   r7   r>    s    zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1dr   Fru   r?  r
   ro   )r   filterRuntimeWarningr   successrG   r2   r@   rv   r   rN  rx   rO  rl   Zsignificance_levelr   r   r   r   rp   )r   rL  rQ   rQ  supZsolrR   r~   rG   r   expected_stat
expected_pr>  Zdist_rvsrT   r6   rP  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?   Trr   rF  g-C6?)r2   r@   rv   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_indrl   rM   r6   r6   r7   rl     s    zFTestMonteCarloHypothesisTest.test_against_ttest_ind.<locals>.statisticrK   r   r   r   g{Gz?rm   )
r2   r@   rv   normalr   r   r]  r   rl   r   r   r~   rk   rx   rl   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 )NrZ  r  r   )r
   e   )r
   f   )r
   g   c                 W   s   t j|d| ijS )Nr   )r   f_onewayrl   r  r6   r6   r7   rl     s    zETestMonteCarloHypothesisTest.test_against_f_oneway.<locals>.statisticrK   ru   r   rt   r   {Gz?ro   )
r2   r@   rv   r^  r   r   rd  r   rl   r   r_  r6   r6   r7   test_against_f_oneway  s    z2TestMonteCarloHypothesisTest.test_against_f_onewayN)__name__
__module____qualname__rp   rx   r+  r2  r/   markparametrizer   r6  r2   Zlinspacer@  r   r/  ZkurtosistestrG  rW   rI  rK  rX  rY  r`  rg  r6   r6   r6   r7   r    s.   :%


*	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@   rv   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.   ro  )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   rl   <  s    z1TestPermutationTest.test_batch.<locals>.statisticr   r   T)r"   ro  r   r   )r&   r.   r0  r   r   r
   )r~   r@   r.  r-  r   r   r   r   )	r   ro  r.   rG   rN   r  rH   rI   r1  r6   r   r7   r2  2  sB    zTestPermutationTest.test_batchzpermutation_type, exact_sizerq  r   r
   )rr  r  rs  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   rl   f  s    z8TestPermutationTest.test_permutations.<locals>.statisticT)ro  r   r   )r"   r.   )r~   r@   r   r   r   null_distributionrh   )	r   ro  Z
exact_sizer.   rG   rN   rl   r  rT   r6   r6   r7   test_permutationsZ  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)rr   r   )r  	   i]  r   c                 S   s   t j| |dt j||d S r[   r   rM   r6   r6   r7   rl     s    zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statisticTrs  r?   r   ro  r&   rt   r.   r"   rf  ro   )r	   binomr   rw   rx   r   r2   infrl   r   r   r   rt   r~   nxnypermutationsrG   rN   rk   rl   r  rT   rI   r6   r6   r7   'test_randomized_test_against_exact_bothz  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)ru   N)r   r   i }  r
   r   c                 S   s   t j| | |dS r[   r   rM   r6   r6   r7   rl     s    zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statisticTrr  r?   rw  r"   rf  ro   )	r   rw   rx   r   r2   ry  rl   r   r   rz  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 )NrC  )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>.statistic1dTrr  r?   rw  r"   rf  ro   )r~   r	   	factorialr   rw   rx   r   r  r   r2   ry  rl   r   r   )r   rt   r~   r{  r|  r}  rG   rk   r>  rl   r  rT   rI   r6   r  r7   +test_randomized_test_against_exact_pairings  s"    

z?TestPermutationTest.test_randomized_test_against_exact_pairingsrt   r7  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.   rt   c                 S   s   t j| ||djS r[   r\  rM   r6   r6   r7   rl     s    zETestPermutationTest.test_against_permutation_ttest.<locals>.statisticTr   r"   rt   r   r.   rm   )r2   rW   r`   Zmoveaxisr@   rv   r   r]  r   r   rl   rn   r   )r   rt   r}  r   rG   rN   r   rH   rl   r   rI   r6   r6   r7   test_against_permutation_ttest  s    
"z2TestPermutationTest.test_against_permutation_ttestrB  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)rt   r;  c                    s   t j| |d djS r9  )r   ks_2samprl   r%  r(  r6   r7   r>    s    
z>TestPermutationTest.test_against_ks_2samp.<locals>.statistic1dru   r"   rt   r.   rm   )r~   r^  r   r  r   r2   ry  r   rl   rn   r   )r   rt   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   ru   rr   rC  rB  r(  c                 S   s   t | |jS rP   r   ansarirl   r%  r6   r6   r7   r>    s    z<TestPermutationTest.test_against_ansari.<locals>.statistic1dr  rm   )r~   r^  r   r  r   r2   ry  r   rl   rn   r   )	r   rt   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   re  c                 S   s   t j| ||djS r[   )r   mannwhitneyurl   rM   r6   r6   r7   rl     s    z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statisticTr  rm   )r   uniformrx   r~   r  r   r2   ry  r   rl   rn   r   )r   rt   rG   rN   r   rl   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_2samprl   r%  r6   r6   r7   r>  *  s    z9TestPermutationTest.test_against_cvm.<locals>.statistic1dru   r  rm   )r   rw   rx   r~   r  r   r2   ry  r   rl   rn   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   kruskalrl   rk   r6   r6   r7   r>  G  s    zITestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.statistic1dc                  W   s   t j|  jS rP   )r   r  r   r  r6   r6   r7   pvalue1dJ  s    zFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1d)r
   r   r   )r
   r   r
   r4  r   Fru   rs  r   r   rt   ro  r.   r"   r   rm   gQ?ro   r   )r2   r@   rv   r   r  r_   r~   r   ry  r   rl   rn   r   )r   r   r~   rG   rN   r\   rk   r>  r  rl   r   Zx2r   Zz2expected_statisticexpected_pvaluer  rT   rI   r6   r6   r7    test_vectorized_nsamp_ptype_both5  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 Nrr   r(  r   wilcoxonrl   )r\   r6   r6   r7   statistic_1samp_1dm  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_1dq  s    zETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1dc                    s   t j| | dS )Nr(  )r   r  r%  r(  r6   r7   test_1dt  s    z:TestPermutationTest.test_against_wilcoxon.<locals>.test_1dr   r   Frr  )r   r   rt   ro  r.   r"   rm   rC  )r   r  rx   r~   r   r  r2   ry  r   r   rl   rn   r   )r   rt   rG   rN   r  r  r  testr   rV  rW  r  rH   rI   r6   r(  r7   test_against_wilcoxone  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   rl     s    z=TestPermutationTest.test_against_binomtest.<locals>.statisticr   r(  Trr  )r   ro  r"   r.   rt   rm   )r   )
r~   Zintegersr   r   r   r2   ry  r   r   rn   )	r   rt   rG   rl   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   
kendalltaurl   r   r  r6   r7   r>    s    z@TestPermutationTest.test_against_kendalltau.<locals>.statistic1drq  )ro  r"   r.   rm   )r~   r^  r   r  r   r2   ry  r   rl   rn   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   rl     s    z@TestPermutationTest.test_against_fisher_exact.<locals>.statisticl   	(yM4 r[  g333333?g      ?r   rq  )ro  r"   rt   r.   r(  )r2   r@   rv   Zastypefloatr   ZcontingencyZcrosstabr   ry  Zfisher_exactr   r   )r   rt   rl   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_testrl   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   Fru   rq  r  r"   re   rm   r   ro   )r~   r@   r   Zrankdatar   r  r2   Zbroadcast_arraysr   ry  r   rl   rn   r   )r   r   rG   rN   r\   rk   r>  r  rl   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   rb  j   m   l   )	r  r  r  b   i   rc  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 statisticrr   )r"   rt   rC  Nrm   g|=ro   gư>)r2   Ztestingr   rR  UserWarningr   ry  r   rl   rn   r   rt  r3   r{   rX   r   r   )r   r  rG   rN   r  r  r  r  r  r  r>  rU  rT   rI   Sr3   rY   ZPr_gte_S_meanr6   r6   r7   test_with_ties  s>    $

z"TestPermutationTest.test_with_tieszalternative, expected_pvalue))rr   g?)ru   gOO?)rC  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	spearmanrrl   r   r  r6   r7   r>  X  s    zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1drq  )ro  r"   rt   rm   gvIh%<=ro   N)r   r2   ry  r   rl   rn   r   )r   rt   r  rG   r  r>  rT   r6   r  r7   test_against_spearmanr_in_R?  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_iva  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_generatorj  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   rl   w  s    zFTestPermutationTest.test_finite_precision_statistic.<locals>.statisticFrq  )r   ro  r
   r   gUUUUUU?)r   r   rl   r   rt  r2   r   rX   )	r   rG   rN   rl   rT   rr   nullZ	correct_pr6   r6   r7   test_finite_precision_statisticp  s    z3TestPermutationTest.test_finite_precision_statisticN)+rh  ri  rj  rn   rn  rp  r/   rk  rl  r2   r@   r   rv   r2  r	   r  rx  ru  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  r  r6   r6   r6   r7   rm    s   6$



.
%

+<


rm  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	   rx  r   r  rY   r6   r7   r    s   )r2   r   intZcumsumsetr   Z_all_partitions_concatenatedsplitaddr4   prodr   rX   r   )Z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   rw   rx   r   )r~   r6   r7   rx     s    z&test_parameter_vectorized.<locals>.rvsr:   )rk   r.   r(   rr  )rk   r.   ro  )r   rx   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   rl     s    z,test_parameter_vectorized.<locals>.statistic)rl   r   Tc                 S   s   | j dksJ t| S r$  )r   r2   r3   r   r6   r6   r7   rl     s    F)r2   r@   rv   r   r   r}   )r  rx   Zfun_optionsZcommon_optionsrQ  optionsrl   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   rk  rl  rJ   rZ   rc   r   Ztests_Ritemsr   Ztests_against_itself_1sampr   r   r   Ztests_against_itself_2sampr   r   Zxfail_on_32bitr   r   r   r   r   r   r   r   r   r  r  r  r  filterwarningsr  r  rm  r  r  r6   r6   r6   r7   <module>   s   ?
+

:
%
.








&  !     