butools.mc.CheckProbVector

butools.mc.CheckProbVector()
Matlab: r = CheckProbVector(pi, sub, prec)
Mathematica: r = CheckProbVector[pi, sub, prec]
Python/Numpy: r = CheckProbVector(pi, sub, prec)

Checks if the vector is a valid probability vector: the vector has only non-negative elements, the sum of the vector elements is 1.

If parameter “sub” is set to true, it checks if the vector is a valid substochastic vector: the vector has only non-negative elements, the sum of the elements are less than 1.

Parameters:

pi : vector, shape (1, M) or (M, 1)

The matrix to check.

sub : bool, optional

If false, the procedure checks for stochastic, if true, it checks for sub-stochastic property. The default value is false.

prec : double, optional

Numerical precision. Entries with absolute value less than prec are considered to be zeros. The default value is 1e-14.

Returns:

r : bool

The result of the check.

Examples

For Matlab:

>>> Q = [1.1,-0.1];
>>> flag = CheckProbVector(Q);
CheckProbVector: The vector has negative element (precision: 1e-12)!
>>> disp(flag);
     0
>>> Q = [1.1,0.1];
>>> flag = CheckProbVector(Q);
CheckProbVector: The sum of the vector is not 1 (precision: 1e-12)!
>>> disp(flag);
     0
>>> Q = [1,0];
>>> flag = CheckProbVector(Q);
>>> disp(flag);
     1
>>> Q = [0.9,-0.1];
>>> flag = CheckProbVector(Q, true);
CheckProbVector: The vector has negative element (precision: 1e-12)!
>>> disp(flag);
     0
>>> Q = [0.9,0.1];
>>> flag = CheckProbVector(Q, true);
>>> disp(flag);
     1
>>> Q = [0.8,0.1];
>>> flag = CheckProbVector(Q, true);
>>> disp(flag);
     1

For Mathematica:

>>> Q = {1.1,-0.1};
>>> flag = CheckProbVector[Q];
"CheckProbVector: The vector has negative element!"
>>> Print[flag];
False
>>> Q = {1.1,0.1};
>>> flag = CheckProbVector[Q];
"CheckProbVector: The sum of the vector is not 1 (precision:"1.*^-12")!"
>>> Print[flag];
False
>>> Q = {1,0};
>>> flag = CheckProbVector[Q];
>>> Print[flag];
True
>>> Q = {0.9,-0.1};
>>> flag = CheckProbVector[Q, True];
"CheckProbVector: The vector has negative element!"
>>> Print[flag];
False
>>> Q = {0.9,0.1};
>>> flag = CheckProbVector[Q, True];
>>> Print[flag];
True
>>> Q = {0.8,0.1};
>>> flag = CheckProbVector[Q, True];
>>> Print[flag];
True

For Python/Numpy:

>>> Q = ml.matrix([[1.1,-0.1]])
>>> flag = CheckProbVector(Q)
CheckProbVector: The vector has negative element (precision: 1e-12)!
>>> print(flag)
False
>>> Q = ml.matrix([[1.1,0.1]])
>>> flag = CheckProbVector(Q)
CheckProbVector: The sum of the vector is not 1 (precision: 1e-12)!
>>> print(flag)
False
>>> Q = ml.matrix([[1,0]])
>>> flag = CheckProbVector(Q)
>>> print(flag)
True
>>> Q = ml.matrix([[0.9,-0.1]])
>>> flag = CheckProbVector(Q, True)
CheckProbVector: The vector has negative element (precision: 1e-12)!
>>> print(flag)
False
>>> Q = ml.matrix([[0.9,0.1]])
>>> flag = CheckProbVector(Q, True)
>>> print(flag)
True
>>> Q = ml.matrix([[0.8,0.1]])
>>> flag = CheckProbVector(Q, True)
>>> print(flag)
True