U
    Q»{jd ã                   @   sX  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dddg¡ej dd ddg¡dd„ ƒƒZej ddddg¡dd„ ƒZej ddddg¡ej dd ddg¡ej dddg¡dd„ ƒƒƒZej ddddg¡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/d0„ ƒZ#ej dddg¡ej dd dg¡d1d2„ ƒƒZ$ej %d3¡ej ddddg¡ej dd dg¡d4d5„ ƒƒƒZ&ej ddddg¡d6d7„ ƒZ'ej ddddg¡d8d9„ ƒZ(d:d;„ Z)ej d<d d=g¡d>d?„ ƒZ*d@dA„ Z+ej dBdCdDg¡dEdF„ ƒZ,ej dGd dHdg¡ej dd ddg¡dIdJ„ ƒƒZ-dKdL„ Z.ej dd ddg¡dMdN„ ƒZ/ej ddddg¡dOdP„ ƒZ0ejj1ej 2dQ¡dRdS„ ƒƒZ3G dTdU„ dUƒZ4G dVdW„ dWƒZ5dXdY„ Z6ej dZd[d\d]g¡d^d_„ ƒZ7dS )`é    N)Ú	bootstrapÚmonte_carlo_testÚpermutation_test)Úassert_allcloseÚassert_equalÚsuppress_warnings)Ústats)Úspecialé   )Ú_resampling)Úrng_integers)Úrootc               	   C   s  d} t jt| d�� tdtjƒ W 5 Q R X d} t jt| d�� ttƒ tjƒ W 5 Q R X d} t jt| d�� tdddgdgftjƒ W 5 Q R X d} t jt| d��( tdddgdddd	gftjd
d� W 5 Q R X d} t jt| d�� tdtjdd� W 5 Q R X d} t jt| d�� tdddgftjdd� W 5 Q R X d} t jt| d�� tdddgftjdd� W 5 Q R X d} t jt| d�� tdddgftjdd� W 5 Q R X d} t jt| d�� tdddgftjdd� W 5 Q R X d} t jt| d�� tdddgftjdd� W 5 Q R X d} t jt| d�� tdddgftjdd� W 5 Q R X d} t jt| d�� tdddgftjdd� W 5 Q R X d} t jt| d�� tdddgftjdd� W 5 Q R X d } t jt| d�� tdddgftjd!d� W 5 Q R X d"} t jt| d�� tdddgftjd#d$� W 5 Q R X 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
   é   z=When `paired is True`, all samples must have the same length é   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© r4   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/scipy/stats/tests/test_resampling.pyÚtest_bootstrap_iv   sZ    ","""""""""r6   r&   ÚbasicÚ
percentileÚBCar   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    )r0   ÚrandomÚseedÚrandr   r1   r   Úconfidence_intervalÚlowÚhighÚstandard_error)r&   r   ÚxÚres1Úres2r4   r4   r5   Útest_bootstrap_batchK   s      ÿ  ÿrG   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   ©r1   ©rD   Úyr   r4   r4   r5   Úmy_statisticd   s    z+test_bootstrap_paired.<locals>.my_statisticc                    s   ˆ|  }ˆ|  }ˆ ||ƒ}|S ©Nr4   )Úir   ÚaÚbÚres©rL   rD   rK   r4   r5   Úmy_paired_statisticg   s    
z2test_bootstrap_paired.<locals>.my_paired_statisticr+   T)r   r,   )rH   )rH   )
r0   r=   r>   r?   ÚarangeÚlenr   r   r@   rC   )r&   ÚnrS   rN   rE   rF   r4   rR   r5   Útest_bootstrap_paired\   s    
rW   r   TFc              	   C   sT  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szt‚d	d	d	g}
||
|< 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   rH   c                 S   s$   | j |d�|j |d� |j |d� S ©Nr   rI   )rD   rK   Úzr   r4   r4   r5   rL   €   s    z/test_bootstrap_vectorized.<locals>.my_statistic)r'   r:   r;   r<   )r   r&   r,   r   r    )r<   r   )rH   )r0   r=   r>   r?   r   Úbootstrap_distributionÚshaperC   ÚAssertionErrorÚbroadcast_toÚreshaper   r@   rA   rB   ÚlistÚpopr   )r&   r   r   rL   r[   Z	n_samplesrD   rK   rY   rE   r^   rF   Zresult_shaper4   r4   r5   Útest_bootstrap_vectorizedv   sJ    
  ÿ
ÿ
  ÿÿÿ
ra   c                 C   sŒ   t jjddddd�}d}t jt|ƒd t |¡t  |¡d�}|j|d	�}| 	¡ }t
|ftjd|| dd
�}t|j|dd� t|j|dd� d S )Né   r
   éˆ  r   )ÚlocÚscaleÚsizer,   çffffffî?r   )Zdfrd   re   )Z
