o
    Ö­jR  ã                   @   s
  d dl mZ d dl mZ d dlZd dlZd dlmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ g d¢g d	¢fZeejed
�dgg7 ZddhZddiZ dd„ Z!ej" #de!ƒ ¡dd„ ƒZ$ej" #de¡dd„ ƒZ%ej" #de¡dd„ ƒZ&ej" #de¡dd„ ƒZ'ej" #de¡dd „ ƒZ(d!d"„ Z)d#d$„ Z*d%d&„ Z+d'd(„ Z,d)d*„ Z-d+d,„ Z.ej" #d-g d.¢¡ej" #d/e¡d0d1„ ƒƒZ/ej" #d/e¡d2d3„ ƒZ0d4d5„ Z1ej" #d6e1ƒ ¡d7d8„ ƒZ2d9d:„ Z3ej" #d;e¡d<d=„ ƒZ4ej" 5d>¡d?d@„ ƒZ6dAdB„ Z7dS )Cé    N)Úassert_allclose)Ústatsé   )Úcheck_normalizationÚcheck_momentÚcheck_mean_expectÚcheck_var_expectÚcheck_skew_expectÚcheck_kurt_expectÚcheck_entropyÚcheck_private_entropyÚcheck_edge_supportÚcheck_named_argsÚcheck_random_state_propertyÚcheck_picklingÚcheck_rvs_broadcastÚcheck_freezing)ÚdistdiscreteÚinvdistdiscrete)Úrv_discrete_frozen)r   é   é   é   )çš™™™™™¹?çš™™™™™É?g333333Ó?gš™™™™™Ù?©Úvalues© ÚzipfianÚ
nhypergeomÚnbinomé   c                  c   sV   � t ƒ } tD ]"\}}|tv rtj|||tjjd�V  n|||| vfV  |  |¡ qd S )N)Úmarks)Úsetr   ÚdistslowÚpytestÚparamÚmarkÚslowÚadd)ÚseenÚdistnameÚargr   r   úb/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/stats/tests/test_discrete_basic.pyÚcases_test_discrete_basic   s   €ûr.   zdistname,arg,first_casec                 C   sf  zt t| ƒ}W n ty   | }d} Y nw tj d¡ |j|ddiŽ}t |¡}|j|Ž \}}t|||| d ƒ t	||| ƒ t
|||| d ƒ t||ƒ d}t||||| d ƒ |r¯d	}	|j|j|j|j|jg}
d
ddddœ}| | d¡}t||||	|
ƒ | dkr…t|ƒ t||ƒ | dvr“t||ƒ t||ƒ t||| ƒ |jjtjjkr±t||tjƒ d S d S d S )Núsample distributioniP• ÚsizeiÐ  z cdf_ppfz othç{®Gáz„?z
 chisquare)r   é   r   r   é   )ÚrandintÚ	hypergeomÚ	bernoulliÚnchypergeom_walleniusr   >   Úpoisson_binom)Úgetattrr   Ú	TypeErrorÚnpÚrandomÚseedÚrvsÚuniqueÚcheck_cdf_ppfÚcheck_pmf_cdfÚ	check_othr   Úcheck_discrete_chisquareÚpmfÚlogpmfÚcdfÚlogcdfÚlogsfÚgetr   Úcheck_scale_docstringr   r   r   r   Ú	__class__Ú_entropyÚrv_discreter   )r+   r,   Ú
first_caseÚdistfnr>   ÚsuppÚmÚvÚalphaÚlocscale_defaultsÚmethsÚspec_kÚkr   r   r-   Útest_discrete_basic&   sN   þ


ÿÿÿ


ìrX   zdistname,argc                 C   s  zt t| ƒ}W n ty   | }d} Y nw |j|ddiŽ\}}}}t||| ƒ t||||| ƒ t|||| ƒ t||||| ƒ t|||||| ƒ tj	 
¡ �}| dv rV| t¡ t|||||| ƒ W d   ƒ n1 siw   Y  t|||dƒ t|||||  dƒ d S )Nr/   ÚmomentsÚmvsk)ÚzipfÚ
betanbinomr   r   )r9   r   r:   r   r   r   r   r	   r;   ÚtestingÚsuppress_warningsÚfilterÚRuntimeWarningr
   Úcheck_moment_frozen)r+   r,   rO   rQ   rR   ÚsrW   Úsupr   r   r-   Útest_momentsR   s&   þ
