Click or drag to resize
sqx

MI Structure

Aggregate [float] MI([bit] Observed, [float] XValue, [float] YValue)

Namespace:  sqx
Assembly:  SQX (in SQX.dll) Version: 1.0.2.6 (1.0.2.6)
Syntax
C#
[SerializableAttribute]
public struct MI : IBinarySerialize
Remarks
Discrete Mutual Information I(X;Y) aggregate function.

NOTE: XValue and YValue are treated like a label (Discrete). Use ROUND().

Attributes

Format.UserDefined, IsInvariantToDuplicates = false, IsInvariantToNulls = true, IsInvariantToOrder = true, IsNullIfEmpty = true, MaxByteSize = -1
Examples
SQL
DECLARE @N int = 1000, @R int = 3
;WITH sample_data AS (SELECT a.ID, sqx.BernoulliD_PPF(a.Value,0.6) Truth
, ROUND(sqx.StdLogistic_PPF(b.Value),@R) X
, ROUND(sqx.UniformC_PPF(c.Value, 0, 10),@R) Y
FROM SQM.sqm.UTable(@N, 1) a
INNER JOIN sqx.UTable(@N, 2) b ON a.ID = b.ID
INNER JOIN sqx.UTable(@N, 3) c ON a.ID = c.ID
)
SELECT sqx.ENTROPY(Truth) H
, sqx.ENTROPYX(Truth, X) [H(X)]
, sqx.ENTROPYX(Truth, Y) [H(Y)]
, sqx.ENTROPYJ(Truth, X, Y) [H(X,Y)]
, sqx.ENTROPYC(Truth, X, Y) [H(X|Y)]
, sqx.ENTROPYC(Truth, Y, X) [H(Y|X)]
, sqx.MI(Truth, X, Y) [I(X;Y)]
FROM sample_data
/*
H                      H(X)                   H(Y)                   H(X,Y)                 H(X|Y)                 H(Y|X)                 I(X;Y)
---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ----------------------
0.970362625501949      0.0787548875021635     0.0467548875021635     0                      -0.0467548875021635    -0.0787548875021635    0.125509775004327*/
See Also