
    !g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,                  j/                  e j,                  j1                  e            Ze j,                  j7                  edd      Z ej:                   eed      dd	
      Ze j,                  j7                  edd      Z ej:                   eed      dd	
      Z e j,                  j/                  e j,                  j1                  e            Ze j,                  j7                  edd      Z ej:                   eed      dd	
      Z!ejD                  jG                  d        eddgde
jH                  e
jH                  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=y)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                   4    e Zd Zed        Zd Zd Zd Zd Zy)TestKDEExceptionsc                     t        t              | _        t        j                  ddd      | _        t        j                  ddd      | _        y Nr   d   r   KDEXikdenplinspaceweights_200weights_100clss    e/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/nonparametric/tests/test_kde.pysetup_classzTestKDEExceptions.setup_class'   5    b'++ac2++ac2    c                     t        j                  t              5  | j                  j	                  d       d d d        y # 1 sw Y   y xY wNr   )pytestraises
ValueErrorr   evaluateselfs    r#   test_check_is_fit_exceptionz-TestKDEExceptions.test_check_is_fit_exception-   s5    ]]:& 	!HHa 	! 	! 	!s	   ?Ac                     t        j                  t              5  | j                  j	                  dd| j
                  dd       d d d        y # 1 sw Y   y xY w)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   sJ    ]]./ 	3HHLLD<L<L!k  3	3 	3 	3   +AAc                     t        j                  t              5  | j                  j	                  dd| j
                  dd       d d d        y # 1 sw Y   y xY w)Nr1   r2   Fr3   r4   )r)   r*   r+   r   r;   r    r-   s    r#   "test_wrong_weight_length_exceptionz4TestKDEExceptions.test_wrong_weight_length_exception6   sI    ]]:& 	4HHLLD<L<L"{  4	4 	4 	4r=   c                     t        j                  t              5  | j                  j	                  dddd       d d d        y # 1 sw Y   y xY w)Nepar2   Tr3   )r5   r6   r8   r9   )r)   r*   r:   r   r;   r-   s    r#   test_non_gaussian_fft_exceptionz1TestKDEExceptions.test_non_gaussian_fft_exception;   s@    ]]./ 	NHHLLLM	N 	N 	Ns    AAN)	__name__
__module____qualname__classmethodr$   r/   r<   r?   rB    r&   r#   r   r   %   s)    3 3
!3
4
Nr&   r   c                       e Zd ZdZd Zd Zy)CheckKDE   c                     t        j                  | j                  j                  | j                  | j
                         y Nnptassert_almost_equalres1densityres_densitydecimal_densityr-   s    r#   test_densityzCheckKDE.test_densityC   s-    		 1 143C3C $ 4 4	6r&   c                 b   | j                   j                  D cg c]0  }t        j                  | j                   j	                  |            2 }}t        j                  |      }t        j
                  |      }d|| <   t        j                  || j                  | j                         y c c}w r(   )
rP   supportr   squeezer,   isfiniterN   rO   rR   rS   r.   xikde_vals
mask_valids       r#   test_evaluatezCheckKDE.test_evaluateG   s     BFARARS2BJJtyy11"56SS::h'[[*
 !*$*:*: $ 4 4	6 Ts   5B,N)rC   rD   rE   rS   rT   r]   rG   r&   r#   rI   rI   @   s    O66r&   rI   c                   :    e Zd Zed        Zd Zd Zd Zd Zd Z	y)TestKDEGaussc                 t    t        t              }|j                  ddd       || _        t        d   | _        y Nr1   Fr3   r5   r8   r9   gau_dr   r   r;   rP   
