31 votos

¿Qué me dice una matriz de covarianza no definida positivamente sobre mis datos?

Tengo una serie de observaciones multivariantes y me gustaría evaluar la densidad de probabilidad en todas las variables. Se supone que los datos se distribuyen normalmente. Con un número bajo de variables, todo funciona como cabría esperar, pero al pasar a un número mayor, la matriz de covarianza se vuelve no positiva definida.

He reducido el problema en Matlab a:

load raw_data.mat; % matrix number-of-values x number of variables
Sigma = cov(data);
[R,err] = cholcov(Sigma, 0); % Test for pos-def done in mvnpdf.

Si err>0 entonces Sigma no es positiva definida.

¿Hay algo que pueda hacer para evaluar mis datos experimentales en dimensiones superiores? ¿Me dice algo útil sobre mis datos?

Soy un poco principiante en esta área, así que pido disculpas si me he perdido algo obvio.

0 votos

Parece que tus datos son demasiado escasos para las representaciones de alta dimensión. ¿Piensa ejecutar modelos de regresión con estos datos?

0 votos

Me resultó muy útil entender cómo se aplican las rotaciones de Euler a esta cuestión: robotics.stackexchange.com/questions/2556/

43voto

mat_geek Puntos 1367

La matriz de covarianza no es positiva definida porque es singular. Esto significa que al menos una de sus variables puede expresarse como una combinación lineal de las demás. No necesita todas las variables, ya que el valor de al menos una puede determinarse a partir de un subconjunto de las demás. Yo sugeriría añadir variables secuencialmente y comprobar la matriz de covarianza en cada paso. Si una nueva variable crea una singularidad, elimínela y pase a la siguiente. Al final deberías tener un subconjunto de variables con una matriz de covarianza positiva definida.

28 votos

+1. También cabe destacar que todas las matrices de covarianza son positivas definidas y todo Las matrices definidas positivas son la matriz de covarianza de alguna distribución multivariante. Por lo tanto, decir "matriz de covarianza no positiva definida" es un poco un oxímoron. Parece que el OP estaba realmente diciendo que la muestra la matriz de covarianza era singular, lo que puede ocurrir exactamente por colinealidad (como has dicho) o cuando la el número de observaciones es menor que el número de variables .

5 votos

Algunos programas de estadística pueden ser inducidos a corregir este problema automáticamente. Por ejemplo, el programa de Stata regress dejará de lado automáticamente las variables adicionales cuando algunas sean colineales (y su salida puede guardarse en un formulario que identifique estas variables y marque un subconjunto no colineal para su uso futuro). Sin embargo, una complicación probable es que las variables no sean necesariamente colineales, sino que estén lo suficientemente cerca como para que la propagación del error de punto flotante en la descomposición de Cholesky produzca estimaciones de valores propios negativos, haciendo que las variables sean colineales a efectos prácticos.

1 votos

@whuber, hay una funcionalidad similar en R también - los modelos de regresión eliminan automáticamente las variables del predictor lineal si hay colinealidad exacta.

2voto

Simon Blackbourn Puntos 120

Un punto que no creo que se haya tratado más arriba es que ES posible calcular una matriz de covarianza no positiva definida a partir de datos empíricos, incluso si las variables no están perfectamente relacionadas de forma lineal. Si no se dispone de suficientes datos (en particular, si se intenta construir una matriz de covarianza de alta dimensión a partir de un montón de comparaciones por pares) o si los datos no siguen una distribución normal multivariante, se puede acabar con relaciones paradójicas entre las variables, como cov(A,B)>0; cov(A,C)>0; cov(B,C)<0.

En tal caso, no se puede ajustar una PDF normal multivariante, ya que no hay ninguna distribución normal multivariante que cumpla estos criterios - cov(A,B)>0 y cov(A,C)>0 implica necesariamente que cov(B,C)>0.

Todo esto quiere decir que una matriz definida no positiva no siempre significa que se estén incluyendo variables colineales. También podría sugerir que está tratando de modelar una relación que es imposible dada la estructura paramétrica que ha elegido.

1voto

Glenn Sandoval Puntos 146

Es un resultado válido. La estimación de ese componente de la matriz de covarianza es cero, ¡lo que puede ser perfectamente cierto! Puede llevar a dificultades de cálculo, pero algunos algoritmos en R (no sé sobre Matlab) pueden manejar esto. No entiendo por qué la gente se molesta por esto e insiste en ajustar modelos más parsimoniosos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X