2017-07-26 14 views
0

私はモノグラムスプラインを作るためにRでthe spline2 packageを使ってみようとしています。モノトーンスプラインin R

私は、独立変数の新しい値のモデルを評価するのに問題があります。一般的に、私はRの "予測"とそのスプライン2との関係、および生成されたbsオブジェクトの使い方を把握することができません。

this exampleにスプライン1を使ってみました。

plot(BRIyII$t,BRIyII$P) 

利回り:だから私は enter image description here

の操作を行います。今

knots=c(9) 
myMat=mSpline(BRIyII$t, knots = knots, degree = 3, intercept = TRUE) 
mylm=lm(BRIyII$P~myMat) 

、もし私たち:私のデータには、独立変数tと従属変数Pで、BRIyIIという名前のデータフレームであります

pr = predict(mylm,data.frame(BRIyII$t)) 
points(BRIyII$t,pr,col = "red") 

結果は、 enter image description here

は、だから私の質問は以下のとおりです。

の1-右端の予測値(赤い点)がその左に1よりも低いので、私はm個のスプラインの「単調」な性質を誤解していますか?

2 BRIyII $ tで定義された値以外のスプライン値をどのように評価できますか?いくつかの組み合わせを試しましたが、私はRの構文知識がありません。

newdata=seq.int(0,41.5,0.1) 
+0

私は単調性の問題についてはよく分かりません。実際、 'mSpline'と' bs'を使って(mtcarsの組み込みデータフレームを使って)回帰を実行したとき、私は全く同じ係数を得ました。予測に関して:まず、回帰を以下のように1行で行うことができます。 'mylm = lm(P、motsplot(t、knots = knots、degree = 3、intercept = TRUE)、data = BRIyII)'。 – eipi10

+1

第2に、モデルに適合したデータを使って予測を行うには、 'predict(mylm)'を実行することができます。モデルに合わせてデータフレームを自動的に使用します。予測変数の他の値の予測を取得するには、データフレームに新しい値を「予測」する必要があります(新しいデータフレームの列名は、モデルに適合するために使用されたデータフレームの列名と一致する必要があります)。たとえば、 'predict(mylm、newdata = data.frame(t = seq(0,41.5,0.1)))'とします。 – eipi10

+0

「簡単」な部分を少なくとも解決してくれてありがとう! :) – cladelpino

答えて

2

質問#2はコメントに記載されているので、私は質問#1に対処します。

splines2のドキュメントでは、「単調回帰スプライン」の基礎としてM-スプライン基底を参照していますが、これは誤解を招くものです。単調回帰スプラインを推定する方法は、Iスプライン基底を使用し、回帰係数が非負であるという制限付きでです。 IスプラインはMスプラインの積分であり、したがって非減少である。したがって、非負の線形結合も非減少になります。だから、splines2 :: iSplineとnnls :: nnlsのような非負回帰法を使って、単調回帰関数を推定することができます。 M-スプライン、I-スプラインと単調回帰の説明については

、チェックアウト:

Ramsay, JO (1988) Monotone regression splines in action. Statistical Science 3(4), 425-461.