用Octave计算随机变量的协方差
广告
{{v.name}}
协方差的定义公式
协方差定义为:\(\text{Cov}(X,Y) = E\left[(X-E(X))(Y-E(Y))\right]\)
离散型随机变量的协方差
设离散型随机变量 \((X,Y)\) 的联合分布律为 \(P(X=x_i,Y=y_j)=p_{ij}\)(\(i,j=1,2,\dots\)),则:
1. 计算 \(X\) 和 \(Y\) 的边缘期望:\(E(X)=\sum_{i}x_i p_i \quad,\quad E(Y)=\sum_{j}y_j p_j\)
其中 \(p_i=\sum_{j}p_{ij}\),\(p_j=\sum_{i}p_{ij}\) 是边缘分布律。
2. 计算 \(XY\) 的数学期望:
\(E(XY)=\sum_{i}\sum_{j}x_i y_j p_{ij}\)
3. 代入实用公式得协方差:
\(\text{Cov}(X,Y)= \sum_{i}\sum_{j}x_i y_j p_{ij} - \left( \sum_{i}x_i p_i\right) \left( \sum_{j}y_j p_j\right) \)
例如:设 \((X,Y)\) 的联合分布如下:
| \(X\setminus Y\) | 1 | 2 |
|----------------|---|---|
| 0 | 0.2 | 0.3 |
| 1 | 0.4 | 0.1 |
- 计算边缘期望:
\(E(X)=0\times(0.2+0.3)+1\times(0.4+0.1)=0.5\)
\(E(Y)=1\times(0.2+0.4)+2\times(0.3+0.1)=1\times0.6+2\times0.4=1.4\)
- 计算 \(E(XY)\):
\(E(XY)=0\times1\times0.2+0\times2\times0.3+1\times1\times0.4+1\times2\times0.1=0.6\)
- 计算协方差:
\(\text{Cov}(X,Y) = E(XY) - E(X)E(Y) = 0.6 - 0.5 \times 1.4 = 0.6 - 0.7 = -0.1\)
程序代码如下
function ret = get_covariance_discrete(p_ij, x_list, y_list)
p_i = sum(p_ij, 2);
p_j = sum(p_ij, 1);
EX = sum(x_list .* p_i');
EY = sum(y_list .* p_j);
EXY = 0;
for i = 1:length(x_list)
for j = 1:length(y_list)
EXY = EXY + x_list(i) * y_list(j) * p_ij(i, j);
endfor
endfor
ret = EXY - EX * EY;
endfunction
>> get_covariance_discrete([0.2 0.3; 0.4 0.1], [0, 1], [1, 2])
ans = -0.1
连续型随机变量的协方差
设连续型随机变量 \((X,Y)\) 的联合概率密度为 \(f(x,y)\),则计算步骤如下:
1. 计算 \(X\) 和 \(Y\) 的边缘期望:\(E(X)=\int_{-\infty}^{+\infty}x f_X(x)dx \quad,\quad E(Y)=\int_{-\infty}^{+\infty}y f_Y(y)dy\)
其中 \(f_X(x)=\int_{-\infty}^{+\infty}f(x,y)dy\),\(f_Y(y)=\int_{-\infty}^{+\infty}f(x,y)dx\) 是边缘概率密度。
2. 计算 \(XY\) 的数学期望:
\(E(XY)=\int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}xy f(x,y)dxdy\)
3. 代入实用公式得协方差:
\(\text{Cov}(X,Y)=\int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}xy f(x,y)dxdy - E(X)E(Y)\)
例如:均匀分布。设 \((X,Y)\) 在区域 \(0\le x\le1,0\le y\le1\) 上均匀分布,联合密度 \(f(x,y)=1\)。
- 计算边缘期望:\(E(X)=\int_0^1 x dx=\frac{1}{2}\),\(E(Y)=\frac{1}{2}\)
- 计算 \(E(XY)\):\(E(XY)=\int_0^1\int_0^1 xy dxdy=\frac{1}{4}\)
- 计算协方差:\(\text{Cov}(X,Y)=\frac{1}{4}-\frac{1}{2}\times\frac{1}{2}=0\)
程序代码如下
function ret = get_covariance_continuous(f, a, b, c, d)
pkg load symbolic;
syms x y;
f_X = int(f, y, c, d);
f_Y = int(f, x, a, b);
EX = 0;
EY = 0;
EXY = 0;
try
EX = double(int(x * f_X, x, a, b));
EY = double(int(y * f_Y, y, c, d));
EXY = double(int(int(x * y * f, x, a, b), y, c, d));
catch
EX = int(x * f_X, x, a, b);
EY = int(y * f_Y, y, c, d);
EXY = int(int(x * y * f, x, a, b), y, c, d);
end_try_catch
ret = EXY - EX * EY;
endfunction
>> a = 0;
>> b = 1;
>> c = 0;
>> d = 1;
>> f = 1;
>> get_covariance_continuous(f, a, b, c, d);
ans = 0