confidence)r    r   r&   r,   gü©ñÒMb@?©Úrtolga2U0*©3?©Úatol)r   ÚnormÚrvsÚtrU   r0   r1   ZsemÚintervalÚstdr   r   r@   rC   )r&   ÚdataÚalphaÚdistZexpected_intervalZexpected_serQ   r4   r4   r5   Útest_bootstrap_against_theory¤   s    $ þrt   )g…ëQ¸Å7@gHáz®ÇS@)g\�Âõ(Ü<@g=
×£pU@)gHáz®'@@gìQ¸…ÛV@)r7   r8   r9   zmethod, expectedc                 C   sT   t  dddddddddd	d
dddddg¡}t|ft jd| dd�}t|j|dd� d S )Nr'   r;   g      )@gÍÌÌÌÌÌ+@é   é   é   é   é"   é2   éQ   éY   éy   é†   éÕ   i@B r   )r    r&   r,   g{®Gázt?rh   )r0   Úarrayr   r1   r   r@   )r&   ÚexpectedrD   rQ   r4   r4   r5   Útest_bootstrap_against_R¹   s           ÿÿr‚   iô  iø  c                  C   s  dddddddg} dd	d
dddddg}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æt‚|dksòt‚t|ƒdk �st‚d S )Ng’‘Û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 rX   )r   Úskew)rD   rK   r   Ús1Ús2r4   r4   r5   Ú	statisticã   s    z1test_multisample_BCa_against_R.<locals>.statisticl   tgßy4r7   r<   )r&   r$   r,   r8   Zbcag1™*•Ôø¿g333333Ã¿g333333Ã?ç¸…ëQ¸ž?)	r0   r=   Údefault_rngr   r   r1   r@   Úabsr\   )rD   rK   r†   ÚrngZ	res_basicZres_percentZres_bcaZ	mid_basicZmid_percentZmid_bcaZ	mid_wbootZ
diff_basicZdiff_percentZdiff_bcar4   r4   r5   Útest_multisample_BCa_against_RÖ   sF      ÿ   ÿ ÿ ÿ ÿr‹   c                  C   sŒ   t  ddddddddd	g	¡} t  d
ddddddg¡}ddd„}|| g}t ||¡}d}d}|j}d}t ||||||¡\}	}	}
t|
dƒ d S )Nr'   é   é   é(   é.   rz   é4   éh   é’   é   rx   é&   é^   éc   é�   éÅ   r   c                 S   s   t j| |d�t j||d� S rX   ©r0   r1   )rY   rK   r   r4   r4   r5   r†     s    z:test_BCa_acceleration_against_reference.<locals>.statisticrH   rg   r<   gÄËe{‹†?)r   )r0   r€   r   r   rZ   r   Z_bca_intervalr   )rK   rY   r†   rq   rQ   r   rr   Ztheta_hat_br$   Ú_Za_hatr4   r4   r5   Ú'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Œt
‚t |||¡j}|dks¨t
‚d S )Nr   r<   éç  çÍÌÌÌÌÌì?rb   r   ©rd   re   iÐ  ©rf   rz   rH   ©r†   r   r    r$   r&   r   çš™™™™™¹?©r0   r=   r>   r   rl   r1   rm   r   r@   Úsumr\   Ú	binomtestÚpvalue)r&   r�   rV   r    r   rs   Ú	stat_trueÚn_replicationsrq   rQ   ÚciÚci_contains_truer¥   r4   r4   r5   Ú#test_bootstrap_against_itself_1samp)  s.    úÿrª   i|  iz  )r7   r8   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Àt
‚t ||
|¡j}|dksÜt
‚d S )Nr   r<   éx   rœ   r�   rH   c                 S   s$   t j| |d�}t j||d�}|| S rX   r™   )Údata1Údata2r   Zmean1Zmean2r4   r4   r5   Úmy_statc  s    z4test_bootstrap_against_itself_2samp.<locals>.my_statr   rž   r¡   éè  rŸ   rz   r    )rH   r¢   )r&   r�   Ún1Ún2r    r   r®   Zdist1Zdist2r¦   r§   r¬   r­   rQ   r¨   r©   r¥   r4   r4   r5   Ú#test_bootstrap_against_itself_2sampT  s6    
úÿ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 rM   rI   ©Ú.0Úsampler   r4   r5   Ú	<genexpr>‰  s     zEtest_bootstrap_vectorized_3samp.<locals>.statistic.<locals>.<genexpr>©r£   ©r   rq   r4   r   r5   r†   ‡  s    z2test_bootstrap_vectorized_3samp.<locals>.statisticc                     s&   | D ]}|j dkst‚qˆ | ddiŽS ©Nr   r   r   ©Úndimr\   ©rq   rµ   ©r†   r4   r5   Ústatistic_1d‹  s    z5test_bootstrap_vectorized_3samp.<locals>.statistic_1dr   rb   Tr<   )r   r   r    r&   r,   F©r0   r=   r>   r?   r   r   r@   rC   )r&   r   r¾   rD   rK   rY   rE   rF   r4   r½   r5   Ú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 rX   rI   ©rD   r   r4   r4   r5   r†   ¡  s    z2test_bootstrap_vectorized_1samp.<locals>.statisticc                    s   | j dkst‚ˆ | dd�S )Nr   r   r   rº   ©rD   r½   r4   r5   r¾   ¥  s    z5test_bootstrap_vectorized_1samp.<locals>.statistic_1dr   rb   Tr<   )r   r   r    r$   r&   r,   Fr'   )r   r¿   )r&   r   r¾   rD   rE   rF   r4   r½   r5   Útest_bootstrap_vectorized_1samp�  s$    
  þ  þrÃ   c              
   C   s    ddg }| dkrrt jdd��L d}tjtj|d��, t|gt j| d�}t|j	t j
t j
fƒ W 5 Q R X W 5 Q R X nt|gt j| d�}t|j	d	ƒ t|jd
ƒ d S )Né#   ç     ˆÃ@r9   Úignore)Úinvalidz0The BCa confidence interval cannot be calculatedr   r%   )rÅ   rÅ   r   )r0   Zerrstater-   Zwarnsr   ZDegenerateDataWarningr   r1   r   r@   ÚnanrC   )r&   rq   ÚmsgrQ   r4   r4   r5   Útest_bootstrap_degenerate¶  s    
*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–t‚d S )Nl   E<1

 r
   r   rž   r<   ©rf   r,   i[%  ©r&   r    r,   F)r&   r    r,   r   )r0   r=   rˆ   r   rl   rm   r   rƒ   r   r@   rC   Ú
