
    _MhR                     T   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ggz  ZddhZddiZ d Z!ej"        #                    d e!                      d             Z$ej"        #                    de          d             Z%ej"        #                    de          d             Z&ej"        #                    de          d             Z'ej"        #                    de          d             Z(d Z)d Z*d Z+d Z,d Z-d  Z.ej"        #                    d!g d"          ej"        #                    d#e          d$                         Z/ej"        #                    d#e          d%             Z0d& Z1ej"        #                    d' e1                      d(             Z2d) Z3ej"        #                    d*e          d+             Z4ej"        5                    d,          d-             Z6d. Z7dS )/    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               #      K   t                      } t          D ]V\  }}|t          v r*t          j        |||t          j        j                  V  n	|||| vfV  |                     |           Wd S )N)marks)setr   distslowpytestparammarkslowadd)seendistnameargs      e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/stats/tests/test_discrete_basic.pycases_test_discrete_basicr0      s      55D%  #x,xhfk>NOOOOOOOC!55555     zdistname,arg,first_casec                    	 t          t          |           }n# t          $ r | }d} Y nw xY wt          j                            d            |j        |ddi}t          j        |          } |j        | \  }}t          |||| dz              t          |||            t          |||| dz              t          ||           d}t          ||||| dz              |rd	}	|j        |j        |j        |j        |j        g}
d
dddd}|                    | d          }t'          ||||	|
           | dk    rt)          |           t+          ||           | dvrt-          ||           t/          ||           t1          |||            |j        j        t          j        j        k    rt9          ||t          j                   d S d S d S )Nsample distributioniP sizei  z cdf_ppfz oth{Gz?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distfnrB   suppmvalphalocscale_defaultsmethsspec_kks                r/   test_discrete_basicr\   &   s(   ))) ) ) )() INN7
&*
%$
%
%C9S>>D6<DAq&#tX
%:;;;&#x(((fc4F!2333vs###EVS#u%46 6 6  B V]FJ  aa+,. .JJx##C):EBBB,,,!&)))#FC000,,,63'''vs### 	fc8,,,$(9(BBB!&#u/@AAAAA)B B& CBs    ))zdistname,argc           	      ^   	 t          t          |           }n# t          $ r | }d} Y nw xY w |j        |ddi\  }}}}t          |||            t	          |||||            t          ||||            t          |||||            t          ||||||            t          j	        
                                5 }| dv r|                    t                     t          ||||||            d d d            n# 1 swxY w Y   t          |||d           t          |||||z  z   d           d S )Nr3   momentsmvsk)zipf
betanbinomr   r   )r=   r   r>   r   r   r   r	   r
   r?   testingsuppress_warningsfilterRuntimeWarningr   check_moment_frozen)r-   r.   rS   rU   rV   sr[   sups           r/   test_momentsri   R   s   ))) ) ) )() s3F33JAq!QX... aH---fc1h///VS!Q111fc1aH555		%	%	'	' :3---JJ~&&&&#q!Q999: : : : : : : : : : : : : : : Q***QqsUA.....s    ))93C88C<?C<zdist,shape_argsc           
         | dv }	 t          t          |           }n%# t          $ r | }d| j        d| j        d} Y nw xY wt          j        d          }|j        }g }g }| dk    rIt          j        dd          }||f}d	}t          || |||t          j
        t                    g           d S t          |          D ]]}	|	d
z   fd|	dz   z  z   }
||	         }|                    t          j        |
|                     |                    d|
d                    ^|                    |           |                    |j                   t          || |||t          j
        t                    g           d S )N)	betabinomra   skellam	yulesimondlaplacenchypergeom_fisherr;   r<   zrv_discrete(values=(z, z))r   r<   )r   r   
         ?)r   r   r   )r   r   r   )r=   r   r>   xkpkr?   zerosnumargsfullr   dtypeintrangeappendinsertr4   )dist
