
    !gA>                     z    d dl Z d dlZd dlmZ d dlmZ ej                  Z
 G d d      Z G d de      Zd Zd Zy)    Nc                   "    e Zd Zed        Zd Zy)KernelRegressionTestBasec                 h   d}t         j                  j                  d       t         j                  j                  dd|df      | _        t         j                  j                  dd|df      | _        t         j                  j                  |df      | _        t         j                  j                  dd|df      | _        t         j                  j                  dd|df      | _	        t         j                  j                  |df      | _
        d	}d
}d}||| j                  z  z   || j                  z  z   | j                  z   | _        ||| j                  z  z   || j                  z  z   | j                  z   | j                  z   | _        g d| _        g d| _        g d| _        g d| _        y )N<   i@    gffffff?   size   
   333333?333333?皙@)2g&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@)2  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     r   r   r   r   r   r   r   )2g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)"*n)2r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )nprandomseedbinomialoo2normalc1c2c3noiseyy2	Italy_gdp
Italy_yeargrowthoecd)clsnobsb0b1b2s        s/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/nonparametric/tests/test_kernel_regression.pysetup_classz$KernelRegressionTestBase.setup_class
   sr   
		v		""1cq	":##As$#;!!ay!1!!"atQi!8!!"atQi!8II$$4)$4	R#&&[ 2;.:b366k!BK/#%%7#))C 	1 		F 	
 	    c           	      z   ddl }|j                  t        |dd            }t        j                  |      }t        t        j                  |            }t        t        j                  |            }t        j                  |||f      }t        |      D ]#  }|j                  t        ||ddf                % y)z7Write some data to a csv file.  Only use for debugging!r   Nwzutf-8)encoding)csvwriteropenr   column_stackmaxshapeminreshaperangewriterowlist)self	file_namedatar/   	data_filer%   Kis           r)   
write2filez#KernelRegressionTestBase.write2file>   s    JJtIsWEF	t$288D>"zz$a)t 	1AtDAJ/0	1r+   N)__name__
__module____qualname__classmethodr*   r@    r+   r)   r   r   	   s    1 1f
1r+   r   c                      e Zd Zd Zd Zd ZddZddZej                  j                  ej                  j                  d      dd              Zej                  j                  d	        Zej                  j                  d
        Zej                  j                  d        Zej                  j                  d        Zej                  j                  d        Zd Zd Zd Zd Zy)TestKernelRegc                 r   t         j                  | j                  g| j                  gddd      }|j                  }d}|j                         \  }}|dd }|dd }d}|j                         }d	}t        j                  ||d
       t        j                  ||d
       t        j                  ||d
       y )Nlcr   cv_lsendogexogreg_typevar_typebwg>
