U
    ÃmœdB>  ã                   @   s`   d dl Z d dlZd dlmZ d dlmZ ej	Z
G dd„ dƒZG dd„ deƒZdd„ Zdd	„ ZdS )
é    Nc                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚKernelRegressionTestBasec              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| _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_yearZgrowthZoecd)ÚclsÚnobsÚb0Úb1Úb2© r!   úo/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/nonparametric/tests/test_kernel_regression.pyÚsetup_class   sf    &                                    ùÿ                                   üÿ	
                                    ÷ÿ.                         þÿz$KernelRegressionTestBase.setup_classc                 C   s~   ddl }| t|ddd�¡}t |¡}tt |¡ƒ}tt |¡ƒ}t |||f¡}t	|ƒD ]}| 
t||dd…f ƒ¡ qZdS )z7Write some data to a csv file.  Only use for debugging!r   NÚwzutf-8)Úencoding)ÚcsvÚwriterÚopenr   Zcolumn_stackÚmaxÚshapeÚminZreshapeÚrangeÚwriterowÚlist)ÚselfÚ	file_nameÚdatar&   Z	data_filer   ÚKÚir!   r!   r"   Ú
write2file?   s    
z#KernelRegressionTestBase.write2fileN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr#   r4   r!   r!   r!   r"   r   
   s   
3r   c                   @   sÈ   e Zd Zdd„ Zdd„ Zdd„ Zd#dd	„Zd$d
d„Zej	j
ej	jdd�d%dd„ƒƒZej	j
dd„ ƒZej	j
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d„ Zdd„ Zd d!„ Zd"S )&ÚTestKernelRegc           	      C   sŽ   t j| jg| jgdddd�}|j}d}| ¡ \}}|dd… }|dd… }d}| ¡ }d	}tj||d
d� tj||d
d� tj||d
d� d S )NÚlcr   Úcv_ls©ÚendogÚexogÚreg_typeÚvar_typeÚbwgÎ>ê
ËÁ?r   é   g(bÃÃ@gr·53D_Â?ç{®Gáz„?©Úatol)	ÚnparamÚ	KernelRegr   r   rA   ÚfitÚ	r_squaredÚnptÚassert_allclose©	r/   ÚmodelÚsm_bwZR_bwÚsm_meanÚsm_mfxZR_meanÚsm_R2ZR_R2r!   r!   r"   Útest_ordered_lc_cvlsM   s"    
  þz"TestKernelReg.test_ordered_lc_cvlsc           	      C   s    t j| jg| j| jgdddd�}|j}ddg}| ¡ \}}|dd… }|dd… }d	d
dddg}| ¡ }d}tj	||dd� tj	||dd� tj	||dd� d S )Nr:   Úccr;   r<   g”hÉãi¹ã?g²…{À—Å?r   rB   gÙ±ˆ×}?@göEB[Î¥B@gxEð¿•ÜE@g�Ï#„KD@g%#gaOgB@gO/¶Ö­šî?rC   rD   ©
rF   rG   r   r   r   rA   rH   rI   rJ   rK   rL   r!   r!   r"   Útest_continuousdata_lc_cvlse   s       ÿz)TestKernelReg.test_continuousdata_lc_cvlsc           	      C   s    t j| jg| j| jgdddd�}|j}ddg}| ¡ \}}|dd… }|dd… }d	d
dddg}| ¡ }d}tj	||dd� tj	||dd� tj	||dd� d S )NÚllrS   r;   r<   gÙ{ñE{|û?gœ§:äf˜@r   rB   gþ`à¹÷(?@gB•š=Ð¦B@gòAÏfÕ?F@gì£SW^D@g?ŒmB@g†xàí?rC   rD   rT   rL   r!   r!   r"   Útest_continuousdata_ll_cvlsx   s       ÿz)TestKernelReg.test_continuousdata_ll_cvlsúRegData.csvc                 C   sò   d}t j d¡ t jj|fd�}t jjdd|fd�}t jjdd|fd�}t jj|fd�}d}d	}d
}	d}
|||  |	|  |
|  | }t  dddg¡}tj|g|||gdd|d�}| ¡ \}}|dd… }t	j
|dd d …f ||	|
gdd� d S )NéÈ   éÒ  r   r   r   ç      à?çš™™™™™É?r   r   r   çffffff@gX9´Èv¾î?gXÊ2Ä±.â?g¾0™*Ó?rV   Úcccr<   r   rB   ©Úrtol)r   r   r   r   ÚbetaÚarrayrF   rG   rH   rJ   rK   )r/   r0   r   ÚC1ÚC2ÚC3r   r   r   r    Úb3ÚYÚbw_cv_lsrM   rO   rP   r!   r!   r"   Útest_continuous_mfx_ll_cvlsŠ   s(       ÿz)TestKernelReg.test_continuous_mfx_ll_cvlsc                 C   sî   d}t j d¡ t jjdd|fd�}t jj|fd�}t jjdd|fd�}t jj|fd�}d}d}d	}	d
}
|||  |	|  |
|  | }t  dddg¡}tj|g|||gdd|d�}| ¡ \}}| 	¡ }t
j|dd d …f ||	|
gdd� d S )NrY   rZ   r   r[   r   r   r   r   r   r]   g‹¦³“Áð?g#J{ƒ/Ìú?g¨R³Z�Ù?rV   Zccor<   r   r\   r_   )r   r   r   r   r   rb   rF   rG   rH   rI   rJ   rK   )r/   r0   r   Úovalsrc   rd   r   r   r   r    rf   rg   rh   rM   rO   rP   rQ   r!   r!   r"   Útest_mixed_mfx_ll_cvls�   s(       ÿz$TestKernelReg.test_mixed_mfx_ll_cvlszATest does not make much sense - always passes with very small bw.)Úreasonc                 C   s  d}t j d¡ t jj|fd�}t jjdd|fd�}t jjdd|fd�}t jj|fd�}d}d	}d
}	||| |  |	|  | }
tj|
g|||gdddd�}|j}| ¡ \}}| 	¡ }|| }|| }t
j||
dd� t
j|d d …df |dd� t
j|dd…df |dd… dd� d S )NrY   rZ   r   r   r   r[   r\   r   r   r]   rV   r^   r;   r<   r_   r   r	   )r   r   r   r   ra   rF   rG   rA   rH   rI   rJ   rK   )r/   r0   r   rc   rd   re   r   r   r   rf   rg   rM   rN   rO   rP   rQ   Zmfx1Zmfx2r!   r!   r"   Útest_mfx_nonlinear_ll_cvls±   s.      ÿz(TestKernelReg.test_mfx_nonlinear_ll_cvlsc           
   
   C   sª   d}t j d¡ t jj|fd�}t jjdd|fd�}d}d}d}|||  ||  }tj|g|gd	d