shape_args
shape_onlydistfunclocnargsallargsbshapepr[   shp	param_vals               r/   test_rvs_broadcastr   k   s     D DJA5$'' A A A@dg@@47@@@A (1++CEGFGJ$$c(HdG"J#	A 	A 	A 5\\ ! !1uhq1u%qM	rwsI..///aQ    NN3
MM#( $bhsmm_    s    >>z	dist,argsc           
         	 t          t          |           }n# t          $ r | }Y nw xY wt          j                            d           t          j                            dd          dt          j                            dd          g} |j        | \  }}|D ]B}t          j	        |dz
  |z   ||z   g |j
        dg|R d|i |j
        d	g|R d|ig           Cd S )
NM r   r   rp           r         ?)r=   r   r>   r?   r@   rA   r8   supportnptassert_array_equalppf)r|   argsrS   re_locs_a_br   s          r/   test_ppf_with_locr      s   %%    INN7y  b))1bi.?.?2.F.FGGV^T"FB  T#Xr#vVZ,d,,,,,jfj.Mt.M.M.M.M.MN	 	 	 	     ''z
dist, argsc                    	 t          t          |           }n# t          $ r | }Y nw xY wt          j                            d           t          j                            dd          dt          j                            dd          g} |j        | \  }}|D ]F}||z   |dz
  |z   f} |j        dg|R d|i |j        d	g|R d|if}t          j
        ||           Gt          j                            ddd
          t          j        d
          t          j                            ddd
          g} |j        | \  }}|D ]F}||z   |dz
  |z   f} |j        dg|R d|i |j        d	g|R d|if}t          j
        ||           Gd S )Nr   r   r   r   r   rp   r   r   r   )   r   r4   )r=   r   r>   r?   r@   rA   r8   r   isfr   r   rt   )	r|   r   rS   r   r   r   r   expectedress	            r/   test_isf_with_locr      s   %%    INN7y  b))1bi.?.?2.F.FGGV^T"FB . .8R!Vc\)fj,d,,,,,jfj.Ld.L.L.L.L.LLx----y  bv 66xy  BV 446G V^T"FB . .8R!Vc\)fj,d,,,,,jfj.Ld.L.L.L.L.LLx----. .r   c                     | j         |g|R  }t                              | j        d          }||t	          j        |          z  z
  }t          j         | j        |g|R  ||dz              t          j         | j         | j         |g|R  dz
  g|R  ||dz              t          | d          sW | j
        | \  }}|||k              }	t          j         | j         | j         |	g|R  dz   g|R  |	| j        z   |dz              d S d S )N   z
-roundtrip:0yE>rr   z ppf-cdf-next)rJ   roundtrip_cdf_ppf_exceptionsrM   namer?   spacingr   r   r   hasattrr   inc)
rS   r.   rT   msgcdf_suppn_ulps	cdf_supp0r   r   supp1s
             r/   rD   rD      sx    vz$%%%%H *--fk2>>F6"*X"6"666I:6:i6#666|!35 5 5 :6:jfj&<&<&<&<t&CJcJJJ|!35 5 5 64   J%BTBYzvz*&*U*AS*A*A*AD*HO3OOO$vz133H	J 	J 	J 	J 	JJ Jr1   c           	      P   t          | d          r| j        }n>t           | j        dg|R  dz
            }t	          t          ||dz                       } | j        |g|R  } | j        |g|R                                  }d\  }}|dk    rd\  }}t          j
        ||d         z
  ||d         z
  ||	           t          j        |          }	|	d d
         t          j        |	          dz  z   }
t          j         | j        |
g|R  d           d} | |d|i}t          j
        |                    |	dd          |z             t          j        |                    |	|z                                  t          j        |                    |
|z             d           d S )Nrr   r5   r   rp   )绽|=r   rl   )h㈵>r   r   atolrtolr   r   rq   r   )r   rr   rx   r   listry   rJ   rH   cumsumr   r   r?   asarraydiffassert_equal)rS   r.   r-   indexstartindcdfspmfs_cumr   r   r[   	k_shiftedr   r|   s                r/   rE   rE      s   vt 5	zvz$----122U8X]33446:e"c"""Dvz%&#&&&--//HJD$9
dtAw8A;(>!. . . . 	
5A#2#A%IZVZ	0C000!444 C6C c  D122--rwtxxC7H7H/I/IJJJTXXi#o..22222r1   c                 b    t          j         | |                     |          |dd           d S )Nr   r   )r   r   moment)rS   r.   rU   r[   s       r/   rf   rf      sC    ++A.."0 0 0 0 0 0r1   c                    t          j         | j        |g|R  d | j        |g|R  z
  dd           t	          j        ddd          }t          j         | j        |g|R   | j        d|z
  g|R  dd            | j        dg|R  }t          j         | j        |dz
  g|R  dk               t          j         | j        |dz   g|R  dk               d S )	Nr   r   r   r5   Gz?   rq   r   )	r   r   sfrJ   r?   linspacer   r   assert_)rS   r.   rT   r   q	median_sfs         r/   rF   rF      s1   		$----rJFJt4Jc4J4J4J/J"0 0 0 0 	D$##A

