2

glmnet パッケージで LASSO を使用してロジスティック回帰を実行しようとしています。そして、モデルに特定のパラメーターを強制的に含める必要があります。ただし、エラーが発生しました。

> cv.lasso = cv.glmnet(x,y,family="binomial",alpha = 1,penalty.factor = penalty)
Error: Matrices must have same number of columns in rbind2(.Call(dense_to_Csparse, x), y)
In addition: Warning messages:
1: from glmnet Fortran code (error code -1); Convergence for 1th lambda value not reached after maxit=100000 iterations; solutions for larger lambdas returned 
2: In getcoef(fit, nvars, nx, vnames) :
an empty model has been returned; probably a convergence issue

x には、すべてバイナリ (0 または 1) である 95 個の変数があります。強制的に 3 つの変数を含める必要があるため、それらの penenty.factor = 0 を設定します。

   > penalty
   [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
   [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
   [75] 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1

を削除penalty.factorしても機能しますが、これら 3 つの変数を強制的に含める必要があります。ただし、保持penalty.factorして削除するとfamily = "binomial"、実行されていましたが、バイナリロジスティック回帰ではなくなりました。誰もそれを修正する方法を知っていますか?

編集:解決策がなく、できるだけ早く結果を表示するというプレッシャーに直面しているため、LASSO によって選択された変数をこれらの 3 つの必須変数と組み合わせて使用​​して、通常のロジット回帰を実行することにしました。どういうわけか、これを行うことで問題が発生すると思います...

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

4

0 に答える 0