Traté de reproducir algunas investigaciones (usando PCA) de SPSS en R. En mi experiencia, la principal()
función del paquete psych
fue la única función que se acercó (o si mi memoria me funciona correctamente) para que coincida con la salida. Para coincidir con los mismos resultados que en SPSS, tuve que usar el parámetro principal(..., rotate = "varimax")
. He visto documentos hablar sobre cómo hicieron PCA, pero basado en la salida de SPSS y el uso de la rotación, suena más como un análisis factorial.
Pregunta: ¿PCA, incluso después de la rotación (uso varimax
), sigue siendo PCA? Tenía la impresión de que esto podría ser un análisis factorial ... En caso de que no sea así, ¿qué detalles me estoy perdiendo?
r
spss
pca
factor-analysis
factor-rotation
Roman Luštrik
fuente
fuente
principal
función por la que preguntó. Si su respuesta efectivamente respondió a su pregunta, entonces tal vez su pregunta no esté formulada adecuadamente; considerarías editar? De lo contrario, encuentro que la respuesta del doctorado está mucho más cerca de responder realmente a su pregunta. Tenga en cuenta que puede cambiar la respuesta aceptada en cualquier momento.Respuestas:
Esta pregunta se trata principalmente de definiciones de PCA / FA, por lo que las opiniones pueden diferir. Mi opinión es que PCA + varimax no debería llamarse PCA o FA, sino que se denomina explícitamente, por ejemplo, "PCA rotada con varimax".
Debo agregar que este es un tema bastante confuso. En esta respuesta quiero explicar qué es realmente una rotación ; Esto requerirá algunas matemáticas. Un lector casual puede pasar directamente a la ilustración. Solo entonces podemos discutir si la rotación PCA + debería o no llamarse "PCA".
Una referencia es el libro de Jolliffe "Análisis de componentes principales", sección 11.1 "Rotación de componentes principales", pero creo que podría ser más claro.
Sea una matriz de datos que suponemos que está centrada. PCA equivale ( vea mi respuesta aquí ) a una descomposición de valor singular: . Hay dos vistas equivalentes pero complementarias en esta descomposición: una vista de "proyección" más al estilo PCA y una vista de "variables latentes" más al estilo FA. n × p X = U S V ⊤X n×p X=USV⊤
Según la vista de estilo PCA, encontramos un montón de direcciones ortogonales (estos son vectores propios de la matriz de covarianza, también llamados "direcciones principales" o "ejes") y "componentes principales" ( también llamados componentes principales "puntajes") son proyecciones de los datos en estas direcciones. Los componentes principales no están correlacionados, el primero tiene la máxima varianza posible, etc. Podemos escribir:U S X = U S ⋅ V ⊤ = Puntajes ⋅ Direcciones principales .V US
De acuerdo con la vista de estilo FA, encontramos algunos "factores latentes" de varianza unitaria no correlacionados que dan lugar a las variables observadas a través de "cargas". De hecho, son componentes principales estandarizados (no correlacionados y con varianza unitaria), y si definimos las cargas como , luego (Tenga en cuenta que .) Ambas vistas son equivalentes. Tenga en cuenta que las cargas son vectores propios escalados por los valores propios respectivos ( son valores propios de la matriz de covarianza).L=VS/ √U˜=n−1−−−−−√U X= √L=VS/n−1−−−−−√
(Debo agregar entre paréntesis que PCA FA≠ ; FA apunta explícitamente a encontrar factores latentes que se asignan linealmente a las variables observadas a través de cargas; es más flexible que PCA y produce diferentes cargas. Es por eso que prefiero llamar a lo anterior "Vista de estilo FA en PCA" y no FA, a pesar de que algunas personas lo consideran uno de los métodos FA).
Ahora, ¿qué hace una rotación? Por ejemplo, una rotación ortogonal, como varimax. Primero, considera solo componentes, es decir:Luego toma una matriz ortogonal cuadrada , y conecta en esta descomposición: donde las cargas rotadas están dadas pork<p
Tenga en cuenta que lo que se rota son: (1) puntajes estandarizados, (2) cargas. ¡Pero no los puntajes brutos y no las direcciones principales! Entonces la rotación ocurre en el espacio latente , no en el espacio original. Esto es absolutamente crucial.
Desde el punto de vista de estilo FA, no pasó mucho. (A) Los factores latentes aún no están correlacionados y estandarizados. (B) Todavía se asignan a las variables observadas a través de cargas (rotadas). (C) La cantidad de varianza capturada por cada componente / factor viene dada por la suma de los valores al cuadrado de la columna de cargas correspondiente en . (D) Geométricamente, las cargas aún abarcan el mismo subespacio dimensional en (el subespacio abarcado por los primeros vectores propios de PCA). (E) La aproximación a y el error de reconstrucción no cambiaron en absoluto. (F) La matriz de covarianza se sigue aproximando igualmente bien: k R p k XLrot k Rp k X
Pero el punto de vista estilo PCA prácticamente se ha derrumbado. ¡Las cargas rotadas ya no corresponden a las direcciones / ejes ortogonales en , es decir, las columnas de no son ortogonales! Peor aún, si [ortogonalmente] proyecta los datos en las direcciones dadas por las cargas rotadas, obtendrá proyecciones correlacionadas (!) Y no podrá recuperar los puntajes. [En cambio, para calcular los puntajes estandarizados después de la rotación, uno necesita multiplicar la matriz de datos con el pseudoinverso de las cargas . Alternativamente, uno simplemente puede rotar las puntuaciones estandarizadas originales con la matriz de rotación: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 ] Además, los componentes rotados no capturan sucesivamente la cantidad máxima de varianza: la varianza se redistribuye entre los componentes (incluso aunque todos los componentes rotados capturan exactamente tanta varianza como todos los componentes principales originales).k k
Aquí hay una ilustración. Los datos son una elipse 2D estirada a lo largo de la diagonal principal. La primera dirección principal es la diagonal principal, la segunda es ortogonal a ella. Los vectores de carga de PCA (vectores propios escalados por los valores propios) se muestran en rojo, apuntando en ambas direcciones y también estirados por un factor constante de visibilidad. Luego apliqué una rotación ortogonal de a las cargas. Los vectores de carga resultantes se muestran en magenta. Tenga en cuenta que no son ortogonales (!).30∘
Una intuición de estilo FA aquí es la siguiente: imagine un "espacio latente" donde los puntos llenan un pequeño círculo (provienen de un Gaussiano 2D con variaciones de unidades). Esta distribución de puntos se estira a lo largo de las cargas de PCA (rojo) para convertirse en la elipse de datos que vemos en esta figura. Sin embargo, la misma distribución de puntos puede rotarse y luego estirarse a lo largo de las cargas de PCA rotadas (magenta) para convertirse en la misma elipse de datos .
[Para ver realmente que una rotación ortogonal de cargas es una rotación , uno necesita mirar un biplot PCA; allí los vectores / rayos correspondientes a las variables originales simplemente rotarán.]
Hagamos un resumen. Después de una rotación ortogonal (como varimax), los ejes "principal girado" no son ortogonales, y las proyecciones ortogonales sobre ellos no tienen sentido. Por lo tanto, uno debería abandonar este punto de vista completo de ejes / proyecciones. Sería extraño seguir llamándolo PCA (que se trata de proyecciones con máxima varianza, etc.).
Desde el punto de vista del estilo FA, simplemente rotamos nuestros factores latentes (estandarizados y no correlacionados), lo cual es una operación válida. No hay "proyecciones" en FA; en cambio, los factores latentes generan las variables observadas a través de cargas. Esta lógica aún se conserva. Sin embargo, comenzamos con los componentes principales, que en realidad no son factores (ya que PCA no es lo mismo que FA). Por lo tanto, sería extraño llamarlo FA también.
En lugar de debatir si uno "debería" llamarlo PCA o FA, sugeriría ser meticuloso al especificar el procedimiento exacto utilizado: "PCA seguido de una rotación varimax".
Postscriptum. Se es posible considerar un procedimiento de rotación alternativa, donde se inserta entre y . Esto rotaría los puntajes brutos y los vectores propios (en lugar de puntajes y cargas estandarizados). El mayor problema con este enfoque es que después de tal "rotación", los puntajes ya no estarán correlacionados, lo cual es bastante fatal para PCA. Uno puede hacerlo, pero no es así como generalmente se entienden y aplican las rotaciones.U S V ⊤TT⊤ US V⊤
fuente
PCA loading vectors... are shown in red
,stretched along the rotated PCA loadings (magenta)
. Me pregunto cómo podrían mostrarse las "cargas" o su "vector" como ejes en el diagrama de dispersión de datos. ¿Puedes, por favor, dejarlo más claro? ¿Y la idea de "estiramiento"? Gracias.El análisis de componentes principales (PCA) y el análisis de factores comunes (CFA) son métodos distintos. A menudo, producen resultados similares y PCA se utiliza como método de extracción predeterminado en las rutinas de análisis factorial de SPSS. Esto indudablemente genera mucha confusión sobre la distinción entre los dos.
La conclusión es que estos son dos modelos diferentes, conceptualmente. En PCA, los componentes son combinaciones lineales ortogonales reales que maximizan la varianza total. En FA, los factores son combinaciones lineales que maximizan la porción compartida de la varianza - "construcciones latentes" subyacentes. Es por eso que FA a menudo se llama "análisis de factores comunes". FA utiliza una variedad de rutinas de optimización y el resultado, a diferencia de PCA, depende de la rutina de optimización utilizada y los puntos de partida para esas rutinas. Simplemente no hay una única solución única.
En R, la función factanal () proporciona CFA con una extracción de máxima probabilidad. Por lo tanto, no debe esperar que reproduzca un resultado SPSS basado en una extracción de PCA. Simplemente no es el mismo modelo o lógica. No estoy seguro de si obtendría el mismo resultado si usara la extracción de máxima verosimilitud de SPSS, ya que es posible que no usen el mismo algoritmo.
Sin embargo, para bien o para mal en R, puede reproducir el "análisis factorial" mezclado que SPSS proporciona como predeterminado. Aquí está el proceso en R. Con este código, puedo reproducir el resultado del "Análisis factorial" del componente principal de SPSS utilizando este conjunto de datos. (Con la excepción del signo, que es indeterminado). Ese resultado también podría rotarse utilizando cualquiera de los métodos de rotación disponibles de Rs.
fuente
prcomp
oprincomp
hacen en comparación con el enfoque mixto de SPSS? ¿Qué hace realmente SPSS por extracción?zz <- scale(attitude,T,T)
ypc1 <- zz %*% solve(cor(attitude),lamba[,1])
. Donde lambda es el resultado de la última línea del ejemplo de @Brett Magills.Esta respuesta es presentar, en forma de diagrama de ruta, cosas sobre las que @amoeba razonó en su respuesta profunda (pero un poco complicada) en este hilo (estoy un poco de acuerdo con esto en un 95%) y cómo me parecen .
PCA en su forma mínima adecuada es la rotación ortogonal específica de los datos correlacionados a su forma no correlacionada, con los componentes principales desnatados secuencialmente cada vez menos de la variabilidad general. Si la reducción de dimensionalidad es todo lo que queremos, generalmente no calculamos las cargas y lo que sea que arrastran después de ellas. Estamos contentos con los principales puntuaciones de los componentes (crudos) . [Tenga en cuenta que las anotaciones en el cuadro no siguen con precisión a @ ameeba, me apego a lo que adopto en algunas de mis otras respuestas.]P
En el gráfico, tomo un ejemplo simple de dos variables
p=2
y uso ambos componentes principales extraídos. Aunque generalmente conservamos solo unos pocos primerosm<p
componentes, para la pregunta teórica que estamos considerando ("¿Es PCA con rotación un PCA o qué?") No importa si mantenerlosm
o todosp
ellos; al menos en mi respuesta particular.El truco de las cargas es extraer la escala (magnitud, variabilidad, inercia ) de los componentes (puntajes brutos) y colocarla en los coeficientes (vectores propios) dejando el primero como "marco" (pr estandarizado . puntajes de componentes) y este último para ser carnoso (cargas). Restaura los datos igualmente bien con ambos: . Pero las cargas abren perspectivas: (i) interpretar los componentes; (ii) ser rotado; (iii) restaurar las correlaciones / covarianzas de las variables. Todo esto se debe al hecho de que la variabilidad de los datos se ha escrito en cargas, como su carga.V P z A X = P V ′ = P z A ′L V Pz A X=PV′=PzA′
Y pueden devolver esa carga a los puntos de datos en cualquier momento, ahora o después de la rotación . Si concebimos una rotación ortogonal como varimax, eso significa que queremos que los componentes permanezcan sin correlacionar después de la rotación. Solo los datos con matriz de covarianza esférica, cuando se giran ortogonalmente, conservan la falta de correlación. Y voila, los componentes principales estandarizados (que en el aprendizaje automático a menudo se denominan "datos blanqueados por PCA") son esos datos mágicos ( son realmente proporcionales a la izquierda, es decir, vectores propios de fila de los datos). Mientras buscamos la matriz de rotación varimaxP z QPz Pz Q para facilitar la interpretación de las cargas, los puntos de datos esperan pasivamente en su casta esfericidad e identidad (o "blancura").
Después de encontrar , la rotación de es equivalente al cálculo de la forma habitual de las puntuaciones estandarizadas de los componentes principales a través del inverso generalizado de la matriz de carga, esta vez de las cargas rotadas , (consulte el gráfico ) Los componentes principales rotados varimax resultantes, no están correlacionados, como queríamos, además de que los datos son restaurados tan bien como antes de la rotación: . Podemos entonces devolverles su escala depositado (y, en consecuencia girado) en - unstandardize a ellas: .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
Debemos tener en cuenta que los "componentes principales rotados por varimax" ya no son componentes principales : utilicé la notación Cz, C, en lugar de Pz, P, para enfatizarlo. Son solo "componentes". Los componentes principales son únicos, pero los componentes pueden ser muchos. Las rotaciones distintas de varimax producirán otras nuevas variables también llamados componentes y no correlacionadas, además de nuestros queridos.C
Además, los componentes principales rotados con varimax (o rotados ortogonalmente de otro modo) (ahora solo "componentes"), aunque permanecen sin correlación, ortogonales, no implican que sus cargas también sean ortogonales. Las columnas de son mutuamente ortogonales (como lo fueron los vectores propios ), pero no las columnas de (véase también la nota al pie de página aquí ).V A rA V Ar
Y finalmente, rotar los componentes principales sin procesar con nuestro no es una acción útil. Obtendremos algunas variables correlacionadas con un significado problemático. parecía optimizar (de alguna manera específica) la configuración de las cargas que habían absorbido toda la escala en ellas . nunca fue entrenado para rotar puntos de datos con toda la escala restante en ellos. La rotación con será equivalente a la rotación de vectores propios con (enQ " C " Q Q P Q V Q V r " C " = X V rP Q "C" Q Q P Q V Q Vr ) y luego calcular las puntuaciones de los componentes sin procesar como . Estos "caminos" señalados por @amoeba en su Postscriptum."C"=XVr
Estas últimas acciones esbozadas (sin sentido en su mayor parte) nos recuerdan que los vectores propios, no solo las cargas, podrían rotarse, en general. Por ejemplo, el procedimiento varimax podría aplicarse a ellos para simplificar su estructura. Pero dado que los vectores propios no son tan útiles para interpretar el significado de los componentes como lo son las cargas, la rotación de los vectores propios rara vez se realiza.
Por lo tanto, PCA con rotación varimax (u otra) posterior es
No me referí al análisis factorial en esta respuesta. Me parece que el uso de la palabra "espacio latente" en @ ameba es un poco arriesgado en el contexto de la pregunta formulada. Sin embargo, coincidiré en que la rotación analítica PCA + podría llamarse " vista de estilo FA en PCA".
fuente
En
psych::principal()
lo que puedes hacer diferentes tipos de rotaciones / transformaciones a su principal componente extraído (s) '' o '' PC utilizando elrotate=
argumento, como:"none"
,"varimax"
(por defecto),"quatimax"
,"promax"
,"oblimin"
,"simplimax"
, y"cluster"
. Debe decidir empíricamente cuál debería tener sentido en su caso, si es necesario, dependiendo de su propia evaluación y conocimiento del tema bajo investigación. Una pregunta clave que podría darle una pista: ¿cuál es más interpretable (de nuevo si es necesario)?En la ayuda puede encontrar lo siguiente también útil:
fuente
Entiendo que la distinción entre PCA y análisis factorial se basa principalmente en si existe un término de error. Por lo tanto, la PCA puede representar fielmente los datos, mientras que el análisis factorial es menos fiel a los datos en los que está capacitado, pero intenta representar las tendencias subyacentes o la comunidad en los datos. Bajo un enfoque estándar, la PCA no se rota, pero es matemáticamente posible hacerlo, por lo que la gente lo hace de vez en cuando. Estoy de acuerdo con los comentaristas en que el "significado" de estos métodos está en juego y que probablemente sea prudente asegurarse de que la función que está utilizando hace lo que pretende, por ejemplo, como nota que R tiene algunas funciones que realizan un tipo diferente de PCA que los usuarios de SPSS están familiarizados.
fuente
Gracias al caos en las definiciones de ambos, son efectivamente sinónimos. No creas palabras y mira profundamente en los muelles para encontrar las ecuaciones.
fuente
Aunque esta pregunta ya tiene una respuesta aceptada, me gustaría agregar algo al punto de la pregunta.
"PCA", si recuerdo correctamente, significa "análisis de componentes principales"; por lo tanto, siempre que esté analizando los componentes principales, ya sea sin rotación o con rotación, todavía estamos en el análisis de los "componentes principales" (que se encontraron mediante la descomposición inicial de la matriz adecuada).
Formularía que después de la rotación "varimax" en los dos primeros componentes principales, tenemos la "solución varimax de los dos primeros PC" (o algo más), pero aún estamos en el marco del análisis de componentes principales, o más cortos, están en el marco de "pca".
Para aclarar aún más mi punto: no creo que la simple cuestión de la rotación introduzca el problema de distinguir entre EFA y CFA (este último mencionado / introducido en el problema, por ejemplo, en la respuesta de Brett)
fuente
Encontré que esto es lo más útil: Abdi y Williams, 2010, Análisis de componentes principales .
(Ver el documento para la definición de Q).
fuente