Я выполнил анализ основных компонентов (PCA) с помощью R, используя две разные функции ( prcomp
и princomp
), и заметил, что оценки PCA отличаются по знаку. Как это может быть?
Учти это:
set.seed(999)
prcomp(data.frame(1:10,rnorm(10)))$x
PC1 PC2
[1,] -4.508620 -0.2567655
[2,] -3.373772 -1.1369417
[3,] -2.679669 1.0903445
[4,] -1.615837 0.7108631
[5,] -0.548879 0.3093389
[6,] 0.481756 0.1639112
[7,] 1.656178 -0.9952875
[8,] 2.560345 -0.2490548
[9,] 3.508442 0.1874520
[10,] 4.520055 0.1761397
set.seed(999)
princomp(data.frame(1:10,rnorm(10)))$scores
Comp.1 Comp.2
[1,] 4.508620 0.2567655
[2,] 3.373772 1.1369417
[3,] 2.679669 -1.0903445
[4,] 1.615837 -0.7108631
[5,] 0.548879 -0.3093389
[6,] -0.481756 -0.1639112
[7,] -1.656178 0.9952875
[8,] -2.560345 0.2490548
[9,] -3.508442 -0.1874520
[10,] -4.520055 -0.1761397
Почему знаки ( +/-
) различаются для двух анализов? Если бы я тогда использовал главные компоненты PC1
и PC2
как предикторы в регрессии, то есть lm(y ~ PC1 + PC2)
это полностью изменило бы мое понимание влияния двух переменных в y
зависимости от того, какой метод я использовал! Как я мог тогда сказать, что это PC1
имеет, например, положительное влияние y
и PC2
, например, отрицательно y
?
Кроме того: если признак компонентов PCA не имеет смысла, верно ли это и для факторного анализа (FA)? Допустимо ли переворачивать (переворачивать) знак отдельных баллов компонентов PCA / FA (или нагрузок, как столбец матрицы нагрузки)?
источник
Ответы:
PCA - это простое математическое преобразование. Если вы измените знаки компонента (ов), вы не измените дисперсию, которая содержится в первом компоненте. Более того, когда вы меняете знаки, weights (
prcomp( ... )$rotation
) также меняет знак, поэтому интерпретация остается неизменной:шоу
и
pca2$loadings
показатьИтак, почему интерпретация остается прежней?
Вы выполняете регрессию PCA для
y
компонента 1. В первой версии (prcomp
), скажем, коэффициент является положительным: чем больше компонент 1, тем больше y. Что это означает, когда речь заходит об исходных переменных? Поскольку вес переменной 1 (1:10
в a) положительный, это показывает, что чем больше переменная 1, тем больше y.Теперь используйте вторую версию (
princomp
). Поскольку у компонента изменился знак, чем больше y, тем меньше компонента 1 - коэффициент y <для PC1 теперь отрицателен. Но так же и загрузка переменной 1; это означает, что чем больше переменная 1, тем меньше компонент 1, тем больше у - интерпретация одинакова.Возможно, самый простой способ увидеть это - использовать биплот.
шоу
Тот же биплот для второго варианта показывает
Как видите, изображения повернуты на 180 °. Однако соотношение между весами / нагрузками (красные стрелки) и точками данных (черные точки) точно такое же; Таким образом, интерпретация компонентов остается неизменной.
источник
princomp
. Поэтому во время проецирования мои проецируемые данные также отображаются в некоторых измерениях. Моя цель - сделать классификацию по коэффициентам. Знак все еще не имеет значения здесь?Этот вопрос спрашивает много на этом форуме, так что я хотел бы дополнить @ отличный ответ в январе с немного более общими соображениями.
Как в анализе главных компонентов (PCA), так и в факторном анализе (FA) мы используем исходные переменные для оценки нескольких скрытых компонентов (или скрытых переменных) . Эти скрытые компоненты приведены в баллах PCA или FA. Каждая исходная переменная представляет собой линейную комбинацию этих компонентов с некоторыми весами: например, первая исходная переменная может быть хорошо аппроксимирована дважды плюс три раза , так что . Если оценки стандартизированы, то эти веса ( и ) известны как нагрузки. Итак, неофициально можно сказать, чтоИкс1, х2, . , , Иксd Z1, z2, . , , ZК Икс1 Z1 Z2 Икс1≈ 2 з1+ 3 з2 2 3
Отсюда мы можем видеть, что если мы возьмем один скрытый компонент, например , и перевернем знак его оценок и нагрузок, то это не окажет влияния на результат (или интерпретацию), потому что - 1 ⋅ - 1 = 1.Z1
Вывод состоит в том, что для каждого компонента PCA или FA знак его оценок и нагрузок является произвольным и бессмысленным. Он может быть перевернут, но только если знак обоих баллов и нагрузок поменялся местами одновременно.
источник
princomp
. Поэтому во время проецирования мои проецируемые данные также отображаются в некоторых измерениях. Моя цель - сделать классификацию по коэффициентам. Знак все еще не имеет значения здесь?источник