nota: sin respuestas correctas después de un mes, he vuelto a publicar en SO
Antecedentes
Tengo un modelo, , donde Y = f ( X )
es unamatriz de muestras n × m de m parámetros e Y es la n × 1 vector de las salidas del modelo.
es computacionalmente intensivo, por lo que me gustaría aproximar f usando una spline cúbica multivariada a través depuntos ( X , Y ) , 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?
Específicamente, estoy buscando una versión multivariada de la splinefun
función, que genera una función de spline para el caso univariante.
Por ejemplo, así es como splinefun
funciona 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 intentado
He revisado el paquete 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 una spline cúbica en mars
actualización desde la salida a la recompensa, I cambió el título - Si no hay una función R, aceptaría, en orden de preferencia: una función de R que da salida a una función gaussiana proceso, u otra función de interpolación multivariante que pasa a través de los puntos de diseño, preferiblemente en R, si no Matlab.
fuente
Respuestas:
Este artículo presentado en UseR! 2009 parece abordar un problema similar
http://www.r-project.org/conferences/useR-2009/slides/Roustant+Ginsbourger+Deville.pdf
Sugiere el paquete DiceKriging http://cran.r-project.org/web/packages/DiceKriging/index.html
En particular, verifique las funciones km y prediga.
Aquí hay un ejemplo de interpolación tridimensional. Parece ser sencillo generalizar.
fuente
Necesita más datos para un ajuste de spline. mgcv de hecho es una buena opción. Para su solicitud específica, debe establecer la spline cúbica como la función básica bs = 'cr' y tampoco tenerla penalizada con fx = TRUE. Ambas opciones están configuradas para un término uniforme que se establece con s (). Predecir trabajos como se esperaba.
fuente
predict(foo,x)
volvery
?No da detalles sobre la forma de la funciónF( X) ; Es posible que una función constante por partes sea una aproximación suficientemente buena, en cuyo caso es posible que desee ajustar un árbol de regresión (con el paquete,
rpart
por ejemplo). De lo contrario, es posible que desee ver el paqueteearth
, además de lo que ya se ha sugerido.fuente