Използвайте функцията 'alias' в R, за да видите кои променливи са линейно зависими. Премахнете зависимите променливи и функцията vif трябва да работи правилно.
formula <- as.formula(Spring_Autumn ~ Oct + Nov + Dec + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + X1min + X3min + X7min + X30min + X90min + X1max + X3max + X7max + X30max + X90max + BF + Dmin + Dmax+ LP + LPD + HP + HPD + RR + FR + Rev, data = IHA_stats)
fit <-lm(formula)
#the linearly dependent variables
ld.vars <- attributes(alias(fit)$Complete)$dimnames[[1]]
#remove the linearly dependent variables variables
formula.new <- as.formula(
paste(
paste(deparse(formula), collapse=""),
paste(ld.vars, collapse="-"),
sep="-"
)
)
#run model again
fit.new <-lm(formula.new)
vif(fit.new)
ЗАБЕЛЕЖКА:Това няма да работи в случай, че имате автоматично генерирани фиктивни променливи, които са идентични с други променливи. Имената на променливите се объркват. Можете да създадете свой собствен хак, за да го заобиколите.