#ocena gustine podataka iz normalne N(0,1) raspodele

#gausovo jezgro
Kn<-function(t){
    return(exp(-t^2/2)/sqrt(2*pi))
}
#bikvadratno jezgro
Kd<-function(t){
  if(abs(t)<1)
    return((15/16)*(1-t^2)^2)
  else
    return(0)
}
#trougaono jezgro
Kt<-function(t){
  if(abs(t)<1)
    return(1-abs(t))
  else
    return(0)
}
#Epanehnikovo jezgro
Ke<-function(t){
  if(abs(t)<sqrt(5))
    return((3/4)*(1-(1/5)*t^2)/sqrt(5))
  else
    return(0)
}
#uniformno jezgro
Kp<-function(t){
  if(abs(t)<1)
    return(1/2)
  else
    return(0)
}

#podaci iz normalne N(0,1) raspodele
x<-rnorm(200)
n<-length(x)
#parametar glatkosti odredjen na osnovu referentne raspodele; za N(0,1): h=1.06*sd(x)*n^(-1/5)
h<-1.06*n^(-1/5)*sd(x)

y<-seq(-4,4,0.1) #tacke u kojima se odredjuje ocena
f<-matrix(0,5,length(y)) #matrica za smestanje ocena
for(j in 1:length(y)){
  suma<-rep(0,5)
  for(i in 1:n){
    suma[1]<-suma[1]+Kn((y[j]-x[i])/h)
    suma[2]<-suma[2]+Kd((y[j]-x[i])/h)
    suma[3]<-suma[3]+Kt((y[j]-x[i])/h)
    suma[4]<-suma[4]+Ke((y[j]-x[i])/h)
    suma[5]<-suma[5]+Kp((y[j]-x[i])/h)
  }
  f[1,j]<-suma[1]
  f[2,j]<-suma[2]
  f[3,j]<-suma[3]
  f[4,j]<-suma[4]
  f[5,j]<-suma[5]
}
fh<-f/(h*n) #ocena gustine jezgrom
plot(y, fh[1,], type="n", xlab="", ylab="", xlim=c(-4,4), ylim=c(0, .5))
lines(y,fh[1,],type="l")
lines(y,fh[2,],type="l", col="red")
lines(y,fh[3,],type="l", col="green")
lines(y,fh[4,],type="l", col="blue")
lines(y,fh[5,],type="l", col="pink")




