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)
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ć.
| pozycja | F1 przed | F2 przed | h² = F1² + F2² | V1 = F1·cos θ + F2·sin θ | V2 = −F1·sin θ + F2·cos θ | oblimin: Stres | oblimin: Motywacja |
|---|---|---|---|---|---|---|---|
| S1 | 0,718 | 0,354 | 0,64 | 0,782 | −0,167 | 0,80 | 0,00 |
| S2 | 0,625 | 0,314 | 0,49 | 0,686 | −0,141 | 0,70 | 0,00 |
| S3 | 0,536 | 0,270 | 0,36 | 0,588 | −0,120 | 0,60 | 0,00 |
| M1 | −0,614 | 0,514 | 0,64 | −0,163 | 0,783 | 0,00 | 0,80 |
| M2 | −0,459 | 0,387 | 0,36 | −0,121 | 0,588 | 0,00 | 0,60 |
| M3 | −0,383 | 0,321 | 0,25 | −0,102 | 0,489 | 0,00 | 0,50 |
| suma kwadratów | 1,93 | 0,81 | 2,74 | 1,48 | 1,26 | 1,49 | 1,25 |
- Kąt. Varimax znalazł θ = 38,3°. Na kalkulatorze w trybie stopni: cos 38,3° = 0,785 i sin 38,3° = 0,620.
- S1 na nowej osi V1. 0,718 · 0,785 + 0,354 · 0,620 = 0,564 + 0,219 = 0,783, czyli około 0,78.
- S1 na nowej osi V2. −0,718 · 0,620 + 0,354 · 0,785 = −0,445 + 0,278 = −0,167, czyli około −0,17.
- 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.
- 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).
- 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.
- 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°.
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.
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
- Kaiser, H. F. (1958). The varimax criterion for analytic rotation in factor analysis. Psychometrika, 23(3), 187–200.
- Jennrich, R. I., & Sampson, P. F. (1966). Rotation for simple loadings. Psychometrika, 31(3), 313–323.
- Browne, M. W. (2001). An overview of analytic rotation in exploratory factor analysis. Multivariate Behavioral Research, 36(1), 111–150.
- Tabachnick, B. G., & Fidell, L. S. (2013). Using multivariate statistics (6th ed.). Pearson.
- Field, A., Miles, J., & Field, Z. (2012). Discovering statistics using R. SAGE.
- Hryniewicz, K., & Milewska, A. (2023). SZTOS: System Zautomatyzowanego Tworzenia Opisu Statystycznego [Oprogramowanie]. SZTOS IT. https://sztos-it.com/
Zobacz też
- Słownik wzorówŁadunek czynnikowy
- Słownik wzorówWartość własna i kryterium Kaisera
- Słownik wzorówAnaliza równoległa Horna
- PoradnikAnaliza czynnikowa – przykład
- Słownik wzorówSłownik wzorów statystycznych – wszystkie hasła
- Przykładowy raportAnaliza czynnikowa
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.