答案 0 :(得分:1)
计算ρ实际上涉及计算Cov(X,Y),因此您的最后一个方程在数学上是正确的,但无济于事。让我们直接去估计协方差。
接下来,我假设您熟悉并比较熟悉均值,方差和协方差的定义,并了解参数与其估计量之间的差异。
首先,请记住:
σ x 2 = E [(X-μ x ) 2 ] = E [X < sup> 2 ]-E [X] 2 。
类似地:
Cov(X,Y)= E [(X-μ X )(Y-μ Y )] = E [XY]-E [X] E [Y]。
实际上,请注意,这意味着方差只是协方差的一种特殊情况,即Var(X)= Cov(X,X)!
继续估算。基本上,通过对与以上最右边等式中的项相对应的数据求平均,来找到方差的最大似然估计器。方差估计量为:
s x 2 =(Sum(x i 2 )-n *(x_bar 2 ))/ n
其中,n是样本大小,x_bar是x样本的平均值。 (如果您更喜欢无偏估计量而不是MLE,则除以(n-1)而不是n。)鉴于上面指出的方差和协方差之间的关系,发现协方差的MLE估计量为:< / p>
c =(Sum(x i * y i )-n * x_bar * y_bar)/ n
这将我们引向您的目标:
s x + y 2 = s x 2 + s y 2 + 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)