は、単純なGAMは、以下のようにフィット考えてみましょう:mgcv:推定スムージングパラメータを返すには?
library(mgcv)
my.gam <- gam(y~s(x), data=mydata)
- が、私はそれを保存することができるように推定平滑化パラメータ(ラムダ)を返すようにとにかくありますか?私はlambdaが 'GCV score'として出力されることを知っていますが、返すための特定のコードが必要です。
- ラムダを希望の値に設定するにはどうすればよいですか?
は、単純なGAMは、以下のようにフィット考えてみましょう:mgcv:推定スムージングパラメータを返すには?
library(mgcv)
my.gam <- gam(y~s(x), data=mydata)
まず、summary()
はスムージングパラメータを返しません。 GCVスコアとスムージングパラメータが混在しています。これらの概念を理解していない場合は、現地の統計家に相談するか、Cross Validatedについて質問をしてください。スムージングパラメータを抽出して設定する方法を説明します。
library(mgcv)
set.seed(2)
dat <- gamSim(1, n=400, dist="normal", scale=2)
b <- gam(y ~ s(x0) + s(x1) + s(x2) + s(x3), data=dat)
あなたが得ることができます(内部)の平滑化パラメータから:
は例を考えてみましょうb$sp
# s(x0) s(x1) s(x2) s(x3)
#3.648590e+00 3.850127e+00 1.252710e-02 4.986399e+10
厳密に言えばこれはlambda
はありませんが、それは唯一の正のスケーリング係数によってlambda
異なり。実際には、スムージングパラメータにはsp
を使用すれば十分です。あなたが負の値にsp
を設定した場合、私は、0注に、すべての平滑化パラメータを設定している
b1 <- gam(y ~ s(x0, sp = 0) + s(x1, sp = 0) + s(x2, sp = 0) + s(x3, sp = 0),
data = dat)
は、mgcv
はそれを無視して、自動操作を行います:あなたは、固定値に設定たとえば行いたい場合 - 選択はsp
です。
備考
あなたが本当にlambda
を取得したいいくつかの目的のためならば、実行します。
b$sp * unlist(lapply(b$smooth, "[[", "S.scale"))
# s(x0) s(x1) s(x2) s(x3)
#8.712849e+01 7.896376e+01 2.339330e-01 1.018779e+12
しかし、mgcv
にlambda
を養うためにそれほど単純です。ですから、sp
で作業することをお勧めします。
フォローアップは、実際に私はちょうど私が概念を知っているのに、私は、GCVスコアとラムダとしていた何の間違いに気づきました。
Good!
はい、正確な値は
lambda
なので、きちんとしたコードに感謝します。しかし、私は倍率についてもっと知りたいと思っています。パッケージのマニュアルに加えて、どこで詳細を読むことができますか?
が?smoothCon
で読んでいる:smoothCon
のソースコードで
smoothCon(object,data,knots=NULL,absorb.cons=FALSE,
scale.penalty=TRUE,n=nrow(data),dataX=NULL,
null.space.penalty=FALSE,sparse.cons=0,
diagonal.penalty=FALSE,apply.by=TRUE,modCon=0)
scale.penalty: should the penalty coefficient matrix be scaled to have
approximately the same 'size' as the inner product of the
terms model matrix with itself? ...
を、ある:
if (scale.penalty && length(sm$S) > 0 && is.null(sm$no.rescale)) {
maXX <- norm(sm$X, type = "I")^2
for (i in 1:length(sm$S)) {
maS <- norm(sm$S[[i]])/maXX
sm$S[[i]] <- sm$S[[i]]/maS
sm$S.scale[i] <- maS
}
}
手短に言えば、モデル行列X
生ペナルティマトリックスS
ため、話しますスケーリングファクタmaS
は、
お返事ありがとうございました。実際に私はGCVスコアとラムダで間違っていたことに気がつきましたが、私はそのコンセプトを知っています。そして、はい、私はラムダの正確な値が必要なので、きちんとしたコードに感謝します。しかし、私は倍率についてもっと知りたいと思っています。パッケージのマニュアルに加えて、どこで詳細を読むことができますか? –