2017-01-12 8 views
0

私は政治ネットワークのネットワークモデルに取り組んでいます。私がやっていることの一つは、刑罰を受けた推論です。私はglmnetのペナルティファクタを設定することで、適応型のラッソのアプローチを使用しています。私のモデルにはさまざまなパラメータがあります:alphasphisです。 alphasは修正された効果ですので、phisがペナルティされている間にそれらをモデルに残しておきたいと思います。罰則回帰のGLMNetコンバージェンスの問題

ペナルティ係数glmnet()によって設定された適応重みを計算するために、glm()のMLE推定プロセスからの開始係数があります。

これはコードです:いくつかのネットワークで

# 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 

を奇妙なことは、彼らということですすべて同じコードを使用しているので、データの問題かどうか疑問に思っています。 追加情報:1の場合

+私は500 alphasと21 phisの上に持っており、これらのエラーが表示され、動作していない別のケースでは、私は200 alphasと28 phisを持っています。しかし、一方で私は600以上のケースを持っていますalphasと28 phisとそれはうまく収束します。

+ lambda.min.rationlambdaの設定を無効にしました。

その他の質問:罰金の最初の入力は傍受と関連していますか?または、それはglmnet()によって自動的に追加されますか?私はglmnetビネットでこれについての明確さを見いだせなかった。私の思考は、ペナルティが内部的にnvarsの合計にリサイズされていると言われているため、インターセプトの言葉を含めてはいけないということです。

答えて

0

私はこれについて100%確信していませんが、私は問題の根本を見つけたと思います。

非常に大きな開始ラムダ(1000秒)を試しても、すべての種類の手動ラムダシーケンスを使用しようとしました。このすべては、まったくうまくいっていないようでした。しかし、私がアルファのペナルティなしで試してみると、すべてがうまく収束するでしょう。だから、おそらく、不疎通していない変数の量と関係があるでしょう。たぶん、すべてのアルファの統制されていない力が何らかの発散状態になっているかもしれません。おそらく、ある種の共線性が起こっているかもしれません。基本的に何か他のことをやっている私の "解決策"は、phiの1つに使われているのと同じweigthでアルファをペナルティすることです。これは、いくつかのphiが重要であり、alphaが固定されているのではなく、重要であることを前提としています(無限大です)。私は完全には満足していません。なぜなら、これはまったく別のアプローチだからです。しかし、それはおそらく、不疎通していない変数の量と関係していることに注目するのは興味深いかもしれません。

また、私の追加の質問に答えるために:glmnetビネットでは、ペナルティ用語はnvarsに合計するように内部的に再スケーリングされています。インターセプトは変数の1つではないので、ペナルティの期間にそれが必要ではないと私は推測します。しかし、私はその用語を含めて除外しようとしましたが、結果は同じようです。 glmnetは長さが+1であることを検出すると自動的に削除します。

関連する問題