Как рассчитать параметры суммы коррелированных гауссовых вариаций?
1 ответ
Вычисление ρ на самом деле включает в себя вычисление Cov(X,Y), поэтому ваше последнее уравнение математически верно, но не полезно. Давайте перейдем прямо к оценке ковариации.
В дальнейшем я предполагаю, что вы знакомы и относительно знакомы с определениями среднего значения, дисперсии и ковариации и понимаете разницу между параметром и его оценкой.
Во-первых, напомним, что:
σx2 = E [(X-μx)2] = E [X2] - E [X]2.
Так же:
Cov (X, Y) = E [(X-μX) (Y-μY)] = E [XY] - E [X] E [Y].
Обратите внимание, что на самом деле это означает, что дисперсия - это просто частный случай ковариации, т. Е. Var(X) = Cov(X,X)!
По оценке. Оценка максимального правдоподобия для дисперсии в основном определяется путем усреднения данных, соответствующих слагаемым в крайних правых равенствах выше. Оценка дисперсии:
sx2 = (сумма (xi2) - n * (x_bar2)) / n
где n - размер выборки, а x_bar - среднее значение выборки x. (Разделите на (n-1), а не на n, если вы предпочитаете объективную оценку MLE.) Учитывая взаимосвязь между дисперсией и ковариацией, указанную выше, вас не должно удивлять то, что оценка MLE для ковариации:
c = (сумма (xi * yi) - n * x_bar * y_bar) / n
Что приводит нас к вашей цели:
sx + y2 = sx2 + sy2 + 2 * c,
и отсюда вы просто берете квадратный корень, чтобы получить стандартное отклонение.
В псевдокоде:
function std_dev_sum(x_vector, y_vector):
n = x_vector.length
fail "different size vectors" unless y_vector.length == n
sum_x = sum_y = sum_x_sqr = sum_y_sqr = sum_xy = 0.0
for each index i:
x = x_vector[i]
y = y_vector[i]
sum_x += x
sum_y += y
sum_x_sqr += x * x
sum_y_sqr += y * y
sum_xy += x * y
x_bar = sum_x / n
y_bar = sum_y / n
var_x = sum_x_sqr / n - x_bar * x_bar
var_y = sum_y_sqr / n - y_bar * y_bar
cov = sum_xy / n - x_bar * y_bar
return Sqrt(var_x + var_y + 2.0 * cov)