2010-07-22 6 views
8

Вход: случайный вектор 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), симметричная матрица.
Является ли этот алгоритм правильным и не имеет побочных эффектов?
Расчет матрицы ковариации

+0

Заявление о проблеме не очень понятно. У вас действительно есть один вектор в качестве входных данных? У всех xi все одинаковое значение? Зачем вам делиться на (n-1) при вычислении среднего? – Henrik

+0

В теории у меня их много (X - фактически некоторый процесс X (t)), где t - [0..k], но во время моделирования мне интересно только в случае k = kmax, поэтому я получаю один вектор X (kmax) = X, который состоит из r чисел. n-1 - коррекция, не влияет на многое. О средствах - они разные, как я вижу сейчас. – Singularity

+1

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что это вопрос проверки математики, а не вопрос программирования в рамках [помощи]. – TylerH

ответ

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

Диагональ содержит отклонения. – Henrik

+0

Да, вы правы. Исправлено – Gacek

+0

Почему вы определяете ковариацию в терминах корреляции? Обычно это делается наоборот. – Henrik

Смежные вопросы