
    M/Ph3              
          d dl Z d dlmZ d dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZ d dlmc mc mZ d dlmc mZ e j                            e j                            e                    Ze j                            edd          Z ej         eed          dd	
          Ze j                            edd          Z ej         eed          dd	
          Z e j                            e j                            e                    Ze j                            edd          Z ej         eed          dd	
          Z!ej"        #                    d            eddgde
j$        e
j$        g e%dd           e%dd          f          Z& G d d          Z' G d d          Z( G d de(          Z) G d de)          Z* G d de(          Z+ G d  d!e(          Z, G d" d#e(          Z- G d$ d%e(          Z. G d& d'e(          Z/ G d( d)          Z0 G d* d+e0          Z1 G d, d-e0          Z2 G d. d/e0          Z3 G d0 d1e0          Z4 G d2 d3e0          Z5 G d4 d5e0          Z6 G d6 d7e0          Z7 G d8 d9e0          Z8 G d: d;          Z9 G d< d=          Z:d> Z;d? Z< G d@ dA          Z=dS )B    N)stats)mixture_rvs)KDEUnivariateresultszresults_kde.csvrb,T)	delimiternameszresults_kde_univ_weights.csvzresults_kcde.csv90  g      ?g      ?   g      ?)locscale   )sizedistkwargsc                   <    e Zd Zed             Zd Zd Zd Zd ZdS )TestKDEExceptionsc                     t          t                    | _        t          j        ddd          | _        t          j        ddd          | _        d S Nr   d   r   KDEXikdenplinspaceweights_200weights_100clss    h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/nonparametric/tests/test_kde.pysetup_classzTestKDEExceptions.setup_class'   =    b''+ac22+ac22    c                     t          j        t                    5  | j                            d           d d d            d S # 1 swxY w Y   d S )Nr   )pytestraises
ValueErrorr   evaluateselfs    r#   test_check_is_fit_exceptionz-TestKDEExceptions.test_check_is_fit_exception-   s    ]:&& 	! 	!Ha   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   AA	Ac                     t          j        t                    5  | j                            dd| j        dd           d d d            d S # 1 swxY w Y   d S )Ngau2   T	silvermankernelgridsizeweightsfftbw)r(   r)   NotImplementedErrorr   fitr   r,   s    r#   test_non_weighted_fft_exceptionz1TestKDEExceptions.test_non_weighted_fft_exception1   s    ].// 	3 	3HLLD<L!k  3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3   %AAAc                     t          j        t                    5  | j                            dd| j        dd           d d d            d S # 1 swxY w Y   d S )Nr0   r1   Fr2   r3   )r(   r)   r*   r   r:   r    r,   s    r#   "test_wrong_weight_length_exceptionz4TestKDEExceptions.test_wrong_weight_length_exception6   s    ]:&& 	4 	4HLLD<L"{  4 4 4	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4r<   c                     t          j        t                    5  | j                            dddd           d d d            d S # 1 swxY w Y   d S )Nepar1   Tr2   )r4   r5   r7   r8   )r(   r)   r9   r   r:   r,   s    r#   test_non_gaussian_fft_exceptionz1TestKDEExceptions.test_non_gaussian_fft_exception;   s    ].// 	N 	NHLLLMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	Ns   AA
A
N)	__name__
__module____qualname__classmethodr$   r.   r;   r>   rA    r&   r#   r   r   %   sn        3 3 [3
! ! !3 3 3
4 4 4
N N N N Nr&   r   c                       e Zd ZdZd Zd ZdS )CheckKDE   c                 Z    t          j        | j        j        | j        | j                   d S Nnptassert_almost_equalres1densityres_densitydecimal_densityr,   s    r#   test_densityzCheckKDE.test_densityC   s3    	 143C $ 4	6 	6 	6 	6 	6r&   c                       fd j         j        D             }t          j        |          }t          j        |          }d|| <   t          j        | j         j                   d S )Nc                 h    g | ].}t          j        j                            |                    /S rF   r   squeezerO   r+   .0xir-   s     r#   
<listcomp>z*CheckKDE.test_evaluate.<locals>.<listcomp>M   s3    SSS2BJty11"5566SSSr&   r   	rO   supportr   rW   isfiniterM   rN   rQ   rR   r-   kde_vals
mask_valids   `  r#   test_evaluatezCheckKDE.test_evaluateG   sz     TSSSARSSS:h''[**
 !*$*: $ 4	6 	6 	6 	6 	6r&   N)rB   rC   rD   rR   rS   rb   rF   r&   r#   rH   rH   @   s7        O6 6 66 6 6 6 6r&   rH   c                   B    e Zd Zed             Zd Zd Zd Zd Zd Z	dS )TestKDEGaussc                     t          t                    }|                    ddd           || _        t          d         | _        d S Nr0   Fr2   r4   r7   r8   gau_dr   r   r:   rO   
KDEResultsrQ   r"   rO   s     r#   r$   zTestKDEGauss.setup_classW   <    2ww5[999$W-r&   c                       fd j         j        D             }t          j        |          }t          j        |          }d|| <   t          j        | j         j                   d S )Nc                 D    g | ]}j                             |          S rF   rO   r+   rX   s     r#   r[   z.TestKDEGauss.test_evaluate.<locals>.<listcomp>`   )    GGGrDI&&r**GGGr&   r   r\   r_   s   `  r#   rb   zTestKDEGauss.test_evaluate^   w    GGGGTY5FGGG:h''[**
 !*$*: $ 4	6 	6 	6 	6 	6r&   c                 b    | j         }t          d         }t          j        ||j                   d S )Ngau_support)rO   KCDEResultsrM   assert_allcloser]   )r-   r   r]   s      r#   test_support_griddedz!TestKDEGauss.test_support_griddedj   s.    im,GS[11111r&   c                 b    | j         }t          d         }t          j        ||j                   d S )Ngau_cdf)rO   rt   rM   ru   cdf)r-   r   ry   s      r#   test_cdf_griddedzTestKDEGauss.test_cdf_griddedo   s.    i)$C)))))r&   c                 b    | j         }t          d         }t          j        ||j                   d S )Ngau_sf)rO   rt   rM   ru   sf)r-   r   r}   s      r#   test_sf_griddedzTestKDEGauss.test_sf_griddedt   s.    i"B'''''r&   c                 b    | j         }t          d         }t          j        ||j                   d S )Ngau_icdf)rO   rt   rM   ru   icdf)r-   r   r   s      r#   test_icdf_griddedzTestKDEGauss.test_icdf_griddedy   s.    i:&D#(+++++r&   N)
rB   rC   rD   rE   r$   rb   rv   rz   r~   r   rF   r&   r#   rd   rd   V   sx        . . [.6 6 62 2 2
* * *
( ( (
, , , , ,r&   rd   c                   $    e Zd Zed             ZdS )TestKDEGaussPandasc                     t          t          j        t                              }|                    ddd           || _        t          d         | _        d S rf   )r   pdSeriesr   r:   rO   rj   rQ   rk   s     r#   r$   zTestKDEGaussPandas.setup_class   sF    29R==!!5[999$W-r&   NrB   rC   rD   rE   r$   rF   r&   r#   r   r      -        . . [. . .r&   r   c                   $    e Zd Zed             ZdS )TestKDEEpanechnikovc                     t          t                    }|                    ddd           || _        t          d         | _        d S )Nr@   Fr2   rg   epa2_dri   rk   s     r#   r$   zTestKDEEpanechnikov.setup_class   s<    2ww5[999$X.r&   Nr   rF   r&   r#   r   r      s-        / / [/ / /r&   r   c                   $    e Zd Zed             ZdS )TestKDETriangularc                     t          t                    }|                    ddd           || _        t          d         | _        d S )NtriFr2   rg   tri_dri   rk   s     r#   r$   zTestKDETriangular.setup_class   rl   r&   Nr   rF   r&   r#   r   r      r   r&   r   c                   $    e Zd Zed             ZdS )TestKDEBiweightc                     t          t                    }|                    ddd           || _        t          d         | _        d S )NbiwFr2   rg   biw_dri   rk   s     r#   r$   zTestKDEBiweight.setup_class   rl   r&   Nr   rF   r&   r#   r   r      r   r&   r   c                   *    e Zd Zed             Zd ZdS )TestKdeWeightsc                 :   t          t                    }t          j        ddd          }|                    dd|dd           || _        t          j                            t          d	d
          }t          j
        t          |d          d          | _        d S )Nr   r   r   r0   r1   Fr2   r3   r   zresults_kde_weights.csvr   )skip_header)r   r   r   r   r:   rO   ospathjoincurdir
genfromtxtopenrQ   )r"   rO   r6   fnames       r#   r$   zTestKdeWeights.setup_class   s    2ww+ac**G 	 	! 	! 	!VY0IJJ-UD(9(9qIIIr&   c                       fd j         j        D             }t          j        |          }t          j        |          }d|| <   t          j        | j         j                   d S )Nc                 D    g | ]}j                             |          S rF   ro   rX   s     r#   r[   z0TestKdeWeights.test_evaluate.<locals>.<listcomp>   rp   r&   r   r\   r_   s   `  r#   rb   zTestKdeWeights.test_evaluate   rq   r&   N)rB   rC   rD   rE   r$   rb   rF   r&   r#   r   r      s?        J J [J6 6 6 6 6r&   r   c                   $    e Zd Zed             ZdS )TestKDEGaussFFTc                    d| _         t          t                    }|                    ddd           || _        t
          j                            t          dd          }t          j
        t          |d                    | _        d S )	N   r0   Tr2   rg   r   zresults_kde_fft.csvr   )rR   r   r   r:   rO   r   r   r   r   r   r   r   rQ   )r"   rO   rfname2s      r#   r$   zTestKDEGaussFFT.setup_class   sk    2ww4K888',,vy2GHH-Wd(;(;<<r&   Nr   rF   r&   r#   r   r      s-        = = [= = =r&   r   c                       e Zd Zed             ZdZej                            de	d          d             Z
