変数の選択に LASSO を使用しようとしており、glmnet
パッケージを使用して R での実装を試みました。これは私がこれまでに書いたコードです:
set.seed(1)
library(glmnet)
return = matrix(ret.ff.zoo[which(index(ret.ff.zoo) == beta.df$date[1]),])
data = matrix(unlist(beta.df[which(beta.df$date == beta.df$date[1]),][,-1]), ncol = num.factors)
dimnames(data)[[2]] <- names(beta.df)[-1]
model <- cv.glmnet(data, return, standardize = TRUE)
coef(model)
これは、初めて実行したときに得られるものです。
> coef(model)
15 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 0.009159452
VAL .
EQ .
EFF .
SIZE 0.018479078
MOM .
FSCR .
MSCR .
SY .
URP .
UMP .
UNIF .
OIL .
DEI .
PROD .
しかし、これは同じコードをもう一度実行すると得られるものです。
> coef(model)
15 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 0.008031915
VAL .
EQ .
EFF .
SIZE 0.021250778
MOM .
FSCR .
MSCR .
SY .
URP .
UMP .
UNIF .
OIL .
DEI .
PROD .
モデルがこのように動作する理由がわかりません。係数が実行ごとに変化する場合、どうすれば最終モデルを選択できますか? 実行ごとに異なるチューニング パラメーター $\lambda$ を使用しますか? 私はそれがデフォルトでcv.glmnet
使用すると思った?!model$lambda.1se
私はこのパッケージについて学び始めたばかりです。
ありがとうございました!