我有一组独立的二进制随机变量(例如a,B,C),它们有一定的概率取正值,否则取零,为此我生成了一个0和1的矩阵,其中包含这些变量的所有可能组合,至少有1,即
A B C
1 0 0
0 1 0
0 0 1
1 1 0
等。
我知道A,B,C的值和概率,所以我可以计算E(X)和E(X^2)。我想把上面矩阵中的每个组合看作一个新的随机变量,它等于该组合中存在的随机变量的乘积(在矩阵中显示1)。例如,随机变量Row4 = A*B。
我已经创建了一个与上面相同大小的矩阵,其中显示了相关的E(X)s而不是1,以及1而不是0。这允许我轻松地计算新随机变量的期望值向量(每个组合一个)作为每一行的乘积。我还生成了一个类似的矩阵,它显示E(X^2)而不是E(X),另一个显示prob(X>0)而不是E(X)。
我正在寻找计算这些新变量的协方差矩阵的Matlab脚本,即将每一行作为随机变量。我推测它将不得不使用以下公式:
Cov(X,Y)=E(XY)-E(X)E(Y)
例如,对于(1 1 0)和(1 0 1)行:
Cov(X,Y)=E[(AB)(AC)]-E(X)E(Y)
=E[(A^2)BC]-E(X)E(Y)
=E(A^2)E(B)E(C)-E(X)E(Y)
这些值我已经从上面提到的矩阵中得到了。对于每个协方差,我只是不确定如何知道哪两个变量出现在两行中,因为对于那些我将不得不选择E(X^2)而不是E(X)。
也可以写成:
Cov(X,Y)=E(X)E(Y)*[1/prob(A>0)-1]
但问题仍然存在,因为分母中的概率只会是两个组合之间共享的变量的概率。
关于如何在Matlab中自动计算协方差矩阵的任何建议将不胜感激。
我很确定这不是最有效的方法但这是一个开始:
假设r1……在随机变量的组合中,R为矩阵:
A B C
r1 1 0 0
r2 0 1 0
r3 0 0 1
r4 1 1 0
<<p>如果你有向量strong> E1 , E2 和 ER : E1 = [E(A) E(B) E(C) ...]
E2 = [E(A²) E(B²) E(C²) ...]
ER = [E(r1) E(r2) E(r3) ...]
如果你想计算E(r1,r2),你可以:
1)从R
中提取R1和R2列v1 = R(1,:)
v2 = R(2,:)
2) vs
中的两个向量求和vs = v1 + v2
3)循环vs,如果你看到一个2,意味着R2中的值必须被使用,如果你看到一个1,它是R1中的值,如果它是0,不使用该值。
4)使用循环,计算所需的E(r1,r2)。