Які чотири осі на біплоті PCA?


18

Коли ви будуєте біплот для аналізу PCA, у вас є основні компоненти компонентів PC1 на осі x, а PC2 - на осі y. Але які дві інші осі праворуч і вгорі екрана?


1
Як ми можемо знати, на якому екрані ти говориш?
FairMiles

@ttnphns був відмінний відповідь тут
Хаітао Їй

Відповіді:


12

Ви маєте на увазі, наприклад, в сюжеті, що повертається наступна команда?

biplot(prcomp(USArrests, scale = TRUE))

Арешти біплот США

Якщо так, то верхня та права осі призначені для інтерпретації червоних стрілок (точок, що зображують змінні) на графіку.

Якщо ви знаєте, як працює аналіз основного компонента, і ви можете прочитати R-код, наведений нижче код показує, як prcomp()спочатку обробляються результати biplot.prcomp()перед остаточним побудовою biplot.default(). Ці дві функції викликаються у фоновому режимі, коли ви плануєте biplot(), і з якого складається наступний модифікований уривок коду biplot.prcomp().

x<-prcomp(USArrests, scale=TRUE)
choices = 1L:2L
scale = 1
pc.biplot = FALSE
scores<-x$x
lam <- x$sdev[choices]
n <- NROW(scores)
lam <- lam * sqrt(n)
lam <- lam^scale
yy<-t(t(x$rotation[, choices]) * lam)
xx<-t(t(scores[, choices])/lam)
biplot(xx,yy)

Незабаром у наведеному вище прикладі матриця змінних навантажень ( x$rotation) масштабується за стандартним відхиленням основних компонентів ( x$sdev) разів квадратного кореня від кількості спостережень. Це встановлює масштаб верхньої та правої осей відповідно до того, що видно на ділянці.

Є й інші методи масштабування змінних навантажень. Вони пропонуються, наприклад, вегетаріанським пакетом R.


5
+1. Я взяв на себе сміливість вставити фігуру у вашу відповідь.
амеба каже, що повернеться до Моніки

Крім того, я думаю, що це було б дуже корисно для майбутніх посилань, якби ви могли додати до своєї відповіді, що бали ПК (осі зліва та внизу) масштабуються до одиниці суми квадратів: вони не є "сирими" Оцінки ПК.
амеба каже, що відновіть Моніку

0,8biplot.default

1
Крім того, дивіться також цю пізнішу нитку: Розміщення стрілок на біплоті PCA .
амеба каже: Відновити Моніку

11

У мене краща візуалізація біплоту. Перевірте наступну рисунок.

В експерименті я намагаюся зіставити 3d точки в 2d (імітований набір даних).

Хитрість зрозуміти біплот у 2d - це знайти правильний кут, щоб побачити те ж саме в 3d. Усі точки даних пронумеровані, відображення відображається чітко.

введіть тут опис зображення

Ось код для відтворення результатів.

require(rgl)
set.seed(0)

feature1=round(rnorm(50)*10+20)
feature2=round(rnorm(50)*10+30)
feature3=round(runif(50)*feature1)

d=data.frame(feature1,feature2,feature3)

head(d)

plot(feature1,feature2)
plot(feature2,feature3)
plot(feature1,feature3)

plot3d(d$feature1, d$feature2, d$feature3, type = 'n')
points3d(d$feature1, d$feature2, d$feature3, color = 'red', size = 10)
shift <- matrix(c(-2, 2, 0), 12, 3, byrow = TRUE)
text3d(d+shift,texts=1:50)
grid3d(c("x", "y", "z"))

pr.out=prcomp(d,scale.=T)
biplot(pr.out)
grid()

2
+1. Однак зауважте, що у вашій обертовій 3D фігурі хмара крапок зберігається дисперсією (горизонтальна проекція, тобто PC1, має більшу дисперсію, ніж вертикальна, тобто PC2), тоді як червоні стрілки мають одиничну довжину (у 3D). Це не так у біплоті, створеному biplotкомандою на R та відтвореному на вашій фігурі з правого боку: там хмара точок стандартизована, але стрілки мають довжину, відповідну відхиленням.
амеба каже, що повернеться до Моніки

@amoeba хороший момент. Я просто малюю стрілки вручну і забув, що довжина стрілки також має конкретні значення.
Haitao Du

Я думаю, що ваш ручний 3D / 2D "біплот" більше відповідає тому, що функція biplotстворює scale=0аргументом.
Амеба каже, що поверніть Моніку
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.