isinstanceZfloat64r\   )r&   rŠ   rs   rq   rQ   Úrefr4   r4   r5   Ú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sdt
‚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Ë   r9   if  rÌ   )r0   r=   rˆ   r   rl   rm   Úminr   r@   rA   r\   r€   Úmaxr   rB   )rŠ   rs   rq   Ztrue_minrQ   rF   r4   r4   r5   Ú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ð rg   r8   )r    r,   r   r&   r�   r9   )r    r,   r   r&   r(   ç›+¡†›„=rh   )	r0   r=   rˆ   r   r   r1   r   rC   r@   )rÓ   rŠ   rD   r°   r±   Zn3rQ   rÎ   r4   r4   r5   Útest_re_boostrapê  s0     ÿ þ ÿ
ÿ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  	||¡s6t
‚q6t jttj|dd�ƒdd�}t  	||¡sšt
‚d S )	N©r   r   rb   é   r   rH   .r   r
   r#   éþÿÿÿ)r0   r=   r>   r?   Únextr   Z_jackknife_resampleÚrangeÚdeleteÚarray_equalr\   Zconcatenater_   )r[   rD   rK   rN   Úslcr�   Úy2r4   r4   r5   Útest_jackknife_resample  s    ÿrß   Úrng_nameÚRandomStaterˆ   c                 C   s¼   t tj| d ƒ}|d k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 |	|¡snt‚qnd S )Nz not available.r   r'   rÖ   r+   .rH   )Úgetattrr0   r=   r-   Úskipr>   r?   r   Z_bootstrap_resamplerÚ   r   rÜ   r\   )rà   rŠ   Úrng1Úrng2r    r[   rD   rK   rN   rÝ   Újsr�   r4   r4   r5   Útest_bootstrap_resample  s    rç   Úscoreç      à?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   rH   r   c                 S   s   t  tj|| |¡S rM   )r0   Zapply_along_axisr   Zpercentileofscore)rO   rè   r   r4   r4   r5   Úvectorized_pos9  s    z0test_percentile_of_score.<locals>.vectorized_posr<   çVçž¯Ò<)r0   r=   r>   r?   r   Z_percentile_of_scorer   )rè   r   r[   rD   Úprì   Zp2r4   r4   r5   Útest_percentile_of_score1  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   rH   r<   r   rí   )	r0   r=   r>   r?   r   Z_percentile_along_axisrÚ   r8   r   )r[   rD   ÚqrK   rN   rQ   r�   r4   r4   r5   Útest_percentile_along_axisA  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 rM   rI   r³   r   r4   r5   r¶   X  s     z>test_vectorize_statistic.<locals>.statistic.<locals>.<genexpr>r·   r¸   r4   r   r5   r†   V  s    z+test_vectorize_statistic.<locals>.statisticc                     s&   | D ]}|j dkst‚qˆ | ddiŽS r¹   rº   r¼   r½   r4   r5   r¾   Z  s    z.test_vectorize_statistic.<locals>.statistic_1dr   r   rb   r×   r   r   )r   Ú_vectorize_statisticr0   r=   r>   r?   r   )r   r¾   Z
statistic2rD   rK   rY   rE   rF   r4   r½   r5   Útest_vectorize_statisticR  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¡szt‚t  |dk¡sŒt‚|jj	jdksžt‚|jjjdks°t‚|jjdksÀt‚|jjdksÐt‚d S )Nl   s:â )r   ré   )r<   r<   rË   c                 S   s"   t  t  | |¡t j| |dd�g¡S )Nr   )Zddof)r0   Zasarrayr1   rp   )rq   r   r4   r4   r5   r†   {  s    ÿz/test_vector_valued_statistic.<locals>.statisticrH   é'  éÈ   )r&   r   r    r$   r   r   éZ   r<   )r
   r<   )r
   r<   rô   )r0   r=   rˆ   r   rl   rm   r   r£   r@   rA   ÚTrB   Úallr\   r[   rC   rZ   )r&   rŠ   Úparamsrµ   r†   rQ   Úcountsr4   r4   r5   Útest_vector_valued_statisticm  s&    
 ÿÿþrû   zignore::RuntimeWarningc                     sÆ   t j d¡} dd„ ‰ ‡ fdd„‰‡fdd„}dd	d	d
gd
dd
dgd	dd	d	gd	ddd	gd	ddd	gg}t  |¡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
   )r1   Úvar)rD   rK   r   ZxmZymZcovr4   r4   r5   Úconcordance–  s    

z9test_vector_valued_statistic_gh17715.<locals>.concordancec                    s"   | | }| | }t  ˆ |||ƒ¡S rM   )r0   Z
nan_to_num)ÚtpÚtnÚfpÚfnr   Úactualr�   )rý   r4   r5   r†   œ  s    z7test_vector_valued_statistic_gh17715.<locals>.statisticc                    s   ˆ || fžŽ t jdf S )N.)r0   Znewaxis)r   Úargsr½   r4   r5   Ústatistic_extradim¡  s    z@test_vector_valued_statistic_gh17715.<locals>.statistic_extradimr   r   r
   r   r×   r   é   T)r,   r   rí   rj   )
