医療統計

多変量解析とVIF

多重共線性(multi-collinearity)を評価するための指標として、tolerance(トレランス)やVariance Inflation Factor(VIF)を使うことがあります。みなさんも、多変量解析を行なった際「VIFが高い場合にその変数をmodelから除きなさい」と教えてもらったことがあるのではないでしょうか。

しかし、

  • ToleranceやVIFとは、一体なんなのか
  • なぜVIFが高いとダメなのか
  • VIFのみを共線性の指標にして良いのか

など、しっかり理解できていますか?今回は、toleranceやVIFの意味と、それらを用いることの注意点を解説したいと思います。

まずは、toleranceやVIFを使う目的である、共線性(collinearity)について復習しましょう。

復習:Collinearity(共線性)

X1(暴露因子)がY(outcome)に与える影響を調べたい場合、ある変数X2がX1と関係があり、Yとは関係が無い場合、X2のことを”collinear covariate”と呼びます。

このようなcollinear covariateがmodelにあると、X1を表すmodel(図の青四角)のr-squared(図の赤丸)が増加し、結果的にX1の係数であるβ1のstandard errorが大きくなます。β1のstandard errorの上昇は検出力の低下(p-valueの上昇)に繋がってしまうため、collinearityを持つ変数はmodelから除外する必要があります。

以上のことをもっと知りたければ、こちらを参照してください。

Tolerance(トレランス)

Collinearity (共線性)を表す指標の一つとして、toleranceがあります。Toleranceは、

Tolerance  =  1 – r2X1|X2,X3,…,Xp

と定義されます。上の赤丸で示したように、「r2X1|X2,X3,…,Xp」はX1を表すmodelのr-squaredですので、X1との関連が大きければ大きいほど、このr-squaredは大きくなり、toleranceは小さくなります。

r-squaredのとりうる値が0~1ですので、toleranceは0が最も悪く(collinearityあり)1が最も良い(collinearityなし)となります。

Variance Inflation Factor (VIF)

VIFは、上記のtoleranceの逆数です。

Variance Inflation Factor  =  1 / Tolerance

従って、VIF =1が最も良く(collinearityなし)collinearityが大きくなるに従ってVIFも増加します。

ToleranceとVIFの注意点

これらtoleranceやVIFを用いることで、それぞれの変数に対するcollinearityの程度(=β1のstandard errorへの影響)を知ることができるというメリットがありますが、以下のような注意点があります。

注意点① :標準的な閾値は存在しない

巷では、「VIF =10が共線性のカットオフ」などといった意見も聞かれますが、このような標準的な閾値というのは存在しません

注意点② :どの因子がcollinearityを持っているか不明

上記の計算式から分かるように、X2~Xpどの変数がX1とcollinearityを持っているか、toleranceやVIFからは判断できません

注意点③ :collinearityとconfoundingの鑑別不可

ConfounderはX1とYの両方に関係している因子ですが、collinear covariateはX1のみと関係している因子です。概念的には、両者は重なりません

そして、confounderであればmodelに入れなければなりませんが、collinear covariateであれば、modelから除外することが望ましいことになります。

しかし、toleranceやVIFのみを診断に使ってしまうと、confounderとの区別をつけることができません

注意点④ :collinearityとsignificant predictorの鑑別不可

上記と同様に、仮にtoleranceが低く(VIFが高く)、collinearityの存在が示唆されたとしても、その変数がsignificant predictorである可能性もあります。

Significant predictorであれば、β1のstandard errorを小さくし、検出力を上げてくれるため、modelに入れる方が望ましいことになってしまします。

ToleranceやVIFのみを診断に使ってしまうと、このsignificant predictorと区別をつけることができません

注意点⑤ :その他のregressionでは使用できない

このtoleranceやVIFは、logistic regressionなど他のregression modelでは使用できません

R code

Rでは、olsrrというpackageのold_vif_tolというfunctionを使えば、toleranceとVIFの両方を求めることができます。

まとめ

Regression modelに入れるべき変数を決める上で、大切となるcollinearityを確かめる一つの手段としての、toleranceとVIFを解説しました。Modelをつくる上では、他にも考慮しなければならないことが幾つかあります。興味のある方は、こちらも読んでください。

Reference

John Orav. BST 213: Applied Regression for Clinical Research. Harvard T.H. Chan School of Public Health

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

COMMENT

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