Я столкнулся с точно таким же вопросом и попытался проработать свой путь. Смотрите мой подробный ответ ниже.
Прежде всего, я нашел 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