r0   r=   rˆ   r€   r÷   r   r   r@   rA   rB   )rŠ   r  rq   rQ   rÎ   r4   )rý   r†   r5   Ú$test_vector_valued_statistic_gh17715�  s*    




ü ÿ ÿr  c                
   @   s$  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&S )'ÚTestMonteCarloHypothesisTestgš™™™™™™?c                    s   ‡ ‡fdd„S )Nc                     s   ˆ| dˆ i|—ŽS )Nr,   r4   )r  Úkwds©ÚrsÚrvs_inr4   r5   Ú<lambda>¹  ó    z2TestMonteCarloHypothesisTest.rvs.<locals>.<lambda>r4   )Úselfr  r
  r4   r	  r5   rm   ¸  s    z TestMonteCarloHypothesisTest.rvsc              	   C   sø  dd„ }d}t jt|d��  tdddgtjj|dd	� W 5 Q R X d
}t jt|d��  tdddgtjj|dd� W 5 Q R X d}t jt|d�� tdddgd |ƒ W 5 Q R X d}t jt|d�� tdddgtjjd ƒ W 5 Q R X d}t jt|d��  tdddgtjj|dd� W 5 Q R X d}t jt|d��  tdddgtjj|dd� W 5 Q R X d}t jt|d��  tdddgtjj|dd� W 5 Q R X d}t jt|d��  tdddgtjj|dd� W 5 Q R X d}t jt|d��  tdddgtjj|dd� W 5 Q R X d S )Nc                 S   s   t  | ¡jS rM   )r   Úskewnormr†   rÂ   r4   r4   r5   Ústat¾  s    z@TestMonteCarloHypothesisTest.test_input_validation.<locals>.statr   r   r   r
   r   r   r   r   r   z`rvs` must be callable.z`statistic` must be callable.ú)`n_resamples` must be a positive integer.r   r   r!   r"   r#   ú`alternative` must be in...r   ©Úalternative)r-   r.   r/   r   r   rl   rm   Ú	TypeError©r  r  r3   r4   r4   r5   Útest_input_validation»  sD    $$ ÿÿ$$ÿz2TestMonteCarloHypothesisTest.test_input_validationc                    s2  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 |Ž}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»   rU   rÑ   Ú
batch_sizeÚcounterr   Úskewtestr†   )rD   r   r  r½   r4   r5   r†   î  s    z:TestMonteCarloHypothesisTest.test_batch.<locals>.statisticr   r¯   T)rµ   r†   r    r   iž"õrm   r$   r   éé  rz   rv   r
   )r0   r=   rˆ   r  r  rm   r   rl   r   r   r¥   )r  rŠ   rD   r  rE   rF   Úres3r4   r½   r5   Ú
test_batchè  s2    
 ÿ
z'TestMonteCarloHypothesisTest.test_batchr   éýÿÿÿr   c           	      C   sˆ   t j d¡}|  tjj|¡}dddg}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 rX   )r   r  r†   rÁ   r4   r4   r5   r†     s    z9TestMonteCarloHypothesisTest.test_axis.<locals>.statisticTi N  )r   r    r   rj   )r0   r=   rˆ   rm   r   rl   r  r   r   r†   r¥   rk   )	r  r   rŠ   Únorm_rvsrf   rD   r�   r†   rQ   r4   r4   r5   Ú	test_axis  s    


 ÿz&TestMonteCarloHypothesisTest.test_axisr  ©ÚlessÚgreaterrO   g      à¿ré   rb   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ë   ©rO   rf   r,   r  c                    s   t j| t jjdˆ d�jS ©NÚasymp)Úmoder  )r   Úks_1samprl   Úcdfr†   rÂ   r  r4   r5   Ústatistic1d+  s    ÿzGTestMonteCarloHypothesisTest.test_against_ks_1samp.<locals>.statistic1dr¯   F©r    r   r  r$  rj   r#  r   )r0   r=   rˆ   r   r  rm   r)  rl   r*  r   r   r†   r¥   rk   )	r  r  rO   rŠ   rD   r�   r+  r   rQ   r4   r  r5   Útest_against_ks_1samp"  s     þz2TestMonteCarloHypothesisTest.test_against_ks_1sampÚhypotest©r#  r$  ú	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	é–   r%  r  c                    s   ˆ | |d�j S rX   r½   rÁ   ©r.  r4   r5   r†   D  s    zLTestMonteCarloHypothesisTest.test_against_normality_tests.<locals>.statisticT©r   r  rj   )r0   r=   rˆ   r   r  rm   rl   r   r   r†   r¥   rk   )
