簡體   English   中英

計算 R 中序數邏輯回歸和多重共線性的 VIF

[英]Calculating VIF for ordinal logistic regression & multicollinearity in R

我正在運行序數回歸模型。 我有 8 個解釋變量,其中 4 個是分類變量( '0''1' ),其中 4 個是連續的。 事先我想確保沒有多重共線性,所以我使用方差膨脹因子(來自汽車包的vif函數):

mod1<-polr(Y ~ X1+X2+X3+X4+X5+X6+X7+X8, Hess = T, data=df)
vif(mod1)

但我得到一個變量的 VIF 值為 125,以及以下警告:

警告信息:在 vif.default(mod1) 中:沒有攔截:vifs 可能不合理。

但是,當我將因變量轉換為數字(而不是因子)並使用線性模型執行相同操作時:

mod2<-lm(Y ~ X1+X2+X3+X4+X5+X6+X7+X8, data=df)
vif(mod2)

這次所有的 VIF 值都低於 3,表明不存在多重共線性。

我對vif功能感到困惑。 它如何為一個模型返回大於 100 的 VIF 而為另一個模型返回低 VIF? 我應該堅持使用第二個結果並且仍然做一個序數模型嗎?

vif()函數使用參數(及其子集)的相關矩陣的行列式來計算 VIF。 在線性模型中,這僅包括回歸系數(不包括截距)。 vif()函數不打算與有序 logit 模型一起使用。 因此,當它找到參數的方差-協方差矩陣時,它包括閾值參數(即截距),這些參數通常會被線性模型中的函數排除。 這就是您收到警告的原因 - 它不知道查找閾值參數並將其刪除。 由於 VIF 實際上是設計矩陣中相互關聯的函數(它不依賴於因變量或從線性預測變量到響應變量空間的非線性映射 [即glm]),您應該通過上面的第二個解決方案得到正確的答案,使用lm()和您的因變量的數字版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM