たとえば、データセットで cv.glmnet を実行すると、(デフォルトで) 100 の異なるモデルが得られます。ここで、データセットに欠損データがある場合、複数の代入 (たとえば 10 回の代入) を実行し、それぞれの代入で cv.glmnet を実行できます。
各モデルの実際の係数値を無視して、選択した機能 (つまり列名のセット) だけを見ると、一部のモデルは他のモデルのサブモデルです。
このようなコードは、結果をいくらか模倣します。
usevars<-paste("var", 1:100, sep="")
mdls<-replicate(1000, {
numVars<-sample.int(length(usevars), 1)
sample(usevars, numVars)
})
names(mdls)<-paste("mdl", 1:1000, sep="")
この点で、サブモデルの親子関係を取得するのは簡単です。「直接の親子関係」のみを含めることもできます (つまり、モデル A が B の子であり、B が C の子である場合、A と C の間の関係は含めないでください)。
最後に、私の問題に行き着きます。これらのモデルとそれらの (直接的な) 関係をプロットするために igraph を使用しました。ただし、別の変数 (この場合はモデル サイズ) に基づいてノードをグループ化できるレイアウトは見つかりませんでした。この設定では、同じモデルのモデルの「バンド」を保持するこのグラフを作成することをお勧めします。サイズ (モデル内の変数の数)。
私が最終的にやったのは、多かれ少なかれ、コードの塊を使って自分で各ノードの位置を計算することでした(ここに投稿するのは恥ずかしすぎます)が、単に良い/アウトを見逃したのではないかといつも思っていました-すぐに使えるソリューション。
私自身のコードは、次のようなグラフになりました (色とラベルは無視してかまいません。横軸がモデルのサイズを保持していることだけは知っておいてください)。
この種のグラフを自分ですべてのハードワークを行うよりもエレガントに実現するための提案は、非常に高く評価されます。