PCA minimalistlik näide
Järgnev PCA minimalistlik näide põhineb iiriste andmestikul.
data(iris)
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
Teeme PCA iiriste andmestikul funktsiooni prcomp
abil.
# PCA tegemisel jätame viimase veeru Species välja
pca = prcomp(iris[, -5])
Funktsioonile prcomp
ette antud andmestikus oli neli tunnust. Seega tagastab PCA meile neli peakomponenti PC1, PC2, PC3, PC4.
head(pca$x)
## PC1 PC2 PC3 PC4
## [1,] -2.684126 -0.3193972 0.02791483 0.002262437
## [2,] -2.714142 0.1770012 0.21046427 0.099026550
## [3,] -2.888991 0.1449494 -0.01790026 0.019968390
## [4,] -2.745343 0.3182990 -0.03155937 -0.075575817
## [5,] -2.728717 -0.3267545 -0.09007924 -0.061258593
## [6,] -2.280860 -0.7413304 -0.16867766 -0.024200858
Enim huvi pakkuvad on alati esimesed. Teeme PC1 - PC2 hajuvusdiagrammi.
pc1 = pca$x[, 1]
pc2 = pca$x[, 2]
plot(pc1, pc2, pch=16)
Joonisel on näha kahte eristuvat gruppi. Oleks huvitav teada, kas tekkinud gruppe kirjeldab andmestikus olnud tunnus Species.
plot(pc1, pc2, pch=16, col=as.numeric(iris$Species))
Tundub, et jah. Isegi ainuüksi PC1 võimaldab suhteliselt hästi liikidel vahet teha.
PC1 ning PC2 on saadud esialgsete tunnuste lineaarkombinatsioonina. Kuidas leida kordajad? Need saame kätte järgnevalt
pca$rotation
## PC1 PC2 PC3 PC4
## Sepal.Length 0.36138659 -0.65658877 0.58202985 0.3154872
## Sepal.Width -0.08452251 -0.73016143 -0.59791083 -0.3197231
## Petal.Length 0.85667061 0.17337266 -0.07623608 -0.4798390
## Petal.Width 0.35828920 0.07548102 -0.54583143 0.7536574
\[PC_1 = 0.36 \cdot \text{Sepal.Length} - 0.08 \cdot \text{Sepal.Width} + 0.86 \cdot \text{Petal.Length} + 0.36 \cdot \text{Petal.Width } \]
\[PC_2 = -0.66 \cdot \text{Sepal.Length} -0.73 \cdot \text{Sepal.Width} + 0.17 \cdot \text{Petal.Length} + 0.07 \cdot \text{Petal.Width } \]
# Kui suure osa varieeruvusest seletavad PC1, PC2?
summary(pca)
## Importance of components:
## PC1 PC2 PC3 PC4
## Standard deviation 2.0563 0.49262 0.2797 0.15439
## Proportion of Variance 0.9246 0.05307 0.0171 0.00521
## Cumulative Proportion 0.9246 0.97769 0.9948 1.00000
Näeme, et
- PC1 seletab 92.5% kogu variatsioonist,
- PC1 ja PC2 kokku seletavad 97.7% kogu variatsioonist.