# przyklad 1.4 p<-15 n<-1000 iter<-1000 fx<-1 mse<-numeric(length=p) v<-mse b<-mse # procedura rysujaca for (l in 1:p) { yy<-numeric(length=iter) for (k in 1:iter) { # generowanie danych - zbior uczacy xd<-matrix(nrow=n,ncol=l) yd<-matrix(nrow=n,ncol=1) for (i in 1:l) xd[,i]<-runif(n,min=-1,max=1) #jednostajny rozklad for (j in 1:n) { w<-sum(xd[j,]^2) yd[j]<-exp(-5*w) # funkcja regresji - prawdziwa ############# } colnames(xd)<-colnames(xd, do.NULL = FALSE, prefix = "x") colnames(yd)<-"y" xd<-cbind(yd,xd) dane<-as.data.frame(xd) # generowanie danych - zbior testowy x0<-matrix(nrow=1,ncol=l) y0<-matrix(nrow=1,ncol=1) x0[1:l]<-0 y0[1]<-fx colnames(x0)<-colnames(x0, do.NULL = FALSE, prefix = "x") colnames(y0)<-"y" x0<-cbind(y0,x0) x0<-as.data.frame(x0) # modele i predykcja kk<-kknn(formula=y~.,dane,rbind(x0,x0),k=3) yy[k]<-fitted(kk)[1] } mse[l]<-mean((fx-yy)^2) v[l]<-var(yy) b[l]<-(mean(yy)-fx)^2 } # dla l=1:p plot(1:p,mse,xlab="Liczba zmiennych",ylab="Błąd",ylim=c(0,1),type="n") lines(1:p,mse,type="l",col='blue',pch=2) lines(1:p,v,type="l",col='red',pch=3) lines(1:p,b,type="l",col='green',pch=4) points(mse,cex=.7,col='blue',pch=2) points(v,cex=.7,col='red',pch=3) points(b,cex=.7,col='green',pch=4) legend("topleft",lty=1,col=c("blue","red","green"),pch=c(2,3,4),legend = c("MSE", "wariancja","kwadrat obciążenia"))