
    _MhO                     x   d dl mZmZmZ d dlZd dlmZmZm	Z	m
Z
mZmZ d dlZd dlmZ d Zd Zej        j        d             Zej        j        d             Zd	 Zd
 Z G d dej                  Z G d dej                  Z G d dej                  Zd Zd Zd Zd Zg dZ ej        !                    de ddgz             ej        !                    de           d                         Z"d Z#d Z$d Z%d Z&ej        j        d             Z'd  Z(ej        j        d!             Z)d" Z*d# Z+d$ Z,d% Z-d& Z.dS )'    )statslinalg	integrateN)assert_almost_equalassert_assert_equalassert_array_almost_equalassert_array_almost_equal_nulpassert_allclose)raisesc                     t           j                            d           d} t           j                            |           }|                                }|                    d          }t          j        |          }t          j        ddd          }|	                    |          }t          j
                            |||          }|d         |d	         z
  }t          t          j        ||z
  d
z            |z  dk                |                    |t           j                  }	|                    t           j         |          }
t!          |	dd           t!          |
dd           t!          |                    |t           j                  |	d           t!          |                    t           j         |          |
d           t!          |                    |          |d
z                                  |z  d
           t!          |                    ||d
z            ||z                                  |z  d
           d S )N      )ddof     locscaler      {Gz?      ?decimal   )nprandomseedrandnmeanstdr   gaussian_kdelinspaceevaluatenormpdfr   sumintegrate_box_1dinfr   integrate_boxintegrate_kdeintegrate_gaussian)n_basesamplexnxnmeanxnstdgkdexskdepdfnormpdf	intervallprob1prob2s              ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/stats/tests/test_kdeoth.pytest_kde_1dr;   
   s   INN7L		&	&BWWYYFFFFNNE b!!D 
R#		B]]2FjnnRV5n99G11IBFFW$q()))3d:;;;!!&"&11E!!26'622EsA....sA....**626::E2NNNN**BF7F;;UBOOOO**400)))3Q@ @ @ @//qAA,,..y8!E E E E E E    c                     t           j                            d           d} t           j                            |           }t           j                            |           }t          j        ||          }t          j        t          j        ||z
  dz  |                    }t          j        ||          }t          j	        ddd          }|
                    |          }t          j                            |||          }|d	         |d
         z
  }	t          t          j        ||z
  dz            |	z  dk                |                    |t           j                  }
|                    t           j         |          }t#          |
dd	           t#          |dd	           t#          |                    |t           j                  |
d           t#          |                    t           j         |          |d           t#          |                    |          |dz                                  |	z  d           t#          |                    ||dz            ||z                                  |	z  d           d S )Nr   r   weightsr   r   r   r   r   r   r   r   r   r   r   )r   r   r    r!   randaveragesqrtr   r$   r%   r&   r'   r(   r   r)   r*   r+   r   r,   r-   r.   )r/   r0   wnr1   r2   r3   r4   r5   r6   r7   r8   r9   s               r:   test_kde_1d_weightedrD   )   sR   INN7L		&	&B		%	%BZB'''FGBJ6	A~r:::;;E b"---D 
R#		B]]2FjnnRV5n99G11IBFFW$q()))3d:;;;!!&"&11E!!26'622EsA....sA....**626::E2NNNN**BF7F;;UBOOOO**400)))3Q@ @ @ @//qAA,,..y8!E E E E E Er<   c                  ,   t           j                            d           d} t          j        ddg          }t          j        ddgddgg          }t           j                            |||           j        }t          j        |          }t           j        dd	d
dd	d
f         \  }}t          j	        |
                                |
                                g          }|                    |          }|                    dd          }t          j                            t          j        ||g          ||          }	|
                                d         |
                                d         z
  }
t          t          j        ||	z
  dz            |
