我有一组独立的二进制随机变量(比如 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 而不是 1s,以及 1s 而不是 0s。这使我可以轻松地将新随机变量(每个组合一个)的期望值向量计算为每一行的乘积。我还生成了一个类似的矩阵,它显示 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 中自动计算协方差矩阵的建议将不胜感激。