3
OdE@                 @   sx  d dl mZ d dlZd dlmZmZmZmZm	Z	 d dl
Z
d dl
mZ dd Zdd Ze
jjd	d
 Ze
jjdd Zdd Zdd ZG dd dejZG dd dejZG dd dejZG dd dejZdd Zdd Zdd Zdd  Zd!d"d#d$d%d&gZe
jjd'ed(d)g e
jjd*ee
jjd+ee
jjd,ed-d. Z d/d0 Z!d1d2 Z"d3d4 Z#d5d6 Z$d7d8 Z%d9d: Z&dS );    )statsN)assert_almost_equalassert_assert_array_almost_equalassert_array_almost_equal_nulpassert_allclose)raisesc              C   sH  t jjd d} t jj| }|j }|jdd}tj|}t jddd}|j	|}tj
j|||d}|d |d  }tt j|| d	 | d
k  |j|t j}	|jt j |}
t|	ddd t|
ddd t|j|t j|	dd t|jt j ||
dd t|j||d	 j | d	d t|j||d	 || j | d	d d S )Ni i     )Zddof   i  )locscaler      g{Gz?g      ?)decimal   i)nprandomseedrandnmeanZstdr   gaussian_kdelinspaceevaluatenormpdfr   sumintegrate_box_1dinfr   integrate_boxintegrate_kdeintegrate_gaussian)n_basesamplexnxnmeanxnstdgkdexskdepdfnormpdf	intervallprob1prob2 r+   Q/var/www/html/virt/lib64/python3.6/site-packages/scipy/stats/tests/test_kdeoth.pytest_kde_1d	   s*    


r-   c              C   sn  t jjd d} t jj| }t jj| }t j||d}t jt j|| d |d}tj||d}t j	ddd}|j
|}tjj|||d}|d |d	  }	tt j|| d |	 d
k  |j|t j}
|jt j |}t|
ddd t|ddd t|j|t j|
dd t|jt j ||dd t|j||d j |	 dd t|j||d || j |	 dd d S )Ni i  )weightsr   r
   i  )r   r   r	   r   g{Gz?g      ?)r   r   i)r   r   r   r   randZaveragesqrtr   r   r   r   r   r   r   r   r   r   r   r   r   r   )r    r!   wnr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r+   r,   test_kde_1d_weighted(   s,    

r2   c              C   s  t jjd d} t jddg}t jddgddgg}t jj||| dj}tj|}t jddd	ddd	f \}}t j	|j
 |j
 g}|j|}|jdd}tjjt j||g||d
}	|j
 d |j
 d  }
tt j||	 d |
d  dk  d}d}|j||d g||g}|j||g||d g}t|ddd t|ddd t|j||d j |
d  dd t|j||||	 j |
d  dd d S )Ni i  g      ?g      @g       @g      @)sizer
   y             @@)r   covr	   r   r   g{Gz?g}Ô%ITg      ?)r   iig}Ô%I)r   r   r   arraymultivariate_normalTr   r   mgridvstackravelr   reshaper   dstackr   r   r   r   r   r   )r    r   
covariancer!   r$   xygrid_coordsr&   r'   r(   smalllarger)   r*   r+   r+   r,   test_kde_2dH   s.    

"
rC   c              C   s  t jjd d} t jddg}t jddgddgg}t jj||| dj}t jj| }tj||d}t j	dd	d
dd	d
f \}}t j
|j |j g}|j|}	|	jdd}	tjjt j||g||d}
|j d |j d  }tt j|	|
 d |d  dk  d}d}|j||d g||g}|j||g||d g}t|ddd t|ddd t|j||	d j |d  dd t|j|||	|
 j |d  dd d S )Ni i  g      ?g      @g       @g      @)r3   )r.   r
   y             @@)r   r4   r	   r   r   g{Gz?g}Ô%ITg      ?)r   iig}Ô%I)r   r   r   r5   r6   r7   r/   r   r   r8   r9   r:   r   r;   r   r<   r   r   r   r   r   r   )r    r   r=   r!   r1   r$   r>   r?   r@   r&   r'   r(   rA   rB   r)   r*   r+   r+   r,   test_kde_2d_weightedo   s0    
"
rD   c        
      C   s   dd } t jjd d}t jj|}tj|}tj|| d}tj||jd}t jd	dd}|j|}|j|}t	|| |j|}	t	||	 t
ttj|dd d S )
Nc             S   s   t j| jd| jd  S )z*Same as default, just check that it works.g      ?   g      )r   powernd)kde_objr+   r+   r,   scotts_factor   s    z0test_kde_bandwidth_method.<locals>.scotts_factori 2   )	bw_methodr
   3   wrongstringi)r   r   r   r   r   r   factorr   r   r   assert_raises
