Oferty statystyczne Tutoriale Opinie Kontakt

Rotacja czynników: varimax i oblimin – wzór i przykład

Rotacja czynników to obrót osi w analizie czynnikowej, który sprawia, że każda pozycja ładuje głównie jeden czynnik. Typowe pytanie z pracy dyplomowej: czy w skali stresu i motywacji wybrać rotację varimax czy oblimin i dlaczego wyniki się różnią?

W prostych słowachAnaliza czynnikowa najpierw znajduje osie, które dobrze opisują dane, ale zwykle trudno je nazwać. Rotacja obraca te osie tak, aby każda przechodziła blisko jednej grupy pytań. Dane się nie zmieniają, zmienia się tylko punkt widzenia. Varimax trzyma osie pod kątem prostym, czyli zakłada, że czynniki nie są skorelowane. Oblimin pozwala osiom się „zejść” albo „rozejść”, gdy czynniki są ze sobą powiązane.

Kiedy stosować rotację i którą wybrać?

  • w eksploracyjnej analizie czynnikowej (EFA) z co najmniej dwoma czynnikami; przy jednym czynniku nie ma czego obracać;
  • oblimin (lub promax) – gdy czynniki mogą być skorelowane, co w psychologii i naukach społecznych zdarza się prawie zawsze;
  • varimax – gdy masz powody sądzić, że czynniki są niezależne, albo potrzebujesz nieskorelowanych wyników czynnikowych.

Rotację robisz po ustaleniu liczby czynników (wartości własne, analiza równoległa). Jej wynikiem są ładunki czynnikowe, na podstawie których nazywasz czynniki. Cały proces na tych samych danych pokazuje wpis Analiza czynnikowa – przykład.

Wzór na rotację ortogonalną (dwa czynniki)

$$ \lambda_{i1}^{*} = \lambda_{i1}\cos\theta + \lambda_{i2}\sin\theta, \qquad \lambda_{i2}^{*} = -\lambda_{i1}\sin\theta + \lambda_{i2}\cos\theta $$
$$ V = \sum_{k} \left[ \frac{1}{p}\sum_{i} \left(\frac{\lambda_{ik}^{*}}{h_i}\right)^{4} - \left( \frac{1}{p}\sum_{i} \left(\frac{\lambda_{ik}^{*}}{h_i}\right)^{2} \right)^{2} \right] \to \max $$

Na głos: „nowy ładunek to stary ładunek na pierwszej osi razy cosinus kąta plus ładunek na drugiej osi razy sinus; varimax wybiera taki kąt, przy którym zróżnicowanie kwadratów ładunków w każdej kolumnie jest największe”.

\(\lambda_{i1}, \lambda_{i2}\)
ładunki pozycji i na dwóch czynnikach przed rotacją
\(\lambda_{i1}^{*}, \lambda_{i2}^{*}\)
ładunki po obrocie osi o kąt θ
\(\theta\)
kąt obrotu (theta); przy kalkulatorze pamiętaj o trybie stopni
\(h_i\)
pierwiastek ze wspólności pozycji; dzielenie przez h to normalizacja Kaisera, dzięki której słabe pozycje liczą się tak samo jak mocne
\(p\)
liczba pozycji
\(V\)
kryterium varimax: duże, gdy w każdej kolumnie są ładunki albo bliskie zera, albo duże – a mało pośrednich
\(\varphi\)
w rotacji skośnej (oblimin): korelacja czynników; kąt między osiami to arccos φ

Przykład krok po kroku

Dwieście osób wypełniło sześć pozycji: S1–S3 o stresie przed sesją i M1–M3 o motywacji do nauki (ta sama macierz korelacji co we wpisie o analizie czynnikowej). EFA metodą największej wiarygodności dała dwa czynniki. Przed rotacją wszystkie pozycje ładują pierwszy czynnik, więc trudno go nazwać.

