U
    KvfI                  
   @   s   d dl Zd dlmZ d dlZd dlmZmZ d dlm	Z
 e
jZG dd dZG dd deZG dd deZG d	d
 d
eZejddddddddgdd ZdS )    N)assert_allcloseassert_equalc                   @   s   e Zd Zdd ZdS )KDETestBasec              2   C   s  d}t jd t jjdd|dfd| _t jjdd|dfd| _t jj|dfd| _t jjdd|dfd| _t jjdd|dfd| _	t jj|dfd| _
d	}d
}d}||| j  || j  | j
 | _||| j  || j  | j | j
 | _ddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=g2| _d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d?d?d?d?d?d?d?d?d?d?d?d?d?d?d?d?d?d?d?d?d?d@d@d@d@d@d@d@d@g2| _dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrg2| _dsdsdddsdsddsdsdsdsdsddsdsdsdsdsdsddsdsdsdsdsddddsddsdsdsdsdsddsdsddsddsddsdsdsdsdsdsdsg2| _t j|| _d S )tN<   i@    gffffff?   size   
   333333?333333?皙@g&1!@g/$(@gC,#@grh< @gS%@gv/@g-F!@g;O@g+@glq@g/$@gS@gX9v@gK7A`@gn@g-@gʡE	@gv@goʡ@g+@g@gK7	!@g/$'@gV-"@g
ףp=
 @gS@g(\u@gET!@g㥛 @g-'@g/$@g/$@g(\@gzG@g!rhm@g㥛 @gMb@gQ@gx@gGz@gʡ@gh|?5@gS"@gQ(@gn#@g)\ @g/ݤ@gQ8@gvo!@g@i  i  i  gC\g5V~?gNp?g/ٺ̗?g\vc?gP]L?g$	tܧ?g1	?V`?gV:֢?gA?gQ,bg?gbnW?g:>f^g0
?gB]	gmU?gw?gw}8l?g1ݱ?gqw\?gs ?gp,?gNB


?go- g2?g2lM?g'ei?gr@n?g7*e?g^e?g행ǊggaJEߴ{?gInfWΜ?gM R?gDI?gc+&>^?g:m?gĺeEܭ?g+)pR?g5 H?gMfk?g5|?g6?g_7|?gt^c:g8䨒2?gH¾D?g)"*nr   )nprandomseedbinomialoo2normalc1c2c3noiseyy2	Italy_gdp
Italy_yeargrowthoecdweights)selfnobsb0b1b2 r&   W/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/nonparametric/tests/test_kernel_density.pysetup_method   sh    &                                                                       	
                                    .                         zKDETestBase.setup_methodN)__name__
__module____qualname__r(   r&   r&   r&   r'   r      s   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestKDEUnivariatec                    s   t | j}|jddd |j  fddtdD }ddd	d
ddg}|jdtd  }|	|}t
j||dd t
j||dd d S )NFscott)fftbwc                    s   g | ]} d |  qS r   r&   .0iZgridr&   r'   
<listcomp>K   s     z6TestKDEUnivariate.test_pdf_non_fft.<locals>.<listcomp>   gh.&?g9r?gȃ?g_Vo?gjga?g<?r   ư>atol)nparamKDEUnivariater   fitsupportrangedensityr   arangeevaluatenptr   r!   kdeZtestxZkde_expectedZ	kde_vals0Zkde_valsr&   r4   r'   test_pdf_non_fftD   s&    
z"TestKDEUnivariate.test_pdf_non_fftc                    s   t | j}|j| jddd |j  fddtdD }ddd	d
ddg}|jdt	d  }|
|}tj||dd tj||dd d S )NFr-   )r    r.   r/   c                    s   g | ]} d |  qS r0   r&   r1   r4   r&   r'   r5   d   s     z?TestKDEUnivariate.test_weighted_pdf_non_fft.<locals>.<listcomp>r6   gX?g/=W6?gbWw?gp5e?g:*?g
x?r   r7   r8   )r:   r;   r   r<   r    r=   r>   r?   r   r@   rA   rB   r   rC   r&   r4   r'   test_weighted_pdf_non_fft^   s&    
z+TestKDEUnivariate.test_weighted_pdf_non_fftc              	   C   s:   t d}t|}tjtdd |  W 5 Q R X d S )Nd   zSelected KDE bandwidth is 0)match)r   Zonesr:   r;   pytestZraisesRuntimeErrorr<   )r!   xrD   r&   r&   r'   !test_all_samples_same_location_bwv   s    