?r      g(b@gr53D_?{Gz?atol)	nparam	KernelRegr    r!   rP   fit	r_squarednptassert_allclose	r:   modelsm_bwR_bwsm_meansm_mfxR_meansm_R2R_R2s	            r)   test_ordered_lc_cvlsz"TestKernelReg.test_ordered_lc_cvlsL   s      '7'+&7$*-' ! ; ))+!A,!! 	E4d3GV$7E4d3r+   c                    t         j                  | j                  g| j                  | j                  gddd      }|j
                  }ddg}|j                         \  }}|dd }|dd }g d	}|j                         }d
}t        j                  ||d       t        j                  ||d       t        j                  ||d       y )NrI   ccrJ   rK   ghi?g{?r   rQ   )gٱ}?@gEB[ΥB@gxEE@g#KD@g%#gaOgB@gO/֭?rR   rS   
rU   rV   r   r   r   rP   rW   rX   rY   rZ   r[   s	            r)   test_continuousdata_lc_cvlsz)TestKernelReg.test_continuousdata_lc_cvlsd   s      xtww6H*.' ! K 9%))+!A,!C!E4d3GV$7E4d3r+   c                    t         j                  | j                  g| j                  | j                  gddd      }|j
                  }ddg}|j                         \  }}|dd }|dd }g d	}|j                         }d
}t        j                  ||d       t        j                  ||d       t        j                  ||d       y )Nllrf   rJ   rK   g{E{|?g:f@r   rQ   )g`(?@gB=ЦB@gAf?F@gSW^D@g?mB@gx?rR   rS   rg   r[   s	            r)   test_continuousdata_ll_cvlsz)TestKernelReg.test_continuousdata_ll_cvlsw   s      xtww6H*.' ! K (#))+!A,!C!E4d3GV$7E4d3r+   c                 r   d}t         j                  j                  d       t         j                  j                  |f      }t         j                  j                  dd|f      }t         j                  j	                  dd|f      }t         j                  j                  |f      }d}d	}d
}	d}
|||z  z   |	|z  z   |
|z  z   |z   }t        j
                  g d      }t        j                  |g|||gdd|      }|j                         \  }}|dd }t        j                  |dd d f   ||	|
gd       y )N     r	   r   r         ?皙?r   r   r   ffffff@)gX9v?gX2ı.?g0*?rj   cccrK   r   rQ   rtol)r   r   r   r   betaarrayrU   rV   rW   rY   rZ   )r:   r;   r%   C1C2C3r   r&   r'   r(   b3Ybw_cv_lsr\   r_   r`   s                   r)   test_continuous_mfx_ll_cvlsz)TestKernelReg.test_continuous_mfx_ll_cvls   s*   
		tYYD8,YYa$2YY^^C4'^2		  th /RK"R%b(508867  s"b"*.8 ! M))+!A,F1Q3K"R$?r+   c                    d}t         j                  j                  d       t         j                  j                  dd|f      }t         j                  j	                  |f      }t         j                  j	                  dd|f      }t         j                  j	                  |f      }d}d}d	}	d
}
|||z  z   |	|z  z   |
|z  z   |z   }t        j
                  g d      }t        j                  |g|||gdd|      }|j                         \  }}|j                         }t        j                  |dd d f   ||	|
gd       y )Nrm   rn   r   ro   r	   r   r   r   r   rq   )g?g#J{/?gRZ?rj   ccorK   r   rp   rs   )r   r   r   r   r   rv   rU   rV   rW   rX   rY   rZ   )r:   r;   r%   ovalsrw   rx   r   r&   r'   r(   rz   r{   r|   r\   r_   r`   rb   s                    r)   test_mixed_mfx_ll_cvlsz$TestKernelReg.test_mixed_mfx_ll_cvls   s.   
		t		""1c"9YYD8,YYa$2		  th /RK"R%e+e38878  s"b%*.8 ! M))+!F1a4L2r2,TBr+   zATest does not make much sense - always passes with very small bw.)reasonc                    d}t         j                  j                  d       t         j                  j                  |f      }t         j                  j                  dd|f      }t         j                  j	                  dd|f      }t         j                  j                  |f      }d}d	}d
}	|||z  |z  z   |	|z  z   |z   }
t
        j                  |
g|||gddd      }|j                  }|j                         \  }}|j                         }||z  }||z  }t        j                  ||
d       t        j                  |d d df   |d       t        j                  |dddf   |dd d       y )Nrm   rn   r	   r   r   ro   rp   r   r   rq   rj   rr   rJ   rK   rs   r   r   )r   r   r   r   ru   rU   rV   rP   rW   rX   rY   rZ   )r:   r;   r%   rw   rx   ry   r   r&   r'   rz   r{   r\   r]   r_   r`   rb   mfx1mfx2s                     r)   test_mfx_nonlinear_ll_cvlsz(TestKernelReg.test_mfx_nonlinear_ll_cvls   s`    
		tYYD7+YYa$1YY^^C4'^2		  tg .R"rBw&.  s"b"*.7 ! L))+!BwBwGQt4F1a4L$T:F1R47OT!BZdCr+   c                    d}t         j                  j                  d       t         j                  j                  |f      }t         j                  j                  dd|f      }d}d}d}|||z  z   ||z  z   }t        j                  |g|gd	d
