5

larsR パッケージで自分のデータのモデルを推定するのに苦労しています。

たとえば、偽のデータセット x と対応する値 y を次のように作成します。

x = cbind(runif(100),rnorm(100))
colnames(x) = c("a","b")
y = 0.5 + 3 * x[,1,drop = FALSE]

次に、lars 関数を使用して、なげなわ正則化を使用するモデルをトレーニングします。

m = lars(x,y,type = "lasso", normalize = FALSE, intercept = TRUE)

今、私は推定モデルが何であるかを知りたいです ( that I know to be: y = 0.5 + 3 * x[,1] + 0 * x[,2])

最後のステップで得られた係数にのみ関心があります。

cf = predict(m, x, s=1, mode = "fraction", type = "coef")$coef
cf
a b 
3 0

これらは私が期待する係数ですが、0.5から切片 ( )を取得する方法が見つかりませんm

のコードをチェックしようとしましたpredict.larsが、適合は次のように行われます。

fit = drop(scale(newx, 
           object$meanx, FALSE) %*% t(newbetas)) + object$mu)

変数がスケーリングされ、y(object$mu) の平均が使用されていることがわかりますが、探している切片の値を取得する簡単な方法が見つかりません。どうすればそれを手に入れることができますか?

4

1 に答える 1

6

intercept=Tin にlarsは、x 変数と y 変数を中央に配置する効果があります。係数のある明示的な切片項は含まれません。

predict(m,data.frame(a=0,b=0),s=2)$fitそうは言っても、共変量が 0 (従来の切片の定義) の場合に y の予測値を取得することができます。

于 2014-01-30T21:23:25.117 に答える