Tabela 1. Ładunki przed rotacją, po varimax (θ = 38,3°) i po oblimin
pozycjaF1 przedF2 przedh² = F1² + F2²V1 = F1·cos θ + F2·sin θV2 = −F1·sin θ + F2·cos θoblimin: Stresoblimin: Motywacja
S10,7180,3540,640,782−0,1670,800,00
S20,6250,3140,490,686−0,1410,700,00
S30,5360,2700,360,588−0,1200,600,00
M1−0,6140,5140,64−0,1630,7830,000,80
M2−0,4590,3870,36−0,1210,5880,000,60
M3−0,3830,3210,25−0,1020,4890,000,50
suma kwadratów1,930,812,741,481,261,491,25
  1. Kąt. Varimax znalazł θ = 38,3°. Na kalkulatorze w trybie stopni: cos 38,3° = 0,785 i sin 38,3° = 0,620.
  2. S1 na nowej osi V1. 0,718 · 0,785 + 0,354 · 0,620 = 0,564 + 0,219 = 0,783, czyli około 0,78.
  3. S1 na nowej osi V2. −0,718 · 0,620 + 0,354 · 0,785 = −0,445 + 0,278 = −0,167, czyli około −0,17.
  4. M1 po obrocie. V1: −0,614 · 0,785 + 0,514 · 0,620 = −0,482 + 0,319 = −0,163. V2: 0,614 · 0,620 + 0,514 · 0,785 = 0,381 + 0,403 = 0,784. Różnice w trzecim miejscu po przecinku względem tabeli to tylko zaokrąglenia.
  5. Wspólność się nie zmienia. S1 przed: 0,718² + 0,354² = 0,516 + 0,125 = 0,641. Po: 0,783² + 0,167² = 0,613 + 0,028 = 0,641. Obrót przesuwa wariancję między czynnikami, ale nie zmienia tego, ile wyjaśniają razem (suma 2,74 przed i po).
  6. Dopasowanie też się nie zmienia. Korelacja S1–M1 odtworzona przed rotacją: 0,718 · (−0,614) + 0,354 · 0,514 = −0,441 + 0,182 = −0,259. Po varimax: 0,783 · (−0,163) + (−0,167) · 0,784 = −0,128 − 0,131 = −0,259. W danych jest −0,26.
  7. Oblimin. Czynniki mogą korelować; tu φ = −0,40. Pozycje mają ładunki 0,80; 0,70; 0,60 i 0,80; 0,60; 0,50, a krzyżowe równe 0,00. Ta sama korelacja S1–M1: 0,80 · (−0,40) · 0,80 = −0,256, czyli −0,26. Kąt między osiami: arccos(−0,40) = 113,6°.
Dwa panele: po lewej punkty S1–S3 w prawym górnym rogu i M1–M3 w lewym górnym, czerwone przerywane osie V1 i V2 obrócone o 38,3 stopnia; po prawej te same punkty po obrocie, S1–S3 blisko osi poziomej, M1–M3 blisko pionowej
Rys. 1. Każda pozycja to punkt o współrzędnych równych jej ładunkom. Po lewej osie przed rotacją (czarne) i osie varimax (czerwone, obrócone o 38,3°). Po prawej ten sam układ po obrocie: stres leży przy osi poziomej, motywacja przy pionowej. Ładunki krzyżowe (−0,10 do −0,17) nie znikają, bo osie muszą zostać prostopadłe.
Punkty pozycji w układzie przed rotacją; niebieskie osie oblimin przechodzą dokładnie przez skupiska S1–S3 i M1–M3 pod kątem 113,6 stopnia, czerwone przerywane osie varimax są prostopadłe i mijają skupiska
Rys. 2. Osie varimax (czerwone) muszą tworzyć kąt prosty, więc mijają oba skupiska o około 12°. Osie oblimin (niebieskie) przechodzą dokładnie przez skupiska. Kąt między nimi to 113,6°, a jego cosinus (−0,40) to korelacja czynników: im większy stres, tym nieco mniejsza motywacja.

Jak zinterpretować i opisać wynik?

Po rotacji nazywasz czynniki na podstawie pozycji o najwyższych ładunkach. Varimax dał czytelny obraz, ale z ładunkami krzyżowymi od −0,10 do −0,17. Biorą się one stąd, że wymusiliśmy brak korelacji czynników, choć w danych stres i motywacja są powiązane. Oblimin pokazuje czystą strukturę i jednocześnie mówi, jak silnie czynniki korelują. Gdy korelacja czynników jest bliska zera, oba rozwiązania są niemal identyczne. Tabachnick i Fidell (2013) radzą zaczynać od rotacji skośnej. Gdy korelacje czynników są małe (poniżej około 0,32), można przejść na varimax. Przy rotacji skośnej raportuj macierz wzoru i korelację czynników.

Zapis w stylu APA: Przeprowadzono eksploracyjną analizę czynnikową metodą największej wiarygodności z rotacją oblimin. Wyodrębniono dwa czynniki: stres przed sesją (ładunki 0,60–0,80) i motywację do nauki (0,50–0,80). Żadna pozycja nie miała ładunku krzyżowego powyżej 0,01, a korelacja czynników wyniosła −0,40.

Wykres ładunków z aplikacji SZTOS w dwóch panelach, Motywacja i Stres: zielone słupki 0,80, 0,60 i 0,50 dla M1–M3 oraz 0,80, 0,70 i 0,60 dla S1–S3, pozostałe ładunki 0,00
Rys. 3. Ładunki po rotacji oblimin z modułu analizy czynnikowej aplikacji SZTOS (200 symulowanych odpowiedzi o macierzy korelacji z przykładu, metoda ML). Każda pozycja ma wyraźny ładunek tylko na swoim czynniku. Przerywana linia to próg 0,50 ustawiony w aplikacji.

Jak zrobić rotację varimax i oblimin w R?

library(psych); library(GPArotation, warn.conflicts = FALSE)
r <- c(.56, .48, -.26, -.19, -.16, .42, -.22, -.17, -.14, -.19, -.14, -.12, .48, .40, .30)
R <- diag(6); R[lower.tri(R)] <- r; R <- R + t(R) - diag(6)    # S1–S3 stres, M1–M3 motywacja
dimnames(R) <- list(c("S1", "S2", "S3", "M1", "M2", "M3"), c("S1", "S2", "S3", "M1", "M2", "M3"))
L0 <- unclass(fa(R, nfactors = 2, n.obs = 200, fm = "ml", rotate = "none")$loadings)

