U
    mdB>                     @   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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@gr53D_?{Gz?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<   ghi?g{?r   rB   gٱ}?@gEB[ΥB@gxEE@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@gAf?F@gSW^D@g?mB@gx?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@gX9v?gX2ı.?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{/?gR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;   Td   )	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_valgr\   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<   gn[?gLzxL?gMbP?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   ckertypeJbI?_vO?r   rB   Ͼ =>@gC</OB@gQl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Z4=@gl争=@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 )Nq=
ף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  -