U
    KvfB>                     @   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,#@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oZo2normalc1c2c3noiseyy2	Italy_gdp
Italy_yearZgrowthZoecd)clsnobsb0b1b2 r    Z/tmp/pip-unpacked-wheel-2v6byqio/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"   r3   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@gr53D_?{Gz?atol)	nparam	KernelRegr   r   r@   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 )Nr9   ccr:   r;   ghi?g{?r   rA   gٱ}?@gEB[ΥB@gxEE@g#KD@g%#gaOgB@gO/֭?rB   rC   
rE   rF   r   r   r   r@   rG   rH   rI   rJ   rK   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llrR   r:   r;   g{E{|?g:f@r   rA   g`(?@gB=ЦB@gAf?F@gSW^D@g?mB@gx?rB   rC   rS   rK   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@gX9v?gX2ı.?g0*?rU   cccr;   r   rA   rtol)r   r   r   r   betaarrayrE   rF   rG   rI   rJ   )r.   r/   r   C1C2C3r   r   r   r   b3Ybw_cv_lsrL   rN   rO   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 )NrX   rY   r   rZ   r   r   r   r   r   r\   g?g#J{/?gRZ?rU   Zccor;   r   r[   r^   )r   r   r   r   r   ra   rE   rF   rG   rH   rI   rJ   )r.   r/   r   ovalsrb   rc   r   r   r   r   re   rf   rg   rL   rN   rO   rP   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 )NrX   rY   r   r   r   rZ   r[   r   r   r\   rU   r]   r:   r;   r^   r   r	   )r   r   r   r   r`   rE   rF   r@   rG   rH   rI   rJ   )r.   r/   r   rb   rc   rd   r   r   r   re   rf   rL   rM   rN   rO   rP   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   r9   cr:   Td   )	efficientZn_subr<   r=   r>   r?   r@   defaultsrU   r;   g?g?)rD   r_   )
r   r   r   r   rE   rF   EstimatorSettingsrI   rJ   r@   )
r.   r   rb   rc   r   r   r   rf   Zmodel_efficientrL   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 )NrX   rY   r   r   r   r
   r   ?r   rU   rR   r:   )r<   r=   r>   r?   r@   
censor_valgr[   r^   )	r   r   r   r   rE   KernelCensoredRegrG   rI   rJ   )	r.   r   rb   rc   r   rf   rL   rN   rO   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 )NrX   rY   r   r   r   r
   r   ru   r9   rR   Zaicr;   gn[?gLzxL?gMbP?r^   )	r   r   r   r   rE   rF   rI   rJ   r@   )r.   r   rb   rc   r   rf   rL   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   rm   r   r   r   rZ   r[   r   r   gz#/eAg =Z4ArU   rR   r;   -   r   nbootNot SignificantFT)
r   r   r   r   r`   rE   rF   sig_testrI   assert_equal)r.   r   rb   rc   rd   r   r   r   rf   r@   rL   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 )NrX   rm   r   rZ   r   r   r[   r   r   gE>\@g{`2ArU   ocr;   r{   r   r|   r~   FT)r   r   r   r   r   r`   rE   rF   r   rI   r   )r.   r   ri   rc   rd   r   r   r   rf   r@   rL   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 )NrU   rR   r:   tricube)r<   r=   r>   r?   r@   ckertypeJbI?_vO?r   rA   Ͼ =>@gC</OB@gQl8F@gWD@gzA@`vO?rB   rC   rS   rK   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 )NrU   rR   r:   r   r   )r<   r=   r>   r?   r@   rv   r   r   r   rA   gJzZ4=@gl争=@gTn?@g*Q?@r   r   rB   rC   )
rE   rw   r   r   r   r@   rG   rH   rI   rJ   rK   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 )Nq=
ףp?G$Ar9   rR   Trp   rq   )	rE   rF   r   r   r   rs   rI   r   r@   )r.   bw_userrL   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 )NrX   rY   r   r   r   r
   r   ru   r   r   r   rU   rR   Tr   )r<   r=   r>   r?   r@   rv   rr   )
r   r   r   r   rE   rw   rs   rI   r   r@   )r.   r   rb   rc   r   rf   r   rL   r    r    r!   *test_censored_efficient_user_specificed_bwe  s       
z8TestKernelReg.test_censored_efficient_user_specificed_bwN)rW   )rW   )rW   )r4   r5   r6   rQ   rT   rV   rh   rj   pytestmarkZslowZxfailrl   rt   rx   ry   r   r   r   r   r   r   r    r    r    r!   r8   L   s,   






	r8   c               	   C   sB   t d} | d }tt tj| |dddgd W 5 Q R X d S )N  r   rn   g      )@g      ?)r@   )r   aranger   raises
ValueErrorrE   rF   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   rU   rR   r:   Z	silverman)r>   r?   r@   r   r   )r>   r?   r@   rv   r   )r   r   r   r   r   rE   rF   rw   r   r    r    r!   test_invalid_kernel  s    
 r   )r   Znumpyr   Znumpy.testingZtestingrI   Zstatsmodels.apiapismZnonparametricrE   r   r8   r   r   r    r    r    r!   <module>   s   B  -