
    5[gWP                        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jD                  jG                  d e!             d        Z$ejD                  jG                  de      d        Z%ejD                  jG                  de      d        Z&ejD                  jG                  de      d        Z'ejD                  jG                  de      d        Z(d Z)d Z*d Z+d Z,d Z-d  Z.ejD                  jG                  d!g d"      ejD                  jG                  d#e      d$               Z/ejD                  jG                  d#e      d%        Z0d& Z1ejD                  jG                  d' e1             d(        Z2d) Z3ejD                  jG                  d*e      d+        Z4ejD                  jk                  d,      d-        Z6d. Z7y)/    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 ][  \  }}|t        v r4t        j                  |||t        j
                  j                         n	|||| vf | j                  |       ] y w)N)marks)setr   distslowpytestparammarkslowadd)seendistnameargs      `/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/stats/tests/test_discrete_basic.pycases_test_discrete_basicr0      s`     5D%#x,,xhfkk>N>NOOC!555 &s   A0A2zdistname,arg,first_casec                    	 t        t        |       }t        j                  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}|j%                  | d      }t'        ||||	|
       | dk7  rt)        |       t+        ||       t-        ||       t/        ||       t1        |||        |j2                  j4                  t        j6                  j4                  k7  rt9        ||t        j6                         y y y # t        $ r | }d} Y w xY w)Nsample distributioniP sizei  z cdf_ppfz oth{Gz?z
 chisquare)r      r   r      )randint	hypergeom	bernoullinchypergeom_walleniusr   )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ks                r/   test_discrete_basicrZ   &   s   )) IINN7
&**
%$
%C99S>D6<<DAq&#tX
%:;&#x(fc4F!23vs#EVS#u%46  V]]FJJ  aa+,.JJx#C):EB,,!&)#FC0vs#vs# 	fc8,$$(9(9(B(BB!&#u/@/@A C% #  )()s   F. .F?>F?zdistname,argc           	         	 t        t        |       } |j                  |ddi\  }}}}t        |||        t	        |||||        t        ||||        t        |||||        t        ||||||        t        j                  j                         5 }| dv r|j                  t               t        ||||||        d d d        t        |||d       t        |||||z  z   d       y # t        $ r | }d} Y w xY w# 1 sw Y   ?xY w)Nr2   momentsmvsk)zipf
betanbinomr   r   )r;   r   r<   r   r   r   r	   r
   r=   testingsuppress_warningsfilterRuntimeWarningr   check_moment_frozen)r-   r.   rQ   rS   rT   srY   sups           r/   test_momentsrg   Q   s   )) s3F3JAq!QX. aH-fc1h/VS!Q1fc1aH5		%	%	'3--JJ~&&#q!Q9 
( Q*QqsUA.%  )() 
(	's   C% *C8%C54C58Dzdist,shape_argsc           
      :   | dv }	 t        t        |       }t        j                  d      }|j                  }g }g }t        |      D ]P  }|dz   fd|dz   z  z   }	||   }
|j                  t        j                  |	|
             |j                  d	|	d	          R |j                  |       |j                  |j                         t        || |||t        j                  t              g       y # t        $ r# | }d| j                  d| j                  d} Y w xY w)
N)	betabinomr_   skellam	yulesimondlaplacenchypergeom_fisherr:   zrv_discrete(values=(z, z))r   r   )r   r   r   )r;   r   r<   xkpkr=   zerosnumargsrangeappendfullinsertr3   r   dtypeint)dist
shape_args
shape_onlydistfunclocnargsallargsbshaperY   shp	param_vals              r/   test_rvs_broadcastr   j   s     3 3JA5$' ((1+CEGF5\1uhq1u%qM	rwwsI./aQ 	 
 NN3
MM#(( $bhhsm_#  A%dgg[477+R@As   C. .(DDz	dist,argsc           
         	 t        t        |       }t        j                  j                  d       t        j                  j                  dd      dt        j                  j                  dd      g} |j                  | \  }}|D ]M  }t        j                  |dz
  |z   ||z   g |j                  dg|d|i |j                  d	g|d|ig       O y # t        $ r | }Y w xY w)