z3TestKDEUnivariate.test_all_samples_same_location_bwc                 C   sN   t jjdddd}t|}|  t|d}|  t|j|j d S )Nr   rG   i  r   double)	r   r   randintr:   r;   r<   Zastyper   r/   )r!   reset_randomstaterK   rD   Z
kde_doubler&   r&   r'   test_int|   s    
zTestKDEUnivariate.test_intN)r)   r*   r+   rE   rF   rL   rP   r&   r&   r&   r'   r,   B   s   r,   c                   @   s   e Zd Zejjdd Zejjdd Zdd Zejjdd Z	d	d
 Z
ejjdd ZdddZdddZejjdd Zejjdd Zejjdd Zdd ZdS )TestKDEMultivariatec                 C   s8   t j| j| j| jgddd}tj|jdddgdd d S )	Ncoocv_lsdatavar_typer/   g*-?gd]?gK,?r7   r8   r:   KDEMultivariater   r   r   rB   r   r/   )r!   Zdens_ur&   r&   r'   test_pdf_mixeddata_CV_LS   s     z,TestKDEMultivariate.test_pdf_mixeddata_CV_LSc                 C   sR   t j| j| j| jgddd}t j| j| j| jgddd}tj|j|jddd d S )NrR   rS   rT   cv_mlr         ?r9   rtolrW   )r!   dens_lsdens_mlr&   r&   r'   test_pdf_mixeddata_LS_vs_ML   s      z/TestKDEMultivariate.test_pdf_mixeddata_LS_vs_MLc                 C   s>   t j| j| j| jgddd}dddg}tj|j|ddd d S )	NZcocrZ   rT   gۼqRX?gsW=g>۴ct?皙?r\   )r:   rX   r   r   r   rB   r   r/   )r!   r_   ZR_bwr&   r&   r'   test_pdf_mixeddata_CV_ML   s     
z,TestKDEMultivariate.test_pdf_mixeddata_CV_MLc                 C   sP   t j| j| jgddd}t| dd }dddd	d
g}tj||dd d S )NccrS   rT   r      gw`t?gyYS?g5?ga@g0v?MbP?r8   )	r:   rX   r   r   r   squeezepdfrB   r   r!   dens	sm_resultR_resultr&   r&   r'   test_pdf_continuous   s     
z'TestKDEMultivariate.test_pdf_continuousc                 C   sL   t j| jgddd}t| dd }dddddg}tj||dd	 d S )
Nr   rS   rT   r   rd   gX S(?gPY?ra   r8   )r:   rX   r   r   rf   rg   rB   r   rh   r&   r&   r'   test_pdf_ordered   s    z$TestKDEMultivariate.test_pdf_orderedc                 C   s6   t j| j| jgddd}ddg}tj|j|dd d S )NcurS   rT   g+[dQu?g@KH?g{Gz?r8   )r:   rX   r   r   rB   r   r/   )r!   ri   rk   r&   r&   r'   test_unordered_CV_LS   s     z(TestKDEMultivariate.test_unordered_CV_LSNc                 C   sJ   t j| j| jgddd}| dd }dddd	d
g}tj||dd d S )Nrc   rZ   rT   r   rd   g%a?gUs+?g'&mn?g&m?gͱe?re   r8   )r:   rX   r   r   cdfrB   r   r!   Zdata_predictri   rj   rk   r&   r&   r'   test_continuous_cdf   s      z'TestKDEMultivariate.test_continuous_cdfc                 C   sJ   t j| j| jgddd}| dd }dddd	d
g}tj||dd d S )Nrn   rZ   rT   r   rd   gPZ?gY?g*T?gKjpt?g|sꐼ/?re   r8   )r:   rX   r   r   rp   rB   r   rq   r&   r&   r'   test_mixeddata_cdf   s     z&TestKDEMultivariate.test_mixeddata_cdfc                 C   s   d}t jd t jj|fd}t jjdd|fd}dd|  d|  }tj||gd	d
tjdddd}t ddg}tj	||j
ddd d S )N  90  r   r   r   r   r   ?rc   rS   TrG   	efficientn_subrU   rV   r/   defaultsgӼ?g&S?ra   皙?r\   r   r   r   r   r:   rX   EstimatorSettingsarrayrB   r   r/   r!   r"   C1C2Ydens_efficientr/   r&   r&   r'   test_continuous_cvls_efficient   s    z2TestKDEMultivariate.test_continuous_cvls_efficientc                 C   s   d}t jd t jj|fd}t jjdd|fd}dd|  d|  }tj||gd	d
tjdddd}t ddg}tj	||j
ddd d S )Nrt   ru   r   r   r   r   r   rv   rc   rZ   TrG   rw   rz   gQI?g_vO?ra   r|   r\   r}   r   r&   r&   r'   test_continuous_cvml_efficient   s     z2TestKDEMultivariate.test_continuous_cvml_efficientc              	   C   s   d}t jd t jj|fd}t jjdd|fd}dd|  d|  }tj||gd	d
tjddddd}tj||gd	d
d}tj|j	|j	ddd d S )Nrt   ru   r   r   r   r   r   rv   rc   rZ   TFrG   rx   Z	randomizery   rz   rT   ra   r|   r\   )
r   r   r   r   r:   rX   r~   rB   r   r/   )r!   r"   r   r   r   r   ri   r&   r&   r'   test_efficient_notrandom   s     z,TestKDEMultivariate.test_efficient_notrandomc              	   C   sp   d}t jd t jj|fd}t jjdd|fd}ddg}tj||gd|tjd	d
ddd}t|j	| d S Nrt   ru   r   r   r   gq=
ףp?gG$Arc   TFrG   r   rz   
r   r   r   r   r:   rX   r~   rB   r   r/   r!   r"   r   r   Zbw_userri   r&   r&   r'    test_efficient_user_specified_bw  s     z4TestKDEMultivariate.test_efficient_user_specified_bw)N)N)r)   r*   r+   rI   markslowrY   r`   rb   rl   rm   ro   rr   rs   r   r   r   r   r&   r&   r&   r'   rQ      s&   








