a
    ˆù»j* ã                   @   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 s¼0    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 �sš0    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 �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 �sÂ0    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 �s 0    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 �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)Úpairedú0`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   úGE:\soccer\ml_env\Lib\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   )Z
confidence)ÚdataÚ	statisticr"   r(   r.   r   gü©ñÒMb@?©Ú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‚   )g…ëQ¸Å7@gHáz®ÇS@)g\�Âõ(Ü<@g=
×£pU@)gHáz®'@@gìQ¸…Û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{®Gázt?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 sÐJ ‚|dksÜJ ‚t|ƒdk sìJ ‚d S )N)g’‘ÛbFè?gžpÀø³éâ?g—ò|ÂHÜ¿gxy[e}u×¿g*gÖï_Ö?ggiŸ·6ö¿gŒÎ2Žè?)gü´ÝFû–ö?gý÷àµKÛß?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sŒJ ‚t 
|||¡j}|dks¨J ‚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_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sÀJ ‚t 
||
|¡j}|dksÜJ ‚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   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ršt 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   ƒ q¸1 sŽ0    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ƒs–J ‚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   Ú
isinstanceZ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    ]ƒ4’Mþ 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â   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¡sØJ ‚t  |jj¡sêJ ‚tjtdd��( tjf i |¤ddi¤Ž W d   ƒ n1 �s(0    Y  d S )Nl   @Q´ixt r
   r   rª   r?   rØ   rK   )rk   rl   r.   r   r   r©   r   rq   ri   rr   rs   ru   rá   rm   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  	||¡sšJ ‚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í   Ú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ü   Z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   rl   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¡sŒJ ‚|jj	jdksžJ ‚|jjjdks°J ‚|jjdksÀJ ‚|jjdksÐJ ‚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                
   @   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   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 s²0    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¢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 �s�0    Y  d}tjt|d��. tg d¢gdd„ dd„ g|ƒ W d   ƒ n1 �sâ0    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 �sÂ0    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 �s¦0    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 )Niòt$ ©r
   r   r   r?   r«   r   c                 S   s   t j| |d�jS r[   )r   r.  rl   rÎ   r6   r6   r7   rl   I  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_axis=  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rŽt
|j|j| jd� n ˆ dkr®t
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   Ústatistic1d[  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=  r4  rT   r6   r'  r7   Útest_against_ks_1sampR  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	é–   r7  r'  c                    s   ˆ | |d�j S r[   rÊ   rÎ   ©r@  r6   r7   rl   t  s    zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statisticT©r   rt   ro   )r2   r@   rv   r   r   rx   rw   r   r   rl   r±   rp   )
r  r@  rt   rR   r~   rG   r�   rl   r4  rT   r6   rD  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¼ rC  r7  c                 S   s   t j| |d�jS r[   )r   Ú
normaltestrl   rÎ   r6   r6   r7   rl   †  s    zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statisticTru   rE  ro   )r2   r@   rv   r   r   rx   rG  rw   r   r   rl   r±   rp   )r  rR   r~   rG   r�   rl   r4  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û   r7  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   rI  rw   r<  r   r   rl   r±   rp   )r  rR   r~   rG   r�   r=  r4  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 sö0    Y  t|j|
ƒ t|j|d| j d� d S )Nc                    s:   t j d¡}tjj| d|d�}t |ˆ ¡}|j|jˆ  S )Né«x€r?   rØ   )	r2   r@   rv   r   Útukeylambdarx   Úandersonrl   Zcritical_values)rR   r~   rG   r�   ©rK  rQ   r6   r7   Úfun®  s    z?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.funr   )Zx0rL  r?   rØ   c                    s   t  | ˆ ¡jS rP   )r   rN  rl   rÏ   )rK  r6   r7   r=  Â  s    zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1dr»   Fru   r>  r
   ro   )r   ÚfilterÚRuntimeWarningr   ÚsuccessrG   r2   r@   rv   r   rM  rx   rN  rl   Zsignificance_levelrò   r   r   r±   rp   )r  rK  rQ   rP  ÚsupZsolrR   r~   rG   r�   Úexpected_statÚ
expected_pr=  Zdist_rvsrT   r6   rO  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   rE  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:f¡mP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{®Gáz”?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 )NrY  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   ç{®Gáz„?ro   )
r2   r@   rv   r]  r   r   rc  r   rl   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sˆJ ‚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	bernoullirx   r«   ©r~   r6   r7   rx   ý  s    zITestMonteCarloHypothesisTest.test_finite_precision_statistic.<locals>.rvsr?   rr   )rt   r"   g     ð?r   )
r2   r@   rv   r   r   r  r¯   Únull_distributionrl   r±   )r  r"   rx   rG   rT   Zc0Úc1r6   rg  r7   Útest_finite_precision_statisticö  s    ÿz<TestMonteCarloHypothesisTest.test_finite_precision_statisticN)Ú__name__Ú
__module__Ú__qualname__rp   rx   r*  r1  r/   ÚmarkÚparametrizerê   r5  r2   Zlinspacer?  r   r.  ZkurtosistestrF  rW   rH  rJ  rW  rX  r_  rf  Úxfail_on_32bitrj  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@   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 s€0    Y  t jt|d�� t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 �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 �s¢0    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 �s>0    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 �sÚ0    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.   rs  )Ú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  s    z1TestPermutationTest.test_batch.<locals>.statisticr   r»   T)r"   rs  r   r   )r&   r.   r/  r‰   r…   r
   )r~   r@   r-  r,  r   r   r   r±   )	r  rs  r.   rG   rN   r  rH   rI   r0  r6   rÊ   r7   r1  I  sB    ÿÿÿÿÿÿÿzTestPermutationTest.test_batchzpermutation_type, exact_sizeru  r   r
   )rv  r  rw  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   }  s    z8TestPermutationTest.test_permutations.<locals>.statisticT)rs  r   r   )r"   r.   )r~   r@   r   r   r   rh  rh   )	r  rs  Z
exact_sizer.   rG   rN   rl   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s¤J ‚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>.statisticTrw  r?   ©r   rs  r&   rt   r.   r"   re  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_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sœJ ‚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>.statisticTrv  r?   rz  r"   re  ro   )	r   rw   rx   r   r2   r|  rl   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s®J ‚t|j|jdd� d S )NrB  )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>.statistic1dTrv  r?   rz  r"   re  ro   )r~   r	   Ú	factorialr   rw   rx   r   r  r   r2   r|  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   r6  r€  )rû   g    eÍÍAr   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   ;WýN‡a )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_ttestrA  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 r8  )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   r|  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   rB  rA  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   r|  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   rd  c                 S   s   t j| ||d�jS r[   )r   Úmannwhitneyurl   rM   r6   r6   r7   rl   0  s    z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statisticTr‰  rm   )r   Úuniformrx   r~   r•  r   r2   r|  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=  A  s    ÿz9TestPermutationTest.test_against_cvm.<locals>.statistic1dru   rŽ  rm   )r   rw   rx   r~   rš  r   r2   r|  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!üdàh r   r«   )r   r   r
   )r
   r   r   c                  W   s   t j| Ž jS rP   )r   Úkruskalrl   ©rk   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
   r3  r   Fru   rw  ©r   r   rt   rs  r.   r"   r»   rm   g¸…ëQ¸®?ro   r•   )r2   r@   rv   r   r  r_   r~   r   r|  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_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rÞt	|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_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   Frv  )r   r   rt   rs  r.   r"   rm   rB  )r   r–  rx   r~   r   r  r2   r|  r   r   rl   rn   r±   )r  rt   rG   rN   r¦  r§  r¨  Útestr�   rU  rV  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   rl   «  s    z=TestPermutationTest.test_against_binomtest.<locals>.statisticrù   r'  Trv  )r   rs  r"   r.   rt   rm   )r   )
r~   Zintegersr   r°   r   r2   r|  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>.statistic1dru  )rs  r"   r.   rm   )r~   r]  r   r®  r   r2   r|  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 rZ  g333333ã?g      Ð?r   ru  )rs  r"   rt   r.   r'  )r2   r@   rv   ZastypeÚfloatr   ZcontingencyZcrosstabr   r|  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   ru  rŸ  r"   re   rm   r•   ro   )r~   r@   r   Zrankdatar   r  r2   Zbroadcast_arraysr   r|  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¢   ra  éj   ém   él   )	r¼  r¿  r½  éb   éi   rb  én   rÁ  r�   gðdòð×éÃ?gðdòð×éÓ?gYoã5 Ó?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 s 0    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   rB  Nrm   g»½×Ùß|Û=ro   g�íµ ÷Æ°>)r2   Ztestingr   rQ  ÚUserWarningr   r|  r   rl   rn   r±   rh  r3   r{   rX   r¯   r–   )r  rÃ  rG   rN   r   r¶  r·  r¸  r¹  rº  r=  rT  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   gš¥Oú¤Oª?)rB  g<«Oú¤Oº?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ü?gÅY�ü,œÙ?gÐîOÒQï?g[¡þiYí@g˜ï¦|„áý?géˆ¶BÜEï¿)gQ†Gn�¶@g›UŸ«­ØÏ?gzêË±@ì?gmìÈGA6@gºB�Â @g¬ÕË­‡Þ?gùŠ¯øŠ¯è?c                    s   t  | ˆ ¡jS rP   )r   Z	spearmanrrl   rÏ   r…  r6   r7   r=  o  s    zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1dru  )rs  r"   rt   rm   g‚vIhÂ%<=ro   N)r   r2   r|  r   rl   rn   r±   )r  rt   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  rZ  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   rl   Ž  s    zFTestPermutationTest.test_finite_precision_statistic.<locals>.statisticFru  )r   rs  r
   rá   gUUUUUUÕ?)r   r   rl   r±   rh  r2   r¯   rX   )	r  rG   rN   rl   rT   Úrr±   ÚnullZ	correct_pr6   r6   r7   rj  ‡  s    ÿz3TestPermutationTest.test_finite_precision_statisticN)+rk  rl  rm  rn   rr  rt  r/   rn  ro  r2   r@   rñ   rv   r1  r	   r†  r{  rx  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Ì  rj  r6   r6   r6   r7   rq  
  s¢   6ÿÿ$ÿþÿ



.
%

+ûú<ÿ

þÿ
rq  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   rw   rx   r«   rg  r6   r7   rx   ¼  s    z&test_parameter_vectorized.<locals>.rvsr:   )rk   r.   r(   rv  )rk   r.   rs  )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_optionsrP  Ú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   rn  ro  rJ   rZ   rc   rp  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  rq  rÚ  rÞ  r6   r6   r6   r7   Ú<module>   s²   ?
+
þ
þ:ÿ
%ÿÿ
.








&  4     ÿ