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
8
A
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]
;
Cuestiones relacionadas
- 1. ICA - Independencia estadística y autovalores de la matriz de covarianza
- 2. scipy.linalg.eig return autovalores complejos para la matriz de covarianza?
- 3. plataforma de computación reversible
- 4. Covarianza de Java
- 5. genéricos de Java covarianza
- 6. Extracto de artículos de computación
- 7. .NET covarianza
- 8. Directrices de diseño Computación distribuida
- 9. Eficiencia de la computación Pregunta
- 10. ¿Diferencia entre computación en la nube y computación distribuida?
- 11. Computación multi-GPU Cuda
- 12. Computación acotada en Haskell
- 13. Combinaciones de vectores de computación eficiente
- 14. Proyecto de computación distribuida de JavaScript
- 15. Asignaciones introductorias de Ciencias de la Computación
- 16. Computación y detección de bits de indicador
- 17. Computación de flujo de datos en python
- 18. .NET: Covarianza y contravarianza
- 19. Covarianza e IList
- 20. covarianza en C#
- 21. Pregunta sobre C# covarianza
- 22. Java problema colecciones covarianza
- 23. Cómo usar la función de princomp() en R cuando la matriz de covarianza tiene cero?
- 24. Precisión de GPU para computación científica
- 25. Uso de HTML5 WebGL Shaders para Computación
- 26. Excelentes discursos sobre ciencias de la computación
- 27. Computación en paralelo de GPU con OpenCV
- 28. Coeficiente de Pearson y cálculo de covarianza en Matlab
- 29. "Covarianza" de System.Nullable <> struct
- 30. C# genéricos de lanzamiento (¿covarianza y contravarianza?)
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
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
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