r  r.  r  rO   rŠ   rD   r�   r†   r   rQ   r4   r2  r5   Útest_against_normality_tests:  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¼ r1  r%  c                 S   s   t j| |d�jS rX   )r   Ú
normaltestr†   rÁ   r4   r4   r5   r†   V  s    zGTestMonteCarloHypothesisTest.test_against_normaltest.<locals>.statisticTr$  r3  rj   )r0   r=   rˆ   r   r  rm   r5  rl   r   r   r†   r¥   rk   )r  rO   rŠ   rD   r�   r†   r   rQ   r4   r4   r5   Útest_against_normaltestN  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ë   r%  c                 S   s   t  | t jj¡jS rM   )r   Úcramervonmisesrl   r*  r†   rÂ   r4   r4   r5   r+  h  s    zMTestMonteCarloHypothesisTest.test_against_cramervonmises.<locals>.statistic1dr¯   Fr$  r,  rj   )r0   r=   rˆ   r   r  rm   r7  rl   r*  r   r   r†   r¥   rk   )r  rO   rŠ   rD   r�   r+  r   rQ   r4   r4   r5   Útest_against_cramervonmises`  s     þz8TestMonteCarloHypothesisTest.test_against_cramervonmisesÚ	dist_name)rl   ZlogisticrN   c              	      sþ   ‡ ‡fdd„}t ƒ �}| t¡ t|dd�}W 5 Q R X |js@t‚|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 5 Q R X 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Ë   )	r0   r=   rˆ   r   Útukeylambdarm   Úandersonr†   Zcritical_values)rO   rŠ   rD   r�   ©r9  rN   r4   r5   Úfun~  s    z?TestMonteCarloHypothesisTest.test_against_anderson.<locals>.funr   )Zx0r:  r<   rË   c                    s   t  | ˆ ¡jS rM   )r   r<  r†   rÂ   )r9  r4   r5   r+  ’  s    zGTestMonteCarloHypothesisTest.test_against_anderson.<locals>.statistic1dr¯   Fr$  r,  r
   rj   )r   ÚfilterÚRuntimeWarningr   Úsuccessr\   rD   r0   r=   rˆ   r   r;  rm   r<  r†   Zsignificance_levelrâ   r   r   r¥   rk   )r  r9  rN   r>  ÚsupZsolrO   rŠ   rD   r�   Úexpected_statÚ
expected_pr+  Zdist_rvsrQ   r4   r=  r5   Útest_against_andersons  s.    



  þz2TestMonteCarloHypothesisTest.test_against_andersonc                 C   s>   t j d¡}t  d¡}t||jt jddd�}|jdks:t‚d S )Nl   IL‘~QH(s r<   Tr#  r3  g-Cëâ6?)r0   r=   rˆ   Zzerosr   r1   r¥   r\   )r  rŠ   rD   rQ   r4   r4   r5   Útest_p_never_zeroŸ  s    
 ÿz.TestMonteCarloHypothesisTest.test_p_never_zeroN)Ú__name__Ú
__module__Ú__qualname__rk   rm   r  r  r-   ÚmarkÚparametrizerÚ   r!  r0   Zlinspacer-  r   r  Zkurtosistestr4  rT   r6  r8  rE  rF  r4   r4   r4   r5   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dd	d
g¡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!d9ddd:gd;dd<gd=d>d?d@dAdBdCœZ"dDdEdFdGdHdIdJdKgdEdKdIdLdMdNdOdMdPg	dQdRdSdTdUdVdCœZ#ej ¡ ej dWe"e#f¡dXdY„ ƒƒZ$ej dZd[¡d\d]„ ƒZ%ej d^d_¡d`da„ ƒZ&e'dbƒdg fe'dƒddbd9dgdd:dcggfe'ddƒddbd9dgdd:dcgddeggfgZ(ej dfe(¡dgdh„ ƒZ)didj„ Z*dkS )lÚTestPermutationTestrÔ   c                 C   s   t j d¡| _d S )Nl   áF )r0   r=   rˆ   rŠ   )r  r4   r4   r5   Úsetup_method­  s    z TestPermutationTest.setup_methodc              	   C   s¨  dd„ }d}t jt|d�� tdddgdgf|ƒ W 5 Q R X d}t jt|d�� td	|ƒ W 5 Q R X t jt|d�� td|ƒ W 5 Q R X d
}t jt|d��$ tdddgdddgf|dd� W 5 Q R X d}t jt|d��$ tdddgdddgf|dd� W 5 Q R X d}t jt|d��$ tdddgdddgf|dd� W 5 Q R X d}t jt|d��$ tdddgdddgf|dd� W 5 Q R X d}t jt|d��$ tdddgdddgf|dd� W 5 Q R X d}t jt|d��$ tdddgdddgf|dd� W 5 Q R X d}t jt|d��$ tdddgdddgf|dd� W 5 Q R X d}t jt|d��$ tdddgdddgf|dd� W 5 Q R X d}t jt|d��$ tdddgdddgf|dd� W 5 Q R X d S )Nc                 S   s   t  | |f|¡jS rM   ©r   Ú	ttest_indr†   rJ   r4   r4   r5   r  ´  s    z:TestPermutationTest.test_permutation_test_iv.<locals>.statz2each sample in `data` must contain two or more ...r   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-   r.   r/   r   r  r  r4   r4   r5   Útest_permutation_test_iv²  sP     (ÿ((((((ÿz,TestPermutationTest.test_permutation_test_ivr,   rP  Ú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»   rU   rÑ   r  r  r0   r1   )rD   rK   r   r  r½   r4   r5   r†   ò  s    z1TestPermutationTest.test_batch.<locals>.statisticr   r¯   T)r    rP  r   r   )r$   r,   r  rz   rv   r
   )rŠ   r=   r  r  r   r   r   r¥   )	r  rP  r,   rD   rK   r  rE   rF   r  r4   r½   r5   r  è  sB    ÿÿÿÿÿÿÿzTestPermutationTest.test_batchzpermutation_type, exact_sizer   r
   )rS  r  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|Ž}t|jj|ƒ d S )Nr   c                 S   s   t j| |d�t j||d� S rX   r™   rJ   r4   r4   r5   r†     s    z8TestPermutationTest.test_permutations.<locals>.statisticT)rP  r   r   )r    r,   )rŠ   r=   r   r   r   Únull_distributionrf   )	r  rP  Z
