投げ縄モデルから除外または含まれている変数を解釈するにはどうすればよいですか?


9

他の投稿から、ラッソーモデルに入る予測変数に「重要度」または「重要度」を帰属させることはできないと述べました。これらの変数のp値または標準偏差の計算はまだ進行中であるためです。

その推論の下で、投げ縄モデルから除外された変数は「無関係」または「重要ではない」とは言えないと断言するのは正しいですか?

もしそうなら、ラッソーモデルに除外または含まれている変数について実際に何を主張できますか?私の特定のケースでは、ランダム値を減らし、エラー曲線を平均化するために、10倍の交差検証を100回繰り返すことにより、調整パラメーターlambdaを選択しました。

UPDATE1:以下の提案に従い、ブートストラップサンプルを使用して投げ縄を再実行しました。100個のサンプルを試してみました(その量は私のコンピューターの電源で一晩で管理できる量でした)と、いくつかのパターンが現れました。41の変数のうち2つがモデルに95%以上入り、3つの変数が90%を超え、5つの変数が85%を超えました。これらの5つの変数は、元のサンプルで実行したときにモデルに入力された9つの変数の1つであり、そのとき係数値が最も高かったものです。1000のブートストラップサンプルを使用してLassoを実行し、それらのパターンが維持されている場合、私の結果を提示する最良の方法は何ですか?

  • 1000のブートストラップサンプルで十分ですか?(私のサンプルサイズは116です)

  • すべての変数とそれらがモデルに入力される頻度をリストし、より頻繁に入力される変数が有意である可能性が高いと主張する必要がありますか?

  • それは私の主張でできる限りですか?仕掛品ですので(上記参照)カットオフ値は使えませんよね?

UPDATE2:以下の提案に従って、私は以下を計算しました。平均して、元のモデルの変数の78%が100のブートストラップサンプルに対して生成されたモデルに入りました。一方、その逆では41%に過ぎません。これは、ブートストラップサンプル用に生成されたモデルには、元のモデル(9)よりもはるかに多くの変数(平均17)が含まれる傾向があるという事実に大きく関係しています。

UPDATE3:ブートストラップとモンテカルロシミュレーションから得た結果の解釈を手伝っていただけるなら、この他の投稿をご覧ください。

回答:


10

あなたの結論は正しいです。次の2つの側面について考えてください。

  1. 影響を検出するための統計力。パワーが非常に高い場合を除いて、実際の大きな効果を見逃す可能性もあります。
  2. 信頼性:正しい(真の)特徴を見つける可能性が高い。

少なくとも4つの主要な考慮事項があります。

  1. 同じデータセットを使用してメソッドを再現できますか?
  2. 同じデータセットを使用する他の人がメソッドを再現できますか?
  3. 他のデータセットを使用して結果を再現できますか?
  4. 結果は信頼できますか?

予測よりも多くのことをしたいが、結果を予測する上でどの機能が重要であるかについて実際に結論を出したい場合は、3。および4.が重要です。

3.に対処しました(この目的には100ブートストラップで十分です)が、個々の機能包含部分に加えて、ブートストラップ機能セットと選択された元の機能セットの間の平均絶対「距離」を知る必要があります。たとえば、ブートストラップサンプルで見つかったサンプル全体から検出された特徴の平均数はいくつですか?元の分析で見つかったブートストラップサンプルから選択された機能の平均数はいくつですか?ブートストラップが元の機能セットと完全に一致した回数の割合はどれくらいですか?ブートストラップがオリジナルと正確に一致する1つの機能内にあった割合はどのくらいですか?2つの機能?

全体的な結論を出す際にカットオフを使用する必要があると言うのは適切ではありません。

パート4に関しては、これらのいずれもプロセスの信頼性、つまり機能セットが「真の」機能セットにどれだけ近いかについては触れていません。これに対処するには、元のサンプルラッソの結果を「真実」として受け取り、想定されるエラー構造を使用して新しい応答ベクトルを数百回シミュレートするモンテカルロ再シミュレーション研究を実行します。再シミュレーションごとに、元の予測子行列全体と新しい応答ベクトルに対してラッソを実行し、選択したラッソ機能セットがシミュレーションした真実にどれだけ近いかを決定します。候補予測子のセット全体の条件を再シミュレーションし、最初に適合したモデル(およびLassoの場合は選択された予測子のセット)からの係数推定値を、シミュレーションの便利な「真実」として使用します。

YXXβ

β

YXβY

lp <- predict(...) # assuming suitable predict method available, or fitted()
probs <- plogis(lp)
y <- ifelse(runif(n) <= probs, 1, 0)

3
N

1
私はブートストラップについて言及していませんでした。イベントが32個しかないときに、数十の候補変数から何かを学習できるかどうかについて言及しました。
フランクハレル2014年

3
Y

1
私が提案した再シミュレーション実験を行って、正確な設定でメソッドの実際の信頼性を確認してください。
フランクハレル2014年

2
私はこの議論を辞退する必要があります-あなたの質問への基本的な答えは基本的なRプログラミングであり、さらにbiostat.mc.vanderbilt.edu/rmsの簡単なシミュレーションを見てください
フランクハレル2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.