IGD – cv. 06

Faktorová analýza

Faktorová analýza je metoda založená na vlastních číslech a vlastních vektorech a stejně jako metoda hlavních komponent patří mezi metody redukce počtu původních proměnných. Na rozdíl od PCA se snažíme vysvětlit závislost ukazatelů. Vysvětlujeme tedy rozptyl pozorovaných ukazatelů pomocí menšího počtu latentních neměřitelných ukazatelů – tzv. faktorů. Předpokládáme, že každý vstupující ukazatel můžeme vyjádřit jako lineární kombinaci nevelkého počtu společných skrytých faktorů a jediného chybového faktoru. Počet faktorů se liší a platí, že čím více faktorů se použije, tím větší procento rozptylu ukazatelů se vysvětlí. Nicméně je jasné, že je potřeba nalézt co nejmenší dostatečný počet faktorů. K nevýhodám této metody patří zejména nutnost zadat počet faktorů ještě před prováděním vlastní analýzy a to podle konkrétních dat nebo s využitím numerických metod.

Explorativní faktorová analýza

Má za cíl měřit vzájemné korelace mezi jednotlivými ukazateli a na základě jejich velikostí stanovit skupiny proměnných, které jsou si statisticky blízké, tj. vytváří jeden faktor. Tento faktor je posléze pojmenován podle ukazatelů, které ho tvoří a dále vystupuje jako samostatný ukazatel namísto původních ukazatelů. V prvním kroku jsou vypočteny korelační koeficienty všech ukazatelů a vytvořena korelační matice. Reprodukovaný korelační koeficient vyjadřuje lineární závislost dvou ukazatelů, které jsou vyjádřeny pomocí odhadnutých faktorů, tj. podle výsledků faktorové analýzy. Dále se stanovuje tzv. matice reziduálních korelačních koeficientů, která je dána rozdílem mezi pozorovaným a reprodukovaným korelačním koeficientem. Pokud nalezené faktory dobře vysvětlují korelace mezi ukazateli, budou reziduální korelační koeficienty malé (nejlépe nulové).

V praxi se kromě matice reziduálních korelačních koeficientů, používá také Kaiser-Meyer-Olkinova míra (KMO), která nabývá hodnot <0-1> a platí, že čím větší je tato míra, tím je faktorová analýza lepší. Hraniční hodnotou je 0,5, odkdy faktorová analýza nemá smysl. Standardizovaná hodnota ukazatele Xi lze pak zapsat

Xi = ai1 F1 + ai2 F2 + ai3 F3 +      + aim Fm + ei,

kde ai je hodnota ukazatele i, F1 je hodnota prvního faktoru a ei je reziduální část ukazatele Xi, o které se domníváme, že není korelovaná s ostatními faktory. Protože se pracuje se standardizovanými daty, tak platí, že suma rozptylů ukazatelů a ei je rovna 1.

Stanovení počtu faktorů – používány jsou tři přístupy. První z nich je stanovení na základě znalosti dané problematiky a tedy jsme schopni stanovit počet faktorů. Druhou možností je pak využití tzv. Kaiserova pravidla, které je založeno na porovnání rozptylu faktorů s rozptylem ukazatelů (jejich suma je 1) a jde tedy o porovnávání rozptylu faktorů s hodnotou 1 – jako validní faktory jsou považovány ty, jejichž rozptyl je větší než 1. Pokud se pracuje s kovarianční maticí (ta není standardizována), tak se porovnává rozptyl faktoru vzhledem k průměrnému rozptylu za všechny faktory a pokud je menší, tak daný faktor nepovažujeme za důležitý. Rozptyl faktoru je pak vlastní číslo kovarianční či korelační matice. Třetí možností je grafická metoda (sutinový graf, scree plot). Jedná se o spojnicový graf, kde jsou vyznačeny rozptyly (vlastní čísla) jednotlivých faktorů a daná mez se nachází tam, kde dochází k největšímu poklesu vlastních čísel mezi dvěma faktory.

Metody extrakce faktorů – jedná se o vlastní metodu určení počtu faktorů a jejich zátěží (vlivů). My budeme pracovat s metodou maximální věrohodnosti (maximum likelihood). Je potřeba si uvědomit, že faktorová analýza nepracuje s celým souborem, ale pouze s jeho výběrem. Základní myšlenkou je odhad parametrů datového souboru, které mají největší pravděpodobnost, že se vyskytnou u výběrového souboru.