d Zd Zd	 Zd
S )CheckKDEWeightsc                     t           d         x| _        }t           d         }t          |          }|                    | j        |dd           || _        t           | j                 | _        d S )Nxr6   Fscott)r4   r6   r7   r8   )KDEWResultsr   r   r:   kernel_namerO   res_kernel_namerQ   )r"   r   r6   rO   s       r#   r$   zCheckKDEWeights.setup_class   s^    $$i(1vvePPP%c&9:r&   rI   zNot almost equal to 7 decimalsT)reasonr)   strictc                 Z    t          j        | j        j        | j        | j                   d S rK   rL   r,   s    r#   rS   zCheckKDEWeights.test_density   s5     		 143C $ 4	6 	6 	6 	6 	6r&   c                       j         dk    rt          j        d            fd j        D             }t	          j        |          }t          j        | j         j	                   d S )Ncosz!Cosine kernel fails against Statac                 D    g | ]}j                             |          S rF   ro   rX   s     r#   r[   z1CheckKDEWeights.test_evaluate.<locals>.<listcomp>   s)    <<<rDI&&r**<<<r&   )
r   r(   skipr   r   rW   rM   rN   rQ   rR   )r-   r`   s   ` r#   rb   zCheckKDEWeights.test_evaluate   sx    u$$K;<<<<<<<TV<<<:h''$*: $ 4	6 	6 	6 	6 	6r&   c                      j         j        } fd|D             }t          j        |          }t          j        |          }d|| <   t          j         j         j        | j                   t           j         j
                  } j         j        }|                    ||          }||j        z  |j        z  |z  }t          j        ||d           |                    ||          }d}	||d d df         z
  }