1+s+++ZVZQ-E-E-E-E"0 0 0 0 
3%%%%IK		)a-.#...4555K

9q=/3///#566666r1   c                 p   d} | j         | \  }}t          t          |d                    }t          t          |d                    dz   }	t	          ||	          }
d}|g}g }|
D ]V} | j        |g|R  }||z
  |dz
  k    r:|                    |           |                    ||z
             |}|d|z
  k    r nW|d         |k     r-|                    |           |                    d|z
             t          j        |          }t          j        |          }|dz   }||d<   t          j	        ||          \  }}t          j        t          j        |          t          |          |z            \  }}t          j        ||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   rx   maxminry   rJ   rz   r?   array	histogramr   	chisquarelenr   r   str)rS   r.   rB   rW   r   wsuppr   r   lohighdistsupportlastdistsuppdistmassiicurrenthistsuppfreqhsuppchispvals                        r/   rG   rG     s   $ E V^S!FB	SU^^		Bs2t}}!DD//KDtHH  &*R&#&&&T>UU]**OOBOOGdN+++D!e)$$|bD!!!x!!Hx!!H $HHQK ,sH--KD%$S(1BCCJD$KuQQQs3xxQQc$iiQQ    r1   c                 N    | j         t          j        d| j         v           d S d S )Nscale)__doc__r   r   )rS   s    r/   rN   rN   G  s/    ~!G6>122222 "!r1   method)rH   rI   rJ   rK   r   rL   r   r   zdistname, argsc                 ,   	 t          t          |          }n# t          $ r Y d S w xY wt          ||           | dv rddg}nddg}d |D             }ddg} |g|R d|i}t          j        |fdt          |g||R  D             d	d	
           d S )N)r   r   r   r   r   r   c                     g | ]}|gd z  	S )r   r   ).0r   s     r/   
<listcomp>z+test_methods_with_lists.<locals>.<listcomp>\  s    			A1#a%			r1   r   c                     g | ]} | S r   r   )r   rV   dist_methods     r/   r   z+test_methods_with_lists.<locals>.<listcomp>`  s    CCCQaCCCr1   V瞯<)r   r   )r=   r   r>   r   r   zip)	r   r-   r   r|   zp2r   resultr   s	           @r/   test_methods_with_listsr   M  s    uh''   $''K#JF					Ba&C[)R)))S))FCCCC#a2B"2Bc2B2B2BCCC"0 0 0 0 0 0s    
''c                     t          t          |           }t          j        dd          } |j        |g|R  }t          j        }t          j        ||           d S )Nr   )r=   r   r?   arangerJ   nanr   r   )r-   r   r|   xvalsr   s         r/   test_cdf_gh13280_regressionr   d  s]     5(##D
	"bA48ADvHT8$$$$$r1   c               #     K   dhdhd} t                      }t          D ]\  }}||v r
|                    |           	 t          t          |          }n# t
          $ r Y Bw xY w|                                }t          |          D ]B\  }}|j        | 	                    |t                                v s|j
        s6||j        |fV  Cd S )Nn)r!   ra   )r%   r   r+   r=   r   r>   _shape_info	enumerater   rM   integrality)integrality_exceptionsr,   r-   shapesr|   
shape_infoishapes           r/   "cases_test_discrete_integer_shapesr   n  s      *-cUCC55D( / /&t	5(++DD 	 	 	H	 %%''
!*-- 	/ 	/HAu
488355IIII) JEJ.....	// /s   A
A"!A"zdistname, shapename, shapesc                    t          t          |           }|                                }d |D             }|                    |          }t	          |          }||         }|dz
  }	|dz
  }
|g|	g|
gg||<    |j        | \  }}t          j        t          j        ||d                    } |j	        |g|R  }t          j
        t          j        |dd d f                             rJ t          j        t          j        |dd d f                             sJ t          j
        t          j        |dd d f                             rJ d S )Nc                     g | ]	}|j         