rQ   c                   @   s   e Zd Zejjdd Zdd Zejjdd Zdd Z	ejjd	d
 Z
dd Zdd Zejjdd Zejjdd Zdd ZdS )TestKDEMultivariateConditionalc                 C   s6   t j| jg| jgdddd}tj|jddgdd d S )	Ncr   rS   endogexogdep_type
indep_typer/   g N1?gQ"Vk?h㈵>r8   )r:   KDEMultivariateConditionalr   r   rB   r   r/   r!   r^   r&   r&   r'   test_mixeddata_CV_LS  s    
 z3TestKDEMultivariateConditional.test_mixeddata_CV_LSc                 C   s6   t j| jg| jgdddd}tj|jddgdd d S )Nr   rZ   r   gn;F{?geq?re   r8   )r:   r   r   r   rB   r   r/   )r!   r_   r&   r&   r'   test_continuous_CV_ML$  s    
 z4TestKDEMultivariateConditional.test_continuous_CV_MLc                 C   s    t j| jg| jgdddd}d S )Nur   rS   r   )r:   r   r   r   r   r&   r&   r'   ro   ,  s    
 z3TestKDEMultivariateConditional.test_unordered_CV_LSc                 C   sb   t ddg}tj| jg| jgdd|d}t | dd }ddd	d
