Oferty statystyczne Tutoriale Opinie Kontakt

VIF – współczynnik inflacji wariancji: wzór i przykład

VIF (ang. variance inflation factor, współczynnik inflacji wariancji) mówi, na ile predyktor w regresji wielorakiej pokrywa się z pozostałymi predyktorami. Typowe pytanie z pracy dyplomowej: czy w jednym modelu mogę jednocześnie umieścić godziny nauki i liczbę wypitych kubków kawy, skoro jedno i drugie rośnie razem?

W prostych słowachJeśli dwa predyktory niosą prawie tę samą informację, model ma kłopot z rozstrzygnięciem, któremu z nich przypisać wpływ. Oszacowania stają się chwiejne: niewielka zmiana w danych potrafi je mocno przesunąć, a nawet odwrócić znak. VIF mówi, ile razy rośnie przez to wariancja współczynnika, czyli kwadrat jego błędu standardowego. VIF = 1 oznacza, że predyktor niczego nie dzieli z pozostałymi.

Kiedy stosować VIF?

  • budujesz regresję liniową z co najmniej dwoma predyktorami;
  • predyktory mogą być ze sobą powiązane (godziny nauki, kawa, liczba podejść do testów próbnych);
  • chcesz interpretować osobne współczynniki b – gdy model służy tylko do przewidywania, współliniowość przeszkadza mniej;
  • w modelu są interakcje lub kwadraty zmiennych – wtedy wysoki VIF bywa sztuczny i zwykle spada po wycentrowaniu zmiennych.

VIF to część diagnostyki regresji liniowej, obok wartości dźwigni i odległości Cooka. Cały opis modelu w pracy pokazuje przykład analizy regresji.

Wzór na VIF

$$ \mathrm{VIF}_j = \frac{1}{1 - R_j^2} \qquad \text{tolerancja}_j = 1 - R_j^2 = \frac{1}{\mathrm{VIF}_j} $$
\(j\)
numer predyktora, dla którego liczysz VIF
\(R_j^2\)
współczynnik determinacji z regresji pomocniczej, w której predyktor j jest wyjaśniany przez wszystkie pozostałe predyktory (bez zmiennej zależnej)
tolerancja
część zmienności predyktora, której nie da się odtworzyć z pozostałych predyktorów
\(\sqrt{\mathrm{VIF}_j}\)
ile razy większy jest błąd standardowy współczynnika \(b_j\) niż przy predyktorach nieskorelowanych (przy tym samym rozrzucie reszt)

Przykład krok po kroku

Pięcioro studentów podało, ile godzin się uczyło (x₁), ile kubków kawy wypiło w dniu nauki (x₂) i ile punktów zdobyło na kolokwium (4, 2, 8, 6, 10). Średnio uczyli się 3 godziny i pili 3 kubki.

Tabela 1. Predyktory i obliczenia pomocnicze
Godziny x₁Kawa x₂x₁ − 3x₂ − 3(x₁ − 3)(x₂ − 3)(x₁ − 3)²(x₂ − 3)²
11−2−2444
23−10010
3300000
4310010
5522444
Σ = 15Σ = 15008108
  1. Regresja pomocnicza. Przy dwóch predyktorach \(R_1^2\) to kwadrat ich korelacji Pearsona: \(r = 8/\sqrt{10 \cdot 8} = 0{,}894\), więc \(R^2 = 64/80 = 0{,}80\). Kawa „odtwarza” 80% zmienności godzin nauki.
  2. VIF. VIF = 1 / (1 − 0,80) = 1 / 0,20 = 5. Przy dwóch predyktorach oba mają ten sam VIF.
  3. Tolerancja i pierwiastek. Tolerancja = 0,20; √5 = 2,24.
  4. Sprawdzenie w modelu. Model ma postać punkty = 1,5 + 2,0 · godziny − 0,5 · kawa (R² = 0,65, rozrzut reszt s = √7 = 2,646). Bez współliniowości błąd standardowy b dla godzin wynosiłby 2,646 / √10 = 0,837. Przy VIF = 5 wynosi 0,837 · √5 = 0,837 · 2,236 = 1,87.
  5. Skutek. Kawa sama w sobie koreluje z punktami dodatnio (r = 0,67), a w modelu dostaje znak ujemny (b = −0,5). Taka „zamiana znaku” to typowy objaw współliniowości.
Dwa diagramy z nakładającymi się kołami: przy wspólnej części 10 procent VIF wynosi 1,11, a przy wspólnej części 80 procent, jak dla godzin nauki i kawy, VIF wynosi 5
Rys. 1. Nakładające się predyktory. Koła to zmienność godzin nauki i kubków kawy, a ich wspólna część to R². W naszym przykładzie wspólne jest 80%, więc do oszacowania osobnego wpływu godzin model ma tylko 20% ich zmienności – stąd VIF = 1 / 0,20 = 5. Przy 10% wspólnej części VIF wynosiłby zaledwie 1,11.
Krzywa VIF w zależności od R kwadrat predyktora: R kwadrat 0,80 daje VIF 5, 0,90 daje VIF 10, a 0,95 daje VIF 20; zaznaczone strefy powyżej 5 i powyżej 10
Rys. 2. VIF rośnie coraz szybciej, gdy predyktor da się odtworzyć z pozostałych. R² = 0,80 daje VIF = 5, R² = 0,90 – VIF = 10, a R² = 0,95 – już VIF = 20. Przerywane linie to umowne progi 5 i 10.
Panel Współliniowość z aplikacji SZTOS: godziny nauki i kubki kawy mają VIF równy 5 z przedziałami ufności, w strefie umiarkowanej współliniowości
Rys. 3. Panel „Współliniowość” z wizualnej diagnostyki modelu w aplikacji SZTOS dla tych samych danych. Oba predyktory mają VIF = 5 (oś w skali logarytmicznej), a pionowe kreski to przedziały ufności VIF. Aplikacja zalicza ten wynik do współliniowości umiarkowanej (VIF poniżej 10).

