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 つの必須変数と組み合わせて使用して、通常のロジット回帰を実行することにしました。どういうわけか、これを行うことで問題が発生すると思います...
ありがとうございました!