The beauty of trial and error ... if I leave the non x, y parameters i.e. h as
global parameters rather than formal parameters for gaussiankernel it works fine
basically I don't pass anymore h=0.5 to gaussiankernel but consume it from a
global variable. Ugly but works ...
Best regards,
Giovanni
On Apr 26, 2010, at 1:38 AM, Giovanni Azua wrote:
> Hello,
>
> I have the following function that receives a "function pointer"
formal parameter name "fnc":
>
> loocv <- function(data, fnc) {
> n <- length(data.x)
> score <- 0
> for (i in 1:n) {
> x_i <- data.x[-i]
> y_i <- data.y[-i]
> yhat <- fnc(x=x_i,y=y_i)
> score <- score + (y_i - yhat)^2
> }
> score <- score/n
> return(score)
> }
>
> I would like to use it like this:
>
> ##
> ## Estimator function using Gaussian Kernel
> ##
> gaussiankernel <- function(x,y,h) {
> modelks <-
ksmooth(x,y,kernel="normal",bandwidth=h,x.points=x)
> yhat <- modelks$y
> return(yhat)
> }
>
> scoreks <- loocv(data,gaussiankernel(h=0.5))
>
> I expected this to work but it doesn't :( basically I wanted to take
advantage of the named parameters so I could pass the partially specified
function parameter "gaussiankernel" to loocv specifying only the h
parameter and then let loocv specify the remaining parameters as needed ... can
this be tweaked to work? The idea is to have loocv generic so it can work for
any estimator implementation ...
>
> I have more than 6 books now in R and none explains this important concept.
>
> Thanks in advance,
> Best regards,
> Giovanni
>
[[alternative HTML version deleted]]