# 1) „ręcznie”: obrót osi o kąt t i kryterium varimax (z normalizacją Kaisera)
obroc <- function(L, t) L %*% matrix(c(cos(t), sin(t), -sin(t), cos(t)), 2)
varimax_kryt <- function(L) { L <- L / sqrt(rowSums(L^2)); sum(apply(L^2, 2, var)) }
t <- optimize(function(t) varimax_kryt(obroc(L0, t)), c(0, pi / 2), maximum = TRUE)$maximum
round(c(kat_stopnie = t * 180 / pi, cos = cos(t), sin = sin(t)), 3)
LV <- obroc(L0, t); tab <- cbind(L0, LV, rowSums(L0^2), rowSums(LV^2))
colnames(tab) <- c("F1_przed", "F2_przed", "F1_vari", "F2_vari", "h2_przed", "h2_po"); round(tab, 3)

# 2) gotowe funkcje: varimax z GPArotation i oblimin z psych
round(unclass(Varimax(L0, normalize = TRUE)$loadings), 3)
fo <- fa(R, nfactors = 2, n.obs = 200, fm = "ml", rotate = "oblimin")
round(unclass(fo$loadings), 2); round(fo$Phi, 2)

Wynik w konsoli R:

kat_stopnie         cos         sin 
     38.281       0.785       0.620 
   F1_przed F2_przed F1_vari F2_vari h2_przed h2_po
S1    0.718    0.354   0.782  -0.167     0.64  0.64
S2    0.625    0.314   0.686  -0.141     0.49  0.49
S3    0.536    0.270   0.588  -0.120     0.36  0.36
M1   -0.614    0.514  -0.163   0.783     0.64  0.64
M2   -0.459    0.387  -0.121   0.588     0.36  0.36
M3   -0.383    0.321  -0.102   0.489     0.25  0.25
      ML1    ML2
S1  0.782 -0.167
S2  0.686 -0.141
S3  0.588 -0.120
M1 -0.163  0.783
M2 -0.121  0.588
M3 -0.102  0.489
   ML1 ML2
S1 0.8 0.0
S2 0.7 0.0
S3 0.6 0.0
M1 0.0 0.8
M2 0.0 0.6
M3 0.0 0.5
     ML1  ML2
ML1  1.0 -0.4
ML2 -0.4  1.0

Na surowych danych oblimin to fa(dane, nfactors = 2, fm = "ml", rotate = "oblimin"). Uwaga na varimax: w tym przykładzie fa(..., rotate = "varimax"), oparte na funkcji stats::varimax(), zatrzymało się w złym położeniu i dało ładunki krzyżowe od 0,21 do 0,56 (co do wartości bezwzględnej). Dlatego w kodzie liczymy kąt ręcznie i sprawdzamy go funkcją Varimax() z pakietu GPArotation. Jeśli po varimax pozycje ładują oba czynniki podobnie, porównaj wynik z GPArotation. Całą procedurę EFA w formie gotowego opisu zobaczysz w przykładowym raporcie z analizy czynnikowej.

Varimax czy oblimin – co wybrać do pracy?

W większości prac z psychologii, pedagogiki czy zarządzania wybierz rotację skośną (oblimin albo promax). Cechy mierzone kwestionariuszami prawie zawsze są ze sobą powiązane, a rotacja skośna nie zakazuje korelacji, tylko ją szacuje. Jeśli wyjdzie bliska zera, wynik będzie praktycznie taki jak przy varimax. Varimax wybierz, gdy teoria mówi o niezależnych wymiarach albo potrzebujesz nieskorelowanych wyników czynnikowych do dalszej regresji. Decyzję podejmij przed analizą i napisz w pracy, dlaczego.

Najczęstsze błędy

  • Wybór varimax „bo jest domyślny”, bez sprawdzenia, czy czynniki korelują.
  • Raportowanie przy oblimin macierzy struktury zamiast macierzy wzoru albo pomijanie korelacji czynników.
  • Przekonanie, że rotacja poprawia dopasowanie modelu – zmienia tylko układ osi, a wspólności i odtworzone korelacje zostają te same.
  • Opisywanie oblimin jako metody „maksymalizującej wariancję” – to opis varimax; oblimin upraszcza strukturę ładunków, dopuszczając korelację czynników.
  • Ślepe zaufanie wynikowi programu: przy bardzo czystych danych algorytm może utknąć, więc porównaj ładunki z drugą implementacją.

Bibliografia

  1. Kaiser, H. F. (1958). The varimax criterion for analytic rotation in factor analysis. Psychometrika, 23(3), 187–200.
  2. Jennrich, R. I., & Sampson, P. F. (1966). Rotation for simple loadings. Psychometrika, 31(3), 313–323.
  3. Browne, M. W. (2001). An overview of analytic rotation in exploratory factor analysis. Multivariate Behavioral Research, 36(1), 111–150.
  4. Tabachnick, B. G., & Fidell, L. S. (2013). Using multivariate statistics (6th ed.). Pearson.
  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