exact_sizer,   rD   rK   r†   r  rQ   r4   r4   r5   Útest_permutations  s    	ÿÿÿz%TestPermutationTest.test_permutationsc                 C   sº   d\}}d\}}}t  || |¡|ks*t‚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¤t‚t
|j|jdd� d S )N)r#  r   )r  é	   iÀ]  rŸ   c                 S   s   t j| |d�t j||d� S rX   r™   rJ   r4   r4   r5   r†   =  s    zNTestPermutationTest.test_randomized_test_against_exact_both.<locals>.statisticTrT  r<   ©r   rP  r$   r  r,   r    ç{®Gáz„?rj   )r	   Úbinomr\   r   rl   rm   r   r0   Úinfr†   r   r¥   ©r  r  rŠ   ÚnxÚnyÚpermutationsrD   rK   rq   r†   r  rQ   rF   r4   r4   r5   Ú'test_randomized_test_against_exact_both0  s$    
  ÿÿz;TestPermutationTest.test_randomized_test_against_exact_bothc                 C   s²   d\}}d\}}}d| |ks"t ‚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œt ‚t|j	|j	dd� d S )N)r$  N)ru   ru   i }  r
   rŸ   c                 S   s   t j| | |d�S rX   r™   rJ   r4   r4   r5   r†   W  s    zQTestPermutationTest.test_randomized_test_against_exact_samples.<locals>.statisticTrS  r<   rX  r    rY  rj   )
r\   r   rl   rm   r   r0   r[  r†   r   r¥   r\  r4   r4   r5   Ú*test_randomized_test_against_exact_samplesI  s$    
  ÿÿz>TestPermutationTest.test_randomized_test_against_exact_samplesc                    sÄ   d| j  }}d\}}}t |¡|ks(t‚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®t‚t|j|jdd� d S )Nr0  )r  r  i@œ  rŸ   c                    s   t  | ˆ ¡d S ©Nr   ©r   ZpearsonrrÂ   ©rK   r4   r5   r+  p  s    zTTestPermutationTest.test_randomized_test_against_exact_pairings.<locals>.statistic1dTrS  r<   rX  r    rY  rj   )rŠ   r	   Ú	factorialr\   r   rl   rm   r   rò   r   r0   r[  r†   r   r¥   )r  r  rŠ   r]  r^  r_  rD   rq   r+  r†   r  rQ   rF   r4   rd  r5   Ú+test_randomized_test_against_exact_pairingsc  s&    

  ÿÿz?TestPermutationTest.test_randomized_test_against_exact_pairingsr  r"  r_  )rë   g    eÍÍAr   )r   r   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   rb   r   l   ;WýN‡a )r_  r   r,   r  c                 S   s   t j| ||d�jS rX   rN  rJ   r4   r4   r5   r†   �  s    zETestPermutationTest.test_against_permutation_ttest.<locals>.statisticT©r   r    r  r   r,   rh   )r0   rT   r^   Zmoveaxisr=   rˆ   r   rO  r   r   r†   ri   r¥   )r  r  r_  r   rD   rK   rä   rE   r†   rå   rF   r4   r4   r5   Útest_against_permutation_ttest~  s"    
" ÿ ýz2TestPermutationTest.test_against_permutation_ttestr/  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   ©rf   re   rb   r   )rf   rd   re   Úexact)r  r(  c                    s   t j| |dˆ d�jS r&  )r   Úks_2sampr†   ©rD   rK   r  r4   r5   r+  ¥  s    
ÿz>TestPermutationTest.test_against_ks_2samp.<locals>.statistic1dr$  ©r    r  r,   rh   )rŠ   Únormalr   rl  r   r0   r[  r   r†   ri   r¥   )r  r  rD   rK   r�   r+  rQ   r4   r  r5   Ú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   rj  rb   r   r$  r#  r0  r/  r  c                 S   s   t  | |¡jS rM   ©r   Úansarir†   rm  r4   r4   r5   r+  ¾  s    z<TestPermutationTest.test_against_ansari.<locals>.statistic1drn  rh   )rŠ   ro  r   rr  r   r0   r[  r   r†   ri   r¥   )	r  r  rD   rK   Zalternative_correspondenceZalternative_scipyr�   r+  rQ   r4   r4   r5   Ú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   rb   r
   r   ©rf   rd   r,   çš™™™™™©?r   )r   r  c                 S   s   t j| ||d�jS rX   )r   Úmannwhitneyur†   rJ   r4   r4   r5   r†   Ï  s    z@TestPermutationTest.test_against_mannwhitneyu.<locals>.statisticTrh  rh   )r   Úuniformrm   rŠ   rv  r   r0   r[  r   r†   ri   r¥   )r  r  rD   rK   r�   r†   rQ   r4   r4   r5   Ú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   )rf   re   r,   rb   r   )rf   rd   re   r,   rk  r%   c                 S   s   t j| |dd�jS ©NÚ
