nota: sem respostas corretas após um mês, reenviei para SO
fundo
Eu tenho um modelo, , onde Y = f ( X )
é umamatrizde amostras deparâmetroseé ovetordas saídas do modelo.
é computacionalmente intensivo, então eu gostaria de aproximar usando um spline cúbico multivariado através de pontos , para que eu possa avaliar em um número maior de pontos.
Questão
Existe uma função R que calcule uma relação arbitrária entre X e Y?
Especificamente, estou procurando uma versão multivariada da splinefun
função, que gera uma função spline para o caso univariado.
por exemplo, é assim que splinefun
funciona para o caso univariado
x <- 1:10
y <- runif(10)
foo <- splinefun(x,y)
foo(1:10) #returns y, as example
all(y == foo(1:10))
## TRUE
O que eu tentei
Eu revi o pacote mda e parece que o seguinte deve 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
mas não consegui encontrar nenhuma maneira de implementar um spline cúbico no mars
atualização desde a oferta da recompensa, alterei o título - Se não houver função R, aceitaria, em ordem de preferência: uma função R que produz uma função de processo gaussiana ou outra função de interpolação multivariada que passa pelos pontos de design, de preferência em R, mais Matlab.
fonte
Respostas:
Este artigo foi apresentado na UseR! 2009 parece abordar um problema semelhante
http://www.r-project.org/conferences/useR-2009/slides/Roustant+Ginsbourger+Deville.pdf
Ele sugere o pacote DiceKriging http://cran.r-project.org/web/packages/DiceKriging/index.html
Em particular, verifique as funções km e preveja.
Aqui está um exemplo de interpolação tridimensional. Parece ser fácil generalizar.
fonte
Você precisa de mais dados para um ajuste de spline. mgcv é realmente uma boa escolha. Para sua solicitação específica, você precisa definir o spline cúbico como a função básica bs = 'cr' e também não ser penalizado com fx = TRUE. Ambas as opções são definidas para um termo suave definido com s (). Prever funciona como esperado.
fonte
predict(foo,x)
retornary
?rpart
earth
fonte