1

変数の選択に 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

私はこのパッケージについて学び始めたばかりです。

ありがとうございました!

4

3 に答える 3