Matlab: матрица ковариаций из матрицы комбинаций с использованием E (X) и E (X ^ 2)

У меня есть набор независимых двоичных случайных величин (скажем, A, B, C), которые принимают положительное значение с некоторой вероятностью и ноль в противном случае, для которого я сгенерировал матрицу из нулей и единиц всех возможных комбинаций этих переменных по крайней мере с a 1 ie

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) вместо единиц и единицы вместо нулей. Это позволяет мне легко вычислять вектор ожидаемых значений новых случайных величин (по одному на комбинацию) как произведение каждой строки. Я также создал аналогичную матрицу, которая показывает 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.


person rock3000    schedule 14.11.2016    source источник


Ответы (1)


Я почти уверен, что это не самый эффективный способ сделать это, но это только начало:

Предположим, что r1 ... n комбинаций случайных величин, R - это матрица:

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

Если у вас есть вектор 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) Извлеките столбцы R1 и R2 из R.

v1 = R(1,:)
v2 = R(2,:)

2) Суммируйте оба вектора в vs

vs = v1 + v2

3) Выполните цикл vs, если вы видите 2, что означает, что необходимо использовать значение в R2, если вы видите 1, это значение в R1. , если он равен 0, не используйте значение.

4) Используя цикл, вычислите E (r1, r2) по желанию.

person AdrienNK    schedule 15.11.2016