Відповіді:
Ви маєте на увазі, наприклад, в сюжеті, що повертається наступна команда?
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.
У мене краща візуалізація біплоту. Перевірте наступну рисунок.
В експерименті я намагаюся зіставити 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()
biplot
командою на R та відтвореному на вашій фігурі з правого боку: там хмара точок стандартизована, але стрілки мають довжину, відповідну відхиленням.
biplot
створює scale=0
аргументом.