NM r   r   
           r|         ?)r;   r   r<   r=   r>   r?   r7   supportnptassert_array_equalppf)rx   argsrQ   re_locs_a_br|   s          r/   test_ppf_with_locr      s    % IINN7yy  b)1bii.?.?2.FGGV^^T"FBT#Xr#vVZZ,d,,jfjj.Mt.M.MN	   s   C C%$C%z
dist, argsc                 Z   	 t        t        |       }t        j                  j                  d       t        j                  j                  dd      dt        j                  j                  dd      g} |j                  | \  }}|D ]Q  }||z   |dz
  |z   f} |j                  dg|d|i |j                  d	g|d|if}t        j                  ||       S t        j                  j                  ddd
      t        j                  d
      t        j                  j                  ddd
      g} |j                  | \  }}|D ]Q  }||z   |dz
  |z   f} |j                  dg|d|i |j                  d	g|d|if}t        j                  ||       S y # t        $ r | }Y w xY w)Nr   r   r   r   r   r   r   r|   r   )   r   r3   )r;   r   r<   r=   r>   r?   r7   r   isfr   r   rp   )	rx   r   rQ   r   r   r   r|   expectedress	            r/   test_isf_with_locr      s   % IINN7yy  b)1bii.?.?2.FGGV^^T"FB8R!Vc\)fjj,d,,jfjj.Ld.L.LLx- 
 yy  bv 6xxyy  BV 46G V^^T"FB8R!Vc\)fjj,d,,jfjj.Ld.L.LLx-   s   F F*)F*c                 Z    | j                   |g| }t        j                  | j                  d      }||t	        j
                  |      z  z
  }t        j                   | j                  |g| ||dz          t        j                   | j                   | j                   |g| dz
  g| ||dz          t        | d      sg | j                  | \  }}|||k     }	t        j                   | j                   | j                   |	g| dz   g| |	| j                  z   |dz          y y )N   z
-roundtrip:0yE>rn   z ppf-cdf-next)rH   roundtrip_cdf_ppf_exceptionsrK   namer=   spacingr   r   r   hasattrr   inc)
rQ   r.   rR   msgcdf_suppn_ulps	cdf_supp0r   r   supp1s
             r/   rB   rB      s/    vzz$%%H *--fkk2>F6"**X"666I:6::i6#6|!35 :6::jfjj&<&<t&CJcJ|!35 64 %BTBYzvzz*&**U*AS*AD*HO3O$vzz133H	J !    c           	      ,   t        | d      r| j                  }n7t         | j                  dg| dz
        }t	        t        ||dz               } | j                  |g| } | j                  |g| j                         }d\  }}|dk(  rd\  }}t        j                  ||d   z
  ||d   z
  ||	       t        j                  |      }	|	d d
 t        j                  |	      dz  z   }
t        j                   | j                  |
g| d       d} | |d|i}t        j                  |j                  |	dd  |z         t        j                  |j                  |	|z                      t        j                  |j                  |
|z         d       y )Nrn   r4   r   r   )绽|=r   rj   )h㈵>r   r   atolrtolr   r         ?r|   )r   rn   rw   r   listrr   rH   rF   cumsumr   r   r=   asarraydiffassert_equal)rQ   r.   r-   indexstartindcdfspmfs_cumr   r   rY   	k_shiftedr|   rx   s                r/   rC   rC      sv   vt		zvzz$--12U8X]346::e"c"Dvzz%&#&--/HJD$9
dtAw8A;(>!. 	

5A#2A%IZVZZ	0C0!4 CC c D12-rwwtxxC7H/IJTXXi#o.2r   c                 Z    t        j                   | | j                  |      |dd       y )Nr   r   )r   r   moment)rQ   r.   rS   rY   s       r/   rd   rd      s(    ++A."0r   c                     t        j                   | j                  |g| d | j                  |g| z
  dd       t	        j
                  ddd      }t        j                   | j                  |g|  | j                  d|z
  g| dd        | j                  dg| }t        j                   | j                  |dz
  g| dkD         t        j                   | j                  |dz   g| dkD         y )	Nr   r   r   r4   Gz?   r   r   )	r   r   sfrH   r=   linspacer   r   assert_)rQ   r.   rR   r   q	median_sfs         r/   rD   rD      s    			$--rJFJJt4Jc4J/J"0 	D$#A