dz  z  dk                d}d}|                    ||d         g||g          }|                    ||g||d         g          }t%          |dd           t%          |dd           t%          |                    |          |dz                                  |
dz  z  d           t%          |                    ||          ||	z                                  |
dz  z  d           d S )Nr   r         ?      @       @      @sizer   r                @@r"   covr   r   r   r   }Ô%I}Ô%ITr   r   )r   r   r    arraymultivariate_normalTr   r$   mgridvstackravelr&   reshaper(   dstackr   r)   r,   r   r-   r.   )r/   r"   
covariancer0   r3   xygrid_coordsr5   r6   r7   smalllarger8   r9   s                  r:   test_kde_2dr_   I   s    INN7L8S#JDC:Sz233J 
	&	&tZl	&	K	K	MB b!!D 8BqIr!Dy()DAq)QWWYY		233K]];''F^^C%%F'++BIq!f,=,=15: , G GG		!qwwyy|+IBFFW$q())Y\:TABBBEEtAw/%@@Eu~tAw/?@@EsA....sA....**400))9a<8!E E E E//jAA,,..	1=qJ J J J J Jr<   c                  n   t           j                            d           d} t          j        ddg          }t          j        ddgddgg          }t           j                            |||           j        }t           j                            |           }t          j        ||          }t           j	        d	d
dd	d
df         \  }}t          j
        |                                |                                g          }|                    |          }	|	                    dd          }	t          j                            t          j        ||g          ||          }
|                                d         |                                d         z
  }t!          t          j        |	|
z
  dz            |dz  z  dk                d}d}|                    ||d         g||g          }|                    ||g||d         g          }t'          |dd           t'          |dd           t'          |                    |          |	dz                                  |dz  z  d           t'          |                    ||          |	|
z                                  |dz  z  d           d S )Nr   r   rF   rG   rH   rI   rJ   r>   r   r   rL   rM   r   r   r   r   rO   rP   r   r   )r   r   r    rQ   rR   rS   r@   r   r$   rT   rU   rV   r&   rW   r(   rX   r   r)   r,   r   r-   r.   )r/   r"   rY   r0   rC   r3   rZ   r[   r\   r5   r6   r7   r]   r^   r8   r9   s                   r:   test_kde_2d_weightedra   q   s    INN7L8S#JDC:Sz233J 
	&	&tZl	&	K	K	MB		%	%B b"---D 8BqIr!Dy()DAq)QWWYY		233K]];''F^^C%%F'++BIq!f,=,=15: , G GG		!qwwyy|+IBFFW$q())Y\:TABBBEEtAw/%@@Eu~tAw/?@@EsA....sA....**400))9a<8!E E E E//jAA,,..	1=qJ J J J J Jr<   c                  D   d } t           j                            d           d}t           j                            |          }t	          j        |          }t	          j        ||           }t	          j        ||j                  }t          j        ddd          }|                    |          }|                    |          }t          ||           |                    |          }	t          ||	           t          t          t          j        |d           d S )	Nc                 L    t          j        | j        d| j        dz   z            S z*Same as default, just check that it works.g         )r   powerndkde_objs    r:   scotts_factorz0test_kde_bandwidth_method.<locals>.scotts_factor   s!    x	3	!#4555r<   r   2   	bw_methodr   r   3   wrongstringr   r   r    r!   r   r$   factorr%   r&   r   assert_raises
