6 votos

Cómo evitar 0 determinante cuando se muestra una matriz de covarianza tiene valores muy pequeños

Tengo $n$, $p$-dimensiones de los vectores y yo soy la construcción de la $p \times p$ matriz de covarianza, utilizando la siguiente fórmula:

$$\mathrm{Cov}(j,k) = \frac{1}{n-1} {\sum^n_{i=1}} (x_i(j) - {\mu}(j))(x_i(k) - {\mu(k)}) $$

Sin embargo, los valores de la $p$-dimensiones de los vectores de entre 0 y 1, ya que es un vector normalizado, y $n$ puede ser grande para que los resultados en $\mathrm{Cov}(j,k)$ tener más pequeño de elementos.

Estoy tratando de calcular el determinante de la matriz de covarianza para determinar el diferencial de la entropía de la subyacente multivariante de Gauss. Sin embargo, debido al pequeño número, el determinante es, efectivamente, 0 (y, de hecho, se redondea a 0 en el cálculo).

Hay métodos para evitar esto? Quizás pueda evitar la división por $(n-1)$?

6voto

Patrick Puntos 183

Varias cosas.

  • El factor determinante es la escala de equivariant, así que sin pérdida de generalidad se puede cambiar la escala de su $x_i$'s (es decir multiplicar por 10) y, a continuación, el factor de vuelta de la escala después de que todos los intermedios de las operaciones se han realizado como se muestra en el siguiente código R:

    p <- 10
    n <- 100
    a1 <- matrix(runif(n*p),n,p)
    a1 <- sweep(a1,1,sqrt(rowSums(a1*a1)),FUN="/")
    a2 <- a1*10 #you can re-scale your data
    log(det(cov(a1[1:(p+1),])))
    log(det(cov(a2[1:(p+1),])))-log(10^(2*(p))) #and compensate for the rescaling 'at the end'
    
  • Usted debe trabajar con el determinante ajustaron para que se expresa en las unidades originales de su conjunto de datos (por ejemplo, si $\varSigma$ es la matriz de covarianza y $p$ es el rango, el uso de $|\varSigma|^{1/2p}$). Esto es similar a cómo las desviaciones estándar se expresan en las unidades originales, pero las variaciones en la plaza de las unidades originales.

2voto

AdamSane Puntos 1825

Numérico de la estabilidad será un problema para usted.

Un enfoque para hacer el cálculo un poco más estable de toma de $X$ a ser un medio de corrección de la matriz de la $x$-valores, creo que tiene sentido para formar una descomposición QR de la $X$-matriz o en su defecto, una descomposición de Choleski de la $X'X$ matriz y utilizar el producto de la diagonal de a $R$ (o de la Choleski factor), que será la raíz cuadrada del determinante.

Hay otros enfoques (algunos de los cuales puede ser mejor que la computación en el QR).

Usted todavía necesita a escala de la $n-1$'s, aunque.

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