uwaga: bez poprawnych odpowiedzi po miesiącu, przeszedłem do SO
tło
Mam model, , gdzie Y = f ( X )
jestmacierzą n × m próbek z m parametrów, a Y jestwektorem n × 1 wyników modelu.
jest intensywne obliczeniowo, więc chciałbym aproksymować f za pomocą wielowymiarowego splajnu sześciennego przezpunkty ( X , Y ) , aby móc ocenić Y w większej liczbie punktów.
Pytanie
Czy istnieje funkcja R, która obliczy dowolną zależność między X i Y?
W szczególności szukam wielowymiarowej wersji splinefun
funkcji, która generuje funkcję splajnu dla przypadku jednowymiarowego.
np. tak splinefun
działa przypadek jednoczynnikowy
x <- 1:10
y <- runif(10)
foo <- splinefun(x,y)
foo(1:10) #returns y, as example
all(y == foo(1:10))
## TRUE
Co próbowałem
Sprawdziliśmy na MDA pakiet, a wydaje się, że powinien pracować co następuje:
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
ale nie mogłem znaleźć żadnego sposobu na implementację splajnu sześciennego mars
zaktualizuj od czasu zaoferowania nagrody, zmieniłem tytuł - Jeśli nie ma funkcji R, zaakceptowałbym, w kolejności preferencji: funkcję R, która wyprowadza funkcję procesu gaussowskiego, lub inną funkcję interpolacji wielowymiarowej, która przechodzi przez punkty projektowe, najlepiej w R, inaczej Matlab.
źródło
Odpowiedzi:
Artykuł zaprezentowany na UseR! Wydaje się, że rok 2009 rozwiązuje podobny problem
http://www.r-project.org/conferences/useR-2009/slides/Roustant+Ginsbourger+Deville.pdf
Sugeruje pakiet DiceKriging http://cran.r-project.org/web/packages/DiceKriging/index.html
W szczególności sprawdź funkcje km i przewiduj.
Oto przykład trójwymiarowej interpolacji. Uogólnienie wydaje się proste.
źródło
Potrzebujesz więcej danych do dopasowania splajnu. mgcv rzeczywiście jest dobrym wyborem. Dla konkretnego żądania musisz ustawić splajn sześcienny jako funkcję podstawową bs = 'cr', a także nie karać go za pomocą fx = TRUE. Obie opcje są ustawione na gładki termin, który jest ustawiany za pomocą s (). Prognozowanie działa zgodnie z oczekiwaniami.
źródło
predict(foo,x)
powrotuy
?Nie podajesz żadnych szczegółów co do formy funkcjifa( X) ; może być tak, że cząstkowa stała funkcja jest wystarczająco dobrym przybliżeniem, w którym to przypadku możesz chcieć dopasować drzewo regresji (
rpart
na przykład z pakietem ). W przeciwnym razie możesz spojrzeć na pakietearth
, oprócz tego, co już zostało zasugerowane.źródło