Tengo un conjunto de datos que consta de 717 observaciones (filas) que se describen mediante 33 variables (columnas). Los datos se estandarizan mediante la calificación z de todas las variables. No hay dos variables que sean linealmente dependientes ( ). También he eliminado todas las variables con muy baja varianza (menos de ). La siguiente figura muestra la matriz de correlación correspondiente (en valores absolutos).0.1
Cuando intento ejecutar el análisis factorial usando factoran
en Matlab de la siguiente manera:
[Loadings1,specVar1,T,stats] = factoran(Z2,1);
Recibo el siguiente error:
The data X must have a covariance matrix that is positive definite.
¿Podría decirme dónde está el problema? ¿Se debe a la baja dependencia mutua entre las variables utilizadas? Además, ¿qué puedo hacer al respecto?
Mi matriz de correlación:
eig(cov(Z2))
) Sospecho firmemente que algunos de ellos son muy pequeños.Z2
matriz? Si le faltan valores en sus datos, la eliminación por pares puede hacer que la matriz se vuelva no reversible cuando se calculan las diferentes correlaciones en esa matriz utilizando diferentes submuestras de datos.Respuestas:
Definamos la matriz de correlación por . Dado que es positivo semi-definido, pero no positivo definido, su descomposición espectral se parece a donde las columnas de consisten en vectores propios ortonormales de y 0 \ end {pmatrix} es una matriz diagonal que contiene los valores propios correspondientes a los vectores propios en . Algunos de esos sonC C=QDQ−1, Q C D=⎛⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜λ10⋮⋮⋮⋮00λ2⋱⋯⋯⋱⋱⋱⋯⋯⋱λn⋱⋯⋯⋱0⋱⋯⋯⋱⋱00⋮⋮⋮⋮00⎞⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟ Q 0 . Además, es el rango de .n C
Una manera simple de restaurar la definición positiva es establecer los valores -eigen en algún valor que sea numéricamente distinto de cero, por ejemplo,Por lo tanto, configure donde Entonces,0 λn+1,λn+2,...=10−15. C~=QD~Q−1, D~=⎛⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜λ10⋮⋮⋮⋮00λ2⋱⋯⋯⋱⋱⋱⋯⋯⋱λn⋱⋯⋯⋱10−15⋱⋯⋯⋱⋱00⋮⋮⋮⋮010−15⎞⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟
En Matlab, uno puede obtener usando el comando:Q,D
Construir es, entonces, simples manipulaciones de Matrix.C~
Observación: Sin embargo, sería difícil saber cómo influye esto en el análisis factorial; por lo tanto, uno debería tener cuidado con este método. Además, aunque se trata de una es una matriz de correlación, puede no serlo. Por lo tanto, podría ser necesaria otra normalización de las entradas.C C~
fuente
Es posible que tenga problemas numéricos con su matriz. Posiblemente sea realmente positivo definido, pero el cálculo numérico dice lo contrario.
Una solución muy común, en ese caso, es agregar un valor muy bajo (1.E-10, por ejemplo) a todos los elementos diagonales. Si esto no resuelve el problema, intente aumentar progresivamente este valor.
fuente
FA funciona mejor cuando sus datos son gaussianos, por lo tanto, es posible que desee probar algunos enfoques de preprocesamiento para tener datos más gaussianos.
fuente