Rotace faktorů – existuje sice celá řada metod extrakce faktorů, ale i přesto existuje nekonečně mnoho faktorových řešení. V dalším kroku faktorové analýzy se faktory transformují tak, aby byly co nejlépe intepretovatelné (rotace faktorů). Nejlépe se interpretují ty faktory, které mají zátěže blízko jedné nebo nule. Pokud je faktorová zátěž v absolutní hodnotě menší než 0,3, je považována jako blízká nule a pokud je v absolutní hodnotě větší než 0,5 tak je považována za velkou. Faktorová zátěž rovna 1 znamená, že daná proměnná je zcela nasycena daným faktorem a rovna 0 ukazuje, že proměnná není daným faktorem vůbec dotčena. Rozdělujeme dva základní typy rotací – ortogonální, kdy se všechny osy rotují o stejný úhel a výsledné faktory jsou nezávislé a nekorelované. Druhou je šikmá rotace, kdy se osy rotují pod různým úhlem, výsledné faktory nejsou nezávislé a je pravdou, že tyto výsledky jsou mnohdy reálnější.

  • varimax – jedná se o ortogonální rotaci, která minimalizuje počet proměnných, které mají vysoké zátěže. Ve výsledku tak dostáváme faktory s menším počtem vysokých zátěží a tak je tato metoda vhodná pro snadnější interpretaci výsledků. Metoda nevytváří jeden obecný faktor.
  • quartimax – opět ortogonální metoda, která má na rozdíl od varimax rotace snahu vytvářet jeden všeobecný faktor
  • oblimin – zástupce šikmé rotace dosahující jednodušší struktury faktorů. Používá se v případech, kdy již z podstaty dat je jasné, že jednotlivé faktory nemohou být nezávislé.
  • promax – opět šikmá rotace, která dosahuje podobných výsledků jako oblimin, nicméně je rychlejší a tak vhodná pro větší soubory

Výsledné faktory je potřeba vhodně pojmenovat a to podle zátěže jednotlivých ukazatelů. Při jejich interpretaci je potřeba být opatrný a skutečně zvolit vhodné pojmenování.

V R je faktorová analýza volána funkcí factanal(), která využívá metodu maximální věrohodnosti (maximum likelihood factor analysis).

factanal(x, factors, scores = c(“none”, “regression”, “Bartlett”), rotation = “varimax”, control = NULL, …)

kde x je matice, factors odpovídá počtu výsledných faktorů, scores definuje typ uvedeného skóre – standardně je nastaveno na none, regression vrací Thompsonovo skóre a Bartlett vrací Bartlettovo skóre vážených nejmenších čtverců, rotation udává typ použité rotace a je možné vybírat z metody varimax a promax.

Zadání

Před vlastním zahájením faktorové analýzy je potřeba stanovit počet faktorů. Pracovat budeme opět s daty ze SLDB 2011 pro obce České republiky, přesněji řečeno s relativními čísly. Výše je uvedeno, že kromě logického určení počtu tříd, které nyní nebudeme používat, je možné využít Kaiserovo pravidlo a tedy porovnat vlastní čísla vůči hodnotě 1 a pak metoda grafická.

Po načtení dat a uložení relativních hodnot do samostatné datové matice vypočteme korelační matici a následně vlastní čísla, které uložíme do samostatné proměnné eigval. Dle hodnot vlastních čísel a Kaiserova pravidla stanovíme optimální počet faktorů jako 5, přičemž existence pátého faktoru je sporná.

3.41024984, 1.80912181, 1.75297574, 1.26940705, 1.03509115, 0.90924453, 0.68736563, 0.59511477, 0.48037851, 0.43357422, 0.33358211, 0.22688115, 0.05701349

Pro grafickou metodu použijeme příkaz plot(eigval, type=”b”) a z grafu zjistíme, že ideální počet faktorů jsou 2 (viz níže). Tato metoda je však značně subjektivní a nejedná se o žádné numerické řešení. Proto byla vyvinuta numerická metoda paralelní analýzy. Ta spočívá v generování n pozorování podle originální distribuce a vypočítá korelační matici. Tyto kroky opakuje k-krát a z výsledků se vypočte průměr, medián a 5. a 95. percentil z hodnot vlastních čísel. Následně je nahrazena hodnota 1 v Kaiserově pravidle právě těmito statistikami (nejčastěji 5. percentil).