t          j        |
|	t          j        |          z  d           |d d df         |z
  }
t          j        |
|	t          j        |          z  d           d S )Nc                 h    g | ].}t          j        j                            |                    /S rF   rV   rX   s     r#   r[   z0CheckKDEWeights.test_compare.<locals>.<listcomp>   s3    DDD2BJty11"5566DDDr&   r   绽|=rtolg1\?r   )rO   r]   r   rW   r^   rM   rN   rP   rR   lenendogr4   density_varL2Normhru   density_confintsqrt)r-   xxr`   ra   nobskernvv_directcicrithws   `          r#   test_comparezCheckKDEWeights.test_compare   sl   YDDDDDDD:h''[**
 !*	 18 $ 4	6 	6 	6 49?##yXt,,dk)DF2T9Axe4444!!(D11!111a4 Brwqzz 1>>>>1X Brwqzz 1>>>>>>r&   c                 &   | j         j        }|j        }d |_        |j        }t	          j        ||d           |j        }d |_        |j        }t	          j        ||d           |j        }d |_	        |j        }t	          j        ||d           d S )Nr   r   )
rO   r4   
norm_const_norm_constrM   ru   r   _L2Norm
kernel_var_kernel_var)r-   r   ncnc2l2nl2n2r   v2s           r#   test_kernel_constantsz%CheckKDEWeights.test_kernel_constants  s    y_oB%0000k{CE2222O_Ar......r&   N)rB   rC   rD   rE   r$   rR   r(   markxfailAssertionErrorrS   rb   r   r   rF   r&   r#   r   r      s        ; ; [; O[>,T  ; ;6 6; ;66 6 6? ? ?0/ / / / /r&   r   c                       e Zd ZdZdZdS )TestKDEWGaussr0   x_gau_wdNrB   rC   rD   r   r   rF   r&   r#   r   r             K OOOr&   r   c                       e Zd ZdZdZdS )TestKDEWEpar@   
x_epan2_wdNr   rF   r&   r#   r   r      s        K"OOOr&   r   c                   "    e Zd ZdZdez   dz   ZdS )TestKDEWTrir   x__wdNr   rF   r&   r#   r   r   %  s"        K[(50OOOr&   r   c                       e Zd ZdZdZdS )TestKDEWBiwr   x_bi_wdNr   rF   r&   r#   r   r   *  s        KOOOr&   r   c                       e Zd ZdZdZdS )TestKDEWCosr   x_cos_wdNr   rF   r&   r#   r   r   /  r   r&   r   c                       e Zd ZdZdZdS )TestKDEWCos2cos2r   Nr   rF   r&   r#   r   r   4  s        K OOOr&   r   c                       e Zd ZdZdZdS )_TestKDEWRectrectx_rec_wdNr   rF   r&   r#   r   r   9  s        K OOOr&   r   c                       e Zd ZdZdZdS )_TestKDEWParparx_par_wdNr   rF   r&   r#   r   r   ?  s        K OOOr&   r   c            
          e Zd Zej                            d           ej                            d          dz  Z ee          Z	e	
                                 ej                            d          dz  Z ee          Ze
                                 dD ]FZ ej         ej         ee	e          dd          eee          dd                               GdS )TestKdeRefitr   r   )r   ry   r}   N
   )rB   rC   rD   r   randomseedrandndata1r   pdfr:   data2pdf2attrrM   assert_allclosegetattrrF   r&   r#   r   r   E  s        INN5IOOC  3&E
