Я пытался воспроизвести некоторые исследования (с использованием PCA) из SPSS в R. По моему опыту, principal()
функция из пакета psych
была единственной функцией, которая приблизилась (или, если моя память мне не изменяет), чтобы соответствовать выводу. Чтобы соответствовать тем же результатам, что и в SPSS, мне пришлось использовать параметр principal(..., rotate = "varimax")
. Я видел, как в газетах говорилось о том, как они делали PCA, но на основе результатов SPSS и использования ротации это больше похоже на факторный анализ.
Вопрос: PCA, даже после ротации (использования varimax
), все еще PCA? У меня сложилось впечатление, что это может быть факторный анализ ... Если нет, то какие детали я упускаю?
r
spss
pca
factor-analysis
factor-rotation
Роман Луштрик
источник
источник
principal
функция, о которой вы спрашивали. Если его ответ действительно ответил на ваш вопрос, то, возможно, ваш вопрос сформулирован недостаточно; вы бы рассмотрели редактирование? В противном случае я считаю, что ответ докторантуры гораздо ближе к фактическому ответу на ваш вопрос. Обратите внимание, что вы можете изменить принятый ответ в любое время.Ответы:
Этот вопрос в основном касается определений PCA / FA, поэтому мнения могут отличаться. Мое мнение таково, что PCA + varimax не следует называть PCA или FA, но довольно явно упоминается, например, как «PCA с ротацией varimax».
Я должен добавить, что это довольно запутанная тема. В этом ответе я хочу объяснить , что поворот на самом деле является ; это потребует некоторой математики. Случайный читатель может перейти непосредственно к иллюстрации. Только тогда мы сможем обсудить, следует ли называть ротацию PCA + «PCA».
Одной из ссылок является книга Джоллиффа «Анализ основных компонентов», раздел 11.1 «Ротация основных компонентов», но я считаю, что это может быть более понятным.
Пусть - матрица данных которую мы считаем центрированной. PCA составляет ( см. Мой ответ здесь ) разложение по сингулярному значению: . Существует два эквивалентных, но дополняющих друг друга представления об этой декомпозиции: более «PCA-стиль» «проекция» и более FA-стиль «скрытые переменные». n × p X = U S V ⊤X n×p X=USV⊤
Согласно представлению в стиле PCA, мы нашли группу ортогональных направлений (это собственные векторы ковариационной матрицы, также называемые «главными направлениями» или «осями») и «главные компоненты» ( также называемые основным компонентом «баллы») являются проекциями данных по этим направлениям. Основные компоненты некоррелированы, первый имеет максимально возможную дисперсию и т. Д. Мы можем написать:U S X = U S ⋅ V ⊤ = Счета ⋅ Основные направления .V US
Согласно представлению в стиле FA, мы обнаружили некоррелированные «скрытые факторы» дисперсии единиц, которые приводят к наблюдаемым переменным через «нагрузки». Действительно, являются стандартизованными главными компонентами (некоррелированными и с единичной дисперсией), и если мы определим нагрузки как , затем (Обратите внимание, что .) Оба представления эквивалентны. Обратите внимание, что нагрузки являются собственными векторами, масштабированными по соответствующим собственным значениям ( являются собственными значениями ковариационной матрицы).L=VS/ √U˜=n−1−−−−−√U X= √L=VS/n−1−−−−−√ S ⊤=SS/ √
(Я должен добавить в скобках, что PCA FA≠ ; FA явно нацелена на поиск скрытых факторов, которые линейно отображаются на наблюдаемые переменные с помощью нагрузок; он более гибкий, чем PCA, и дает разные нагрузки. Именно поэтому я предпочитаю называть вышеупомянутые «Представление в стиле FA на PCA», а не FA, хотя некоторые люди считают это одним из методов FA.)
Теперь, что делает вращение? Например, ортогональное вращение, например, варимакс. Во-первых, он рассматривает только компонентов, а именно:Тогда он принимает квадрат ортогональной матрицы и вставляет в это разложение: где повернутые нагрузки определяются какX ≈ U k S k Vk<p
Обратите внимание, что вращаются: (1) стандартизированные оценки, (2) нагрузки. Но не сырые оценки и не основные направления! Таким образом, вращение происходит в скрытом пространстве, а не в исходном пространстве. Это абсолютно важно.
С точки зрения стиля FA, ничего особенного не произошло. (A) Латентные факторы все еще некоррелированы и стандартизированы. (B) Они по-прежнему отображаются на наблюдаемые переменные посредством (повернутых) нагрузок. (C) Величина дисперсии, получаемой каждым компонентом / фактором, определяется суммой квадратов значений соответствующего столбца нагрузок в . (D) Геометрически, нагрузки все еще охватывают то же самое мерное подпространство в (подпространство, охватываемое первыми собственными векторами PCA). (E) Аппроксимация к и ошибка восстановления не изменились вообще. (F) Ковариационная матрица все еще аппроксимируется одинаково хорошо: k R p k XLrot k Rp k X
Но точка зрения в стиле PCA практически рухнула. Поворотные нагрузки больше не соответствуют ортогональным направлениям / осям в , т. Е. Столбцы не являются ортогональными! Хуже того, если вы [ортогонально] проецируете данные на направления, заданные повернутыми нагрузками, вы получите коррелированные (!) Проекции и не сможете восстановить оценки. [Вместо этого, чтобы вычислить стандартизированные оценки после поворота, нужно умножить матрицу данных на псевдообратную загрузку . Кроме того, можно просто повернуть исходные стандартизированные оценки с помощью матрицы вращения:L r o t ˜ U r o t = X ( L + r o t ) ⊤ ˜ U r o t = ˜ U T kkRp Lrot U˜rot=X(L+rot)⊤ U˜rot=U˜T ] Кроме того, повернутые компоненты последовательно не фиксируют максимальное количество отклонений: дисперсия перераспределяется между компонентами (даже хотя все повернутых компонентов отражают столько же дисперсии, сколько все исходных главных компонентов).k k
Вот иллюстрация. Данные представляют собой двухмерный эллипс, вытянутый вдоль главной диагонали. Первое главное направление - главная диагональ, второе ортогонально ей. Векторы нагрузки PCA (собственные векторы, масштабированные по собственным значениям) показаны красным, указывая в обоих направлениях, а также растянуты на постоянный коэффициент для видимости. Затем я применил ортогональное вращение на к нагрузкам. Результирующие векторы нагрузки показаны пурпурным цветом. Обратите внимание, что они не ортогональны (!).30∘
Интуиция в стиле FA здесь выглядит следующим образом: представьте себе «скрытое пространство», в котором точки заполняют небольшой круг (происходят из двумерного гауссиана с единичными отклонениями). Это распределение точек затем растягивается вдоль нагрузок PCA (красный), чтобы стать эллипсом данных, который мы видим на этом рисунке. Однако такое же распределение точек можно вращать и затем растягивать вдоль повернутых нагрузок PCA (пурпурный), чтобы получить тот же эллипс данных .
[Чтобы действительно увидеть, что ортогональное вращение нагрузок - это вращение , нужно взглянуть на биплот PCA; там векторы / лучи, соответствующие исходным переменным, будут просто вращаться.]
Давайте подведем итоги. После ортогонального вращения (такого как варимакс) оси с "вращаемыми главными" не являются ортогональными, и ортогональные проекции на них не имеют смысла. Так что лучше отбросить всю эту точку зрения осей / проекций. Было бы странно все еще называть это PCA (что касается проекций с максимальной дисперсией и т. Д.).
С точки зрения стиля FA, мы просто повернули наши (стандартизированные и некоррелированные) скрытые факторы, что является действительной операцией. В ФА нет «проекций»; вместо этого скрытые факторы генерируют наблюдаемые переменные посредством нагрузок. Эта логика все еще сохраняется. Однако мы начали с основных компонентов, которые на самом деле не являются факторами (так как PCA - это не то же самое, что FA). Так что было бы странно называть это также FA.
Вместо того, чтобы обсуждать, нужно ли «называть» это, скорее, PCA или FA, я бы посоветовал тщательно определить точную используемую процедуру: «PCA, сопровождаемый поворотом варимакса».
Пост скриптум. Это является возможным рассмотреть альтернативную процедуру вращения, где вставляется между и . Это будет вращать необработанные оценки и собственные векторы (вместо стандартизированных оценок и нагрузок). Самая большая проблема с этим подходом состоит в том, что после такой «ротации» результаты больше не будут некоррелированными, что является довольно фатальным для PCA. Это можно сделать, но это не так, как обычно понимают и применяют вращения.U S V ⊤TT⊤ US V⊤
источник
PCA loading vectors... are shown in red
,stretched along the rotated PCA loadings (magenta)
. Интересно, как «нагрузки» или их «вектор» могут быть показаны в виде осей на диаграмме рассеяния данных. Не могли бы вы, пожалуйста, прояснить это? А идея "растяжения"? Благодарю.Анализ основных компонентов (PCA) и анализ общего фактора (CFA) являются различными методами. Часто они дают схожие результаты, и PCA используется в качестве метода извлечения по умолчанию в процедурах SPSS Factor Analysis. Это, несомненно, приводит к большой путанице по поводу различия между ними.
Суть в том, что это две разные модели, концептуально. В PCA компоненты представляют собой реальные ортогональные линейные комбинации, которые максимизируют общую дисперсию. В FA факторы представляют собой линейные комбинации, которые максимизируют общую часть дисперсии - лежащие в основе «скрытые конструкции». Вот почему ФА часто называют «анализом общего фактора». FA использует различные процедуры оптимизации, и результат, в отличие от PCA, зависит от используемой процедуры оптимизации и исходных точек для этих процедур. Просто нет единственного уникального решения.
В R функция factanal () предоставляет CFA максимальное извлечение правдоподобия. Таким образом, вы не должны ожидать, что он воспроизведет результат SPSS, основанный на извлечении PCA. Это просто не та же модель или логика. Я не уверен, что вы получите тот же результат, если вы используете извлечение максимального правдоподобия SPSS, так как они могут не использовать тот же алгоритм.
К лучшему или худшему в R, вы можете, однако, воспроизвести смешанный «факторный анализ», который SPSS предоставляет по умолчанию. Вот процесс в R. С помощью этого кода я могу воспроизвести результат «Факторного анализа» основного компонента SPSS, используя этот набор данных. (За исключением знака, который является неопределенным). Этот результат также может быть повернут с использованием любого из доступных методов вращения Rs.
источник
prcomp
илиprincomp
делает по сравнению со смешанным подходом SPSS? Что SPSS на самом деле делает извлечением?zz <- scale(attitude,T,T)
иpc1 <- zz %*% solve(cor(attitude),lamba[,1])
. Где лямбда - это результат последней строки примера @Brett Magills.Этот ответ состоит в том, чтобы представить в форме диаграммы пути то, о чем @amoeba рассуждает в своем глубоком (но немного сложном) ответе в этой теме (я с этим согласен на 95%) и как они мне кажутся ,
PCA в его правильной, минимальной форме представляет собой специфическое ортогональное вращение коррелированных данных в некоррелированную форму, причем главные компоненты последовательно смещают все меньше и меньше общей изменчивости. Если уменьшение размерности - это все, что мы хотим, мы обычно не вычисляем нагрузки и то, что они тянут за ними. Мы довольны (сырье) основных показателей компонентов . [Обратите внимание, что обозначения на диаграмме точно не соответствуют @ amoeba, - я придерживаюсь того, что я принимаю в некоторых других моих ответах.]P
На диаграмме я беру простой пример двух переменных
p=2
и использую обе выделенные главные компоненты. Хотя мы обычно оставляем лишь несколько первыхm<p
компонентов, для теоретического вопроса, который мы рассматриваем («Является ли PCA с ротацией PCA или что?»), Не имеет значения, сохранитьm
или всеp
из них; по крайней мере, в моем конкретном ответе.Хитрость загрузок заключается в том, чтобы вытащить шкалу (величину, изменчивость, инерцию ) из компонентов (необработанные оценки) и на коэффициенты (собственные векторы), оставив первые в виде «каркаса» (стандартизированный pr .компонентные оценки), а последний должен быть мясистым (нагрузки). Вы восстанавливаете данные одинаково хорошо с обоими: . Но нагрузки открывают перспективы: (i) интерпретировать компоненты; (ii) вращаться; (iii) восстановить корреляции / ковариации переменных. Это все из-за того, что изменчивость данных была записана в загрузках, как и их загрузка.V P z A X = P V ′ = P z A ′L V Pz A X=PV′=PzA′
И они могут вернуть эту нагрузку обратно в точки данных в любое время - сейчас или после ротации . Если мы представляем себе ортогональное вращение, такое как варимакс, это означает, что мы хотим, чтобы компоненты оставались некоррелированными после вращения. Только данные со сферической ковариационной матрицей, повернутые ортогонально, сохраняют некоррелированность. И вуаля, стандартизированные главные компоненты (которые в машинном обучении часто называют «белыми данными PCA») - это магические данные ( на самом деле пропорциональны левому, то есть собственным векторам строк данных). Пока мы находимся в матрице вращения варимаксаP zPz Pz Q чтобы облегчить интерпретацию нагрузок, точки данных пассивно ожидают своей целомудренной сферичности и идентичности (или «белизны»).
После того, как найден, поворот на него эквивалентен обычному способу вычисления стандартизированных оценок главных компонентов через обобщенную обратную матрицу нагрузки, - на этот раз повернутых нагрузок, (см. Диаграмму ). Результирующие главные компоненты, , не коррелированы, как мы и хотели, плюс данные восстанавливаются ими так же хорошо, как и до вращения: . Затем мы можем их вернуть их масштаб осажденный (и , соответственно , повернутый) в - к unstandardize их: .P z A r C z X = P z A ′ = C z A ′ r A r CQ Pz Ar Cz X=PzA′=CzA′r Ar C
Нам следует помнить, что «вращающиеся от варимакса главные компоненты» больше не являются главными компонентами: я использовал обозначения Cz, C вместо Pz, P, чтобы подчеркнуть это. Они просто "компоненты". Основные компоненты уникальны, но компонентов может быть много. Кроме Varimax Повороты даст другие новые переменные также называемые компоненты , а также некоррелированных, кроме наших тех.C
Кроме того, изменяемые по оси Вермакса (или иным образом ортогонально вращающиеся) главные компоненты (теперь просто «компоненты»), хотя и остаются некоррелированными, ортогональными, не подразумевают, что их нагрузки также все еще ортогональны. Столбцы взаимно ортогональны (как и собственные векторы ), но не являются столбцами (см. Также сноску здесь ).V A rA V Ar
И наконец - вращение необработанных главных компонентов с нашим не является полезным действием. Мы получим некоторые коррелированные переменные с проблемным значением. появилось так, чтобы оптимизировать (каким-то особым образом) конфигурацию нагрузок, которые впитали в них всю шкалу . никогда не обучался вращать точки данных со всей оставшейся шкалой. Вращение с будет эквивалентно вращению собственных векторов с (вQP Q Q Q P Q V Q V r " C " = X V r"C" Q Q P Q V Q Vr ) и затем вычисление необработанных оценок компонентов как . Эти "пути" отмечены @amoeba в их PostScriptum."C"=XVr
Эти последние действия (по большей части бессмысленные) напоминают нам о том, что собственные векторы, а не только нагрузки, можно вращать в целом. Например, к ним можно применить процедуру varimax, чтобы упростить их структуру. Но поскольку собственные векторы не так полезны для интерпретации значения компонентов, как нагрузки, вращение собственных векторов выполняется редко.
Таким образом, PCA с последующим вращением varimax (или другой)
Я не ссылался на факторный анализ в этом ответе. Мне кажется, что использование @ amoeba слова «скрытое пространство» немного рискованно в контексте задаваемого вопроса. Однако я согласен с тем, что аналитическое вращение PCA + можно назвать «представлением в стиле FA на PCA».
источник
В
psych::principal()
вы можете делать различные типы поворотов / преобразований в ваш извлеченный основной компонент (ов) или «» ПКА «» , используяrotate=
аргумент, как:"none"
,"varimax"
( по умолчанию),"quatimax"
,"promax"
,"oblimin"
,"simplimax"
, и"cluster"
. Вы должны эмпирически решить, какой из них должен иметь смысл в вашем случае, если это необходимо, в зависимости от вашей собственной оценки и знания предмета исследования. Ключевой вопрос, который может дать вам подсказку: какой из них более понятен (опять же, если необходимо)?В справке вы также можете найти следующее:
источник
Насколько я понимаю, различие между PCA и Факторным анализом в первую очередь заключается в том, есть ли ошибка. Таким образом, PCA может и будет достоверно представлять данные, в то время как факторный анализ менее точен в отношении данных, на которых он обучен, но пытается представить основные тенденции или общность данных. При стандартном подходе PCA не вращается, но математически это возможно, поэтому люди делают это время от времени. Я согласен с комментаторами в том, что «смысл» этих методов несколько понятен, и, вероятно, разумно быть уверенным, что используемая вами функция выполняет то, что вы намерены - например, как вы заметили, R имеет некоторые функции, которые выполняют PCA другого типа, чем пользователи SPSS, знакомые с.
источник
Благодаря хаосу в определениях обоих они фактически являются синонимами. Не верьте словам и загляните в доки, чтобы найти уравнения.
источник
Хотя на этот вопрос уже принят ответ, я хотел бы добавить кое-что к сути вопроса.
«PCA» - если я правильно помню - означает «анализ основных компонентов»; так что, пока вы анализируете главные компоненты, будь то без вращения или с вращением, мы все еще находимся в анализе «главных компонентов» (которые были найдены с помощью соответствующей исходной матричной декомпозиции).
Я бы сформулировал это после «varimax» -вращения на первых двух основных компонентах, что у нас есть «varimax-решение двух первых ПК» (или что-то еще), но все еще в рамках анализа главных компонентов, или короче, находятся в рамках "pca".
Чтобы сделать мою точку зрения еще яснее: я не чувствую, что простой вопрос ротации ставит проблему различия между ОДВ и КФА (последнее упомянуто / введено в проблему, например, в ответе Бретта)
источник
Я нашел это наиболее полезным: Abdi & Williams, 2010, Анализ основных компонентов .
(см. статью для определения Q).
источник