V R je tato metoda implementována v balíčku nFactors a to funkcí parallel(), která vytváří náhodné distribuce a vypočítává výsledné hodnoty. V prvním kroku se definuje rozměr matice a to podle matice, která obsahuje data, které vstupují do faktorové analýzy, dále se definuje počet opakování a cent, kdy se definuje kvantil. Funkce nScree() pak vrací počet faktorů, argumenty je vektor vlastních čísel, který jsme si předtím vypočetli a výsledek funkce parallel(). Následně výsledky vykreslíme. Hodnota u Eigenvalues definuje počet faktorů dle Kaiserova pravidla, Parallel analysis pak doporučuje počet faktorů dle této metody. Další dvě metody optimal coordinate a acceleration factor využívají pro stanovení počtu faktorů jiné metody. Výsledkem je doporučeno 5 nebo 1 faktor.

par <- parallel(subject=nrow(relSLDB), var=ncol(relSLDB), rep=100, cent=.05)

nS <- nScree(x=eig$values, aparallel=par$eigen$qevpea)

plotnScree(nS)

kaiser_rulescree_plot

Vyzkoušíme tedy vytvořit faktorovou analýzu pro 5 faktorů s využitím rotace varimax. Následně zobrazíme výsledky zaokrouhlené na 2 desetinná místa s vynecháním hodnot menších než 0,3.

fit <- factanal(relSLDB, 5, rotation=”varimax”)

print(fit, digits=2, cutoff=.3, sort=TRUE)

Z výsledků vyplývá, že první faktor obsahuje hlavně obce se starším obyvatelstvem a bez svobodných a dětí, druhý faktor obsahuje obce s obyvatelstvem se základním vzděláním a s vysokou nezaměstnaností, bydlící v menších bytech, ve třetí skupině jsou obce s rozvedeným a nevěřícím obyvatelstvem, kteří nepracují v zemědělství. Čtvrtý faktor tvoří obce, kde jsou lidé zaměstnaní v průmyslu a pátý faktor tvoří ekonomicky neaktivní důchodci.

FA_loadings

Můžeme také vykreslit závislosti jednotlivých faktorů:

load <- fit$loadings[,1:2] # zapsání hodnot prvních dvou faktorů do proměnné

plot(load,type=”n”) # vykreslení vztahu obou faktorů, ale bez symbolů

text(load,labels=names(relSLDB),cex=.7) # do míst bodů se vypíší názvy proměnných

fac1x2

Nicméně test, že model model perfektně odpovídá realitě je zamítnuta, jelikož hodnota významnosti je nižší než stanovená hladina významnosti (např. 0,05) a je tedy zapotřebí přidat další faktory. To ale v našem případě moc situaci nezmění a nezbývá nám, než se podívat na reziduální korelační matici.

pfun <- function(nf) {

fa <- factanal(covmat=corSLDB, 5, factors = nf, rotation=”varimax”)

est <- tcrossprod(fa$loadings) + diag(fa$uniquenesses)

ret <- round(corSLDB – est, 3)

colnames(ret) <- rownames(ret) <-

abbreviate(rownames(ret), 3)

ret

}

pfun(6)

matice

Hodnoty v této reziduální korelační matici by měly být co nejmenší a jak můžeme sami posoudit, tak výsledné hodnoty jsou velmi nízké, kdy největší je hodnota -0,122. Výsledný model tak dobře reprezentuje realitu. Nicméně patrně by bylo vhodnější vybrat jiná data. To si však vyzkoušíte již jako samostatný úkol.

Samostatný úkol

  • vyberte si 10 ukazatelů reprezentovány absolutními čísly
  • odhadněte počet faktorů a to jak graficky, tak Kaiserovým pravidlem i paralelní analýzou
  • vypočtěte faktorovou analýzu – použijte metodu bez rotace a s rotacemi VARIMAX a PROMAX
  • porovnejte výsledky těchto tří různých nastavení
  • porovnejte s výsledky metody PCA

doc_icon Data pro vedené i samostatné cvičení

logolink

Cvičení je vytvořeno v rámci projektu Inovace bakalářských a magisterských studijních oborů na Hornicko-geologické fakultě VŠB-TUO pod číslem CZ.1.07/2.2.00/28.0308. Tento projekt je realizován za spoluúčasti EU.