U
    Ãmœd§	  ã                	   @   s&  d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddl	mZ ddlmZ ddlZej d	¡ ed
dgdejejgeddd�eddd�fd�ZG dd„ dƒZG dd„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dƒZG d d!„ d!eƒZG d"d#„ d#eƒZdS )$zH

Tests for bandwidth selection and calculation.

Author: Padarn Wilson
é    N)Ústats)Úkernels)Úmixture_rvs)Úselect_bandwidth)Úbw_normal_reference)Úassert_allclosei90  g      Ð?g      è?éÈ   éÿÿÿÿg      à?)ÚlocÚscaleé   )ÚsizeÚdistÚkwargsc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestBandwidthCalculationc                 C   sR   dddg}t  ¡ }dddg}tdddgƒD ]\}}tt||ƒ||< q*t||ƒ d S )Ngb]àOÓ?gm¯Íß1Ð?çŠ:ØWÓ?r   ÚscottÚ	silvermanÚnormal_reference)r   ÚGaussianÚ	enumerater   ÚXir   )ÚselfÚbw_expectedÚkernZbw_calcÚiiÚbw© r   úh/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/nonparametric/tests/test_bandwidths.pyÚ!test_calculate_bandwidth_gaussian   s    þ
z:TestBandwidthCalculation.test_calculate_bandwidth_gaussianc                 C   s   d}t tƒ}t||ƒ d S )Nr   )r   r   r   )r   r   r   r   r   r   Ú)test_calculate_normal_reference_bandwidth,   s    zBTestBandwidthCalculation.test_calculate_normal_reference_bandwidthN)Ú__name__Ú
__module__Ú__qualname__r   r    r   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ ZdS )ÚCheckNormalReferenceConstantc                 C   s   | j }| j}t||jdƒ d S )Ng{®Gáz„?)Úconstantr   r   Znormal_reference_constant)r   Úconstr   r   r   r   Ú(test_calculate_normal_reference_constant5   s    zECheckNormalReferenceConstant.test_calculate_normal_reference_constantN)r!   r"   r#   r'   r   r   r   r   r$   3   s   r$   c                   @   s   e Zd Ze ¡ ZdZdS )ÚTestEpanechnikovg¸…ëQ¸@N)r!   r"   r#   r   ZEpanechnikovr   r%   r   r   r   r   r(   ;   s   r(   c                   @   s   e Zd Ze ¡ ZdZdS )ÚTestGaussiangö(\�Âõð?N)r!   r"   r#   r   r   r   r%   r   r   r   r   r)   A   s   r)   c                   @   s   e Zd Ze ¡ ZdZdS )ÚTestBiweightg=
×£p=@N)r!   r"   r#   r   ZBiweightr   r%   r   r   r   r   r*   G   s   r*   c                   @   s   e Zd Ze ¡ ZdZdS )ÚTestTriweightg333333	@N)r!   r"   r#   r   Z	Triweightr   r%   r   r   r   r   r+   M   s   r+   c                   @   s   e Zd Zdd„ ZdS )ÚBandwidthZeroc              
   C   s>   t  ¡ }dD ],}tjtdd�� t| j||ƒ W 5 Q R X qd S )N)r   r   r   zSelected KDE bandwidth is 0)Úmatch)r   r   ÚpytestZraisesÚRuntimeErrorr   Úxx)r   r   r   r   r   r   Útest_bandwidth_zeroU   s    ÿz!BandwidthZero.test_bandwidth_zeroN)r!   r"   r#   r1   r   r   r   r   r,   S   s   r,   c                   @   s   e Zd Ze d¡ZdS )ÚTestAllBandwidthZero©éd   é   N)r!   r"   r#   ÚnpZonesr0   r   r   r   r   r2   ^   s   r2   c                   @   s*   e Zd Zejjdd�Zdedd…df< dS )ÚTestAnyBandwidthZeror3   )r   g      ð?Nr   )r!   r"   r#   r6   ÚrandomÚnormalr0   r   r   r   r   r7   c   s   r7   )Ú__doc__Únumpyr6   Zscipyr   Z!statsmodels.sandbox.nonparametricr   Z%statsmodels.distributions.mixture_rvsr   Z$statsmodels.nonparametric.bandwidthsr   r   Znumpy.testingr   r.   r8   ÚseedZnormÚdictr   r   r$   r(   r)   r*   r+   r,   r2   r7   r   r   r   r   Ú<module>   s*   ÿ