|
- library(locfit);
- data(ethanol);
- attach(ethanol);
- summary(ethanol)
- Y=NOx;
- X=E;
- Y=Y[order(X)]
- X=sort(X)
- plot(X,Y);
- plot(X,Y); #画原始数据的散点图
- X2=X^2; X3=X^3; X4=X^4;
- fit1<-lm(Y~X)
- lines(X,fit1$fitted.values,lty=1,col=1,lwd=3)
- fit2<-lm(Y~X+X2)
- lines(X,fit2$fitted.values,lty=2,col=2,lwd=3)
- fit3<-lm(Y~X+X2+X3)
- lines(X,fit3$fitted.values,lty=3,col=3,lwd=3)
- fit4<-lm(Y~X+X2+X3+X4)
- lines(X,fit4$fitted.values,lty=4,col=4,lwd=3)
- legend(0.53,4,c("线性","二次","三次","四次"),lty=c(1,2,3,4),col=c(1,2,3,4))
- # Rule-of-Thumb Global Bandwidth Selector;
- X2=X^2; X3=X^3; X4=X^4;
- fit1 <- lm(Y~X+X2+X3+X4);
- coefE=c(fit1$coeff);
- resids=fit1$residuals;
- sigmaE=sqrt(var(resids));
- CK=1.719 # Epanechnikov kernel used.
- temp=cbind(2,3*2*X,4*3*X^2)%*%as.vector(coefE[-(1:2)]);
- den=sum(temp^2);
- h.ROT=CK*(sigmaE^2/den)^(1/(2*1+3));
- print(h.ROT) #选择窗宽
- #final fitting;
- xfine=seq(0,4,length=50);
- ypred1 <- rep(0,length(xfine));
- for(i in 1:length(xfine)){
- ypred1[i] <- LLS.fun(xfine[i],X,Y,h=h.ROT);
- }
- plot(X,Y);
- lines(xfine,ypred1,lty=1,col=3);#拟合数据
复制代码 关键是,提示找不到LLS.fun函数,怎么办??
|