dtjddd�d�}tj|g|gdd
dd�}	tj|	j	|j	ddd� d S )Niô  é90  r   r   r   r   r   r   r:   Úcr;   Téd   )Ú	efficientZn_sub©r=   r>   r?   r@   rA   ÚdefaultsrV   r<   gš™™™™™©?gš™™™™™¹?)rE   r`   )
r   r   r   r   rF   rG   ÚEstimatorSettingsrJ   rK   rA   )
r/   r   rc   rd   r   r   r    rg   Zmodel_efficientrM   r!   r!   r"   Útest_continuous_cvls_efficientÌ   s(     ÿþ ÿz,TestKernelReg.test_continuous_cvls_efficientc           	      C   s´   d}t j d¡ t jj|fd�}t jjdd|fd�}t jj|fd�}dd|  d|  | }d	||d	k< tj|g||gd
ddd	d�}| ¡ \}}tj|d	d d …f ddgdd� d S )NrY   rZ   r   r   r   r
   r   çÍÌÌÌÌÌì?r   rV   rS   r;   )r=   r>   r?   r@   rA   Ú
censor_valgÍÌÌÌÌÌì¿r\   r_   )	r   r   r   r   rF   ÚKernelCensoredRegrH   rJ   rK   )	r/   r   rc   rd   r   rg   rM   rO   rP   r!   r!   r"   Útest_censored_ll_cvlsà   s      þz#TestKernelReg.test_censored_ll_cvlsc                 C   s”   d}t j d¡ t jj|fd�}t jjdd|fd�}t jj|fd�}dd|  d|  | }tj|g||gd	d
dd�}ddg}tj|j|dd� d S )NrY   rZ   r   r   r   r
   r   rv   r:   rS   Zaicr<   gŸ»n[¥…Ù?gøLzxLà?gü©ñÒMbP?r_   )	r   r   r   r   rF   rG   rJ   rK   rA   )r/   r   rc   rd   r   rg   rM   Zbw_expectedr!   r!   r"   Útest_continuous_lc_aicï   s      ÿz$TestKernelReg.test_continuous_lc_aicc                 C   s   d}t j d¡ t jj|fd�}t jjdd|fd�}t jjdd|fd�}t jj|fd�}d}d	}|| ||  | }d
dg}	tj|g||gdd|	d�}
d}|
jddg|d�}t 	|dkd¡ |
jdg|d�}t 	|dkd¡ |
jdg|d�}t 	|dkd¡ d S )Néú   rn   r   r   r   r[   r\   r   r   g¡z#å/eAg üÙ=Z4ArV   rS   r<   é-   r   ©ÚnbootúNot SignificantFT)
r   r   r   r   ra   rF   rG   Úsig_testrJ   Úassert_equal)r/   r   rc   rd   re   r   r   r    rg   rA   rM   r~   Z	sig_var12Úsig_var1Úsig_var2r!   r!   r"   Útest_significance_continuous  s,      ÿz*TestKernelReg.test_significance_continuousc                 C   sâ   d}t j d¡ t jjdd|fd�}t jjdd|fd�}t jjdd|fd�}t jj|fd�}d}d	}|| ||  | }d
dg}	tj|g||gdd|	d�}
d}|
jdg|d�}t	 
|dkd¡ |
jdg|d�}t	 
|dkd¡ d S )NrY   rn   r   r[   r   r   r\   r   r   gEš>\î@g{®`†2ArV   Úocr<   r|   r   r}   r   FT)r   r   r   r   r   ra   rF   rG   r€   rJ   r�   )r/   r   rj   rd   re   r   r   r    rg   rA   rM   r~   r‚   rƒ   r!   r!   r"   Útest_significance_discrete  s(      ÿz(TestKernelReg.test_significance_discretec           	      C   s¢   t j| jg| j| jgddddd�}|j}ddg}| ¡ \}}|dd	… }|dd	… }d
ddddg}| ¡ }d}tj	||dd� tj	||dd� tj	||dd� d S )NrV   rS   r;   Útricube)r=   r>   r?   r@   rA   ÚckertypeçJbI¹ûœâ?çÙ_vOâ?r   rB   çÏ¾ò =í>@gC</OB@gQøl8F@gŒÜÓÕWD@gˆ»zûA@ç`vOêí?rC   rD   rT   rL   r!   r!   r"   Útest_user_specified_kernel4  s"      þz(TestKernelReg.test_user_specified_kernelc           	   	   C   s¤   t j| jg| j| jgdddddd�}|j}ddg}| ¡ \}}|dd	… }|dd	… }d
ddddg}| ¡ }d}tj	||dd� tj	||dd� tj	||dd� d S )NrV   rS   r;   r   r‡   )r=   r>   r?   r@   rA   rw   rˆ   r‰   rŠ   rB   gJzZ�4=@gƒüläº‰=@gTn¢–æª?@g•*Qö–ú?@r‹   rŒ   rC   rD   )
rF   rx   r   r   r   rA   rH   rI   rJ   rK   rL   r!   r!   r"   Ú#test_censored_user_specified_kernelH  s$       þz1TestKernelReg.test_censored_user_specified_kernelc              	   C   sD   ddg}t j| jg| j| jgdd|t jdd�d�}t |j|¡ d S )Nçq=
×£pÍ?ç®Gá$ˆAr:   rS   T©rq   rr   )	rF   rG   r   r   r   rt   rJ   r�   rA   )r/   Úbw_userrM   r!   r!   r"   Ú!test_efficient_user_specificed_bw\  s      
þz/TestKernelReg.test_efficient_user_specificed_bwc              
   C   s¨   d}t j d¡ t jj|fd�}t jjdd|fd�}t jj|fd�}dd|  d|  | }d	||d	k< d
dg}tj|g||gdd|d	tjdd�d�}t |j	|¡ d S )NrY   rZ   r   r   r   r
   r   rv   r   r�   r�   rV   rS   Tr‘   )r=   r>   r?   r@   rA   rw   rs   )
r   r   r   r   rF   rx   rt   rJ   r�   rA   )r/   r   rc   rd   r   rg   r’   rM   r!   r!   r"   Ú*test_censored_efficient_user_specificed_bwe  s       
ýz8TestKernelReg.test_censored_efficient_user_specificed_bwN)rX   )rX   )rX   )r5   r6   r7   rR   rU   rW   ri   rk   ÚpytestÚmarkZslowZxfailrm   ru   ry   rz   r„   r†   r�   rŽ   r“   r”   r!   r!   r!   r"   r9   L   s,   






	r9   c               	   C   sB   t  d¡} | d }t t¡� tj| |dddgd� W 5 Q R X d S )Né�  r   ro   g      )@g      ð?)rA   )r   Úaranger•   ÚraisesÚ
ValueErrorrF   rG   ©Úxr   r!   r!   r"   Útest_invalid_bww  s    
r�   c               
   C   sp   t  d¡} | d }t t¡� tj| |ddddd� W 5 Q R X t t¡� tj| |dddddd	� W 5 Q R X d S )
Nr—   r   rV   rS   r;   Z	silverman)r?   r@   rA   rˆ   r   )r?   r@   rA   rw   rˆ   )r   r˜   r•   r™   rš   rF   rG   rx   r›   r!   r!   r"   Útest_invalid_kernel  s    
ÿ ÿrž   )r•   Únumpyr   Znumpy.testingÚtestingrJ   Zstatsmodels.apiÚapiÚsmZnonparametricrF   r   r9   r�   rž   r!   r!   r!   r"   Ú<module>   s   B  -