a
    \¹:b€  ã                   @   s`  d dl mZ d dlZd dlmZ ddlmZ G dd„ deƒ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/Z0e 1d¡Ze	eeƒZee  e 2ddg¡¡ƒ e #¡  e 'edd…d f edd…df d¡ dZ3e e 4d ¡d  e 5d ¡d  e3¡Z6e e 4d ¡d e 5d ¡d e3¡Z7e 8e6e7¡\Z9Z:e *dd„ e;e9 <¡ e: <¡ ƒD ƒ¡Z=e >e6e7e= ?e3e3¡¡ e @¡  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 rDt ¡ }|dkrft|tjƒrft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   úElib/python3.9/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>-   ó    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   1   r   z KDE.evaluate.<locals>.<listcomp>)r   r   r   r    r!   r   r   r   Úevaluate/   s    zKDE.evaluate)N)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xiZyir   r   r   r   e   r   r   )AZstatsmodels.compat.pythonr   Znumpyr   Zstatsmodels.tools.validationr   Ú r   Úobjectr   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>   sT   )








&""
ÿ