スプライン パッケージの bs 関数を使用して、グラフィカルな目的で b スプライン スムージング カーブを作成しています。(Excel が滑らかな折れ線グラフに 3 次 b スプラインを使用しているというレポートが少なくとも 1 つあります。これらの曲線を複製できるようにしたいと考えています。) bs 関数に必要な引数を理解するのに苦労しています。代表的なコードは以下のとおりで、bs のドキュメントから引用されています。
require(splines)
require(ggplot2)
n <- 10
x <- 1:10
y <- rnorm(n)
d <- data.frame(x=x, y=y)
summary(fm1 <- lm(y ~ bs(x, degree=3)), data=d)
x.spline <- seq(1, 10, length.out=n*10)
spline.data <- data.frame(x=x.spline, y=predict(fm1, data.frame(x=x.spline)))
ggplot(d, aes(x,y)) + geom_point + geom_line(aes(x,y), data=spline.data)
bs ドキュメントのサンプル コードでは、bs の呼び出しで df=5 が指定されており、次数は指定されていません。自由度がどれくらいあるかわかりません。私が知っているのは、3 次の b スプラインが必要だということだけです。次数の代わりに、または次数に加えて df のさまざまな値を指定して実験したところ、劇的に異なる結果が得られました。これが、ここで df の仕様が問題であると思われる理由です。このコンテキストで df をどのように計算しますか?
ヘルプ ファイルでは、df = length(knots) + degree が提案されています。内部の点をノットとして扱うと、この例では df=11 になり、エラー メッセージと無意味なスプライン フィットが生成されます。
前もって感謝します。
どうやら私の意図が明確ではなかったようです。私はこれをやろうとしています: ggplot で spline() を使用するにはどうすればよいですか? 、ただし B スプラインを使用します。