nota: sin respuestas correctas después de un mes, he vuelto a publicar a SO
Fondo
Tengo un modelo, $f$ donde $Y=f(\textbf{X})$
$\textbf{X}$ es un $n \times m$ matriz de muestras de $m$ parámetros y $Y$ es el $n \times 1$ vector de resultados del modelo.
$f$ es computacionalmente intensivo, por lo que me gustaría aproximar $f$ utilizando un spline cúbico multivariante mediante $(X,Y)$ puntos, para poder evaluar $Y$ en un mayor número de puntos.
Pregunta
¿Existe una función R que calcule una relación arbitraria entre X e Y?
En concreto, estoy buscando una versión multivariante del splinefun
que genera una función spline para el caso univariante.
Por ejemplo splinefun
funciona para el caso univariante
x <- 1:10
y <- runif(10)
foo <- splinefun(x,y)
foo(1:10) #returns y, as example
all(y == foo(1:10))
## TRUE
Lo que he probado
He revisado el mda y parece que lo siguiente debería funcionar:
library(mda)
x <- data.frame(a = 1:10, b = 1:10/2, c = 1:10*2)
y <- runif(10)
foo <- mars(x,y)
predict(foo, x) #all the same value
all(y == predict(foo,x))
## FALSE
pero no pude encontrar ninguna manera de implementar un cúbico-spline en mars
actualización desde que ofrecí la recompensa, cambié el título - Si no hay una función R, aceptaría, en orden de preferencia: una función R que produzca una función de proceso gaussiano, u otra función interpoladora multivariante que pase por los puntos de diseño, preferiblemente en R, si no Matlab.