примечание: без правильных ответов через месяц я разместил сообщение на SO
Фон
У меня есть модель, , где
-матрица выборок изпараметров размером а-векторвыходных данных модели.
требует большого объема вычислений, поэтому я хотел бы аппроксимировать используя многовариантный кубический сплайн через точек, чтобы я мог оценить в большем количестве точек.
Вопрос
Есть ли функция R, которая будет вычислять произвольные отношения между X и Y?
В частности, я ищу многовариантную версию splinefun
функции, которая генерирует сплайн-функцию для одномерного случая.
например, это то, как splinefun
работает для одномерного случая
x <- 1:10
y <- runif(10)
foo <- splinefun(x,y)
foo(1:10) #returns y, as example
all(y == foo(1:10))
## TRUE
Что я пробовал
Я рассмотрел пакет mda , и кажется, что должно работать следующее:
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
но я не мог найти способ реализовать кубический сплайн в mars
обновить, поскольку предлагая щедрость, я изменил название. Если функции R нет, я бы принял в порядке предпочтения: функцию R, которая выводит функцию процесса Гаусса, или другую многомерную интерполяционную функцию, которая проходит через точки проектирования, предпочтительно в R, иначе Matlab.
источник
Ответы:
Этот документ представлен на UseR! 2009 год, похоже, решает аналогичную проблему
http://www.r-project.org/conferences/useR-2009/slides/Roustant+Ginsbourger+Deville.pdf
Он предлагает пакет DiceKriging http://cran.r-project.org/web/packages/DiceKriging/index.html
В частности, проверьте функции km и прогнозируйте.
Вот пример трехмерной интерполяции. Это выглядит просто обобщать.
источник
Вам нужно больше данных для подгонки сплайна. mgcv действительно хороший выбор. Для вашего конкретного запроса вам нужно установить кубический сплайн в качестве базовой функции bs = 'cr', а также не применять его к fx = TRUE. Обе опции установлены для гладкого члена, который устанавливается с помощью s (). Прогноз работает, как ожидалось.
источник
predict(foo,x)
возвращенияy
?rpart
earth
источник