KDEResultsrR   r"   rP   s     r#   r$   zTestKDEGauss.setup_classW   0    2w5[9$W-r&   c                 <   | j                   j                  D cg c]  }| j                   j                  |       }}t        j                  |      }t        j
                  |      }d|| <   t        j                  || j                  | j                         y c c}w r(   
rP   rV   r,   r   rW   rX   rN   rO   rR   rS   rY   s       r#   r]   zTestKDEGauss.test_evaluate^   }    59YY5F5FGrDII&&r*GG::h'[[*
 !*$*:*: $ 4 4	6 H   "Bc                 n    | j                   }t        d   }t        j                  ||j                         y )Ngau_support)rP   KCDEResultsrN   assert_allcloserV   )r.   r   rV   s      r#   test_support_griddedz!TestKDEGauss.test_support_griddedj   s)    iim,GS[[1r&   c                 n    | j                   }t        d   }t        j                  ||j                         y )Ngau_cdf)rP   rn   rN   ro   cdf)r.   r   rs   s      r#   test_cdf_griddedzTestKDEGauss.test_cdf_griddedo   s)    ii)$C)r&   c                 n    | j                   }t        d   }t        j                  ||j                         y )Ngau_sf)rP   rn   rN   ro   sf)r.   r   rw   s      r#   test_sf_griddedzTestKDEGauss.test_sf_griddedt   s)    ii"B'r&   c                 n    | j                   }t        d   }t        j                  ||j                         y )Ngau_icdf)rP   rn   rN   ro   icdf)r.   r   r{   s      r#   test_icdf_griddedzTestKDEGauss.test_icdf_griddedy   s)    ii:&D#((+r&   N)
rC   rD   rE   rF   r$   r]   rp   rt   rx   r|   rG   r&   r#   r_   r_   V   s-    . .62
*
(
,r&   r_   c                       e Zd Zed        Zy)TestKDEGaussPandasc                     t        t        j                  t                    }|j	                  ddd       || _        t        d   | _        y ra   )r   pdSeriesr   r;   rP   re   rR   rf   s     r#   r$   zTestKDEGaussPandas.setup_class   s9    299R=!5[9$W-r&   NrC   rD   rE   rF   r$   rG   r&   r#   r~   r~          . .r&   r~   c                       e Zd Zed        Zy)TestKDEEpanechnikovc                 t    t        t              }|j                  ddd       || _        t        d   | _        y )NrA   Fr3   rb   epa2_drd   rf   s     r#   r$   zTestKDEEpanechnikov.setup_class   s0    2w5[9$X.r&   Nr   rG   r&   r#   r   r      s    / /r&   r   c                       e Zd Zed        Zy)TestKDETriangularc                 t    t        t              }|j                  ddd       || _        t        d   | _        y )NtriFr3   rb   tri_drd   rf   s     r#   r$   zTestKDETriangular.setup_class   rg   r&   Nr   rG   r&   r#   r   r      r   r&   r   c                       e Zd Zed        Zy)TestKDEBiweightc                 t    t        t              }|j                  ddd       || _        t        d   | _        y )NbiwFr3   rb   biw_drd   rf   s     r#   r$   zTestKDEBiweight.setup_class   rg   r&   Nr   rG   r&   r#   r   r      r   r&   r   c                   "    e Zd Zed        Zd Zy)TestKdeWeightsc                     t        t              }t        j                  ddd      }|j	                  dd|dd       || _        t        j                  j                  t        d	d
      }t        j                  t        |d      d      | _        y )Nr   r   r   r1   r2   Fr3   r4   r   zresults_kde_weights.csvr   )skip_header)r   r   r   r   r;   rP   ospathjoincurdir
genfromtxtopenrR   )r"   rP   r7   fnames       r#   r$   zTestKdeWeights.setup_class   sp    2w++ac*G 	 	!VY0IJ--UD(9qIr&   c                 <   | j                   j                  D cg c]  }| j                   j                  |       }}t        j                  |      }t        j
                  |      }d|| <   t        j                  || j                  | j                         y c c}w r(   ri   rY   s       r#   r]   zTestKdeWeights.test_evaluate   rj   rk   N)rC   rD   rE   rF   r$   r]   rG   r&   r#   r   r      s    J J6r&   r   c                       e Zd Zed        Zy)TestKDEGaussFFTc                     d| _         t        t              }|j                  ddd       || _        t
        j                  j                  t        dd      }t        j                  t        |d            | _        y )	N   r1   Tr3   rb   r   zresults_kde_fft.csvr   )rS   r   r   r;   rP   r   r   r   r   r   r   r   rR   )r"   rP   rfname2s      r#   r$   zTestKDEGaussFFT.setup_class   sZ    2w4K8'',,vy2GH--Wd(;<r&   Nr   rG   r&   r#   r   r      s    = =r&   r   c                   z    e Zd Zed        ZdZej                  j                  de	d      d        Z