dg}tj	||dd d S )Ngnl?gfffgAr   r   r   rd   g_'@gz6>w)@gu*@g=!7*@g1t(@re   r8   )
r   r   r:   r   r   r   rf   rg   rB   r   )r!   Zbw_cv_mlri   rj   rk   r&   r&   r'   rl   4  s    
 z2TestKDEMultivariateConditional.test_pdf_continuousc                 C   sV   t j| jg| jgdddd}t| dd }ddd	d
dg}tj||ddd d S )Nr   r   rS   r   r   rd   gܗT?g\ʓ?g[Z0?gk?gL5?r   r\   )	r:   r   r   r   r   rf   rg   rB   r   r!   ri   rj   expectedr&   r&   r'   test_pdf_mixeddata@  s    
 	z1TestKDEMultivariateConditional.test_pdf_mixeddatac                 C   s   t j| jg| jgdddd}|j}ddg}tj||dd t j| jg| jgddd d}t|j|jdd	 t|jd t	| d S )
Nr   normal_referencer   g[X?goVq?ra   r8   g|=)r]   )
r:   r   r   r   r/   rB   r   r   Z
_bw_methodrepr)r!   dens_nmrj   rk   Zdens_nm2r&   r&   r'   test_continuous_normal_refS  s$    

z9TestKDEMultivariateConditional.test_continuous_normal_refc                 C   sN   t j| jg| jgdddd}| dd }dddd	d
g}tj||dd d S )Nr   r   r   r   rd   g0??gWW>j?g?g[<?g1Պ>8?re   r8   )r:   r   r   r   rp   rB   r   )r!   r   rj   rk   r&   r&   r'   rr   j  s    
z2TestKDEMultivariateConditional.test_continuous_cdfc                 C   sP   t j| jg| jgdddd}| dd }ddd	d
dg}tj||ddd d S )Nr   r   rS   r   r   rd   gUPe?geOB?g$x?gtCg?gB_0?r   r\   )r:   r   r   r   rp   rB   r   r   r&   r&   r'   rs   t  s    
z1TestKDEMultivariateConditional.test_mixeddata_cdfc              
   C   s   d}t jd t jjdd|fd}t jj|fd}t jj|fd}d}d}d}|||  ||  | }tj|g|gd	d	d
tjdddd}	t ddg}
t	j
|	j|
ddd d S )Ni  ru   r   r[   r   r
   r   r   r   rZ   T2   rw   )r   r   r   r   r/   r{   g$0{?gё\C?r   re   r\   )r   r   r   r   r   r:   r   r~   r   rB   r   r/   )r!   r"   Zovalsr   r   r#   r$   r%   r   r   Zbw_expectedr&   r&   r'   r     s$       z=TestKDEMultivariateConditional.test_continuous_cvml_efficientc              	   C   sp   d}t jd t jj|fd}t jjdd|fd}ddg}tj||gd|tjd	d
ddd}t|j	| d S r   r   r   r&   r&   r'   r     s     z?TestKDEMultivariateConditional.test_efficient_user_specified_bwN)r)   r*   r+   rI   r   r   r   r   ro   rl   r   r   rr   rs   r   r   r&   r&   r&   r'   r     s   





r   kernelZbiwcosZepagauZtriZtriwunic                 C   sX   t jjdd}t t|t|d}tj|}|j	ddd t
||t jsTtd S )N   r   r   F)r   r.   )r   r   r   Zlinspaceminmaxsmnonparametricr;   r<   
isinstancerA   ZndarrayAssertionError)r   rO   rU   Zx_gridr?   r&   r&   r'   test_all_kernels  s
    r   )Znumpyr   Znumpy.testingZtestingrB   rI   r   r   Zstatsmodels.apiapir   r   r:   r   r,   rQ   r   r   Zparametrizer   r&   r&   r&   r'   <module>   s"   7E    