fker=function(y, npoints, h) { #Esta funcion estima la funcion de densidad univariada usando # el metodo de kernel (gaussiano) #inputs # y: el conjunto de datos tomado # npoints: el numero de puntos donde # h: es el ancho de banda, h puede ser 'hopt1', 'hopt2' o # un numero. Requiere las funciones hopt1 y hopt2 que calculan # anchos de banda # Output # Los estimados de la funcion de densidad en npoitnss y el plot # de la funciom de densidad estimada #***************************************************** x <- seq(min(y) - 1, max(y) + 1, length = npoints) d1 <- outer(x, y, "-") n <- length(y) if(h == "hopt1") { h1 <- hopt(y,"hopt1") } if(h == "hopt2") { h1 <- hopt(y,"hopt2") } if((h != "hopt1") & (h != "hopt2")) { h1 <- h } d2 <- dnorm(d1, 0, h1) d3 <- matrix(d2, npoints, length(y)) fest <- rowMeans(d3) print(fest) plot(x, fest, type = "l",col=2) fest } hopt=function(x,hopt=c("hopt1","hopt2")) { # esta funcion calcula el ancho de banda estimado para # el conjunto de datos x if(hopt=="hopt1") {h <- 1.06 * sd(x) * (length(x))^(-0.2)} if(hopt=="hopt2") { cuartiles <- quantile(x, c(0.25, 0.75)) ric <- cuartiles[2] - cuartiles[1] h <- 0.79 * ric * (length(x))^(-0.2)} h }