Что означают стрелки в биплоте PCA?

14

Рассмотрим следующий биплот PCA:

library(mvtnorm)
set.seed(1)
x  <- rmvnorm(2000, rep(0, 6), diag(c(5, rep(1,5))))
x  <- scale(x, center=T, scale=F)
pc <- princomp(x)
biplot(pc)

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

Есть куча красных стрелок, что они означают? Я знал, что первая стрелка, помеченная «Var1», должна указывать самое изменяющееся направление набора данных (если мы считаем их 2000 точками данных, каждая из которых представляет собой вектор размером 6). Я также где-то читал, что самым изменяющимся направлением должно быть направление первого собственного вектора.

Однако, читая код биплота в R. Строка о стрелках:

if(var.axes)
    arrows(0, 0, y[,1L] * 0.8, y[,2L] * 0.8, col = col[2L], 

Где yна самом деле матрица нагрузок, которая является матрицей собственных векторов. Похоже, что 1-я стрелка действительно указывает (0, 0)на (y[1, 1], y[1, 2]). Я понимаю, что мы пытаемся нанести стрелку большого размера на плоскость 2D. Вот почему мы берем 1-й и 2-й элемент y[1, ]вектора. Однако то, что я не понимаю, это:

Не должно ли направление 1-го собственного вектора быть вектором, обозначенным y[, 1]вместо y[1, ]? (Опять же, здесь yпредставлена ​​матрица собственных векторов, полученная с помощью PCA или путем разложения по собственным значениям t(x) %*% x.), Т.е. собственные векторы должны быть векторами столбцов, а не этими горизонтальными векторами.

Даже при том, что мы наносим их на 2D-плоскость, мы должны нарисовать 1-е направление от (0, 0)направления на (y[1, 1], y[2, 1])?

Luna
источник
2
Также попробуйте использовать форматирование, доступное для вопросов на сайте, см. Расширенную справку по уценке . Я вижу, что ни на один из ваших предыдущих вопросов нет ответов, и если вы отредактируете их, чтобы они были немного более читабельными, они поднимутся в верхнюю часть списка и могут привлечь ответы.
Энди W
@Andy W Превосходные ссылки
конъюгатприор
@Andy W: После прочтения ваших превосходных ссылок я все еще думаю, что в коде R biplot.princomp есть ошибка: матрица загрузки (матрица собственных векторов) должна быть транспонирована перед отправкой в ​​biplot.princomp ... Есть мысли?
Луна
Похоже, что нет ошибки .
хл
@ Энди В. Вы хотите поместить свои комментарии в «ответ», чтобы я мог принять ваш ответ? Это здорово! Спасибо!
Луна

Ответы:

9

Что ж, похоже, Кевину Райту следует дать большую часть кредита, чтобы попытаться объяснить беспорядок (из списка рассылки R-help );

Стрелки не указывают в наиболее изменяющемся направлении данных. Основные компоненты указывают в самых разных направлениях данных. Но вы не наносите данные в исходном масштабе, вы наносите данные в повернутом масштабе, и, таким образом, горизонтальная ось является наиболее изменяющимся направлением данных.

Стрелки указывают в направлении переменных, проецируемых на 2-ую плоскость биплота.

Там нет ошибки.

Кевин Райт

У Майкла Гринакра есть отличная бесплатная онлайн-книга о блоках, о том, как на практике работать с блоками , и простое чтение первой главы должно помочь понять, откуда взяты координаты стрелок. На сайте также есть несколько других похожих вопросов, которые могут вас заинтересовать. См. Интерпретация биплотов в анализе основных компонентов в R и Интерпретация графика коэффициента MDS для двух примеров. Также просмотрите вопросы с биплотом в поиске на сайте , поскольку есть еще несколько потенциальных интересов (кажется, что даже создание тега биплота было бы полезно на данном этапе, учитывая количество вопросов, которые возникли).

Энди У
источник