2010-07-22 27 views
8

Entrada: vector aleatorio X = xi, i = 1..n.
vector de medias para X = meanxi, i = 1..n
Salida: matriz de covarianza Sigma (n * n).
Computación:
1) buscar todos los cov (xi, xj) = 1/n * (xi-meanxi) * (xj-meanxj), i, j = 1..n
2) Sigma (i, j) = cov (xi, xj), matriz simétrica.
¿Este algoritmo es correcto y no tiene efectos secundarios?
Computación de matriz de covarianza

+0

El enunciado del problema no es muy claro. ¿De verdad tienes un solo vector como entrada? ¿Todos los xi tienen el mismo significado? ¿Por qué dividirías por (n-1) al calcular la media? – Henrik

+0

En teoría tengo muchos de ellos (X es en realidad algún proceso X (t)) donde t es [0..k], pero durante el modelado me interesa solo el caso k = kmax, por eso obtengo un vector único X (kmax) = X que consiste en r números. n-1 es corrección, no afecta mucho. Acerca de los medios, son diferentes como lo veo ahora. – Singularity

+1

Voy a cerrar esta pregunta como fuera de tema porque es una pregunta de verificación matemática, no una pregunta de programación dentro del alcance de la [ayuda]. – TylerH

Respuesta

4

Cada xi debe ser un vector (variable aleatoria) con su propia varianza y media.

La matriz de covarianza es simétrica, por lo que solo necesita calcular la mitad (y copiar el resto) y tiene una varianza de xi en la diagonal principal.

S = ...// your symmetric matrix n*n 
for(int i=0; i<n;i++) 
    S(i,i) = var(xi); 
    for(j = i+1; j<n; j++) 
    S(i,j) = cov(xi, xj); 
    S(j,i) = S(i,j); 
    end 
end 

donde varianza (var) de xi:

v = 0; 
for(int i = 0; i<xi.Count; i++) 
    v += (xi(i) - mean(xi))^2; 
end 
v = v/xi.Count; 

y covarianza (cov)

cov(xi, xj) = r(xi,xj) * sqrt(var(xi)) * sqrt(var(xj)) 

donde r(xi, xj) es Pearson product-moment correlation coefficient

EDITAR
o, desde cov (X, Y) = E (X * Y) - E (X) * E (Y)

cov(xi, xj) = mean(xi.*xj) - mean(xi)*mean(xj); 

donde .* es Matlab-como multiplicación elemento a elemento.
Así que si x = [x1, x2], y = [y1, y2] entonces z = x.*y = [x1*y1, x2*y2];

+1

La diagonal contiene las varianzas. – Henrik

+0

Sí, tienes razón. Corregido – Gacek

+0

¿Por qué se define covarianza en términos de correlación? Por lo general, se hace al revés. – Henrik