ýrd   zdist,shape_argsc              	   C   s  | dv }zt t| ƒ}W n ty!   | }d| j›d| j›d�} Y nw t d¡}|j}g }g }| dkrMt dd¡}||f}d	}t	|| |||t 
t¡gƒ d S t|ƒD ]"}	|	d
 fd|	d   }
||	 }| t |
|¡¡ | d|
d ¡ qQ| |¡ | |j¡ t	|| |||t 
t¡gƒ d S )N)Ú	betabinomr\   ÚskellamÚ	yulesimonÚdlaplaceÚnchypergeom_fisherr7   r8   zrv_discrete(values=(z, z))r   r8   )r   r   é
   ç      à?)r   r   r   )r   r   r   )r9   r   r:   ÚxkÚpkr;   ÚzerosÚnumargsÚfullr   ÚdtypeÚintÚrangeÚappendÚinsertr0   )ÚdistÚ
shape_argsÚ
shape_onlyÚdistfuncÚlocÚnargsÚallargsÚbshapeÚprW   ÚshpÚ	param_valr   r   r-   Útest_rvs_broadcastk   s:   þ
ÿ
ÿr�   z	dist,argsc              	   C   s´   zt t| ƒ}W n ty   | }Y nw tj d¡ tj dd¡dtj dd¡g}|j|Ž \}}|D ]&}t 	|d | || g|j
dg|¢R d|iŽ|j
d	g|¢R d|iŽg¡ q1d S )
NéM£ éöÿÿÿéÿÿÿÿr   r   rj   ç        rz   ç      ð?)r9   r   r:   r;   r<   r=   r4   ÚsupportÚnptÚassert_array_equalÚppf)rv   ÚargsrO   Úre_locsÚ_aÚ_brz   r   r   r-   Útest_ppf_with_locœ   s   ÿ.þÿr�   z
dist, argsc           	      C   sP  zt t| ƒ}W n ty   | }Y nw tj d¡ tj dd¡dtj dd¡g}|j|Ž \}}|D ]*}|| |d | f}|jdg|¢R d|iŽ|jd	g|¢R d|iŽf}t	 
||¡ q1tjjddd
d�t d
¡tjjddd
d�g}|j|Ž \}}|D ]*}|| |d | f}|jdg|¢R d|iŽ|jd	g|¢R d|iŽf}t	 
||¡ q{d S )Nr‚   rƒ   r„   r   r   rj   r…   rz   r†   )é   r   ©r0   )r9   r   r:   r;   r<   r=   r4   r‡   Úisfrˆ   r‰   rn   )	rv   r‹   rO   rŒ   r�   rŽ   rz   ÚexpectedÚresr   r   r-   Útest_isf_with_loc­   s,   ÿ0þ0ýr•   c           
      C   sè   | j |g|¢R Ž }t | jd¡}||t |¡  }t | j|g|¢R Ž ||d ¡ t | j| j |g|¢R Ž d g|¢R Ž ||d ¡ t	| dƒsr| j
