多くの独立変数から重要な予測因子を検出する


31

2つの重複しない母集団(患者と健康、合計n=60)のデータセットで、(300独立変数から)連続従属変数の有意な予測子を見つけたいと思います。予測変数間の相関が存在します。予測変数のいずれかが(可能な限り正確に従属変数を予測するのではなく)「実際に」従属変数に関連しているかどうかを調べることに興味があります。多数の可能なアプローチに圧倒されたので、どのアプローチが最も推奨されるかを尋ねたいと思います。

  • 私の理解から、予測因子の段階的な包含または除外は推奨されません

  • たとえば、予測子ごとに個別に線形回帰を実行し、FDRを使用した多重比較のためにp値を修正します(おそらく非常に保守的ですか?)

  • 主成分回帰:個々の予測変数の予測力については説明できず、コンポーネントについてのみ説明できるため、解釈が困難です。

  • 他の提案はありますか?


この種のことをするためにL1正規化回帰を使用している人々のことを聞いたことがあります。しかし、私は適切な答えを書くのに十分なことを知りません
キング

2
最善の推奨事項を提示するために、「重要な予測子」を特定した後、どのように進むかを知ることが役立ちます。結果をできるだけ正確に予測しようとしていますか?見つけ倹約までのセットを使用して、例えば(これを予測する方法をk個の、効率的にそうだろうな予測因子を説明?ビッグはあなたのデータセットであるか、また、または何か他のもの;「現実に」結果を引き起こすもの?
rolando2

@rolando:コメントをありがとう!質問を更新しました。観測の合計数はn = 60件です。私の目的は、従属変数を可能な限り正確に予測することではなく、「現実」に結果を引き起こす原因を説明することです(=後の研究/データセットで確認できる変数間の関係を見つけることを望みます)
-jokel

また、ダミーデータを含む追加の質問も投稿しました。すべてのヒントにとても感謝しています。stats.stackexchange.com/questions/34859/...
jokel

回答:


30

投げ縄正則化で glmを試すことをお勧めします。これにより、変数の数に対してモデルにペナルティが追加され、ペナルティを増やすと、モデル内の変数の数が減少します。

ペナルティパラメーターの値を選択するには、相互検証を使用する必要があります。Rがある場合、glmnetパッケージを使用することをお勧めします。使用alpha=1なげなわ回帰のため、およびalpha=0リッジ回帰のために。0〜1の値を設定すると、投げ縄とリッジペナルティの組み合わせが使用されます。これは、エラスティックネットとも呼ばれます。


4
I agree with Zach. David Cassell and I wrote a paper about this, concentrating on SAS but not entirely. It is Stopping Stepwise.
Peter Flom - Reinstate Monica

1
I think it's 0 for ridge and 1 for lasso
King

1
@Zach:ヒントをありがとう。単一の予測変数の重要性を判断できるようなテスト統計を取得する方法はありますか。最後に、「予測子Xは従属変数Yに大きく関連している」と言いたいと思います。
ジョケル

2
Regarding CIs, from the manual of another R package implementing the LASSO (cran.r-project.org/web/packages/penalized/vignettes/…, page 18): "It is a very natural question to ask for standard errors of regression coefficients or other estimated quantities. In principle such standard errors can easily be calculated, e.g. using the bootstrap. Still, this package deliberately does not provide them. The reason for this is that standard errors are not very meaningful for strongly biased estimates such as arise from penalized estimation methods."
miura

2
@miura Recently introduced was a test statistics for just that, by the original Lasso authors too: paper and slides (easier to read)
Cam.Davidson.Pilon

23

To expand on Zach's answer (+1), if you use the LASSO method in linear regression, you are trying to minimize the sum a quadratic function and an absolute value function, ie:

minβ(YXβ)T(YXβ)+i|βi|

The first part is quadratic in β (gold below), and the second is a square shaped curve (green below). The black line is the line of intersection. The LASSO objective function

The minimum lies on the curve of intersection, plotted here with the contour curves of the quadratic and square-shaped curve:

Contour curves of LASSO

You can see the minimum is on one of the axes, hence it has eliminated that variable from the regression.

You can check out my blog post on using L1 penalties for regression and variable selection (otherwise known as Lasso regularization).


8
(+1) but for the blog post, which is really good. It would be nice if you were to expand your answer here somewhat though, as this will increase the likelihood of the information remaining available.
richiemorrisroe

2

What is your prior belief on how many predictors are likely to be important? Is it likely that most of them have an exactly zero effect, or that everything affects the outcome, some variables only less than others?

And how is the health status related to the predictive task?

If you believe that only few variables are important, you may try the spike and slab prior (in the R's spikeSlabGAM package, for example), or L1. If you think all predictors affect the outcome, you may be out of luck.

And in general, all caveats related to causal inference from observational data apply.


2

Whatever you do, it is worthwhile getting bootstrap confidence intervals on the ranks of importance of the predictors to show that you can really do this with your dataset. I am doubtful that any of the methods can reliably find the "true" predictors.


1

I remember Lasso regression doesn't perform very well when np, but I'm not sure. I think in this case Elastic Net is more appropriate for variable selection.


This is true, more specifically when n<<p, see this original elastic net paper: stanford.edu/~hastie/Papers/…
Cam.Davidson.Pilon

1
When n < p, LASSO selects at most n variables.
miura
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.