X <- matrix(stats::rnorm(200), ncol=2)
y <- X[,1] + sin(X[,2]) + 0.5 * stats::rnorm(nrow(X))
reg <- function(X,y){
df <- data.frame(y,X)
colnames(df) <- c("y", "X1", "X2")
lm1 <- stats::lm(y~X1+sin(X2), data=df)
fit <- function(newX){
newdf = data.frame(newX)
colnames(newdf) <- c("X1", "X2")
return(as.vector(stats::predict(lm1, newdata=newdf)))}
return(list("fit"=fit))
}
cv_resmooth(X=X, y=y, d=2, regression=reg, tol = c(0.5, 1, 2))
Run the code above in your browser using DataLab