|
@ Lession 7.6: Nadaraya-Watson Nonparametric Regression Estimation @
new;cls;library pgraph;
n=100;
x=seqa(0,(2*pi)/(n-1),n);
mx=sin(x);
y=mx+0.5*rndn(n,1);
othband=1.06*stdc(x)*(n^(-1/5)); @最优光滑参数@
xy(x,mx~y);
print " 显示sin(x)和y图形 press any key to continue...";
waitc;cls;
{px,py}=npreg(y,x,1,othband);
print " 显示sin(x)、y和NW核估计py图形 ";
xy(x,mx~py~y);
proc(2)=npreg(y,x,krn,h); @ Kernel Regression @
local strt,endd,kern,pts,px,py,i,t,yt;
strt=minc(x); endd=maxc(x); pts=100;
px=seqa(strt,(endd-strt)/(pts-1),pts);
py=px;
i=1; do while i<=pts;
if krn==1; t=nkernel(py[i,1],x,h);
else; t=ekernel(py[i,1],x,h);
endif;
yt=t.*y; py[i,1]=sumc(yt)/sumc(t);
i=i+1; endo;
retp(px,py);
endp;
proc nkernel(x,xi,h); @ Gaussian kernel @
local u,kern;
u=(x-xi)./h;kern=(1/sqrt(2*pi))*exp(-(1/2).*(u^2));
retp(kern);
endp;
proc ekernel(x,xi,h); @ Epanechnikov kernel @
local u,kern;
u=(x-xi)./h;kern=(0.75*(1-u^2)).*(abs(u).<=1);
retp(kern);
endp;
|