Вход: случайный вектор X = xi, i = 1..n.
вектор средств для X = meanxi, i = 1..n
Выход: ковариационная матрица Sigma (n * n).
Вычисление:
1) найти все cov (xi, xj) = 1/n * (xi-meanxi) * (xj-meanxj), i, j = 1..n
2) Sigma (i, j) = cov (xi, xj), симметричная матрица.
Является ли этот алгоритм правильным и не имеет побочных эффектов?
Расчет матрицы ковариации
8
A
ответ
4
Каждый xi
должен быть вектором (случайной переменной) с его собственной дисперсией и средним значением.
Ковариационная матрица симметрична, поэтому вам просто нужно вычислить ее половину (и скопировать остальные) и иметь дисперсию xi по главной диагонали.
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
, где дисперсия (вар) из Xi:
v = 0;
for(int i = 0; i<xi.Count; i++)
v += (xi(i) - mean(xi))^2;
end
v = v/xi.Count;
и ковариации (СОУ)
cov(xi, xj) = r(xi,xj) * sqrt(var(xi)) * sqrt(var(xj))
r(xi, xj)
, где находится Pearson product-moment correlation coefficient
РЕДАКТИРОВАТЬ
или, так как COV (X, Y) = Е (Х * Y) - Е (Х) * Е (У)
cov(xi, xj) = mean(xi.*xj) - mean(xi)*mean(xj);
, где .*
является Matlab-подобных поэлементного умножения.
Соответственно, если x = [x1, x2]
, y = [y1, y2]
затем z = x.*y = [x1*y1, x2*y2]
;
Смежные вопросы
- 1. Расчет матрицы ковариации двух распределений в Python
- 2. Расчет матрицы ковариации с использованием VBA
- 3. Расчет ковариации с CUDA
- 4. Расчет ковариации в OpenCV
- 5. Расчет ковариации в Python
- 6. Python: нахождение матрицы ковариации матрицы Nx2
- 7. Расчет ковариации с помощью Python и Numpy
- 8. Использование кластерной матрицы ковариации в прогнозе.lm()
- 9. Расчет детерминанта матрицы
- 10. Расчет матрицы квадратного перехода
- 11. Расчет детерминанта матрицы
- 12. Расчет матрицы вращения
- 13. Условный расчет матрицы смежности
- 14. Расчет инверсной матрицы Java
- 15. Расчет матрицы просмотра камеры
- 16. Расчет матрицы CSS
- 17. Простой расчет матрицы в Scala
- 18. расчет матрицы из значений XML
- 19. Расчет нормальной матрицы в OpenGL
- 20. Как переопределить cov для вычисления матрицы ковариации населения
- 21. R - функции оцененного вектора и его матрицы ковариации
- 22. Дизайн базы данных для матрицы ковариации (постоянный размер, диагонально-симметричный)
- 23. Получение матрицы ковариации установленных параметров из метода scipy optimize.least_squares
- 24. ICA - Статистическая независимость и собственные значения матрицы ковариации
- 25. Получение матрицы ковариации при использовании Levenberg-Marquardt (lsqcurvefit) в MATLAB
- 26. Использование матрицы ковариации для оптимизации портфеля в R
- 27. Использование матрицы ковариации для PCA() в пакете FactoMineR
- 28. MATLAB: Эффективный способ вычисления матрицы ковариации по этим данным
- 29. Как получить коэффициенты регрессии из матрицы ковариации дисперсии в R?
- 30. Ошибка вычисления матрицы ковариации в R, через calc.relimp()
Заявление о проблеме не очень понятно. У вас действительно есть один вектор в качестве входных данных? У всех xi все одинаковое значение? Зачем вам делиться на (n-1) при вычислении среднего? – Henrik
В теории у меня их много (X - фактически некоторый процесс X (t)), где t - [0..k], но во время моделирования мне интересно только в случае k = kmax, поэтому я получаю один вектор X (kmax) = X, который состоит из r чисел. n-1 - коррекция, не влияет на многое. О средствах - они разные, как я вижу сейчас. – Singularity
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что это вопрос проверки математики, а не вопрос программирования в рамках [помощи]. – TylerH