医療統計

多変量解析の変数は何個まで入れて良いのか

他の記事では、因果推論における多変量解析に入れるべき変数、外すべき変数について解説しました。では、入れるべき変数は全てモデルに入れても構わないのでしょうか。入れすぎると、どのような問題が起きるのでしょうか。

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
ABOUT ME
木村聡
福岡県の研修病院で初期研修修了後、大学に入局。米国オハイオ州に臨床研究で留学するも、知識の欠如を痛感。ハーバード公衆衛生大学院に進学し、MPHを取得。マサチューセッツ工科大学メンバーとの共同研究などに関与。 日本では麻酔・集中治療医として働き、オーストラリアでは小児集中治療を一から学び直しています。 乗り越える壁を見つけ続けることは、なかなか簡単ではありませんよね。アラフォー目前、様々な壁にぶち当たり、それなりに多くの経験をしてきました。私の挑戦や経験・知識、失敗談などが、他の誰かの刺激になり、役に立つことを切に願っています。 プロフィールをもっと詳しく見る

POSTED COMMENT

  1. […] と、この患者は「gini impurity = 0(100%生存 or 100%死亡)」のnodeに行き着きます。臨床現場を考えるとこのように完璧なクラス分けは不可能に思われますが、このアルゴリズムでGiniのみを根拠にsplitするとこのようになります。これが、いわゆる”overfit“(←「多変量解析の変数は何個まで入れて良いのか」でも説明していますので、よろしければ参照してください)です。 […]

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です