4

たとえば、データセットで 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 を使用しました。ただし、別の変数 (この場合はモデル サイズ) に基づいてノードをグループ化できるレイアウトは見つかりませんでした。この設定では、同じモデルのモデルの「バンド」を保持するこのグラフを作成することをお勧めします。サイズ (モデル内の変数の数)。

私が最終的にやったのは、多かれ少なかれ、コードの塊を使って自分で各ノードの位置を計算することでした(ここに投稿するのは恥ずかしすぎます)が、単に良い/アウトを見逃したのではないかといつも思っていました-すぐに使えるソリューション。

私自身のコードは、次のようなグラフになりました (色とラベルは無視してかまいません。横軸がモデルのサイズを保持していることだけは知っておいてください)。 ここに画像の説明を入力

この種のグラフを自分ですべてのハードワークを行うよりもエレガントに実現するための提案は、非常に高く評価されます。

4

2 に答える 2

1

これを行うには、オプションを使用して、qgraphのfruchterman -reingoldアルゴリズムを制約できます。これを示すために、最初にネストされたモデルの小さな隣接行列を作成します。

adj <- matrix(0,9,9)

adj[1,2:4] <- 1
adj[2:4,5:7] <- 1
adj[5:7,8] <- 1
adj[8,9] <- 1 

mod <- c(1,rep(2,3),rep(3,3),4,5)

これadjは、隣接行列とmodsモデルのレベル(ネストされている距離)を含むベクトルです。

隣接行列の関数を使用して、隣接行列のグラフqgraphをプロットできます。qgraph()引数layout="spring"を設定することにより、Fruchterman-Reingoldアルゴリズムを呼び出し、Fruchterman-Reingoldlayout.parのパラメーターのリストを提供できます。

パラメータconstraints を使用して、レイアウトに制約を設定できます。これは、ノードごとに2列と1行の行列である必要があります。各行の最初の要素はx座標で、2番目の要素はy座標です。これにNAが含まれている場合は、その座標が自由に移動できることを意味し、これが値である場合は、その座標が特定の場所に固定されていることを意味します。

何が最適かを確認するには、y位置のスケールでさまざまなことを試す必要があります。ここでは、ベクトルにノードの数を掛けてmod、見栄えの良いグラフを作成します。

library("qgraph")
Lpar <- list(constraints = cbind(NA,nrow(adj)*mod))
L <- qgraph(adj,layout="spring",layout.par=Lpar)$layout

ここでは、レイアウトをオブジェクトLに保存しました。これは、のレイアウトとしても使用できますigraph

モデル

于 2011-05-12T14:22:29.577 に答える
1

igraph の開発バージョン (つまり、0.6 であり、まだ正式にリリースされていませんが、メーリング リストで Gábor にコピーを送るよう依頼できます) の Fruchterman-Reingold レイアウト アルゴリズムには、2 つの隠し (つまり、まだ文書化されていない) パラメータがあります。minymaxy。ノードの Y 座標を範囲内に制限できるため、これを使用してレイヤーを作成できます。

あるいは、私は現在、igraph の杉山階層グラフ レイアウト メソッドの実装に取り​​組んでおり、(うまくいけば) 1 日か 2 日で開発ツリーにマージします。その後、それを試すことができます。

于 2011-05-12T10:08:56.367 に答える