S r   )r   )r   r   s     r/   r   z'test_integer_shapes.<locals>.<listcomp>  s    666%5:666r1   rq   r   r   r   r   )r=   r   r   r   r   r   r?   roundr   rH   anyisnanall)r-   	shapenamer   r|   r   shape_namesr   shapes_copyvalid_shapeinvalid_shapenew_valid_shapeabr   rH   s                  r/   test_integer_shapesr    sZ    5(##D!!##J66:666K)$$Av,,K)K#%M!AoO"mm_6GHKN4< DAq
Q1%%&&A
$(1
#{
#
#
#Cvbhs1aaa4y))*****6"(3q!!!t9%%&&&&&vbhs1aaa4y))*******r1   c                     d} t          j        t          |           5  t          j        dd          j         d d d            n# 1 swxY w Y   t          j        t          |           5  t          j        dd          j         d d d            n# 1 swxY w Y   dt          j        _        t          j        dd          }t          |t                    sJ t          t          j        d           d S )Nz,'rv_discrete_frozen' object has no attribute)matchrp   rq   herringpdf)
r'   raisesAttributeErrorr   binomr  logpdf
isinstancer   delattr)messagefrozen_binoms     r/   test_frozen_attributesr    sP    =G	~W	5	5	5 ! !B  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	~W	5	5	5 $ $B##$ $ $ $ $ $ $ $ $ $ $ $ $ $ $EKO;r3''Ll$677777EKs#   AA	A	+BBBzdistname, shapesc                 f   t          | t                    rt          t          |           }n| } |j        | \  }}t          j         |j        ddgg|R  |dz
  |f           t          j         |j        ddgg|R  |dz
  |f           t          j         |j	        dg|R  |dz
  |f           d S )Nr   r   )
r  r   r=   r   r   r   r   r   r   interval)r-   r   r|   r
  r  s        r/   test_intervalr    s     (C   uh''4< DAqXTXq!f.v...1a999XTXq!f.v...1a999]T]1.v...1a99999r1   zSensible to machine precisionc            	      X   t           j                            d          } t          j        |                     d          dz            }|                     d          }|t          j        |          z  }t          j        ||f          t          j        dg|d d                                         z             |z   dz  }t          j        |dd                                          |d         dz   gz             |z   dz  }t          j	        |          }t          j        dg|d d                                         z             |z   dz  }t          j        |dd                                          dgz             |z   dz  }
                                \  }}	t          ||d                    t          |	|d                    t                              |          |           t                              |          d           t                              |          d           t          j        d	          5  t                              |          t          j        |                     t                              |          t           j                    t                              |          t           j                    d d d            n# 1 swxY w Y   t                              |          |           t                              |          |           t                              |          dg|d d                                         z              t          j        d	          5  t                              |          t          j                            |                    d
           t                              |          t          j                            |                    d
           t                              |          t          j                            |                    d
           d d d            n# 1 swxY w Y   t                              |          d                    |          z
             t                              |          d                    |          z
             t                              |          d                    |          z
             t          j        d	          5  t                              |          t          j                            |                    d
           t                              |          t          j                            |                    d
           t                              |          t          j                            |                    d
           d d d            n# 1 swxY w Y   t                              |          |           t                              |          |           t                              |          d d         |dd                     t                              d          |dz
             t                              d          |	                               |          }
t                              |
          |           t                              d|z
                                |                     t                              d|z
                                |                     t                              d          |	           t                              d          |dz
             t          j        ddd          }                    |dz                                |dz            f}t                              d|z
            |           t                              d                                                     t                              d          |dz
  |	f                               d          }t                                          |           t          j        ||z            }t          j        ||z
  dz  |z            }t          j        ||z
  dz  |z            |dz  z  }t          j        ||z
  dz  |z            |dz  z  dz
  }t                                          |           t                                          t          j        |                     t                                          |           t                              d          ||||f           t          j        |dz  |z            }t                              d          |           t                              d           d           t                                          |           t                              d           |           t          j        d	          5  t                              fd                                                       d d d            n# 1 swxY w Y   t           j                            d          } !                    d|           }t           j                            d          }                     |                     d                    }t          ||           d S )Nl   KU[ rp   r   r   r   r   r   ignore)divider   )r   r5   r   rq   r   g      ?r   r_   )r^   c                     dS )Nr   r   r   s    r/   <lambda>z test_rv_sample.<locals>.<lambda>%  s    ! r1   c                     | dz  S )Nr   r   r!  s    r/   r"  z test_rv_sample.<locals>.<lambda>'  s
    !Q$ r1   c                 .                         |           S )N)rI   )r   r|   s    r/   r"  z test_rv_sample.<locals>.<lambda>+  s    t{{1~~ r1   d   )r4   random_stater   )"r?   r@   default_rngsortsumr   rQ   r   tolistr   r   r   rH   errstaterI   loginfrJ   rK   r   rL   r   r   r   r  medianmeanstdsqrtvarr   expectentropyrB   )rngrr   rs   xk_leftxk_rightcdf2	cdf2_left
