I want to create an 8x8 matrix which provides the error probabilities in bit communication. The matrix looks as follows:
The columns amount to the observed quantities and the rows to the measured quantities. An element p[i,j] amounts to the conditional probability p(j|i). For example, the element p[0,1] gives the probability to observe the string 001 when the actual value is 000, i.e., it measures p(001|000).
Question: How can I create such a matrix in Python such that
- The more bit flips there are the smaller is the equivalent conditional probability (for example
p(100|000)<p(110|000)? - How to enable an "asymmetry". I.e., the probability of
p(001|000)< p(000|001). That is, having bias that favors with higher probabilities transitions 1 to 0 than transitions 0 to 1.
Of course, the sum of probabilities in each row must equal to 1.
All in all, I want to create function in Python that takes as input an integer n (the size of the matrix, or equivalently where 2^n is the length of the bit string) and outputs a probability transition matrix with the above specified rules.
The difficulty is how to implement a probability distribution to fill the cells.
It is trivial to create an 8x8 array and fill diagonals:
P = np.zeros((8,8))
for i in range(8):
for j in range(8):
if i==j:
P[i,j]=1
Similarly, its trivial to fill a given row or a given column by a fixed number. However, I cannot figure out (how to even begin) to fill such a matrix following the rules above, or even how exactly to define the distribution the elements must follow.
from Creating a 8x8 matrix with elements labeled by binary strings and entries following some probability distribution
No comments:
Post a Comment