U
    Ãmœd¢I  ã                
   @   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‹,#@g°rh‘í< @gÙÎ÷Sã%@gÉv¾Ÿ/@g-²�ï§F!@g;ßO�—î@g+‡Ù@g‹lçû©q@g/Ý$@gÏ÷Sã¥@gX9´Èv@gÇK7‰A`@g�—nƒÀ@g-²�ï§@gƒÀÊ¡E	@g´Èv¾Ÿ@goƒÀÊ¡@g+‡ÙÎ÷@gš™™™™@gð§ÆK7	!@g/Ý$�'@gV-²"@g
×£p=
 @gÏ÷Sã¥@gö(\�Âu@g¢E¶óýT!@gã¥›Ä °@g-²�ï'@g¾Ÿ/Ý$@g/Ý$�@gÃõ(\�Â@gáz®Gá@g!°rh‘m@gã¥›Ä °@gªñÒMb@g…ëQ¸…@g¶óýÔxé@g®Gáz@gƒÀÊ¡Å@gh‘í|?5@gÏ÷Sã¥"@g¸…ëQø(@g˜nƒÀÊ#@g)\�Âõ¨ @g¾Ÿ/Ý¤@g¸…ëQ8@gÉv¾Ÿo!@gÍÌÌÌÌÌ@iŸ  i   i¡  g’ŸCÏ\¿gû©Ø5­V~?gÿNp‚ˆ¡?g/ÙºÌ—´£?g\êœvcž?g�¾P]L£?g$½	tÜ§?g1€	?åV`?gVëŠ:ïÖ¢?gçAï¢“?g˜Q,·´b¿g·§�Ž€?gbün™Wž¡?g:ù>f±^†¿g0Ÿ‹
Åë”?gÑB]ÿ	‰Ÿ¿g±m“‚U’”?gŒîÙÅw?gÐw}»8l?g1ˆÝ±·¨?g§qwï\¢?gs ¢’ Ž?gpï–»,§?gNB


¥?go-¦ ‚¿gÔ2­¨î¤?g2ä·l�M§?g'õei§æ¢?g§r²¢@n?g7*�Þe²?g‚œƒ©^eš?gïí–‰ÇŠ¿g·¦ôÈö�¿gùaJEß´{?gInfWÎœ¶?gM ÛèRª?gŸ‰—DIŠ”?gc+&>�^?g:m¶‡÷û£?gâÄºeEÜ­?g+)æpR©?gØÚ5 ŸH•?gÕMÖfk–·?g¯5¥ä|?g”œì°6¶?g_7ø�|±?gt^c—¨Þ:¿g8�ä¨’·2?gHÂ¾�D„¡?g´)"Ã*n¿r   )Ú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.»ì&?g9ßØÊrŸ?gœÈƒõÂ?g_ÔVÃoÒ?g†ßjògaÐ?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“?gûâbWwÂ?g«pá5šeÓ?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 )Néd   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�³]¶?g K¼,»š·?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ð?gsôóWì˜=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(ç?gPÿYóã¯Ñ?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+Ê[dñQu?g@KºÚHá­?g{®Gáz„?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�á?gŸûYÉå?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{   g“©‚QI�Ü?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{á?gÆÏóeq§?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òn¤l‘„?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éVìq�?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?�Áê?gWðWØ>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   gUŸPôe®ê?g„e�öOBï?g½¾ÿ$xí?gt½†Cãgé?g²B™_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[   Té2   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    ÿ