ValueError)
rJ   r    r!   r$   gkde2gkde3r%   r&   kdepdf2kdepdf3r+   r+   r,   test_kde_bandwidth_method   s    





rV   c        
      C   s   dd } t jjd d}t jj|}tj|}tj|| d}tj||jd}t jd	dd}|j|}|j|}t	|| |j|}	t	||	 t
ttj|dd d S )
Nc             S   s   t j| jd| jd  S )z*Same as default, just check that it works.g      ?rE   g      )r   rF   ZneffrH   )rI   r+   r+   r,   rJ      s    z9test_kde_bandwidth_method_weighted.<locals>.scotts_factori rK   )rL   r
   rM   rN   i)r   r   r   r   r   r   rO   r   r   r   rP   rQ   )
rJ   r    r!   r$   rR   rS   r%   r&   rT   rU   r+   r+   r,   "test_kde_bandwidth_method_weighted   s    





rW   c               @   s   e Zd Zdd ZdS )_kde_subclass1c             C   s0   t j|| _| jj\| _| _| j| _| j  d S )N)	r   Z
atleast_2ddatasetshaperH   rG   rJ   covariance_factor_compute_covariance)selfrY   r+   r+   r,   __init__   s    z_kde_subclass1.__init__N)__name__
__module____qualname__r^   r+   r+   r+   r,   rX      s   rX   c                   s   e Zd Z fddZ  ZS )_kde_subclass2c                s   | j | _tt| j| d S )N)rJ   r[   superrb   r^   )r]   rY   )	__class__r+   r,   r^      s    z_kde_subclass2.__init__)r_   r`   ra   r^   __classcell__r+   r+   )rd   r,   rb      s   rb   c               @   s   e Zd Zdd Zdd ZdS )_kde_subclass3c             C   s   || _ tjj| | d S )N)r=   r   r   r^   )r]   rY   r=   r+   r+   r,   r^      s    z_kde_subclass3.__init__c             C   s4   t jj| j| _t jt jjdt j | j | _d S )Nr   )	r   Zlinalginvr=   Zinv_covr0   ZdetpiZ_norm_factor)r]   r+   r+   r,   r\      s    z"_kde_subclass3._compute_covarianceN)r_   r`   ra   r^   r\   r+   r+   r+   r,   rf      s   rf   c               @   s   e Zd Zdd ZdS )_kde_subclass4c             C   s   d| j   S )Ng      ?)silverman_factor)r]   r+   r+   r,   r[      s    z _kde_subclass4.covariance_factorN)r_   r`   ra   r[   r+   r+   r+   r,   ri      s   ri   c                 s   t jdddddgtd} t jdddd}tj|   |}t| }||}t||dd	 t| }||}t||dd	 t	|  j
}||}t||dd	 t| }	|	| }
d
ddddg}t||
dd  } fdd|_|j  ||}t||dd	 d S )Nr
      r	   rE   )dtype
   rK   )num)nulpgn,?gǻe??gW[3?ga )?gKd8;?   )r   c                  s    j S )N)rO   r+   )kder+   r,   <lambda>  s    z/test_gaussian_kde_subclassing.<locals>.<lambda>ii)r   r5   floatr   r   r   rX   r   rb   rf   r=   ri   r   r[   r\   )x1r%   ZysZkde1y1kde2y2Zkde3Zy3Zkde4Zy4
y_expectedZkde5Zy5r+   )rq   r,   test_gaussian_kde_subclassing   s,    
rz   c              C   sr   t jdddddgtd} t jdddd}dd	d
ddg}tj| }|jdd |jdd ||}t||dd d S )Nr
   rk   r	   rE   )rl   rm   )rn   g>L\9?gp4=?gH꟫?g8(H	MT?gĲCR?g      ?)rL   scott)r   irs   i)r   r5   rt   r   r   r   Zset_bandwidthr   )ru   r%   ry   rq   rx   r+   r+   r,   $test_gaussian_kde_covariance_caching  s    
r|   c              C   sr   t jdddddgtd} t jdddd}tj| }|j|_|j  ||}tj| d	d
}||}t	||dd dS )zUgly, but people may rely on this.  See scipy pull request 123,
    specifically the linked ML thread "Width of the Gaussian in stats.kde".
    If it is necessary to break this later on, that is to be discussed on ML.
    r
   rk   r	   rE   )rl   rm   rK   )rn   	silverman)rL   )ro   Nirs   i)
r   r5   rt   r   r   r   rj   r[   r\   r   )ru   r%   rq   rv   rw   rx   r+   r+   r,   test_gaussian_kde_monkeypatch"  s    
r~   c              C   s8   t jd} tj| }dddddg}t|| |dd dS )zRegression test for #1181.rk   gB\A?gES?g
f?rp   )r   N)r   aranger   r   r   )ru   rq   ry   r+   r+   r,   test_kde_integer_input7  s    

r   Zfloat32float64Zfloat96Zfloat128Zint32Zint64bw_typer{   r}   weights_typedataset_type
point_typec       
      C   s   t t| d } t t|d }t t|d }|d	kr2|}nt t|d }|rJ|dnd }tdd | |||gD rptj  tjd|d}tjd|d}tjj|||d}tjd| d}||}	|	j	tj
||tj||jkstd S )
Nr{   r}      c             s   s   | ]}|d kV  qd S )Nr+   ).0dtr+   r+   r,   	<genexpr>Q  s    z(test_kde_output_dtype.<locals>.<genexpr>rk   )rl   )rL   r.   )r{   r}   )getattrr   anypytestskipr   r   rq   r   rl   Zresult_typer   rO   AssertionError)
r   r   r   r   Zbwr.   rY   kZpointsresultr+   r+   r,   test_kde_output_dtypeA  s     r   c              C   s   t jjd d} t jj| }tj|}t jddd}|j|}|j|}t	||dd t j
|}|j|}t	||dd tj|}t j
|j|}|j|}t	||dd d S )Nr	   rK            )r   i)r   r   r   r   r   r   r   r   r   r   loglogpdf)r    r!   r$   r%   r   pdf2r   logpdf2r+   r+   r,   test_pdf_logpdf^  s    






r   c        	      C   s   t jjd d} t jj| }t jj| }tj||d}t jddd}|j|}|j	|}t
||dd t j|}|j|}t
||dd tj|t jjt|d}t j|j|}|j|}t
||dd d S )	Nr	   rK   )r.   r   r   r   )r   i)r   r   r   r   r/   r   r   r   r   r   r   r   r   len)	r    r!   r1   r$   r%   r   r   r   r   r+   r+   r,   test_pdf_logpdf_weightedv  s     




r   c                 s   t jjd d} d t j fddtd| D }tj|}|jt jd| }t j	j
t j|d d t j	j
t j|d d d S )Nr	   i	  i  c                s   g | ]}t jj | qS r+   )r   r   r   )r   rG   )	n_samplesr+   r,   
<listcomp>  s    z(test_logpdf_overflow.<locals>.<listcomp>r   F)r   r   r   r5   ranger   r   r   r   ZtestingZassert_equalZisneginfisnan)Zn_dimensionsr!   r$   r   r+   )r   r,   test_logpdf_overflow  s    
r   c              C   sb   t jjd t jjdd} t jjdddg| jd}|j }tjt j	| |d t
||ddd d S )	Ni90  d   )r3   g      ?g      $@)r.   g+=)atolrtol)r   r   r   Z	lognormalchoicer3   copyr   r   log10r   )valsr.   Zorig_weightsr+   r+   r,   test_weights_intact  s    r   c              C   st   t jjd dddddg} ddd	d
dg}tj| |d}tj| t j|d}dddg}t|j||j|ddd d S )Ni90  g?g      +@g      5@g     R@g     X@r	   r   rE         )r.   g333333?   X   g+=)r   r   )r   r   r   r   r   r   r   r   )valuesr.   Zpdf_iZpdf_fr!   r+   r+   r,   test_weights_integer  s    

r   c              C   s   dd } t jjd d}t jj|}t jj|}tj|}| | tj||d}| | t jddg}t jddgdd	gg}t jj|||d
j	}tj|}	| |	 tj||d}
| |
 d S )Nc             S   s   d}| j |}| j |}ttt||dd d}| j ||d}| j ||d}t||dd tjjdd}| j ||d}tjjdd}| j ||d}t||dd ttjdrtjjd}| j ||d d S )	N   gvIh%<=)r   i?  )r      default_rngi  )	ZresamplerP   r   r   r   r   ZRandomStatehasattrr   )Z
gkde_trailZn_sampleZsamp1Zsamp2r   Zrstate1Zrstate2rngr+   r+   r,   test_seed_sub  s"    

z test_seed.<locals>.test_seed_subi i  )r.   g      ?g      @g       @g      @)r3   )
r   r   r   r/   r   r   r   r5   r6   r7   )r   r    r1   Zxn_1dZgkde_1dZgkde_1d_weightedr   r=   Zxn_2dZgkde_2dZgkde_2d_weightedr+   r+   r,   	test_seed  s     

r   )'Zscipyr   Znumpyr   Znumpy.testingr   r   r   r   r   r   r   rP   r-   r2   markZslowrC   rD   rV   rW   r   rX   rb   rf   ri   rz   r|   r~   r   Z_ftypesZparametrizer   r   r   r   r   r   r   r+   r+   r+   r,   <module>   s:    '(
&