ó
áp7]c           @   s6  d  Z  d d l Z d d l m Z m Z d d l Z d d l m Z d d l j	 Z
 d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d	 „  Z d
 „  Z e d k r2d Z e j j d ƒ d Z d& \ Z Z e j e e j j e e ƒ e e j j d e e ƒ g ƒ Z e e d ƒ Z e j d d d ƒ Z e j e ƒ Z e
 j ƒ  e
 j  e d d d d ƒe
 j! e e d d d d ƒe
 j! e e e j" j# e d e ƒd e e j" j# e d e ƒd d d d ƒe
 j$ d  ƒ e
 j% ƒ  e e d! ƒ Z e j e ƒ Z e
 j ƒ  e
 j  e d d d d ƒe
 j! e e d d d d ƒe
 j! e e e j" j# e d e ƒd e e j" j# e d e ƒd d d d ƒe
 j$ d  ƒ e
 j% ƒ  x' d! d" d# d d$ g D] Z& e e& ƒ q¿We ƒ  e j j d ƒ d Z e j j e ƒ Z e j' ƒ  Z( e j) d% d ƒ Z* e j e ƒ Z n  d S('   s$   subclassing kde

Author: josef pktd
iÿÿÿÿN(   t   assert_almost_equalt   assert_(   t   statst   gaussian_kde_set_covariancec           B   s    e  Z d  Z d „  Z d „  Z RS(   s“   
    from Anne Archibald in mailinglist:
    http://www.nabble.com/Width-of-the-gaussian-in-stats.kde.gaussian_kde---td19558924.html#a19558924
    c         C   s#   | |  _  t j j j |  | ƒ d  S(   N(   t
   covariancet   scipyR   t   gaussian_kdet   __init__(   t   selft   datasetR   (    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyR      s    	c         C   sO   t  j j |  j ƒ |  _ t  j t  j j d t  j |  j ƒ ƒ |  j |  _	 d  S(   Ni   (
   t   npt   linalgt   invR   t   inv_covt   sqrtt   dett   pit   nt   _norm_factor(   R   (    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyt   _compute_covariance   s    (   t   __name__t
   __module__t   __doc__R   R   (    (    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyR      s   	t   gaussian_kde_covfactc           B   s/   e  Z d  d „ Z d „  Z d „  Z d „  Z RS(   t   scottsc         C   s#   | |  _  t j j j |  | ƒ d  S(   N(   t   covfactR   R   R   R   (   R   R	   R   (    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyR      s    	c         C   sO   t  j j |  j ƒ |  _ t  j t  j j d t  j |  j ƒ ƒ |  j |  _	 d S(   s   not usedi   N(
   R
   R   R   R   R   R   R   R   R   R   (   R   (    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyt   _compute_covariance_    s    c         C   sX   |  j  d k r |  j ƒ  S|  j  d k r2 |  j ƒ  S|  j  rH t |  j  ƒ St d ƒ ‚ d  S(   Nt   scR   t   sit	   silvermans9   covariance factor has to be scotts, silverman or a number(   R   R   (   R   R   (   R   t   scotts_factort   silverman_factort   floatt
   ValueError(   R   (    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyt   covariance_factor%   s    

	c         C   s!   | |  _  |  j ƒ  |  j ƒ  d  S(   N(   R   R"   R   (   R   R   (    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyt   reset_covfact/   s    	
(   R   R   R   R   R"   R#   (    (    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyR      s   		
c         C   sÓ   t  j |  ƒ t  j t ƒ } t j ƒ  t j t d d d d ƒt j t | d d d d ƒt j t t	 t
 j j t d	 t ƒd t	 t
 j j t d	 t ƒd d
 d d ƒt j d t t  j ƒ ƒ t j ƒ  d  S(   Nt   binsi   t   normedi   t   labelt   kdet   colort   gt   loct   rs   DGP: normal mixs   Kernel Density Estimation - (   t   gkdeR#   t   evaluatet   indt   pltt   figuret   histt   xnt   plott   alphaR   t   normt   pdft   mlowt   mhight   titlet   strR   t   legend(   R   t   kdepdf(    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyt   plotkde4   s    
"!c    	      C   sb  t  j j d ƒ d }  t  j j |  ƒ } | j ƒ  } | j d d ƒ } | | f GHt j | ƒ } t  j d d d ƒ } | j	 | ƒ } t j
 j | d | d	 | ƒ} d
 t  j | | d ƒ f GHd t  j t  j | | ƒ ƒ f GH| d | d } t t  j | | d ƒ | d k  ƒ | j d d ƒ GH| j t  j d ƒ GH| j d t  j ƒ GH| j t  j | ƒ GH| j | t  j ƒ GHt | j | t  j ƒ d d d ƒt | j t  j | ƒ d d d ƒt | j | t  j ƒ d d d ƒt | j t  j | ƒ d d d ƒt | j | ƒ | d j ƒ  | d d ƒt | j | | d ƒ | | j ƒ  | d d ƒd  S(   NiîÀ… iô  t   ddofi   iùÿÿÿi   iõ  R*   t   scalet   MSEi   t
   axabserrori    g{®Gáz„?g        g      ð?g      à?t   decimal(   R
   t   randomt   seedt   randnt   meant   stdR   R   t   linspaceR-   R5   R6   t   sumt   maxt   absR   t   integrate_gaussiant   integrate_box_1dt   infR    t   integrate_boxt   integrate_kde(	   t   n_basesampleR2   t   xnmeant   xnstdR,   t   xsR<   t   normpdft	   intervall(    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyt   test_kde_1dD   s6    !%"#"#t   __main__iè  iîÀ… g333333ã?iýÿÿÿi   i   gš™™™™™¹?iùÿÿÿi   ie   R$   i   R%   R&   R'   R(   R)   R*   R+   s   DGP: normal mixs   Kernel Density EstimationR   R   gš™™™™™©?g      à?R>   (   iýÿÿÿi   (+   R   t   numpyR
   t   numpy.testingR    R   R   R   t   matplotlib.pylabt   pylabR/   R   R   R   R=   RW   R   RQ   RC   RD   R4   R7   R8   t   concatenateRE   R2   R,   RH   R.   R-   R<   R0   R1   R3   R5   R6   R9   R;   t   cvRF   RR   RG   RS   (    (    (    sL   lib/python2.7/site-packages/statsmodels/sandbox/nonparametric/kdecovclass.pyt   <module>   s\   		)$
"!

"!