asymptoticr%   )r   Úcramervonmises_2sampr†   rm  r4   r4   r5   r+  à  s    ÿz9TestPermutationTest.test_against_cvm.<locals>.statistic1dr$  rn  rh   )r   rl   rm   rŠ   r{  r   r0   r[  r   r†   ri   r¥   )r  rD   rK   r�   r+  rQ   r4   r4   r5   Útest_against_cvmÙ  s     ÿz$TestPermutationTest.test_against_cvm)rH   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 rM   )r   Úkruskalr†   ©rq   r4   r4   r5   r+  ý  s    zITestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.statistic1dc                  W   s   t j| Ž jS rM   )r   r}  r¥   r~  r4   r4   r5   Úpvalue1d   s    zFTestPermutationTest.test_vectorized_nsamp_ptype_both.<locals>.pvalue1d)r
   r   r   )r
   r   r
   )r
   r   r   r   Fr$  rT  ©r   r   r  rP  r,   r    r¯   rh   g¸…ëQ¸®?rj   r‡   )r0   r=   rˆ   r   rò   r]   rŠ   r   r[  r   r†   ri   r¥   )r  r   rŠ   rD   rK   rY   rq   r+  r  r†   r¥   Zx2rÞ   Zz2Úexpected_statisticÚexpected_pvaluer  rQ   rF   r4   r4   r5   Ú test_vectorized_nsamp_ptype_bothë  s0    


 ÿ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|Ž}t||f|f|Ž}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   rt  ru  c                 S   s   t j| dd�jS ©Nr#  r  ©r   Úwilcoxonr†   )rY   r4   r4   r5   Ústatistic_1samp_1d#  s    zETestPermutationTest.test_against_wilcoxon.<locals>.statistic_1samp_1dc                 S   s   t j| |dd�jS r„  r…  rm  r4   r4   r5   Ústatistic_2samp_1d'  s    zETestPermutationTest.test_against_wilcoxon.<locals>.statistic_2samp_1dc                    s   t j| |ˆ d�S )Nr  )r   r†  rm  r  r4   r5   Útest_1d*  s    z:TestPermutationTest.test_against_wilcoxon.<locals>.test_1dr   r   FrS  )r   r   r  rP  r,   r    rh   r0  )r   rw  rm   rŠ   r   rò   r0   r[  r   r   r†   ri   r¥   )r  r  rD   rK   r‡  rˆ  r‰  Útestr�   rC  rD  r  rE   rF   r4   r  r5   Ú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Ÿ   rH   c                 S   s   t j| dk|d�S )Nr   r   ©r0   r£   rÁ   r4   r4   r5   r†   J  s    z=TestPermutationTest.test_against_binomtest.<locals>.statisticré   r  TrS  )r   rP  r    r,   r  rh   )r   )
rŠ   Zintegersr   r¤   r   r0   r[  r   r¥   ri   )	r  r  rD   r†   ÚkrV   rî   r�   rQ   r4   r4   r5   Útest_against_binomtestA  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Ÿ   rk  r%   c                    s   t j| ˆ dd�jS ry  )r   Ú
kendalltaur†   rÂ   rd  r4   r5   r+  _  s    z@TestPermutationTest.test_against_kendalltau.<locals>.statistic1drR  )rP  r    r,   rh   )rŠ   ro  r   r�  r   r0   r[  r   r†   ri   r¥   )r  rD   r�   r+  rQ   r4   rd  r5   Útest_against_kendalltauX  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 ©Nr   rŒ  rÂ   rd  r4   r5   r†   l  s    z@TestPermutationTest.test_against_fisher_exact.<locals>.statisticl   	ý(yM4 é   g333333ã?g      Ð?r   rR  )rP  r    r  r,   r  )r0   r=   rˆ   ZastypeÚfloatr   ZcontingencyZcrosstabr   r[  Zfisher_exactr   r¥   )r  r  r†   rŠ   rD   ÚtabrQ   rF   r4   rd  r5   Útest_against_fisher_exacti  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 )NTrz  ©Zrankedr&   )r   Úpage_trend_testr†   r~  r4   r4   r5   r+  Ž  s    ÿzLTestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.statistic1dc                  W   s   t j| ddd�jS )NTrk  r–  )r   r—  r¥   r~  r4   r4   r5   r  ’  s    ÿzITestPermutationTest.test_vectorized_nsamp_ptype_samples.<locals>.pvalue1dr   Fr$  rR  r€  r    rc   rh   r‡   rj   )rŠ   r=   r   Zrankdatar   rò   r0   Zbroadcast_arraysr   r[  r   r†   ri   r¥   )r  r   rD   rK   rY   rq   r+  r  r†   r¥   r�  r‚  r  rQ   rF   r4   r4   r5   Ú#test_vectorized_nsamp_ptype_samples|  s0    	


 ÿz7TestPermutationTest.test_vectorized_nsamp_ptype_samplesr   r   r   g      @gš™™™™™É?gš™™™™™Ù?gä&ý_ñÕ?g      @gd~�$I"@glâuý‚ö?)rD   rK   Úexpected_lessÚexpected_2sidedÚexpected_Pr_gte_S_meanr�  Úexpected_avgÚexpected_stdéo   ék   r<   r–   éf   éj   ém   él   éb   éi   ég   én   r‘   gðdòð×éÃ?gðdòð×éÓ?gYoã5 Ó?g     @@@g{¼�C@gDmFA°@Úcasec              	   C   s@  |d }|d }|d }|d }|d }|d }|d }|d }	d	d
„ }
t j ¡ �>}| td¡ t||f|
t jdd�}t||f|
t jdd�}W 5 Q R X 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.

        rD   rK   r�  r™  rš  r›  rœ  r�  c                 S   s   t  | |¡jS rM   rq  rm  r4   r4   r5   r+  Ý  s    z7TestPermutationTest.test_with_ties.<locals>.statistic1dz$Ties preclude use of exact statisticr#  )r    r  r0  rh   g»½×Ùß|Û=rj   g�íµ ÷Æ°>N)r0   Ztestingr   r?  ÚUserWarningr   r[  r   r†   ri   r¥   rU  r1   rp   rU   r£   r‰   )r  r¨  rD   rK   r�  r™  rš  r›  rœ  r�  r+  rB  rQ   rF   ÚSr1   rV   ZPr_gte_S_meanr4   r4   r5   Útest_with_ties·  s>    ÿÿ

