次のことを実行したい:
1)ベータ係数を取得するためのOLS回帰(ペナルティ項なし) ; は、回帰に使用される変数を表します。私はこれをします
lm.model = lm(y~ 0 + x)
betas = coefficients(lm.model)
2)ペナルティ項を伴うLasso回帰。選択基準は、以下によって与えられるベイジアン情報基準(BIC)とする
ここで、は変数/リグレッサ番号、は観測数、はステップ1)で取得した初期ベータを表します。この特定の値の回帰結果を取得したいのですが、これは使用する各リグレッサによって異なります。したがって、3つの変数がある場合、3つの異なる値ます。B * jを λ jをλ jを
次に、OLS-Lasso最適化問題は
Rでlarsまたはglmnetパッケージを使用してこれを行うにはどうすればよいですか?ラムダを指定する方法が見つからず、実行しても正しい結果が得られるかどうか100%わかりません
lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")
ここでどんな助けにも感謝します。
更新:
私は次のコードを使用しました:
fits.cv = cv.glmnet(x,y,type="mse",penalty.factor = pnlty)
lmin = as.numeric(fits.cv[9]) #lambda.min
fits = glmnet(x,y, alpha=1, intercept=FALSE, penalty.factor = pnlty)
coef = coef(fits, s = lmin)
1行目では、指定したペナルティファクター()との相互検証を使用していますが、これはリグレッサごとに異なります。2行目は、fits.cvの「lambda.min」を選択します。これは、最小平均交差検定誤差を与えるラムダです。3行目は、データに対して投げ縄近似()を実行します。ここでも、ペナルティファクターを使用しました。4 行目は、2行目で選択された「最適な」属する当てはめから係数を抽出します。λλalpha=1
これで、最小化問題の最適解を表すリグレッサのベータ係数が得られました
ペナルティ係数ます。最適な係数のセットは、おそらく最初に使用したリグレッサのサブセットです。これは、使用されたリグレッサの数を削減するLassoメソッドの結果です。
私の理解とコードは正しいですか?
$\alpha$
なり。質問を理解しやすくなるため、これを作成してください。回答してください。