0

をベクトルx = c(1, 2, 3)とします。のパッケージのbs関数を使用して、で評価される B スプラインの行列を生成します。splinesRx

require(splines)
x <- c(1, 2, 3)
bs.x <- bs(x, knots = c(1.5, 2.5))

出力bs.xは次のとおりです。

              1         2         3          4 5
[1,] 0.00000000 0.0000000 0.0000000 0.00000000 0
[2,] 0.05555556 0.4444444 0.4444444 0.05555556 0
[3,] 0.00000000 0.0000000 0.0000000 0.00000000 1
attr(,"degree")
[1] 3
attr(,"knots")
[1] 1.5 2.5
attr(,"Boundary.knots")
[1] 1 3
attr(,"intercept")
[1] FALSE
attr(,"class")
[1] "bs"     "basis"  "matrix"

明らかに、基底行列の他に、bs.x他の属性があります。私の質問は、これらの属性を取り除く方法です。最終的に を実行する必要があるため、これを行う必要がありMatrix(bs.x)ます。これにより、次のエラー メッセージが表示されます。

Error in as(x, "matrix") : 
internal problem in as(): “bs” is(object, "matrix") is 
TRUE, but the metadata asserts that the 'is' relation is FALSE

これは、 が属するmatrixクラスの 1 つだからだと思います。bs.xこの瞬間、私は次の愚かなことをします。

bs.x <- matrix(as.numeric(bs.x), nr = nrow(bs.x))

より良い代替手段はありますか?前もって感謝します。

4

1 に答える 1