cdf2_rightr
  r  sf2psint2med2mean2var2skew2kurt2mom3rB   rvs0r|   s                        @r/   test_rv_samplerE    s
   
 )


,
,C	B"$	%	%B	BB"&**BRH---D xb"gnn...//"4a7GABBBrF1H:566;Q>H 9R==D1#SbS	 0 0 2 2233d:A=I(48??,,s233d:A=J <<>>DAqAr!uAr"v DHHRLL"%%%DHHX&&***DHHW%%q))) 
H	%	%	% 7 7B444H--w777G,,rvg6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 DHHRLL$'''DHHX&&---DHHW%%s49+;+;+=+='=>>>	H	%	%	% $ $B)=)="	$ 	$ 	$ 	$H--rvdhhx6H6H/I/I"	$ 	$ 	$ 	$G,,bfTXXg5F5F.G.G"	$ 	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ DGGBKK488B<<000DGGH%%q(););';<<<DGGG$$a(9(9&9:::	H	%	%	% $ $

2twwr{{(;(;"	$ 	$ 	$ 	$

8,,bfTWWX5F5F.G.G"	$ 	$ 	$ 	$

7++RVDGGG4D4D-E-E"	$ 	$ 	$ 	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ DHHTNNB'''DHHY'',,,DHHZ(("-r!""v666DHHQKKQ'''DHHQKK### ''"++CDHHSMM2&&&DHHQy[))488I+>+>???DHHQz\**DHHZ,@,@AAADHHQKK###DHHQKKQ''' 
T4	$	$B88BqD>>488BqD>>)DDMM!B$''...DMM!$$dkkmm444DMM!$$qsAh/// 88C==DDKKMM4((( F2b5MME62:/B&''DFBJ?R'((4#;6EFBJ?R'((472Q6EDIIKK'''DHHJJ...DHHJJ%%%DJJvJ..eU0KLLL 62q5B,DDKKNND))) DKK,,a000DKKMM5)))DKK//666 
H	%	%	% P P%=%=%=%=>>>OOOP P P P P P P P P P P P P P P )


,
,C
((#(
.
.C
)


,
,C88CJJCJ(())DCsK   BK**K.1K.CQ<<R R CX22X69X6:lllc                       G d dt           j                  }  | dt          d                    }|                    d          }t	          |d           d S )	Nc                       e Zd Zd ZdS )-test__pmf_float_input.<locals>.rv_exponentialc                     ddd|z
  z  z  S )NgUUUUUU?r   r   r   )selfr   s     r/   _pmfz2test__pmf_float_input.<locals>.rv_exponential._pmf9  s    QU##r1   N)__name__
__module____qualname__rK  r   r1   r/   rv_exponentialrH  8  s#        	$ 	$ 	$ 	$ 	$r1   rO  r   r-  )r
  r  *   )r&  r   )r   rQ   floatrB   r   )rO  rvrB   s      r/   test__pmf_float_inputrS  4  st    $ $ $ $ $* $ $ $ 
#u	.	.	.B
&&b&
!
!CCr1   )8numpy.testingrb   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   rQ   r&   r   r0   r)   parametrizer\   ri   r   r   r   rD   rE   rf   rF   rG   rN   r   r   r   r  r  r  xfail_on_32bitrE  rS  r   r1   r/   <module>r\     s=         ) ) ) ) ) )           , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , D C C C C C C C @ @ @ @ @ @***+ #%#4000"56 6 |$ !)"~    24M4M4O4OPP(B (B QP(BV 66/ / 76/0 *L99- - :9-` l33  43  |44. . 54.0J J J43 3 360 0 0
7 7 76 6 6r3 3 3  $A $A $A B B)<880 0 98B B0( )?;;% % <;%/ / /4 6;;==? ?+ +? ?+,      +\::: : ;:: ;<<s s =<sj
 
 
 
 
r1   