|Ž \}}|||k  }	t | j| j |	g|¢R Ž d g|¢R Ž |	| j |d ¡ d S d S )Né   z
-roundtripç:Œ0âŽyE>rl   z ppf-cdf-next)rF   Úroundtrip_cdf_ppf_exceptionsrI   Únamer;   Úspacingrˆ   r‰   rŠ   Úhasattrr‡   Úinc)
rO   r,   rP   ÚmsgÚcdf_suppÚn_ulpsÚ	cdf_supp0r�   rŽ   Úsupp1r   r   r-   r@   Æ   s    ÿ&ÿ
&ÿýr@   c              	   C   s8  t | dƒr	| j}nt| jdg|¢R Ž d ƒ}tt||d ƒƒ}| j|g|¢R Ž }| j|g|¢R Ž  ¡ }d\}}|dkr?d\}}t	j
||d  ||d  ||d	� t |¡}	|	d d
… t |	¡d  }
t	 | j|
g|¢R Ž d¡ d}| |d|iŽ}t	 
| |	dd … | ¡t | |	| ¡¡¡ t	 | |
| ¡d¡ d S )Nrl   r1   r   rj   )ç»½×Ùß|Û=r¢   rf   )çñhãˆµøä>r£   r   ©ÚatolÚrtolr„   r   rk   rz   )r›   rl   rr   rŠ   Úlistrs   rF   rD   Úcumsumrˆ   r   r;   ÚasarrayÚdiffÚassert_equal)rO   r,   r+   ÚindexÚstartindÚcdfsÚpmfs_cumr¥   r¦   rW   Ú	k_shiftedrz   rv   r   r   r-   rA   à   s&   
ÿ
.rA   c                 C   s    t j| |Ž  |¡|ddd� d S )Nr¢   r¤   )rˆ   r   Úmoment)rO   r,   rQ   rW   r   r   r-   ra   û   s   
ÿra   c                 C   sÈ   t j| j|g|¢R Ž d| j|g|¢R Ž  ddd� t ddd¡}t j| j|g|¢R Ž | jd| g|¢R Ž ddd� | jdg|¢R Ž }t  | j|d g|¢R Ž dk¡ t  | j|d g|¢R Ž dk¡ d S )	Nr†   r¢   r¤   r1   ç®Gáz®ï?é   rk   r   )	rˆ   r   ÚsfrF   r;   Úlinspacer’   rŠ   Úassert_)rO   r,   rP   r�   ÚqÚ	median_sfr   r   r-   rB      s   (ÿ(ÿ $rB   c              
   C   sF  d}| j |Ž \}}tt|dƒƒ}tt|dƒƒd }	t||	ƒ}
d}|g}g }|
D ])}| j|g|¢R Ž }|| |d krP| |¡ | || ¡ |}|d| krP nq'|d |k rc| |¡ | d| ¡ t |¡}t |¡}|d }||d< t 	||¡\}}t
 t |¡t|ƒ| ¡\}}t ||kd	|› d
t|ƒ› dt|ƒ› �¡ dS )as  Perform chisquare test for random sample of a discrete distribution

    Parameters
    ----------
    distname : string
        name of distribution function
    arg : sequence
        parameters of distribution
    alpha : float
        significance level, threshold for p-value

    Returns
    -------
    result : bool
        0 if test passes, 1 if test fails

    gš™™™™™©?iüÿÿiè  r   r   g›+¡†›„=r„   r—   zchisquare - test for z
 at arg = z with pval = N)r‡   rr   ÚmaxÚminrs   rF   rt   r;   ÚarrayÚ	histogramr   Ú	chisquareÚlenrˆ   r¶   Ústr)rO   r,   r>   rS   r�   Úwsuppr�   rŽ   ÚloÚhighÚdistsupportÚlastÚdistsuppÚdistmassÚiiÚcurrentÚhistsuppÚfreqÚhsuppÚchisÚpvalr   r   r-   rC     s<   

€


þrC   c                 C   s"   | j d urt d| j v¡ d S d S )NÚscale)Ú__doc__rˆ   r¶   )rO   r   r   r-   rJ   G  s   
þrJ   Úmethod)rD   rE   rF   rG   r´   rH   rŠ   r’   zdistname, argsc                    s¨   zt t|ƒ}W n
 ty   Y d S w t || ƒ‰ | dv r ddg}nddg}dd„ |D ƒ}ddg}ˆ |g|¢R d|iŽ}tj|‡ fd	d„t|g|¢|‘R Ž D ƒd