ValueError
rk   r/   r0   r3   gkde2gkde3r4   r5   kdepdf2kdepdf3s
             r:   test_kde_bandwidth_methodrz      s   6 6 6 INN7L		&	&B b!!Dr];;;ErT[999E	R"		B]]2FnnR  G(((nnR  G(((*e0"NNNNNNr<   c                  D   d } t           j                            d           d}t           j                            |          }t	          j        |          }t	          j        ||           }t	          j        ||j                  }t          j        ddd          }|                    |          }|                    |          }t          ||           |                    |          }	t          ||	           t          t          t          j        |d           d S )	Nc                 L    t          j        | j        d| j        dz   z            S rd   )r   rf   neffrh   ri   s    r:   rk   z9test_kde_bandwidth_method_weighted.<locals>.scotts_factor   s!    xc79Q;&7888r<   r   rl   rm   r   r   ro   rp   rq   ru   s
             r:   "test_kde_bandwidth_method_weightedr~      s   9 9 9 INN7L		&	&B b!!Dr];;;ErT[999E	R"		B]]2FnnR  G(((nnR  G(((*e0"NNNNNNr<   c                       e Zd Zd ZdS )_kde_subclass1c                     t          j        |          | _        | j        j        \  | _        | _        | j        | _        |                                  d S N)	r   
atleast_2ddatasetshaperh   rg   rk   covariance_factor_compute_covariance)selfr   s     r:   __init__z_kde_subclass1.__init__   sH    }W--+!%!3  """""r<   N)__name__
__module____qualname__r    r<   r:   r   r      s#        # # # # #r<   r   c                        e Zd Z fdZ xZS )_kde_subclass2c                 b    | j         | _        t                                          |           d S r   )rk   r   superr   )r   r   	__class__s     r:   r   z_kde_subclass2.__init__   s,    !%!3!!!!!r<   )r   r   r   r   __classcell__)r   s   @r:   r   r      s8        " " " " " " " " "r<   r   c                       e Zd Zd ZdS )_kde_subclass4c                 0    d|                                  z  S )Nr   )silverman_factor)r   s    r:   r   z _kde_subclass4.covariance_factor   s    T**,,,,r<   N)r   r   r   r   r   r<   r:   r   r      s#        - - - - -r<   r   c                  8   t          j        g dt                    } t          j        ddd          }t	          j        |            |          }t          |           } ||          }t          ||d           t          |           } ||          }t          ||d           t          |           } ||           }g d}	t          |	|d	
           }
fd|
_        |
                                  |
|          }t          ||d           d S )Nr   r   re      dtype
   rl   numnulp)gn,?gǻe??gW[3?ga )?gKd8;?   r   c                       j         S r   )rr   )kdes   r:   <lambda>z/test_gaussian_kde_subclassing.<locals>.<lambda>  s	    SZ r<   )r   rQ   floatr%   r   r$   r   r
   r   r   r	   r   r   )x1r4   yskde1y1kde2y2kde4y4
y_expectedkde5y5r   s               @r:   test_gaussian_kde_subclassingr      sC   	###5	1	1	1B	S""	%	%	%B 
R
 
 C	RB "D	bB"2r3333 "D	bB"2r3333 "D	bBMMMJj"a8888 D////D	bB"2r333333r<   c                  0   t          j        g dt                    } t          j        ddd          }g d}t	          j        |           }|                    d	           |                    d
	            ||          }t          ||d           d S )Nr   r   r   r   r   r   )g>L\9?gp4=?gH꟫?g8(H	MT?gĲCR?r   rm   scottr   r   )r   rQ   r   r%   r   r$   set_bandwidthr	   )r   r4   r   r   r   s        r:   $test_gaussian_kde_covariance_cachingr   	  s    	###5	1	1	1B	S"!	$	$	$B NMMJ 
R
 
 C$$$(((	RBj"a888888r<   c                  R   t          j        g dt                    } t          j        ddd          }t	          j        |           }|j        |_        |                                  ||          }t	          j        | d          } ||          }t          ||d	           d
S )zUgly, but people may rely on this.  See scipy pull request 123,
    specifically the linked ML thread "Width of the Gaussian in stats.kde".
    If it is necessary to break this later on, that is to be discussed on ML.
    r   r   r   r   rl   r   	silvermanrm   r   N)
r   rQ   r   r%   r   r$   r   r   r   r
   )r   r4   r   r   r   r   s         r:   test_gaussian_kde_monkeypatchr     s    
 
###5	1	1	1B	S""	%	%	%B 
R
 
 C0C	RB bK888D	bB"2r333333r<   c                      t          j        d          } t          j        |           }g d}t	           ||           |d           dS )zRegression test for #1181.r   )B\A?筱ES?g
f?r   r   r   r   N)r   aranger   r$   r	   )r   r   r   s      r:   test_kde_integer_inputr   .  sM    	1B

R
 
 CMMMJcc"ggz1======r<   )float32float64float96float128int32int64bw_typer   r   r   c                     t          t          | d           } |dv r|}n%t          t          |d           }|r |d          nd }t          d | |fD                       rt          j                     t          j        d|           }t          j        d|           }t          j        |||          }t          j        d|           } ||          }|j        t          j	        ||t          j
        |          |j                  k    sJ d S )N)r   r      c              3      K   | ]}|d u V  	d S r   r   ).0dts     r:   	<genexpr>z(test_kde_output_dtype.<locals>.<genexpr>E  s&      
,
,"2:
,
,
,
,
,
,r<   r   r   )rn   r?   )getattrr   anypytestskipr   r   r$   r   result_typer   rr   )r   r   bwr?   r   kpointsresults           r:   test_kde_output_dtyper   9  s#    Bt$$E((("gt,,",WWQZZZ

,
,
,
,
,,, i'''Gi'''G7b'BBBAYq&&&FQvYYF<2>'62:g;N;N*+(4 4 4 4 4 4 4 4r<   c                  V   t           j                            d          } |                     d          }t	          j        |          }|                     d          }d}t          j        t          |          5  |	                    |           d d d            d S # 1 swxY w Y   d S )Nl	   Fgu	\U.lt&0 )r   r   )r   r   z0points have dimension 3, dataset has dimension 2match)
r   r   default_rngstandard_normalr   r$   r   r   rt   logpdf)rngr0   r3   r4   msgs        r:   test_pdf_logpdf_validationr   R  s    
)

 F
G
GC			W	%	%Bb!!D			W	%	%B
<C	z	-	-	-  B                 s   ;BB"%B"c                     t           j                            d           d} t           j                            |           }t	          j        |          }t          j        ddd          }|                    |          }|                    |          }t          ||d           t          j
        |          }|                    |          }t          ||d           t	          j        |          }t          j
        |                    |                    }|                    |          }t          ||d           d S )Nr   rl         r   )r   r   r    r!   r   r$   r%   r&   r(   r   logr   )r/   r0   r3   r4   r(   pdf2r   logpdf2s           r:   test_pdf_logpdfr   ]  s   INN1L		&	&B b!!D	S"b	!	!B
--

C88B<<DT2....VC[[Fkk"ooG4444 b!!D
&r""
#
#C;;r??DT2......r<   c                  &   t           j                            d           d} t           j                            |           }t           j                            |           }t          j        ||          }t          j        ddd          }|                    |          }|	                    |          }t          ||d           t          j        |          }|                    |          }t          ||d           t          j        |t           j                            t          |                              }t          j        |                    |                    }|                    |          }t          ||d           d S )Nr   rl   r>   r   r   r   r   )r   r   r    r!   r@   r   r$   r%   r&   r(   r   r   r   len)	r/   r0   rC   r3   r4   r(   r   r   r   s	            r:   test_pdf_logpdf_weightedr   u  sA   INN1L		&	&B		%	%B b"---D	S"b	!	!B
--

C88B<<DT2....VC[[Fkk"ooG4444 b")..R*A*ABBBD
&r""
#
#C;;r??DT2......r<   c                    	
 t           j                            d          } d}d}|                     ||f          }|                     |df          }t          j        g d          	t          j        |          

                    	          }|                    |	                   }	
fdfd} ||          }t          ||d	
           d S )N   K b1d& rl   r   rJ   r   )	r   r   r   re   r   r   r      	   c                 v      fd}t          j        |t          j         t          j                  d         S )Nc                 t    t          j        | g         f          }                     |           d         S Nr   )r   concatenater(   )rZ   
dimensionsr   points    r:   fz<test_marginal_1_axis.<locals>.marginal_pdf_single.<locals>.f  s2    U:%6788A771::a= r<   r   )r   quadr   r+   r   r   r   r   s   ` r:   marginal_pdf_singlez1test_marginal_1_axis.<locals>.marginal_pdf_single  sH    	! 	! 	! 	! 	! 	! 	! ~a"&"&11!44r<   c                 2    t          j        d|           S )Nr   axisarrr   apply_along_axis)r   r   s    r:   marginal_pdfz*test_marginal_1_axis.<locals>.marginal_pdf  s    "#6QFKKKKr<   ư>rtol
r   r   r   normalrQ   r   r$   marginalr(   r   )r   n_datan_dimr   r   r  r(   r   refr   r   r   s            @@@r:   test_marginal_1_axisr
    s   
)

 3
4
4CFEjjufoj..GZZeQZZ((F55566J

W
%
%C||J''H
,,vj)
*
*C5 5 5 5 5 5L L L L L ,v

CC4((((((r<   c                    	
 t           j                            d          } d}d}|                     ||f          }|                     |df          }t          j        ddg          	t          j        |          

                    	          }|                    |	                   }	
fd} ||          }t          ||d	           d S )
Nr      re   rJ   r   r   c                 >    fd}t          j        |d|           S )Nc                       fd}t          j        |t          j         t          j        t          j         t          j                  d         S )Nc                              \  }}t          j        ||| |g          }                    |          d         S r   )r   rQ   r(   )r[   rZ   wzr   r   r   s       r:   r   zRtest_marginal_2_axis.<locals>.marginal_pdf.<locals>.marginal_pdf_single.<locals>.f  s<    Z(1HaAq\**wwqzz!}$r<   r   )r   dblquadr   r+   r   s   ` r:   r   zGtest_marginal_2_axis.<locals>.marginal_pdf.<locals>.marginal_pdf_single  sS    % % % % % % % $Q"&"&II!LLr<   r   r   r   )r   r   r   r   s     r:   r   z*test_marginal_2_axis.<locals>.marginal_pdf  sB    	M 	M 	M 	M 	M 	M "#6QFKKKKr<   r  r  r  )r   r  r  r   r   r  r(   r   r	  r   r   s            @@r:   test_marginal_2_axisr    s    
)

 3
4
4CFEjjufoj..GZZeQZZ((F1a&!!J

W
%
%C||J''H
,,vj)
*
*CL L L L L L ,v

CC4((((((r<   c                     t           j                            d          } d}d}|                     ||f          }|                     |df          }t	          j        |          }ddg}|                    |          }|                    ||                   }ddg}	|                    |	          }
|
                    ||	                   }t          ||           d	}t          j
        t          |
          5  |                    ddg           d d d            n# 1 swxY w Y   d}t          j
        t          |
          5  |                    g d           d d d            n# 1 swxY w Y   d}t          j
        t          |
          5  |                    g d           d d d            d S # 1 swxY w Y   d S )Nr   r  re   rJ   r   r   z,Elements of `dimensions` must be integers...r   g      @z,All elements of `dimensions` must be unique.)r   r   r   z;Dimensions \[-5  6\] are invalid for a distribution in 4...)r   r   r   )r   r   r   r  r   r$   r  r(   r   r   r   rt   )r   r  r  r   r   r   dimensions1	marginal1pdf1dimensions2	marginal2r   messages                r:   test_marginal_ivr    sw   
)

 3
4
4CFEjjufoj..GZZeQZZ((F

W
%
%C q'K[))I==,--Db'K[))I==,--Dt =G	z	1	1	1  aX               =G	z	1	1	1    YYY                              NG	z	1	1	1 ! !ZZZ   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s6   =D!!D%(D%	E--E14E1F::F>F>c                     t           j                            d           d} dt          j        fdt	          d|           D                       }t          j        |          }|                    t          j        d|                     }t           j	        
                    t          j        |d                   d           t           j	        
                    t          j        |d                   d           d S )Nr   i	  i  c                 T    g | ]$}t           j                                      |z   %S r   )r   r   r!   )r   rg   	n_sampless     r:   
<listcomp>z(test_logpdf_overflow.<locals>.<listcomp>  s8       29??9--3   r<   r   F)r   r   r    rQ   ranger   r$   r   r   testingr   isneginfisnan)n_dimensionsr0   r3   r   r   s       @r:   test_logpdf_overflowr'    s     INN1LI	    U	<> >    
 
B b!!D[[1l3344FJBKq	22E:::JBHVAY//77777r<   c                  r   t           j                            d           t           j                            d          } t           j                            g d| j                  }|                                }t          j        t          j	        |           |           t          ||dd           d S )N90  d   rJ   )rF   g      $@r*  r>   +=atolr  )r   r   r    	lognormalchoicerK   copyr   r$   log10r   )valsr?   orig_weightss      r:   test_weights_intactr4    s    INN59C((Di///di@@G<<>>L	rx~~w7777G\EBBBBBBr<   c                  J   t           j                            d           g d} g d}t          j        | |          }t          j        | t          j        |                    }g d}t          |                    |          |                    |          dd           d S )Nr)  )g?g      +@g      5@g     R@g     X@)r   r   re   r      r>   )g333333?   X   r+  r,  )r   r   r    r   r$   r   r   r&   )valuesr?   pdf_ipdf_fr0   s        r:   test_weights_integerr<    s    INN5***FGvw777Evrz'/B/BCCCE	BENN2&&NN2&&U@ @ @ @ @ @r<   c                  x   d } t           j                            d           d}t           j                            |          }t           j                            |          }t          j        |          } | |           t          j        ||          } | |           t          j        ddg          }t          j        ddgddgg          }t           j                            |||	          j	        }t          j        |          }	 | |	           t          j        ||          }
 | |
           d S )
Nc                    d}|                      |          }|                      |          }t          t          t          ||d           d}|                      ||          }|                      ||          }t          ||d           t          j                            d          }|                      ||          }t          j                            d          }|                      ||          }t          ||d           t          t          j        d          r8t          j                            d          }|                      ||           d S d S )	N   gvIh%<=)r-  i?  )r       r   i  )	resamplers   AssertionErrorr   r   r   RandomStatehasattrr   )
gkde_trailn_samplesamp1samp2r    rstate1rstate2r   s           r:   test_seed_subz test_seed.<locals>.test_seed_sub  sd   ##H--##H--OUE	
 	
 	
 	
 ##H4#88##H4#88u51111)''S'11##H7#;;)''S'11##H7#;;u51111 29m,, 	4)''--Cs33333	4 	4r<   r   r   r>   rF   rG   rH   rI   rJ   )
r   r   r    r@   r!   r   r$   rQ   rR   rS   )rK  r/   rC   xn_1dgkde_1dgkde_1d_weightedr"   rY   xn_2dgkde_2dgkde_2d_weighteds              r:   	test_seedrR    s6   4 4 44 INN7L		%	%BIOOL))E ''GM')%<<<M"### 8S#JDC:Sz233JI))$
)NNPE ''GM')%<<<M"#####r<   c                     t           j                            d          } t          j        g d          }t          j        g dg dg dg          }|                     ||d          }	 t          j        |j                   d S # t          j	        $ rT d}t          t          j	        |          5  t          j        |j                   d d d            Y d S # 1 swxY w Y   Y d S w xY w)	Nl   SDG. )r   r      )re   r   r   )r   r   r   )r   r   r*  i  z:The data appears to lie in a lower-dimensional subspace...r   )r   r   r   rQ   rR   r   r$   rS   r   LinAlgErrorrs   )r   musigmadatar   s        r:   %test_singular_data_covariance_gh10205rY  G  s>    )

 3
4
4C	+++		BHjjj+++{{{;<<E""2ud33D'46""""" ' ' 'J6-S999 	' 	'tv&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	''s6   +B ,C)2CC)C	C)!C	"C)(C)c                  P   t           j                            d          } |                     t          j        d          t          j        d          d          }d}t          j        t          |          5  t          j
        |           d d d            d S # 1 swxY w Y   d S )Nl   &8*c r   r   rJ   z9Number of dimensions is greater than number of samples...r   )r   r   r   rR   zeroseyer   r   rt   r   r$   )r   rvsr  s      r:   )test_fewer_points_than_dimensions_gh17436r^  V  s     )

 3
4
4C

!
!"(1++rvayyq
!
A
ACIG	z	1	1	1    3                                   s   9BB"B)/scipyr   r   r   numpyr   numpy.testingr   r   r   r	   r
   r   r   r   rs   r;   rD   markxslowr_   ra   rz   r~   r$   r   r   r   r   r   r   r   _ftypesparametrizer   r   r   r   r
  r  r  r'  r4  r<  rR  rY  r^  r   r<   r:   <module>rf     sQ   * * * * * * * * * *    L L L L L L L L L L L L L L L L  * * * * * *E E E>E E E@ $J $J $JN %J %J %JPO O O4O O O<# # # # #U' # # #" " " " "U' " " "- - - - -U' - - -
!4 !4 !4H9 9 9 4 4 4*> > > J
I
I Gw.D$DEE'**4 4 +* FE4.  / / /0/ / /2) ) )6 ) ) )8"! "! "!J 8 8 8"C C C
@ 
@ 
@/$ /$ /$d' ' '
  
  
  
  
 r<   