Когда вы строите биплот для анализа PCA, у вас есть оценки PC1 основного компонента по оси x и оценки PC2 по оси y. Но каковы две другие оси справа и сверху экрана?
Вы имеете в виду, например, в сюжете, что возвращает следующая команда?
biplot(prcomp(USArrests, scale =TRUE))
Если да, то верхняя и правая оси предназначены для интерпретации красных стрелок (точек, обозначающих переменные) на графике.
Если вы знаете, как работает анализ основных компонентов, и можете прочитать код R, приведенный ниже код показывает, как исходные результаты prcomp()обрабатываются biplot.prcomp()до окончательного построения графика biplot.default(). Эти две функции вызываются в фоновом режиме, когда вы строите график biplot(), и следующая отредактированная выдержка кода взята из biplot.prcomp().
Вкратце, в приведенном выше примере матрица переменных нагрузок ( x$rotation) масштабируется на стандартное отклонение главных компонент ( x$sdev), умноженное на квадратный корень из числа наблюдений. Это устанавливает масштаб для верхней и правой осей к тому, что видно на графике.
Существуют и другие способы масштабирования переменных нагрузок. Они предлагаются, например, вегетарианским пакетом R.
Кроме того, я думаю, что было бы очень полезно для будущих ссылок, если бы вы могли добавить к своему ответу, что баллы ПК (оси слева и снизу) масштабируются до единицы суммы квадратов: они не являются «необработанными» ПК баллы.
У меня есть лучшая визуализация для биплота. Пожалуйста, проверьте следующий рисунок.
В эксперименте я пытаюсь отобразить трехмерные точки в 2d (смоделированный набор данных).
Хитрость для понимания биплота в 2d состоит в том, чтобы найти правильный угол, чтобы увидеть то же самое в 3D. Все точки данных пронумерованы, вы можете ясно видеть отображение.
+1. Однако обратите внимание, что на повернутой трехмерной фигуре облако точек имеет сохраненную дисперсию (горизонтальная проекция, т. Е. PC1, имеет большую дисперсию, чем вертикальная, т. Е. PC2), тогда как все красные стрелки имеют единичную длину (в 3D). Это не относится к биплоту, созданному biplotкомандой в R и воспроизведенному на вашей фигуре с правой стороны: там облако точек стандартизировано, но стрелки имеют длины, соответствующие отклонениям.
говорит амеба, восстанови Монику
@amoeba хорошая мысль. Я просто рисую стрелки вручную и забыл, что длина стрелки также имеет определенные значения.
Haitao Du
Я думаю, что ваш ручной 3D / 2D "биплот" больше соответствует тому, что функция biplotпроизводит с scale=0аргументом.
Ответы:
Вы имеете в виду, например, в сюжете, что возвращает следующая команда?
Если да, то верхняя и правая оси предназначены для интерпретации красных стрелок (точек, обозначающих переменные) на графике.
Если вы знаете, как работает анализ основных компонентов, и можете прочитать код R, приведенный ниже код показывает, как исходные результаты
prcomp()
обрабатываютсяbiplot.prcomp()
до окончательного построения графикаbiplot.default()
. Эти две функции вызываются в фоновом режиме, когда вы строите графикbiplot()
, и следующая отредактированная выдержка кода взята изbiplot.prcomp()
.Вкратце, в приведенном выше примере матрица переменных нагрузок (
x$rotation
) масштабируется на стандартное отклонение главных компонент (x$sdev
), умноженное на квадратный корень из числа наблюдений. Это устанавливает масштаб для верхней и правой осей к тому, что видно на графике.Существуют и другие способы масштабирования переменных нагрузок. Они предлагаются, например, вегетарианским пакетом R.
источник
biplot.default
У меня есть лучшая визуализация для биплота. Пожалуйста, проверьте следующий рисунок.
В эксперименте я пытаюсь отобразить трехмерные точки в 2d (смоделированный набор данных).
Хитрость для понимания биплота в 2d состоит в том, чтобы найти правильный угол, чтобы увидеть то же самое в 3D. Все точки данных пронумерованы, вы можете ясно видеть отображение.
Вот код для воспроизведения результатов.
источник
biplot
командой в R и воспроизведенному на вашей фигуре с правой стороны: там облако точек стандартизировано, но стрелки имеют длины, соответствующие отклонениям.biplot
производит сscale=0
аргументом.