o
    þ0Gf`  ã                   @   sb  d dl mZ d dlZd dlmZ ddlmZ G dd„ dƒZe	dkr/d d	lm
Z
 d dlmZ d dlm  mZ d d
lmZ e
 d¡ e
jdddZe e¡Ze ddd¡ZejedZeeeƒZee d¡ƒ edƒ e  ddd¡Z!e "¡ Z#e# $d¡Z%e% &e!ee!ƒd¡ e% 'dd¡ e% 'd d¡ eej(d ej(d ƒZe )e¡Zee *d ¡ e +d ¡ Zej,d  Z-ej.Z/e 0d¡ZeeeƒZee e 1ddg¡¡ƒ e "¡  e &edd…d f edd…df d¡ dZ2e e 3d ¡d  e 4d ¡d  e2¡Z5e e 3d ¡d e 4d ¡d e2¡Z6e 7e5e6¡\Z8Z9e )dd„ e:e8 ;¡ e9 ;¡ ƒD ƒ¡Z<e =e5e6e< >e2e2¡¡ e ?¡  dS dS )é    )ÚlzipN)Ú
array_likeé   ©Úkernelsc                   @   s6   e Zd ZdZddd„Zdd„ Zddd	„Zddd„ZdS )ÚKDEzÕ
    Kernel Density Estimator

    Parameters
    ----------
    x : array_like
        N-dimensional array from which the density is to be estimated
    kernel : Kernel Class
        Should be a class from *
    Nc                 C   s|   t |dddd}|jdkr|d d …d f }|j\}}|d u r"t ¡ }|dkr3t|tjƒr3tj||d}|| _|| _	|| _
d S )NÚxé   T)ZmaxdimÚ
contiguousr   r   )r   ÚndimÚshaper   ÚGaussianÚ
isinstanceZCustomKernelÚNdKernelÚkernelÚnr   )Úselfr   r   ÚnobsZn_series© r   úFlib/python3.10/site-packages/statsmodels/sandbox/nonparametric/kde2.pyÚ__init__   s   


zKDE.__init__c                 C   s   | j  | j|¡S ©N)r   Údensityr   )r   r   r   r   r   r   (   s   zKDE.densityÚscottc                    s   t  ‡ fdd„|D ƒ¡S )Nc                    s   g | ]}ˆ   |¡‘qS r   ©r   ©Ú.0Zxx©r   r   r   Ú
<listcomp>,   s    z KDE.__call__.<locals>.<listcomp>)ÚnpÚarray©r   r   Úhr   r   r   Ú__call__+   s   zKDE.__call__Ú	silvermanc                    s    | j j‰ t ‡ fdd„|D ƒ¡S )Nc                    s   g | ]}ˆ |ƒ‘qS r   r   r   r   r   r   r   0   s    z KDE.evaluate.<locals>.<listcomp>)r   r   r   r    r!   r   r   r   Úevaluate.   s   zKDE.evaluater   )r   )r$   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r#   r%   r   r   r   r   r   
   s    

r   Ú__main__)Úrandom)ÚkdetestéŽ   gÍÌÌÌÌÌ@é2   )Úsizeiöÿÿÿé
   i   )r"   g¡l\?ð?g³A&9Ê?gš™™™™™¹?éo   ú-gš™™™™™Ù?Z	eruptionsZwaitingr	   Úoc                 C   s$   g | ]\}}t  t ||g¡¡‘qS r   )Úkder   r   Úmatrix)r   ZxiÚyir   r   r   r   d   s   $ r   )@Zstatsmodels.compat.pythonr   Znumpyr   Zstatsmodels.tools.validationr   Ú r   r   r&   r+   Zmatplotlib.pyplotZpyplotZpltZ$statsmodels.nonparametric.bandwidthsZnonparametricZ
bandwidthsZbwZ*statsmodels.sandbox.nonparametric.testdatar,   ZseedZ
standard_tr   Zbw_silvermanr"   ZlinspaceZsupportr   Zkernr4   Úprintr   ZarangeZXsZfigureZfigZadd_subplotZaxZplotZset_ylimZfaithfulDatar    ZmeanZstdr   r   ZHpiÚHr   r5   Zn_gridÚminÚmaxZxspZyspZmeshgridZxrZyrÚzipZravelZkde_valsZcontourZreshapeZshowr   r   r   r   Ú<module>   sX    
)







&""
ÿË