ÿÿz"TestPermutationTest.test_with_tieszalternative, expected_pvalue))r#  gåï?)r$  gš¥Oú¤Oª?)r0  g<«Oú¤Oº?c                    sl   ddddddg}ddd	d
ddg‰ 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 rM   )r   Z	spearmanrr†   rÂ   rd  r4   r5   r+    s    zDTestPermutationTest.test_against_spearmanr_in_R.<locals>.statistic1drR  )rP  r    r  rh   g‚vIhÂ%<=rj   N)r   r0   r[  r   r†   ri   r¥   )r  r  r‚  rD   r�  r+  rQ   r4   rd  r5   Útest_against_spearmanr_in_Rõ  s$      ÿ  ÿ
 ÿz/TestPermutationTest.test_against_spearmanr_in_Rr$   )rH   r   c              	   C   s4   t jtdd�� tt dddg|¡ƒ W 5 Q R X d S )Nz`batch` must be positive.r   r   r
   r   )r-   r.   r/   r_   r   Ú_batch_generator)r  r$   r4   r4   r5   Útest_batch_generator_iv  s    z+TestPermutationTest.test_batch_generator_ivr   rb   r  r’  ziterable, batch, expectedc                 C   s    t t ||¡ƒ}||kst‚d S rM   )r_   r   r­  r\   )r  Úiterabler$   r�   Úgotr4   r4   r5   Útest_batch_generator   s    z(TestPermutationTest.test_batch_generatorc           	      C   sˆ   ddddg}ddddg}dd„ }t j||f|d	d
d�}|j|j|j  }}}dt ||d k¡ t|ƒ }||  kr~dks„n t‚d S )Nr   r
   r   r   r×   r  c                 S   s   t  | |¡d S rb  rc  rm  r4   r4   r5   r†   -  s    zFTestPermutationTest.test_finite_precision_statistic.<locals>.statisticFrR  )r   rP  rÔ   gUUUUUUÕ?)	r   r   r†   r¥   rU  r0   r£   rU   r\   )	r  rD   rK   r†   rQ   Úrr¥   ÚnullZ	correct_pr4   r4   r5   Útest_finite_precision_statistic&  s    ÿz3TestPermutationTest.test_finite_precision_statisticN)+rG  rH  rI  ri   rM  rQ  r-   rJ  rK  r0   r=   rá   rˆ   r  r	   re  rZ  rV  r`  Úslowra  rf  ri  rp  rs  rx  r|  Zxslowrƒ  r‹  rŽ  r�  r•  r˜  Z
tie_case_1Z
tie_case_2r«  r¬  r®  rÚ   Zbatch_generator_casesr±  r´  r4   r4   r4   r5   rL  ©  s¦   6ÿÿ$ÿþÿ



.
%

+ û ú<ÿ

"þÿ
rL  c                     s¬   t jdddgtd�‰ t  ˆ ¡} tƒ }d}t ˆ ¡D ]8}|d7 }t  || d d… ¡}| t	dd	„ |D ƒƒ¡ q2t  
‡ fd
d	„ttˆ ƒd ƒD ƒ¡}t||ƒ tt|ƒ|ƒ d S )Nr   r
   r   )Zdtyper   r   rH   c                 S   s   g | ]}t |ƒ‘qS r4   )Ú	frozenset©r´   rN   r4   r4   r5   Ú
<listcomp>J  s     z4test_all_partitions_concatenated.<locals>.<listcomp>c              	      s4   g | ],}t  tˆ |d … ƒtˆ |d d … ƒ¡‘qS r‘  )r	   rZ  r£   r·  ©rV   r4   r5   r¸  L  s   ÿ)r0   r€   ÚintZcumsumÚsetr   Z_all_partitions_concatenatedÚsplitÚaddr2   ÚproductrÚ   rU   r   )ÚncZall_partitionsr  Zpartition_concatenatedZpartitioningr�   r4   r¹  r5   Ú test_all_partitions_concatenated>  s    
ÿ
rÀ  Úfun_namer   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   rl   rm   rŸ   )rŠ   r4   r5   rm   [  s    z&test_parameter_vectorized.<locals>.rvsr8   )rq   r,   r&   rS  )rq   r,   rP  )rµ   rm   )r   r   r   r    r<   c                    s(   | j dkst | ˆ ¡st‚tj| |d�S r  )r»   r0   rÜ   r\   r1   rÁ   )rµ   r4   r5   r†   i  s    z,test_parameter_vectorized.<locals>.statistic)r†   r   Tc                 S   s   | j dkst‚t | ¡S r‘  )r»   r\   r0   r1   rÂ   r4   r4   r5   r†   o  s    F)r0   r=   rˆ   râ   r   Úupdate)rÁ  rm   Zfun_optionsZcommon_optionsr>  Úoptionsr†   r4   )rŠ   rµ   r5   Útest_parameter_vectorizedS  s*    ÿÿü

rÄ  )8Únumpyr0   r-   Zscipy.statsr   r   r   Znumpy.testingr   r   r   Zscipyr   r	   Ú r   Zscipy._lib._utilr   Zscipy.optimizer   r6   rJ  rK  rG   rW   ra   rt   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µ  Úfilterwarningsr  r  rL  rÀ  rÄ  r4   r4   r4   r5   Ú<module>   s¨   ?
+
þ
þ:ÿ
%ÿÿ
.







& u     ÿ