VIF / Multicollinearity Calculator
When two predictors in a regression carry the same information, the model cannot tell whose effect is whose, so their coefficients wobble and their standard errors balloon. Paste your predictor columns and this tool builds the correlation matrix, reports each variable's variance inflation factor, and lets you drop a predictor to watch every remaining VIF recompute on the spot. Everything runs in your browser.
-
| Keep | Predictor | VIF | Tolerance | SE factor | Df | Flag |
|---|
How this is computed
✓ No data leaves your browser
✓ Verified against R's car::vif()
✓ Free, no sign-up
VIF in three minutes
One number, one question: is this predictor telling you anything the others do not?
When two predictors carry nearly the same information (height in inches and height in centimetres is the extreme case), the model cannot tell whose effect is whose. It splits the credit between them almost at random, so both coefficients shift from sample to sample and their standard errors grow.
The variance inflation factor measures that instability. For predictor j it is 1 / (1 - R²), where R² comes from regressing predictor j on all the others. A VIF of 1 means no overlap. A VIF of 9 means nine times the coefficient variance you would have with none, so a standard error three times larger (SE grows with the square root of VIF). Tolerance is the same fact upside down: 1 / VIF.
Low. The predictor stands mostly on its own; read its coefficient normally.
Moderate. Enough overlap to inflate the standard error noticeably; watch this coefficient.
Serious. The coefficient is unstable and its p-value unreliable; drop, combine or regularize.
These cutoffs are conventions, not laws, which is why you can move them above. In a large well-controlled study a VIF of 8 may be fine; in a small exploratory model a VIF of 4 might already worry you.
The drop-a-predictor loop
The part R will not hand you without a rerun: what happens to the others when you remove one.
High VIFs travel in packs. Two predictors that mirror each other both show a large VIF, so it is tempting to drop both, when removing one is usually enough. Uncheck a predictor in the results table and every remaining VIF is recomputed from the smaller correlation matrix, exactly as if you had refit the model without it. The guidance line names the fewest predictors to drop so that everything left falls under your moderate threshold, dropping the largest VIF first and rechecking after each removal.
This matters because VIF is not additive. Dropping the worst offender often pulls a second predictor from a VIF of 8 down to 2, because the overlap they shared is gone. Trying that by hand means editing the formula and rerunning vif() once per experiment; here it is one click.
Anatomy of the read-out
| Number | What it is | How to read it |
|---|---|---|
| VIF | Variance inflation factor, diag(solve(R)) | 1 is ideal; bigger is worse. It is the multiplier on the coefficient's variance. |
| Tolerance | 1 / VIF | Share of the predictor's variance that is its own. Below 0.10 mirrors VIF above 10. |
| SE factor | sqrt(VIF) | How many times wider the confidence interval is because of collinearity. |
| Condition number | sqrt(λmax / λmin) of the correlation matrix | A whole-model score. Above roughly 30 signals collinearity that no single VIF may reveal. |
| GVIF | Generalized VIF for a multi-column factor | Compare GVIF^(1/(2·Df)) squared against the usual thresholds. |
When VIF is the wrong tool
| Situation | Why VIF misleads | Do instead |
|---|---|---|
| Prediction-only model | Collinearity does not hurt predictive accuracy, only the interpretation of individual coefficients. | Ignore VIF; judge the model on out-of-sample error. |
| Interaction or polynomial terms | x and x², or x·z, are correlated by construction, so a high VIF is expected and harmless. | Center the variables first, or read the VIFs of the base terms only. |
| Categorical predictors | Raw VIF on individual dummy columns is not comparable across factors with different numbers of levels. | Use the GVIF and its GVIF^(1/(2·Df)) adjustment (interpret mode does it for you). |
| Perfect dummy trap | Keeping every level of a factor plus the intercept makes a column an exact combination of others; VIF is infinite. | Drop one reference level, or let R do it by using factor(). |
Frequently asked questions
How do I compute VIF from my data?
Paste your predictor columns with a header row of names in the default mode. The calculator builds the predictor correlation matrix, inverts it, and reads each variance inflation factor off the diagonal, which is exactly what car::vif() returns for a linear model. You do not need a response column, because VIF depends only on how the predictors relate to one another.
What is a good VIF value?
The common conventions: below 5 is low, 5 to 10 is moderate, and above 10 points to serious multicollinearity worth addressing. A VIF of exactly 1 means the predictor is uncorrelated with the others. Because the right cutoff depends on your sample size and how central the coefficient is to your argument, the thresholds here are adjustable.
What does dropping a predictor do to the other VIFs?
Removing a predictor deletes its row and column from the correlation matrix, so every remaining VIF is recomputed from the smaller matrix, the same result you would get by refitting the model without it. Uncheck a predictor in the table and the bars, condition number and verdict all update at once. The guidance line names the smallest set to drop so every remaining VIF falls under your moderate threshold.
What does VIF actually measure?
It is the factor by which the variance of a coefficient is inflated because that predictor overlaps with the others. VIF for predictor j is 1 divided by (1 minus the R-squared from regressing predictor j on the remaining predictors). A VIF of 9 means nine times the variance you would have with no overlap, hence a standard error three times larger.
How do I fix a high VIF?
In rough order of effort: drop one of the redundant predictors; combine correlated predictors into a single index or principal component; center variables before forming interaction or polynomial terms; or move to a method that tolerates collinearity, such as ridge regression. If the model only needs to predict, high VIF is usually not a problem at all.
What is GVIF and how do I read it?
For a categorical predictor spread over several dummy columns, car::vif() reports a generalized VIF along with its degrees of freedom. To compare it against the ordinary VIF thresholds you square the last column, GVIF^(1/(2 times Df)). Paste a GVIF table into the interpret mode and it does the squaring and flagging for you.
Does this calculator match R?
Yes. The variance inflation factors are computed as the diagonal of the inverse correlation matrix, which equals car::vif(), and the condition number equals kappa(scale(X), exact = TRUE). Both are verified against R 4.6.0 across raw data, correlation-matrix and after-drop cases, including perfect collinearity, to at least six decimal places.