私は、政治ネットワークのネットワーク モデルに取り組んでいます。私が行っていることの 1 つは、ペナルティ付き推論です。glmnet にペナルティ係数を設定することで、適応投げ縄アプローチを使用しています。モデルにはさまざまなパラメーターがあります:alphas
とphis
. は固定効果であるため、ペナルティが課せられているalphas
間、モデルに保持したいと考えています。phis
glm()
のペナルティ係数によって設定される適応重みを計算するために、 の MLE 推定プロセスから係数を開始していglmnet()
ます。
これはコードです:
# Generate Generalized Linear Model
GenLinMod = glm(y ~ X, family = "poisson")
# Set coefficients
coefficients = coef(GenLinMod)
# Set penalty
penalty = 1/(coefficients[-1])^2
# Protect alphas
penalty[1:(n-1)] = 0
# Generate Generalized Linear Model with adaptive lasso procedure
GenLinModNet = glmnet(XS, y, family = "poisson", penalty.factor = penalty, standardize = FALSE)
一部のネットワークでは、このコードは正常に実行されますが、次のエラーが発生する特定のネットワークがあります。
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
奇妙なことに、それらはすべて同じコードを使用しているため、データの問題ではないかと考えています。追加情報:
+あるケースでは 500alphas
と 21を超えていてこれらのエラーが表示され、別のケースでは 200と 28phis
が機能しません。しかし一方で、600と 28を超えるケースがあり、うまく収束しています。alphas
phis
alphas
phis
+ と の設定を試みましたが、うまくlambda.min.ratio
いきnlambda
ません。
追加の質問: ペナルティの最初のエントリは、インターセプトに関連付けられているものですか? それとも、によって自動的に追加されglmnet()
ますか? glmnet
ビネットではこれについて明確にわかりませんでした。私の考えでは、切片の項を含めるべきではありません。なぜなら、ペナルティは内部で合計nvars
に再スケーリングされると言われているため、切片は私の変数の 1 つではないと想定しているからです。