setwd("C:/Users/leyenda/Desktop/master/Estadística_noparamétrica/Tema 4")

ejemplo<-read.table("patatas.txt",dec=",")
x<-ejemplo$V1
y<-ejemplo$V2

k<-function(x){     #kernel
return((1/sqrt(2*pi))*exp(-x^2/2))
}

nw<-function(t,x,y,h){#Nadaraya-Watson
    txh<-outer(t,x,"-")/h     #Da todas las restas t-x
    ktxh<-k(txh)              #Hace k de la matriz
    L<-ktxh/apply(ktxh,1,sum) #da una matriz donde las filas suman uno
                        #divido cada fila por cada fila 
    return(L%*%y)}
    


matrizLNW<-function(x,h){
    #usamos nw para calcukar matriz L
    txh<-outer(x,x,"-")/h     #Da todas las restas t-x
    ktxh<-k(txh)              #Hace k de la matriz
    L<-ktxh/apply(ktxh,1,sum) 
    return(L)
}


CV<-function(x,y,h){
    L=matrizLNW(x,h)
    mgorro=L%*%y
    mean((y-mgorro)^2/(1-diag(L))^2)
}


##- Windows sequency
h<-seq(0,20,by=0.02)



CV<-apply(as.matrix(h),1,function(t) CV(x,y,t))


windows()
plot(CV~h,type="l",main="cross validation Nadaraya-Watson")



h[which(CV==min(CV,na.rm=T))]


mgorro=nw(x,x,y,h[which(CV==min(CV,na.rm=T))])#h=3
plot(x,y)
points(x,mgorro,type="l",col="red")
abline(lm(y~x),lwd=2,col=3)
