0

我有一组独立的二进制随机变量(比如 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 中自动计算协方差矩阵的建议将不胜感激。

4

1 回答 1

0

我很确定这不是最有效的方法,但这是一个开始:

假设 r1...n 是随机变量的组合,R是矩阵:

    A  B  C
r1  1  0  0
r2  0  1  0
r3  0  0  1 
r4  1  1  0

如果你有向量E1E2ER为:

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)。

于 2016-11-15T13:18:47.737 回答