0

私は、政治ネットワークのネットワーク モデルに取り組んでいます。私が行っていることの 1 つは、ペナルティ付き推論です。glmnet にペナルティ係数を設定することで、適応投げ縄アプローチを使用しています。モデルにはさまざまなパラメーターがあります:alphasphis. は固定効果であるため、ペナルティが課せられている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を超えるケースがあり、うまく収束しています。alphasphisalphasphis

+ と の設定を試みましたが、うまくlambda.min.ratioいきnlambdaません。

追加の質問: ペナルティの最初のエントリは、インターセプトに関連付けられているものですか? それとも、によって自動的に追加されglmnet()ますか? glmnetビネットではこれについて明確にわかりませんでした。私の考えでは、切片の項を含めるべきではありません。なぜなら、ペナルティは内部で合計nvarsに再スケーリングされると言われているため、切片は私の変数の 1 つではないと想定しているからです。

4

1 に答える 1