#e**CGGIIIIOOC  3&E3u::DHHJJJ% ? ?GGC$6$6ss$;$+GD$$7$7$<> > > 	? 	? 	? 	?? ?r&   r   c                       e Zd Zd ZdS )TestNormConstantc                 h    t          j        d           }d}t          j        ||j                   d S )Nc                 8    t          j        | dz   dz            S )Nr   g       @)r   exp)r   s    r#   <lambda>zATestNormConstant.test_norm_constant_calculation.<locals>.<lambda>V  s    bfa1fWs]6K6K r&   gQ63E?)kernelsCustomKernelrM   rN   r   )r-   custom_gaussgauss_true_consts      r#   test_norm_constant_calculationz/TestNormConstant.test_norm_constant_calculationU  s9    +,K,KLL- 0,2IJJJJJr&   N)rB   rC   rD   r  rF   r&   r#   r	  r	  T  s(        K K K K Kr&   r	  c                      t          j        g d          } t          |           }|                                 |j        dk    sJ d S )N)<ga@r  r  r  r  r  r  r  r  r  g${@gchm>@g:A@r   )r   arrayr   r:   r8   )r   r   s     r#   test_kde_bw_positiver  [  sO    
 6 6 6 	7 	7A a&&CGGIII6A::::::r&   c                     t           j                            d          }t          |          }t	          |t                    sJ t	          |                                t                    sJ d S )Nr   )r   r   standard_normalr   
