他の記事では、因果推論における多変量解析に入れるべき変数、外すべき変数について解説しました。では、入れるべき変数は全てモデルに入れても構わないのでしょうか。入れすぎると、どのような問題が起きるのでしょうか。
Overfitting
因果推論の目的は、暴露因子のアウトカムに対する影響を知りたい、ということです。下の例ですと、喫煙(smoke)の出生児体重(BWT)への影響を知りたい、となります。その影響の大きさが、smokeの係数β1ですね。
BWT = β0 + β1*smoke + … …
モデルに変数を入れすぎると、この係数βのstandard error (se)が大きくなってしまい、不安定なモデルとなってしまいます。
知りたい因子の係数(β)のstandard errorが大きいということは、本当のβのとりうる範囲が広い(バラツキが大きい)ということを意味しており、βという値の信頼性が低くなってしまいます。
上のスライドの一つ目のモデルには、smokeのみが入っており、seは50と大きくありません。
二つ目のモデルにはsmokeにageを加えました。seが50から250に増えています。ただし、βが+200から-500と大きく変化していることから、統計学的にはageはsmokeとBWTの交絡因子(confounder)であると言えるため、できればモデルに含めたい因子です。seが結構大きいので、入れるか外すか、難しいところです。
三つ目のモデルには、 二つ目のモデルにX3という別の変数を加えてみました。すると、smokeの係数のseは1000とかなり大きくなってしまいました。これをProf. Oravは”explosion”と表現していますが、smokeの係数のvarianceが大きくなって本当の値が-800から離れる可能性が高まってしまったことを意味しています。ここまできたら、X3はモデルに入れたくありません。
Modelに変数を入れれば入れるほど、modelによるoutcome Yの予測値自体は良くなりますが、βのvarianceが大きくなり、standard errorは大きくなってしまいます。簡単に言えば、今回のデータにfitし過ぎて一般化できていない(→overfit)、ということです。
一般的なルールとして
どのくらい変数を入れるとどの程度seが大きくなるかは、データ次第です。場合によっては沢山変数を入れてもseが大きくならないことだってあり得ます。
しかし、やはり何かしらの目安が欲しいですよね。
一般的なルールとして、モデルにいれる変数の数を
Linear regressionでは、サンプル数の1/10 (または1/20)
→Ex) n=200なら、20個まで
Logistic regressionでは、アウトカムであるイベント数/10と、イベントが起こらなかった数/10の、小さい方
→Ex) n=200で、死亡 n=40、生存 n=160の場合、4個まで
を一般的な目安とすると良いでしょう。
さいごに
以上です。多変量解析に入れることのできる変数の数について解説しました。なぜ多過ぎるとダメなのか、理解できたでしょうか。
References
- John Orav. BST 213: Applied Regression for Clinical Research. Harvard T.H. Chan School of Public Health
コメント
コメント一覧 (1件)
[…] と、この患者は「gini impurity = 0(100%生存 or 100%死亡)」のnodeに行き着きます。臨床現場を考えるとこのように完璧なクラス分けは不可能に思われますが、このアルゴリズムでGiniのみを根拠にsplitするとこのようになります。これが、いわゆる”overfit“(←「多変量解析の変数は何個まで入れて良いのか」でも説明していますので、よろしければ参照してください)です。 […]