d Zd Zd	 Zy
)CheckKDEWeightsc                     t         d   x| _        }t         d   }t        |      }|j                  | j                  |dd       || _        t         | j                     | _        y )Nxr7   Fscott)r5   r7   r8   r9   )KDEWResultsr   r   r;   kernel_namerP   res_kernel_namerR   )r"   r   r7   rP   s       r#   r$   zCheckKDEWeights.setup_class   sW    $$i(1veP%c&9&9:r&   rJ   zNot almost equal to 7 decimalsT)reasonr*   strictc                     t        j                  | j                  j                  | j                  | j
                         y rL   rM   r-   s    r#   rT   zCheckKDEWeights.test_density   s/     			 1 143C3C $ 4 4	6r&   c                 :   | j                   dk(  rt        j                  d       | j                  D cg c]  }| j                  j                  |       }}t        j                  |      }t        j                  || j                  | j                         y c c}w )Ncosz!Cosine kernel fails against Stata)r   r)   skipr   rP   r,   r   rW   rN   rO   rR   rS   )r.   rZ   r[   s      r#   r]   zCheckKDEWeights.test_evaluate   sw    u$KK;<59VV<rDII&&r*<<::h'$*:*: $ 4 4	6 =s   "Bc                    | j                   j                  }|D cg c]0  }t        j                  | j                   j	                  |            2 }}t        j                  |      }t        j
                  |      }d|| <   t        j                  | j                   j                  || j                         t        | j                   j                        }| j                   j                  }|j                  ||      }||j                  z  |j                  z  |z  }t        j                   ||d       |j#                  ||      }	d}
||	d d df   z
  }t        j                   ||
t        j$                  |      z  d       |	d d df   |z
  }t        j                   ||
t        j$                  |      z  d       y c c}w )Nr   绽|=rtolg1\?r   )rP   rV   r   rW   r,   rX   rN   rO   rQ   rS   lenendogr5   density_varL2Normhro   density_confintsqrt)r.   xxrZ   r[   r\   nobskernvv_directcicrithws               r#   test_comparezCheckKDEWeights.test_compare   sk   YYACD2BJJtyy11"56DD::h'[[*
 !*		 1 18 $ 4 4	6 499??#yyXt,dkk)DFF2T9Axe4!!(D1!1a4 Brwwqz 1>1X Brwwqz 1>) Es   5F>c                 z   | j                   j                  }|j                  }d |_        |j                  }t	        j
                  ||d       |j                  }d |_        |j                  }t	        j
                  ||d       |j                  }d |_	        |j                  }t	        j
                  ||d       y )Nr   r   )
rP   r5   
norm_const_norm_constrN   ro   r   _L2Norm
kernel_var_kernel_var)r.   r   ncnc2l2nl2n2r   v2s           r#   test_kernel_constantsz%CheckKDEWeights.test_kernel_constants  s    yy__ooB%0kk{{CE2OO__Ar.r&   N)rC   rD   rE   rF   r$   rS   r)   markxfailAssertionErrorrT   r]   r   r   rG   r&   r#   r   r      sX    ; ; O[[>,T  ;6;66?0/r&   r   c                       e Zd ZdZdZy)TestKDEWGaussr1   x_gau_wdNrC   rD   rE   r   r   rG   r&   r#   r   r         K Or&   r   c                       e Zd ZdZdZy)TestKDEWEparA   
x_epan2_wdNr   rG   r&   r#   r   r      s    K"Or&   r   c                        e Zd ZdZdez   dz   Zy)TestKDEWTrir   x__wdNr   rG   r&   r#   r   r   %  s    K[(50Or&   r   c                       e Zd ZdZdZy)TestKDEWBiwr   x_bi_wdNr   rG   r&   r#   r   r   *  s    KOr&   r   c                       e Zd ZdZdZy)TestKDEWCosr   x_cos_wdNr   rG   r&   r#   r   r   /  r   r&   r   c                       e Zd ZdZdZy)TestKDEWCos2cos2r   Nr   rG   r&   r#   r   r   4  s    K Or&   r   c                       e Zd ZdZdZy)_TestKDEWRectrectx_rec_wdNr   rG   r&   r#   r   r   9  s    K Or&   r   c                       e Zd ZdZdZy)_TestKDEWParparx_par_wdNr   rG   r&   r#   r   r   ?  s    K Or&   r   c            
          e Zd Zej                  j                  d       ej                  j                  d      dz  Z ee      Z	e	j                          ej                  j                  d      dz  Z ee      Zej                          dD ]:  Z ej                   ej                    ee	e      dd  eee      dd               < y)TestKdeRefitr   r   )r{   rs   rw   N
   )rC   rD   rE   r   randomseedrandndata1r   pdfr;   data2pdf2attrrN   assert_allclosegetattrrG   r&   r#   r   r   E  s    IINN5IIOOC 3&E
