R编写的局部多项式回归程序,刚接触R,不知道如何修改。。
麻烦大家帮我修改一下。。谢谢!!!!!
LPR=function(n,c,p)
{
e=rnorm(n,0,0.25)
x<-seq(0,1,length=n)
y=sin(2*pi*x)+e
z=sin(2*pi*x)
plot(x,y)
lines(x,z,lwd=2)
h=c*n^(-1/5)
mx=rep(0,n)
for(i in 1:n)
{
mx[i]=sum(((y-qx(x[i],x,p)%*%(solve(t(X(x[i],x,n,p))%*%W(x[i],x,h,c)%*%X(x[i],x,n,p))%*%t(X(x[i],x,n,p))%*%W(x[i],x,h,c)%*%y))^2)*K(x[i],x,h))
}
lines(x,mx)
}
##########################################################
qx=function(t.val,t,p)
{
qx=rep(1,p+1)
for(i in 2:p+1)
qx[i]=qx[i]*((t.val-t)^(i-1))
}
##########################################################
X=function(t.val,t,n,p)
{
X=matrix(1,nrow=n,ncol=p+1)
for(i in 1:n)
for(j in 2:p+1)
X[i,j]=X[i,j]*((t.val-t)^(j-1))
}
##########################################################
W=function(t.val,t,h,c)
{
h.d=c*n^(-1/5)
h.s=1/h.d
diag=matrix(0,n,n)
for(i in 1:n)
diag[i,i]=h.s*K(t.val,t,h)
}
############################################
K=function(t.val,t,h)
{
return(kernel((t.val-t)/h))
}
############################################
kernel<-function(x)
{
return ((15/16)*(1-x^2)*(abs(x)<=1))
}