d
d� d S )N)rŠ   r’   r   r   r   r   c                 S   s   g | ]}|gd  ‘qS )r   r   )Ú.0r~   r   r   r-   Ú
<listcomp>\  s    z+test_methods_with_lists.<locals>.<listcomp>rz   c                    s   g | ]}ˆ |Ž ‘qS r   r   )rÑ   rR   ©Údist_methodr   r-   rÒ   `  s    çVçž¯Ò<)r¦   r¥   )r9   r   r:   rˆ   r   Úzip)rÐ   r+   r‹   rv   ÚzÚp2rz   Úresultr   rÓ   r-   Útest_methods_with_listsM  s    ÿ

 
þrÚ   c                 C   s>   t t| ƒ}t dd¡}|j|g|¢R Ž }tj}t ||¡ d S )Néþÿÿÿr–   )r9   r   r;   ÚarangerF   Únanrˆ   r«   )r+   r‹   rv   ÚxÚvalsr“   r   r   r-   Útest_cdf_gh13280_regressiond  s
   
rà   c               	   c   s¢   � dhdhdœ} t ƒ }tD ]A\}}||v rq| |¡ ztt|ƒ}W n	 ty+   Y qw | ¡ }t|ƒD ]\}}|j|  	|t ƒ ¡v sE|j
sFq4||j|fV  q4qd S )NÚn)r    r\   )r#   r   r)   r9   r   r:   Ú_shape_infoÚ	enumerater™   rI   Úintegrality)Úintegrality_exceptionsr*   r+   Úshapesrv   Ú
shape_infoÚiÚshaper   r   r-   Ú"cases_test_discrete_integer_shapesn  s*   €
ÿÿûôrê   zdistname, shapename, shapesc                 C   sö   t t| ƒ}| ¡ }dd„ |D ƒ}| |¡}t|ƒ}|| }|d }	|d }
|g|	g|
gg||< |j|Ž \}}t t ||d¡¡}|j	|g|¢R Ž }t 
t |dd d …f ¡¡rYJ ‚t t |dd d …f ¡¡siJ ‚t 
t |dd d …f ¡¡ryJ ‚d S )Nc                 S   s   g | ]}|j ‘qS r   )r™   )rÑ   ré   r   r   r-   rÒ   �  s    z'test_integer_shapes.<locals>.<listcomp>rk   r   r�   r   r   )r9   r   râ   r¬   r§   r‡   r;   Úroundrµ   rD   ÚanyÚisnanÚall)r+   Ú	shapenameræ   rv   rç   Úshape_namesrè   Úshapes_copyÚvalid_shapeÚinvalid_shapeÚnew_valid_shapeÚaÚbrÞ   rD   r   r   r-   Útest_integer_shapesˆ  s   

  $r÷   c                  C   s®   d} t jt| d�� t dd¡j W d   ƒ n1 sw   Y  t jt| d�� t dd¡j W d   ƒ n1 s9w   Y  dtj_t dd¡}t|tƒsOJ ‚t	tjdƒ d S )Nz,'rv_discrete_frozen' object has no attribute)Úmatchrj   rk   ÚherringÚpdf)
r%   ÚraisesÚAttributeErrorr   Úbinomrú   ÚlogpdfÚ
isinstancer   Údelattr)ÚmessageÚfrozen_binomr   r   r-   Útest_frozen_attributes   s   ÿÿr  zdistname, shapesc                 C   sš   t | tƒrtt| ƒ}n| }|j|Ž \}}t |jddgg|¢R Ž |d |f¡ t |jddgg|¢R Ž |d |f¡ t |j	dg|¢R Ž |d |f¡ d S )Nr   r   )
rÿ   r¿   r9   r   r‡   rˆ   r«   rŠ   r’   Úinterval)r+   ræ   rv   rõ   rö   r   r   r-   Útest_interval®  s   
&&&r  zSensible to machine precisionc                     sH  t j d¡} t  |  d¡d ¡}|  d¡}|t  |¡ }tj||fd�‰ t  dg|d d…  ¡  ¡| d }t  |dd …  ¡ |d d g ¡| d }t  	|¡}t  dg|d d…  ¡  ¡| d }t  |dd …  ¡ dg ¡| d }ˆ  
¡ \}}	t||d ƒ t|	|d ƒ tˆ  |¡|ƒ tˆ  |¡dƒ tˆ  |¡dƒ t jdd	��' tˆ  |¡t  |¡ƒ tˆ  |¡t j ƒ tˆ  |¡t j ƒ W d   ƒ n1 sÑw   Y  tˆ  |¡|ƒ tˆ  |¡|ƒ tˆ  |¡dg|d d…  ¡  ƒ t jdd	��8 tˆ  |¡t  ˆ  |¡¡d
d� tˆ  |¡t  ˆ  |¡¡d
d� tˆ  |¡t  ˆ  |¡¡d
d� W d   ƒ n	1 �s9w   Y  tˆ  |¡dˆ  |¡ ƒ tˆ  |¡dˆ  |¡ ƒ tˆ  |¡dˆ  |¡ ƒ t jdd	��8 tˆ  |¡t  ˆ  |¡¡d
d� tˆ  |¡t  ˆ  |¡¡d
d� tˆ  |¡t  ˆ  |¡¡d
d� W d   ƒ n	1 �s§w   Y  tˆ  |¡|ƒ tˆ  |¡|ƒ tˆ  |¡d d… |dd … ƒ tˆ  d¡|d ƒ tˆ  d¡|	ƒ ˆ  |¡}
tˆ  |
¡|ƒ tˆ  d| ¡ˆ  |¡ƒ tˆ  d| ¡ˆ  |¡ƒ tˆ  d¡|	ƒ tˆ  d¡|d ƒ t  ddd¡}ˆ  |d ¡ˆ  |d ¡f}tˆ  d| ¡|ƒ tˆ  d¡ˆ  ¡ ƒ tˆ  d¡|d |	fƒ ˆ  d¡}tˆ  ¡ |ƒ t  || ¡}t  || d | ¡}t  || d | ¡|d  }t  || d | ¡|d  d }tˆ  ¡ |ƒ tˆ  ¡ t  |¡ƒ tˆ  ¡ |ƒ tˆ jdd�||||fƒ t  |d | ¡}tˆ  d¡|ƒ tˆ  dd„ ¡dƒ tˆ  ¡ |ƒ tˆ  dd„ ¡|ƒ t jdd	�� tˆ  ‡ fdd„¡ ˆ   ¡ ƒ W d   ƒ n	1 �süw   Y  t j d¡} ˆ j!d| d�}t j d¡} ˆ  | jdd�¡}t||ƒ d S )Nl   íKÉU[ rj   r   r   r„   r   r   Úignore)ÚdividerÕ   )r¥   r1   r²   rk   r   g      ø?r   rZ   )rY   c                 S   s   dS )Nr   r   ©rÞ   r   r   r-   Ú<lambda>%  s    z test_rv_sample.<locals>.<lambda>c                 S   s   | d S )Nr   r   r  r   r   r-   r	  '  s    c                    s
   ˆ   | ¡S )N)rE   r  ©rv   r   r-   r	  +  s   
 éd   )r0   Úrandom_stater‘   )"r;   r<   Údefault_rngÚsortÚsumr   rM   r»   Útolistr¨   r‡   r   rD   ÚerrstaterE   ÚlogÚinfrF   rG   r´   rH   rŠ   r’   rµ   r  ÚmedianÚmeanÚstdÚsqrtÚvarr±   ÚexpectÚentropyr>   )Úrngrl   rm   Úxk_leftÚxk_rightÚcdf2Ú	cdf2_leftÚ
cdf2_rightrõ   rö   Úsf2ÚpsÚint2Úmed2Úmean2Úvar2Úskew2Úkurt2Úmom3r>   Úrvs0r   r
  r-   Útest_rv_sample¾  s°   
$,
$$ý"ÿÿÿû	ÿÿÿû	 

" ÿr+  c                  C   s<   G dd„ dt jƒ} | dtdƒd�}|jdd�}t|dƒ d S )	Nc                   @   s   e Zd Zdd„ ZdS )z-test__pmf_float_input.<locals>.rv_exponentialc                 S   s   ddd|   S )NgUUUUUUå?r   r   r   )Úselfrè   r   r   r-   Ú_pmf9  s   z2test__pmf_float_input.<locals>.rv_exponential._pmfN)Ú__name__Ú
__module__Ú__qualname__r-  r   r   r   r-   Úrv_exponential8  s    r1  r…   r  )rõ   rö   é*   )r  r   )r   rM   Úfloatr>   r   )r1  Úrvr>   r   r   r-   Útest__pmf_float_input4  s   r5  )8Únumpy.testingr]   rˆ   r   Únumpyr;   r%   Úscipyr   Úcommon_testsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Úscipy.stats._distr_paramsr   r   Ú!scipy.stats._distn_infrastructurer   rß   rM   r$   r˜   r.   r'   ÚparametrizerX   rd   r�   r�   r•   r@   rA   ra   rB   rC   rJ   rÚ   rà   rê   r÷   r  r  Úxfail_on_32bitr+  r5  r   r   r   r-   Ú<module>   sZ    @

+

0

9
	ÿ



u