dt        j                  dd            }t        j                  |g|gdd
d      }	t        j                  |	j                  |j                  dd       y )Ni  90  r	   r   r   r   r   r   rI   crJ   Td   )	efficientn_subrL   rM   rN   rO   rP   defaultsrj   rK   g?g?)rT   rt   )
r   r   r   r   rU   rV   EstimatorSettingsrY   rZ   rP   )
r:   r%   rw   rx   r&   r'   r(   r{   model_efficientr\   s
             r)   test_continuous_cvls_efficientz,TestKernelReg.test_continuous_cvls_efficient   s    
		uYYD8,YYa$2RK"R% **!B4$'*w'-'?'?$FI (@ (K + L
   s"*-' ! ;EHHo&8&8t$Or+   c                    d}t         j                  j                  d       t         j                  j                  |f      }t         j                  j                  dd|f      }t         j                  j                  |f      }dd|z  z   d|z  z
  |z   }d	||d	kD  <   t        j                  |g||gd
ddd	      }|j                         \  }}t        j                  |d	d d f   ddgd       y )Nrm   rn   r	   r   r   r   r   ?r   rj   rf   rJ   )rL   rM   rN   rO   rP   
censor_valgrp   rs   )	r   r   r   r   rU   KernelCensoredRegrW   rY   rZ   )	r:   r%   rw   rx   r   r{   r\   r_   r`   s	            r)   test_censored_ll_cvlsz#TestKernelReg.test_censored_ll_cvls   s    
		tYYD8,YYa$2		  th /rMC"H$u,!A#((s"b26,3 ) C  ))+F1Q3K#tTBr+   c                    d}t         j                  j                  d       t         j                  j                  |f      }t         j                  j                  dd|f      }t         j                  j                  |f      }dd|z  z   d|z  z
  |z   }t        j                  |g||gd	d
d      }ddg}t        j                  |j                  |d       y )Nrm   rn   r	   r   r   r   r   r   rI   rf   aicrK   gn[?gLzxL?gMbP?rs   )	r   r   r   r   rU   rV   rY   rZ   rP   )r:   r%   rw   rx   r   r{   r\   bw_expecteds           r)   test_continuous_lc_aicz$TestKernelReg.test_continuous_lc_aic   s    
		tYYD8,YYa$2		  th /rMC"H$u,   s"b*.% ! I !*-EHHk=r+   c                    d}t         j                  j                  d       t         j                  j                  |f      }t         j                  j                  dd|f      }t         j                  j	                  dd|f      }t         j                  j                  |f      }d}d	}||z  ||z  z   |z   }d
dg}	t
        j                  |g||gdd|	      }
d}|
j                  ddg|      }t        j                  |dk(  d       |
j                  dg|      }t        j                  |dk(  d       |
j                  dg|      }t        j                  |dk(  d       y )N   r   r	   r   r   ro   rp   r   r   gz#/eAg =Z4Arj   rf   rK   -   r   nbootNot SignificantFT)
r   r   r   r   ru   rU   rV   sig_testrY   assert_equal)r:   r%   rw   rx   ry   r   r'   r(   r{   rP   r\   r   	sig_var12sig_var1sig_var2s                  r)   test_significance_continuousz*TestKernelReg.test_significance_continuous  sZ   
		uYYD8,YYa$2YY^^C4'^2		  th /Gb2g% ./  s"b*." ! FNNAa5N6	&77?>>1#U>3%66>>>1#U>3%66=r+   c                 x   d}t         j                  j                  d       t         j                  j                  dd|f      }t         j                  j	                  dd|f      }t         j                  j                  dd|f      }t         j                  j	                  |f      }d}d	}||z  ||z  z   |z   }d
dg}	t        j                  |g||gdd|	      }
d}|
j                  dg|      }t        j                  |dk(  d       |
j                  dg|      }t        j                  |dk(  d       y )Nrm   r   r   ro   r	   r   rp   r   r   gE>\@g{`2Arj   ocrK   r   r   r   r   FT)r   r   r   r   r   ru   rU   rV   r   rY   r   )r:   r%   r   rx   ry   r   r'   r(   r{   rP   r\   r   r   r   s                 r)   test_significance_discretez(TestKernelReg.test_significance_discrete  s3   
		u		""1c"9YYa$2YY^^C4'^2		  th /Jb 5(^,   s%*." ! F >>1#U>3%66>>>1#U>3%66=r+   c                    t         j                  | j                  g| j                  | j                  gdddd      }|j
                  }ddg}|j                         \  }}|dd	 }|dd	 }g d
}|j                         }d}t        j                  ||d       t        j                  ||d       t        j                  ||d       y )Nrj   rf   rJ   tricube)rL   rM   rN   rO   rP   ckertypeJbI?_vO?r   rQ   )Ͼ =>@gC</OB@gQl8F@gWD@gzA@`vO?rR   rS   rg   r[   s	            r)   test_user_specified_kernelz(TestKernelReg.test_user_specified_kernel3  s      xtww6H*.'*3 ! 5 &!))+!A,!H!E4d3GV$7E4d3r+   c           	         t         j                  | j                  g| j                  | j                  gddddd      }|j
                  }ddg}|j                         \  }}|dd	 }|dd	 }g d
}|j                         }d}t        j                  ||d       t        j                  ||d       t        j                  ||d       y )Nrj   rf   rJ   r   r   )rL   rM   rN   rO   rP   r   r   r   r   rQ   )gJzZ4=@gl争=@gTn?@g*Q?@r   r   rR   rS   )
rU   r   r   r   r   rP   rW   rX   rY   rZ   r[   s	            r)   #test_censored_user_specified_kernelz1TestKernelReg.test_censored_user_specified_kernelG  s    ((xtww>P*.',-	 ) C &!))+!A,!H!E4d3GV$7E4d3r+   c           
          ddg}t         j                  | j                  g| j                  | j                  gdd|t         j                  d            }t        j                  |j                  |       y )Nq=
ףp?G$ArI   rf   Tr   r   )	rU   rV   r   r   r   r   rY   r   rP   )r:   bw_userr\   s      r)   !test_efficient_user_specificed_bwz/TestKernelReg.test_efficient_user_specificed_bw[  sg    y!  xtww6H*.'*0*B*BT*B*R ! T 	7+r+   c                    d}t         j                  j                  d       t         j                  j                  |f      }t         j                  j                  dd|f      }t         j                  j                  |f      }dd|z  z   d|z  z
  |z   }d	||d	kD  <   d
dg}t        j                  |g||gdd|d	t        j                  d            }t        j                  |j                  |       y )Nrm   rn   r	   r   r   r   r   r   r   r   r   rj   rf   Tr   )rL   rM   rN   rO   rP   r   r   )
r   r   r   r   rU   r   r   rY   r   rP   )r:   r%   rw   rx   r   r{   r   r\   s           r)   *test_censored_efficient_user_specificed_bwz8TestKernelReg.test_censored_efficient_user_specificed_bwd  s    
		tYYD8,YYa$2		  th /rMC"H$u,!A#y!((s"b26,3*0*B*BT*B*R ) T
 	7+r+   N)zRegData.csv)rA   rB   rC   rd   rh   rk   r}   r   pytestmarkslowxfailr   r   r   r   r   r   r   r   r   r   rE   r+   r)   rG   rG   K   s
   404&4$@&C( [[[[ 4 5D5 D0 [[P P& [[C C [[> >( [[> >. [[> >.4(4(,,r+   rG   c                      t        j                  d      } | dz  }t        j                  t              5  t
        j                  | |dddg       d d d        y # 1 sw Y   y xY w)N  r   r   g      )@g      ?)rP   )r   aranger   raises
ValueErrorrU   rV   xr   s     r)   test_invalid_bwr   v  sT    
		#A	QA	z	" 3Asbz23 3 3s   AA"c            
      ^   t        j                  d      } | dz  }t        j                  t              5  t
        j                  | |dddd       d d d        t        j                  t              5  t
        j                  | |ddddd	       d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)
Nr   r   rj   rf   rJ   	silverman)rN   rO   rP   r   r   )rN   rO   rP   r   r   )r   r   r   r   r   rU   rV   r   r   s     r)   test_invalid_kernelr   ~  s    
		#A	QA	z	" /At"- 	 	// 
z	" E  At,- 	! 	EE E	/ /E Es   B1B#B #B,)r   numpyr   numpy.testingtestingrY   statsmodels.apiapismnonparametricrU   r   rG   r   r   rE   r+   r)   <module>r      sB       			?1 ?1Dh,, h,V	3
Er+   