isinstancer:   )reset_randomstater   r   s      r#   test_fit_selfr  e  s\    
	!!#&&A
a&&Cc3cggii%%%%%%%r&   c                       e Zd ZdZed             Zd Zd Zej	        
                    dddg          d             Zd	S )
TestKDECustomBandwidthrI   c                     t          t                    | _        t          j        ddd          | _        t          j        ddd          | _        d S r   r   r!   s    r#   r$   z"TestKDECustomBandwidth.setup_classo  r%   r&   c                 p    d }| j                             |          }t          |t                    sJ d S )Nc                 J    t          j        |           t          |           z  S rK   )r   stdr   )Xr   s     r#   	custom_bwzTTestKDECustomBandwidth.test_check_is_fit_ok_with_custom_bandwidth.<locals>.custom_bwv  s    6!99s1vv%%r&   r8   )r   r:   r  r   )r-   r#  r   s      r#   *test_check_is_fit_ok_with_custom_bandwidthzATestKDECustomBandwidth.test_check_is_fit_ok_with_custom_bandwidthu  sB    	& 	& 	&hllil((#s#######r&   c                 j   | j                             t          j                  }|j                                        }|j                                        }| j                             d          }t          j        ||j        | j	                   t          j        ||j        | j	                   d S )Nr$  r2   )
r   r:   
bandwidthsbw_silvermanr]   copyrP   rM   rN   rR   )r-   r   s1d1s       r#   3test_check_is_fit_ok_with_standard_custom_bandwidthzJTestKDECustomBandwidth.test_check_is_fit_ok_with_standard_custom_bandwidth{  s    hllj5l66[[hllkl**CK1EFFFCK1EFFFFFr&   r7   TFc                 x   | j                             t          j        |          }|j                                        }|j                                        }| j                             |j        |          }t          j	        ||j        | j
                   t          j	        ||j        | j
                   d S )N)r8   r7   )r   r:   r'  r(  r]   r)  rP   r8   rM   rN   rR   )r-   r7   r   r*  r+  s        r#   )test_check_is_fit_ok_with_float_bandwidthz@TestKDECustomBandwidth.test_check_is_fit_ok_with_float_bandwidth  s     hllj53l??[[hllcf#l..CK1EFFFCK1EFFFFFr&   N)rB   rC   rD   rR   rE   r$   r%  r,  r(   r   parametrizer.  rF   r&   r#   r  r  l  s        O3 3 [3
$ $ $	G 	G 	G [UT5M22	G 	G 32	G 	G 	Gr&   r  )>r   numpy.testingtestingrM   numpyr   pandasr   r(   scipyr   %statsmodels.distributions.mixture_rvsr   statsmodels.nonparametric.kder   r   )statsmodels.sandbox.nonparametric.kernelssandboxnonparametricr  $statsmodels.nonparametric.bandwidthsr'  r   dirnameabspath__file__r   r   rfnamer   r   rj   r   rt   r   r   normdictr   r   rH   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  rF   r&   r#   <module>rA     s   				                      = = = = = = > > > > > > ; ; ; ; ; ; ; ; ; ; ; ; 9 9 9 9 9 9 9 9 9 
22	3	3	fi):	;	;R]44--DIII
	fi)G	H	HbmDD..#TJJJ 
22	3	3	fi);	<	<bmDD..#TJJJ 	u   [#s#UZ,D"B///!21F1F1FGI I IN N N N N N N N66 6 6 6 6 6 6 6,&, &, &, &, &,8 &, &, &,R. . . . . . . ./ / / / /( / / /. . . . . . . .. . . . .h . . .*6 6 6 6 6X 6 6 6.= = = = =h = = =G/ G/ G/ G/ G/ G/ G/ G/T! ! ! ! !O ! ! !
# # # # #/ # # #
1 1 1 1 1/ 1 1 1
         /      
! ! ! ! !/ ! ! !
! ! ! ! !? ! ! !
! ! ! ! !O ! ! !! ! ! ! !? ! ! !? ? ? ? ? ? ? ?K K K K K K K K  & & &$G $G $G $G $G $G $G $G $G $Gr&   