Какие четыре оси на биплоте PCA?

18

Когда вы строите биплот для анализа PCA, у вас есть оценки PC1 основного компонента по оси x и оценки PC2 по оси y. Но каковы две другие оси справа и сверху экрана?

Nils
источник
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.

JTT
источник
5
+1. Я позволил себе вставить цифру в ваш ответ.
говорит амеба: восстанови монику
Кроме того, я думаю, что было бы очень полезно для будущих ссылок, если бы вы могли добавить к своему ответу, что баллы ПК (оси слева и снизу) масштабируются до единицы суммы квадратов: они не являются «необработанными» ПК баллы.
говорит амеба, восстанови монику
0.8biplot.default
1
Более того, смотрите также эту более позднюю тему: Расположение стрелок на биплоте PCA .
говорит амеба: восстанови Монику
11

У меня есть лучшая визуализация для биплота. Пожалуйста, проверьте следующий рисунок.

В эксперименте я пытаюсь отобразить трехмерные точки в 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()
Haitao Du
источник
2
+1. Однако обратите внимание, что на повернутой трехмерной фигуре облако точек имеет сохраненную дисперсию (горизонтальная проекция, т. Е. PC1, имеет большую дисперсию, чем вертикальная, т. Е. PC2), тогда как все красные стрелки имеют единичную длину (в 3D). Это не относится к биплоту, созданному biplotкомандой в R и воспроизведенному на вашей фигуре с правой стороны: там облако точек стандартизировано, но стрелки имеют длины, соответствующие отклонениям.
говорит амеба, восстанови Монику
@amoeba хорошая мысль. Я просто рисую стрелки вручную и забыл, что длина стрелки также имеет определенные значения.
Haitao Du
Я думаю, что ваш ручной 3D / 2D "биплот" больше соответствует тому, что функция biplotпроизводит с scale=0аргументом.
говорит амеба: восстанови монику