e*CGGIIIOOC 3&Eu:DHHJ% ?GC$6s$;$+D$$7$<> > 	??r&   r   c                       e Zd Zd Zy)TestNormConstantc                 t    t        j                  d       }d}t        j                  ||j                         y )Nc                 :    t        j                  | dz   dz        S )Nr   g       @)r   exp)r   s    r#   <lambda>zATestNormConstant.test_norm_constant_calculation.<locals>.<lambda>V  s    bffa1fWs]6K r&   gQ63E?)kernelsCustomKernelrN   rO   r   )r.   custom_gaussgauss_true_consts      r#   test_norm_constant_calculationz/TestNormConstant.test_norm_constant_calculationU  s0    ++,KL- 0,2I2IJr&   N)rC   rD   rE   r	  rG   r&   r#   r   r   T  s    Kr&   r   c                      t        j                  g d      } t        |       }|j                          |j                  dkD  sJ y )N)<ga@r  r  r  r  r  r  r  r  r  g${@gchm>@g:A@r   )r   arrayr   r;   r9   )r   r   s     r#   test_kde_bw_positiver  [  s9    
 6 	7A a&CGGI66A::r&   c                     t         j                  j                  d      }t        |      }t	        |t              sJ t	        |j                         t              sJ y )Nr   )r   r   standard_normalr   
isinstancer;   )reset_randomstater   r   s      r#   test_fit_selfr  e  sE    
		!!#&A
a&Cc3cggi%%%r&   c                   t    e Zd ZdZed        Zd Zd Zej                  j                  dddg      d        Zy	)
TestKDECustomBandwidthrJ   c                     t        t              | _        t        j                  ddd      | _        t        j                  ddd      | _        y r   r   r!   s    r#   r$   z"TestKDECustomBandwidth.setup_classo  r%   r&   c                 f    d }| j                   j                  |      }t        |t              sJ y )Nc                 D    t        j                  |       t        |       z  S rL   )r   stdr   )Xr   s     r#   	custom_bwzTTestKDECustomBandwidth.test_check_is_fit_ok_with_custom_bandwidth.<locals>.custom_bwv  s    66!9s1v%%r&   r9   )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  s+    	&hhllil(#s###r&   c                    | j                   j                  t        j                        }|j                  j                         }|j                  j                         }| j                   j                  d      }t        j                  ||j                  | j                         t        j                  ||j                  | j                         y )Nr  r3   )
r   r;   
bandwidthsbw_silvermanrV   copyrQ   rN   rO   rS   )r.   r   s1d1s       r#   3test_check_is_fit_ok_with_standard_custom_bandwidthzJTestKDECustomBandwidth.test_check_is_fit_ok_with_standard_custom_bandwidth{  s    hhllj55l6[[[[hhllkl*CKK1E1EFCKK1E1EFr&   r8   TFc                    | j                   j                  t        j                  |      }|j                  j                         }|j                  j                         }| j                   j                  |j                  |      }t        j                  ||j                  | j                         t        j                  ||j                  | j                         y )N)r9   r8   )r   r;   r  r  rV   r   rQ   r9   rN   rO   rS   )r.   r8   r   r!  r"  s        r#   )test_check_is_fit_ok_with_float_bandwidthz@TestKDECustomBandwidth.test_check_is_fit_ok_with_float_bandwidth  s     hhllj553l?[[[[hhllcff#l.CKK1E1EFCKK1E1EFr&   N)rC   rD   rE   rS   rF   r$   r  r#  r)   r   parametrizer%  rG   r&   r#   r  r  l  sO    O3 3
$	G [[UT5M2	G 3	Gr&   r  )>r   numpy.testingtestingrN   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   re   r   rn   r   r   normdictr   r   rI   r_   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  rG   r&   r#   <module>r8     sO   	      = > ; ; 9 9 
2	3	fi):	;R]]4-DI
	fi)G	HbmmD.#TJ 
2	3	fi);	<bmmD.#TJ 		u #s#UZZ,D"B/!21FGIN N66 6,&,8 &,R. ./( /. ..h .*6X 6.=h =G/ G/T!O !
#/ #
1/ 1
 /  
!/ !
!? !
!O !!? !? ?K K&$G $Gr&   