Jak zinterpretować i opisać wynik?

VIF = 1 oznacza brak współliniowości. Najczęściej spotkasz progi VIF > 5 („warto się przyjrzeć”) i VIF > 10 („poważny problem”). To tylko reguły kciuka: O’Brien (2007) pokazuje, że nawet VIF powyżej 10 nie musi przekreślać modelu przy dużej próbie, a przy małej kłopoty zaczynają się wcześniej. Co możesz zrobić? Usunąć jeden z dublujących się predyktorów, połączyć je we wspólny wskaźnik albo zebrać więcej danych. Nie usuwaj predyktora, który wynika z hipotezy, tylko dlatego, że ma wysoki VIF.

Zapis w stylu APA: Współliniowość predyktorów oceniono współczynnikiem VIF. Dla godzin nauki i liczby kubków kawy VIF wyniósł 5,00 (tolerancja = 0,20), co odpowiada często stosowanemu progowi ostrzegawczemu (por. O’Brien, 2007) i wskazuje na umiarkowaną współliniowość.

Jak policzyć VIF w R?

punkty  <- c(4, 2, 8, 6, 10)
godziny <- c(1, 2, 3, 4, 5)
kawa    <- c(1, 3, 3, 3, 5)     # kubki kawy wypite w dniu nauki

# 1) „ręcznie”: jak dobrze kawa przewiduje godziny nauki?
R2 <- summary(lm(godziny ~ kawa))$r.squared
R2                              # 0.8
1 / (1 - R2)                    # VIF = 5

# 2) gotową funkcją z pakietu car
m <- lm(punkty ~ godziny + kawa)
car::vif(m)
1 / car::vif(m)                 # tolerancja
round(summary(m)$coefficients, 2)

Wynik w konsoli R:

[1] 0.8
[1] 5
godziny    kawa 
      5       5 
godziny    kawa 
    0.2     0.2 
            Estimate Std. Error t value Pr(>|t|)
(Intercept)      1.5       3.05    0.49     0.67
godziny          2.0       1.87    1.07     0.40
kawa            -0.5       2.09   -0.24     0.83

Dla predyktorów kategorialnych o kilku poziomach car::vif() poda uogólniony VIF (GVIF). Wtedy porównuj wartość GVIF^(1/(2·Df)) z pierwiastkami zwykłych progów (Fox i Monette, 1992).

Czy macierz korelacji wystarczy do oceny współliniowości?

Nie. Korelacje pokazują tylko pary zmiennych. VIF bierze pod uwagę wszystkie pozostałe predyktory naraz, więc wykryje sytuację, w której jedna zmienna jest prawie sumą dwóch innych, choć z każdą z nich osobno koreluje umiarkowanie. Tylko przy dwóch predyktorach oba podejścia są równoważne: VIF = 1/(1 − r²), tak jak w naszym przykładzie.

Najczęstsze błędy

  • Liczenie VIF z udziałem zmiennej zależnej – VIF dotyczy wyłącznie predyktorów.
  • Ocena współliniowości tylko na podstawie korelacji parami.
  • Mechaniczne usuwanie predyktorów z VIF > 5 bez uzasadnienia teoretycznego.
  • Branie wysokiego VIF przy interakcjach i kwadratach zmiennych za problem – często znika po wycentrowaniu.
  • Pisanie, że VIF mierzy siłę związku predyktora z wynikiem – VIF w ogóle nie zależy od zmiennej zależnej.

Bibliografia

  1. O’Brien, R. M. (2007). A caution regarding rules of thumb for variance inflation factors. Quality & Quantity, 41(5), 673–690. https://doi.org/10.1007/s11135-006-9018-6
  2. Belsley, D. A., Kuh, E., & Welsch, R. E. (1980). Regression diagnostics: Identifying influential data and sources of collinearity. Wiley.
  3. Fox, J., & Monette, G. (1992). Generalized collinearity diagnostics. Journal of the American Statistical Association, 87(417), 178–183.
  4. Fox, J., & Weisberg, S. (2019). An R companion to applied regression (3rd ed.). SAGE.
  5. Field, A., Miles, J., & Field, Z. (2012). Discovering statistics using R. SAGE.
  6. Hryniewicz, K., & Milewska, A. (2023). SZTOS: System Zautomatyzowanego Tworzenia Opisu Statystycznego [Oprogramowanie]. SZTOS IT. https://sztos-it.com/

Zobacz też

Przygotowujesz artykuł, doktorat lub grant?

Zaplanujemy i wykonamy analizy, przygotujemy raport z tabelami, wykresami i kodem R oraz pomożemy odpowiedzieć na uwagi recenzentów dotyczące statystyki.

Na skróty