1+s+ZVZZQ-E-E"0 

3%%IKK			)a-.#.45KK


9q=/3/#56r   c                 &   d} | j                   | \  }}t        t        |d            }t        t        |d            dz   }	t	        ||	      }
d}|g}g }|
D ]R  } | j
                  |g| }||z
  |dz
  k\  s"|j                  |       |j                  ||z
         |}|d|z
  kD  sR n |d   |k  r%|j                  |       |j                  d|z
         t        j                  |      }t        j                  |      }|dz   }||d<   t        j                  ||      \  }}t        j                  t        j                  |      t        |      |z        \  }}t        j                  ||kD  d	| d
t        |       dt        |              y)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   rw   maxminrr   rH   rs   r=   array	histogramr   	chisquarelenr   r   str)rQ   r.   r@   rU   r   wsuppr   r   lohighdistsupportlastdistsuppdistmassiicurrenthistsuppfreqhsuppchispvals                        r/   rE   rE     s   $ E V^^S!FB	SU^	Bs2t}!DD/KDtHH&**R&#&T>UU]*OOBOOGdN+D!e)$  |bD!xx!Hxx!H $HHQK ,,sH-KD%$S(1BCJD$KKu
uJs3xjc$i[Qr   c                 `    | j                   "t        j                  d| j                   v       y y )Nscale)__doc__r   r   )rQ   s    r/   rL   rL   =  s&    ~~!G6>>12 "r   method)rF   rG   rH   rI   r   rJ   r   r   zdistname, argsc           	      L   	 t        t        |      }| dv rddg}nddg}|D cg c]  }|gdz  
 }}ddg} |j                  |g|d|i}t	        j
                  |t        |g|| D 	cg c]  }	 |j                  |	  c}	dd	       y # t        $ r Y y w xY wc c}w c c}	w )
N)r   r   r   r   r   r   r   r|   V瞯<)r   r   )r;   r   r<   rF   r   r   zip)
r   r-   r   rx   zpp2r|   resultrT   s
             r/   test_methods_with_listsr   C  s    uh' #JF	A1#a%B	a&CTXXa&"&#&F/21/?r/?3/?@/?!1/?@"0   
 As   B B,B!
	BBc                     t        t        |       }t        j                  dd      } |j                  |g| }t        j
                  }t        j                  ||       y )Nr   )r;   r   r=   arangerH   nanr   r   )r-   r   rx   xvalsr   s         r/   test_cdf_gh13280_regressionr   Y  sN     5(#D
		"bA488ADvvHT8$r   c               #     K   dhdhd} t               }t        D ]  \  }}||v r|j                  |       	 t        t        |      }|j                         }t        |      D ]I  \  }}|j                  | j                  |t                     v s|j                  s9||j                  |f K  y # t
        $ r Y w xY ww)Nn)r!   r_   )r%   r   r+   r;   r   r<   _shape_info	enumerater   rK   integrality)integrality_exceptionsr,   r-   shapesrx   
shape_infoishapes           r/   "cases_test_discrete_integer_shapesr   c  s      *-cUC5D(&t	5(+D %%'
!*-HAu

48835II))EJJ.. . )  		s)   4C B1A*C 1	B=:C <B==C zdistname, shapename, shapesc                    t        t        |       }|j                         }|D cg c]  }|j                   }}|j	                  |      }t        |      }||   }	|	dz
  }
|	dz
  }|	g|
g|gg||<    |j                  | \  }}t        j                  t        j                  ||d            } |j                  |g| }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 y c c}w )Nr   r   r   r   r   )r;   r   r   r   r   r   r   r=   roundr   rF   anyisnanall)r-   	shapenamer   rx   r   r   shape_namesr   shapes_copyvalid_shapeinvalid_shapenew_valid_shapeabr   rF   s                   r/   test_integer_shapesr  }  s7    5(#D!!#J+56:%5:::K6)$Av,K)K#%M!AoO"mm_6GHKN4<< DAq
Q1%&A
$((1
#{
#Cvvbhhs1a4y)***66"((3q!t9%&&&vvbhhs1a4y)****! 7s   Ec                     d} t        j                  t        |       5  t        j                  dd      j
                   d d d        t        j                  t        |       5  t        j                  dd      j                   d d d        dt        j                  _        t        j                  dd      }t        |t              sJ t        t        j                  d       y # 1 sw Y   xY w# 1 sw Y   mxY w)Nz,'rv_discrete_frozen' object has no attribute)matchr   r   herringpdf)
r'   raisesAttributeErrorr   binomr  logpdf
isinstancer   delattr)messagefrozen_binoms     r/   test_frozen_attributesr    s     =G	~W	5B   
6	~W	5B## 
6EKKO;;r3'Ll$6777EKK 
6	5	5	5s   !C#"!C/#C,/C8zdistname, shapesc                 ~   t        | t              rt        t        |       }n| } |j                  | \  }}t        j                   |j                  ddgg| |dz
  |f       t        j                   |j                  ddgg| |dz
  |f       t        j                   |j                  dg| |dz
  |f       y )Nr   r   )
r  r   r;   r   r   r   r   r   r   interval)r-   r   rx   r  r  s        r/   test_intervalr    s     (C uh'4<< DAqXTXXq!f.v.1a9XTXXq!f.v.1a9]T]]1.v.1a9r   zSensible to machine precisionc            	         t         j                  j                  d      } t        j                  | j                  d      dz        }| j                  d      }|t        j                  |      z  }t        j                  ||f      t        j                  dg|d d j                         z         |z   dz  }t        j                  |dd  j                         |d   dz   gz         |z   dz  }t        j                  |      }t        j                  dg|d d j                         z         |z   dz  }t        j                  |dd  j                         dgz         |z   dz  }j                         \  }}	t        ||d          t        |	|d          t        j                  |      |       t        j                  |      d       t        j                  |      d       t        j                  d	      5  t        j                  |      t        j                  |             t        j                  |      t         j                           t        j                  |      t         j                           d d d        t        j#                  |      |       t        j#                  |      |       t        j#                  |      dg|d d j                         z          t        j                  d	      5  t        j%                  |      t        j                  j#                  |            d
       t        j%                  |      t        j                  j#                  |            d
       t        j%                  |      t        j                  j#                  |            d
       d d d        t        j'                  |      dj#                  |      z
         t        j'                  |      dj#                  |      z
         t        j'                  |      dj#                  |      z
         t        j                  d	      5  t        j)                  |      t        j                  j'                  |            d
       t        j)                  |      t        j                  j'                  |            d
       t        j)                  |      t        j                  j'                  |            d
       d d d        t        j+                  |      |       t        j+                  |      |       t        j+                  |      d d |dd         t        j+                  d      |dz
         t        j+                  d      |	       j'                  |      }
t        j-                  |
      |       t        j-                  d|z
        j+                  |             t        j-                  d|z
        j+                  |             t        j-                  d      |	       t        j-                  d      |dz
         t        j.                  ddd      }j+                  |dz        j-                  |dz        f}t        j1                  d|z
        |       t        j1                  d      j3                                t        j1                  d      |dz
  |	f       j+                  d      }t        j3                         |       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        j5                         |       t        j7                         t        j8                  |             t        j;                         |       t        j                  d      ||||f       t        j                  |dz  |z        }t        j=                  d      |       t        j?                  d       d       t        j?                         |       t        j?                  d       |       t        j                  d	      5  t        j?                  fd       jA                                d d d        t         j                  j                  d      } jC                  d|       }t         j                  j                  d      } j+                  | j                  d            }t        ||       y # 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nl   KU[ r   r   r   r   r   r   ignore)divider   )r   r4   r   r   r   g      ?r   r]   )r\   c                      y)Nr   r   r   s    r/   <lambda>z test_rv_sample.<locals>.<lambda>  s    !r   c                     | dz  S )Nr   r   r  s    r/   r  z test_rv_sample.<locals>.<lambda>  s    !Q$r   c                 &    j                  |       S )N)rG   )r   rx   s    r/   r  z test_rv_sample.<locals>.<lambda>   s    t{{1~r   d   )r3   random_stater   )"r=   r>   default_rngsortsumr   rO   r   tolistr   r   r   rF   errstaterG   loginfrH   rI   r   rJ   r   r   r   r  medianmeanstdsqrtvarr   expectentropyr@   )rngrn   ro   xk_leftxk_rightcdf2	cdf2_left
cdf2_rightr  r  sf2psint2med2mean2var2skew2kurt2mom3r@   rvs0rx   s                        @r/   test_rv_sampler=    sC   
 ))


,C	B"$	%B	BB"&&*BRH-D xxb"gnn../"4a7GABBrF1H:56;Q>H 99R=D1#Sb	 0 0 223d:A=I((48??,s23d:A=J <<>DAqAr!uAr"v DHHRL"%DHHX&*DHHW%q) 
H	%B4H-w7G,rvvg6 
& DHHRL$'DHHX&-DHHW%s49+;+;+='=>	H	%B)="	$H-rvvdhhx6H/I"	$G,bffTXXg5F.G"	$ 
& DGGBK488B<0DGGH%q();';<DGGG$a(9&9:	H	%

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

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

7+RVVDGGG4D-E"	$ 
& DHHTNB'DHHY',DHHZ("-r!"v6DHHQKQ'DHHQK# ''"+CDHHSM2&DHHQy[)488I+>?DHHQz\*DHHZ,@ADHHQK#DHHQKQ' 
T4	$B88BqD>488BqD>)DDMM!B$'.DMM!$dkkm4DMM!$qsAh/ 88C=DDKKM4( FF2b5ME662:/B&'DFFBJ?R'(4#;6EFFBJ?R'(472Q6EDIIK'DHHJ.DHHJ%DJJvJ.eU0KL 662q5B,DDKKND) DKK,a0DKKM5)DKK/6 
H	%%=>>O 
& ))


,C
((#(
.C
))


,C88CJJCJ()DCk 
&	% 
&	% 
&	%l 
&	%s3   <Bf!B>f.&B>f;,.g!f+.f8;ggc                       G d dt         j                        }  | dt        d            }|j                  d      }t	        |d       y )	Nc                       e Zd Zd Zy)-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._pmf.  s    QU##r   N)__name__
__module____qualname__rC  r   r   r/   rv_exponentialr@  -  s    	$r   rG  r   r%  )r  r  *   )r  r   )r   rO   floatr@   r   )rG  rvr@   s      r/   test__pmf_float_inputrK  )  s@    $** $ 
#u	.B
&&b&
!CCr   )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   rO   r&   r   r0   r)   parametrizerZ   rg   r   r   r   rB   rC   rd   rD   rE   rL   r   r   r   r  r  r  xfail_on_32bitr=  rK  r   r   r/   <module>rT     sR    )   , , , , D @*+ #%##40"56 6 |$ !)"~  24M4OP'B Q'BT 6/ 7/0 *L9$ :$N l3 4  |4. 5.0J4360
76r3  $A B)<80 9B0& )?;% <%/4 6;=?+?+,  +\:: ;: ;<s =sj
r   