Я столкнулся с точно таким же вопросом и попытался проработать свой путь. Смотрите мой подробный ответ ниже.
Прежде всего, я нашел 4 варианта, которые дают похожие значения VIF в R:
• corvifкоманда из пакета AED,
• vifкоманда из пакета автомобилей,
• vifкоманда из пакета rms,
• vifкоманда из пакета DAAG.
Использование этих команд на наборе предикторов, не включающем какие-либо факторы / категориальные переменные или полиномиальные термины, является прямым шагом вперед. Все три команды выдают одинаковый числовой вывод, хотя corvifкоманда из пакета AED помечает результаты как GVIF.
Однако, как правило, GVIF вступает в игру только для факторов и полиномиальных переменных. Переменные, которые требуют более 1 коэффициента и, следовательно, более 1 степени свободы, обычно оцениваются с использованием GVIF. Для однофакторных членов VIF равен GVIF.
Таким образом, вы можете применять стандартные эмпирические правила о том, может ли быть коллинеарность, например пороговое значение 3, 5 или 10. Тем не менее, некоторая осторожность может (должна) быть применена (см .: http://www.nkd-group.com/ghdash/mba555/PDF/VIF%20article.pdf ).
В случае многофакторных терминов, например, для категориальных предикторов, 4 пакета выдают разные результаты. vif команды из среднеквадратичных и пакетов Daag производят значения VIF, в то время как две других значений производят GVIF.
Давайте сначала посмотрим на значения VIF из пакетов rms и DAAG:
TNAP ICE RegB RegC RegD RegE
1.994 2.195 3.074 3.435 2.907 2.680
TNAP и ICE являются непрерывными предикторами, а Reg является категориальной переменной, представленной фиктивными переменными RegB-RegE. В этом случае RegA является базовой линией. Все значения VIF довольно умеренные и обычно не о чем беспокоиться. Проблема с этим результатом заключается в том, что на него влияет базовая линия категориальной переменной. Чтобы быть уверенным в том, что значение VIF не превышает допустимый уровень, необходимо повторить этот анализ для каждого уровня категориальной переменной, являющейся базовой линией. В этом случае пять раз.
Применяя corvifкоманду из пакета AED или vifкоманду из автомобильного пакета, создаются значения GVIF:
| GVIF | Df | GVIF^(1/2Df) |
TNAP | 1.993964 | 1 | 1.412078 |
ICE | 2.195035 | 1 | 1.481565 |
Reg | 55.511089 | 5 | 1.494301 |
GVIF рассчитывается для наборов связанных регрессоров, таких как набор фиктивных регрессоров. Для двух непрерывных переменных TNAP и ICE это то же самое, что и значения VIF ранее. Для категориальной переменной Reg мы теперь получаем одно очень высокое значение GVIF, даже если все значения VIF для отдельных уровней категориальной переменной были умеренными (как показано выше).
G VяF( 1 / ( 2 × D f) )G VяF( 1 / ( 2 × D f) )Значение категориальной переменной является аналогичной мерой для снижения точности оценки коэффициентов из-за коллинеарности (даже если она не готова к цитированию, также посмотрите http://socserv2.socsci.mcmaster.ca/jfox/papers/linear- модели-проблемы.pdf ).
G VяF( 1 / ( 2 × D f) )GVIF(1/(2×Df))
GVIF(1/(2×Df))GVIF(1/(2×Df))GVIF2(1/(2×Df))<2