注:元々は2011年7月26日にCross Validated(stats SE)に投稿されましたが、現在のところ正解はありません。
バックグラウンド
モデルfがあります。ここで、Y = f(X)
Xはm個のパラメーターからのサンプルのnxm 行列であり、 Yはモデル出力のnx1ベクトルです。
fは計算量が多いので、(X、Y)点を通る多変量3次スプラインを使用してfを近似し、より多くの点でYを評価できるようにします。
質問
XとYの間の任意の関係を計算するR関数はありますか?
splinefun
具体的には、単変量の場合のスプライン関数を生成する関数の多変量バージョンを探しています。
たとえば、これはsplinefun
単変量の場合の仕組みです
x <- 1:100
y <- runif(100)
foo <- splinefun(x,y, method = "monoH.FC")
foo(x) #returns y, as example
関数がポイントを正確に補間するテストは成功します。
all(y == foo(1:100))
## TRUE
私が試したこと
mdaパッケージを確認しましたが、次のように機能するはずです。
library(mda)
x <- data.frame(a = 1:100, b = 1:100/2, c = 1:100*2)
y <- runif(100)
foo <- mars(x,y)
predict(foo, x) #all the same value
ただし、関数は設計ポイントを正確に補間しません。
all(y == predict(foo,x))
## FALSE
gam
また、、、、marss
またはearth
パッケージのいずれかに3次スプラインを実装する方法を見つけることができませんでした。