U
    mdI                  
   @   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&   l/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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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'   r6   d   s     z?TestKDEUnivariate.test_weighted_pdf_non_fft.<locals>.<listcomp>r7   gX?g/=W6?gbWw?gp5e?g:*?g
x?r   r8   r9   )r;   r<   r   r=   r    r>   r?   r@   r   rA   rB   rC   r   rD   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!   xrE   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   rH   i  r   double)	r   r   randintr;   r<   r=   Zastyper   r/   )r!   reset_randomstaterL   rE   Z
kde_doubler&   r&   r'   test_int|   s    
zTestKDEUnivariate.test_intN)r)   r*   r+   rF   rG   rM   rQ   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,?r8   r9   r;   KDEMultivariater   r   r   rC   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 )NrS   rT   rU   cv_mlr         ?r:   rtolrX   )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cocr[   rU   gۼqRX?gsW=g>۴ct?皙?r]   )r;   rY   r   r   r   rC   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ccrT   rU   r      gw`t?gyYS?g5?ga@g0v?MbP?r9   )	r;   rY   r   r   r   squeezepdfrC   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   rT   rU   r   re   gX S(?gPY?rb   r9   )r;   rY   r   r   rg   rh   rC   r   ri   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curT   rU   g+[dQu?g@KH?g{Gz?r9   )r;   rY   r   r   rC   r   r/   )r!   rj   rl   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 )Nrd   r[   rU   r   re   g%a?gUs+?g'&mn?g&m?gͱe?rf   r9   )r;   rY   r   r   cdfrC   r   r!   Zdata_predictrj   rk   rl   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 )Nro   r[   rU   r   re   gPZ?gY?g*T?gKjpt?g|sꐼ/?rf   r9   )r;   rY   r   r   rq   rC   r   rr   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   ?rd   rT   TrH   	efficientn_subrV   rW   r/   defaultsgӼ?g&S?rb   皙?r]   r   r   r   r   r;   rY   EstimatorSettingsarrayrC   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 )Nru   rv   r   r   r   r   r   rw   rd   r[   TrH   rx   r{   gQI?g_vO?rb   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 )Nru   rv   r   r   r   r   r   rw   rd   r[   TFrH   ry   Z	randomizerz   r{   rU   rb   r}   r]   )
r   r   r   r   r;   rY   r   rC   r   r/   )r!   r"   r   r   r   r   rj   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 Nru   rv   r   r   r   gq=
ףp?gG$Ard   TFrH   r   r{   
r   r   r   r   r;   rY   r   rC   r   r/   r!   r"   r   r   Zbw_userrj   r&   r&   r'    test_efficient_user_specified_bw  s     z4TestKDEMultivariate.test_efficient_user_specified_bw)N)N)r)   r*   r+   rJ   markslowrZ   ra   rc   rm   rn   rp   rs   rt   r   r   r   r   r&   r&   r&   r'   rR      s&   








rR   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   rT   endogexogdep_type
indep_typer/   g N1?gQ"Vk?h㈵>r9   )r;   KDEMultivariateConditionalr   r   rC   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   r[   r   gn;F{?geq?rf   r9   )r;   r   r   r   rC   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   rT   r   )r;   r   r   r   r   r&   r&   r'   rp   ,  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   re   g_'@gz6>w)@gu*@g=!7*@g1t(@rf   r9   )
r   r   r;   r   r   r   rg   rh   rC   r   )r!   Zbw_cv_mlrj   rk   rl   r&   r&   r'   rm   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   rT   r   r   re   gܗT?g\ʓ?g[Z0?gk?gL5?r   r]   )	r;   r   r   r   r   rg   rh   rC   r   r!   rj   rk   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?rb   r9   g|=)r^   )
r;   r   r   r   r/   rC   r   r   Z
_bw_methodrepr)r!   dens_nmrk   rl   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   re   g0??gWW>j?g?g[<?g1Պ>8?rf   r9   )r;   r   r   r   rq   rC   r   )r!   r   rk   rl   r&   r&   r'   rs   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   rT   r   r   re   gUPe?geOB?g$x?gtCg?gB_0?r   r]   )r;   r   r   r   rq   rC   r   r   r&   r&   r'   rt   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  rv   r   r\   r   r
   r   r   r   r[   T2   rx   )r   r   r   r   r/   r|   g$0{?gё\C?r   rf   r]   )r   r   r   r   r   r;   r   r   r   rC   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+   rJ   r   r   r   r   rp   rm   r   r   rs   rt   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=   
isinstancerB   ZndarrayAssertionError)r   rP   rV   Zx_gridr@   r&   r&   r'   test_all_kernels  s
    r   )numpyr   Znumpy.testingtestingrC   rJ   r   r   Zstatsmodels.apiapir   r   r;   r   r,   rR   r   r   Zparametrizer   r&   r&   r&   r'   <module>   s"   7E    