MutualInfo - 图表函数
MutualInfo 计算 Aggr() 中两个字段之间或聚合值之间的互信息(MI)。
MutualInfo 支持不同类型的 MI 分析:
-
对范围 MI:计算驱动因素字段和目标字段之间的 MI。
-
按值的驱动因素细分:MI 是在驱动因素字段和目标字段中的单独字段值之间计算的。
-
特性选择:在网格图中使用 MutualInfo 创建一个矩阵,在该矩阵中,所有字段都基于 MI 相互比较。
MutualInfo 返回两个数据集的聚合互信息。互信息是数据集之间关系的一种度量,并聚合为在图表维度上迭代的 (x,y) 对值。互信息是在 0 和 1 之间测量。MutualInfo 由选择或集合表达式定义。
在计算互信息时,关联会影响来自不同表的字段的值之间的对应关系和频率。
相同目标和驱动程序的返回值可能略有不同。这是由于每次 MutualInfo 调用都是对随机选择的样本进行操作,并且 MutualInfo 算法本身具有随机性。
MutualInfo 可应用至 Aggr() 函数。
语法:
MutualInfo({SetExpression}] [DISTINCT] [TOTAL] target, driver , datatype [, breakdownbyvalue [, samplesize ]])
返回数据类型: 数字
参数:
参数 | 说明 |
---|---|
target, driver | 表达式或字段,其中包含两个要度量互信息的样本集合。 |
datatype |
包含在目标和驱动因素中的数据类型。 1 或 'dd',用于 discrete:discrete 2 或 'cc',用于 continuous:continuous 3 或 'cd',用于 continuous:discrete 4 或 'dc',用于 discrete:continuous 数据类型不区分大小写。 |
breakdownbyvalue |
与驱动因素中的值相对应的静态值。如果提供,计算将计算该值的 MI 贡献。您可使用 ValueList() 或 ValueLoop()。如果添加了 Null(),计算将计算驱动因素中所有值的总 MI。 按值细分要求驱动因素包含离散数据。 |
samplesize |
要从目标和驱动因素中采样的值的数目。采样是随机进行的。MutualInfo 需要 80 的最小样本大小。默认设置下,MutualInfo 最多只能采样 10,000 个数据对,因为 MutualInfo 可能是资源密集型的。可以在样本大小中指定更多的数据对。如果 MutualInfo 超时,则减小样本大小。 |
SetExpression | 聚合函数会默认聚合选择项定义的可能记录集合。可选记录集合可由集合分析表达式定义。 |
DISTINCT | 如果在函数参数前出现单词 DISTINCT,则将忽略计算该函数参数生成的副本。 |
TOTAL |
如果在函数参数前面出现单词 TOTAL,则计算给出当前选择项的所有可能值,而不只是属于当前维度值的那些值,即它会忽略图表维度。 TOTAL 限定符后可能紧跟着一系列由尖括号括起来的一个或多个字段名 <fld>。这些字段名应该是图表维度变量的子集。 |
限制:
数据对任意部分或两部分中的文本值,NULL 值和缺失值在整个数据对中忽略不计。
示例和结果:
添加示例脚本到应用程序并运行。然后,要将结果列中列出的字段添加到应用程序中的工作表才能查看结果。
示例 | 结果 |
---|---|
mutualinfo(Age, Salary, 1) |
对于包含维度 |
mutualinfo(TOTAL Age, Salary, 1, null(), 81) |
如果使用维度 Gender 创建筛选器窗格并从中进行选择,则选中 Female 时将显示结果 0.99805677,选中 Male 时将显示结果 0.99847373。这是因为该选择排除了不属于 Gender 的其他值的所有结果。 |
mutualinfo(TOTAL Age, Gender, 1, ValueLoop(25,35)) |
0.68196996. 从 Gender 选择任何值将把此项更改为 0。 |
mutualinfo({1} TOTAL Age, Salary, 1, null()) |
0.99820986. 这与选择无关。集合表达式 {1} 会忽视所有选择项和维度。 |
示例中所使用的数据:
Salary:
LOAD * inline [
"Employee name"|Age|Gender|Salary
Aiden Charles|20|Male|25000
Ann Lindquist|69|Female|58000
Anna Johansen|37|Female|36000
Anna Karlsson|42|Female|23000
Antonio Garcia|20|Male|61000
Benjamin Smith|42|Male|27000
Bill Yang|49|Male|50000
Binh Protzmann|69|Male|21000
Bob Park|51|Male|54000
Brenda Davies|25|Male|32000
Celine Gagnon|48|Female|38000
Cezar Sandu|50|Male|46000
Charles Ingvar Jönsson|27|Male|58000
Charlotte Edberg|45|Female|56000
Cindy Lynn|69|Female|28000
Clark Wayne|63|Male|31000
Daroush Ferrara|31|Male|29000
David Cooper|37|Male|64000
David Leg|58|Male|57000
Eunice Goldblum|31|Female|32000
Freddy Halvorsen|25|Male|26000
Gauri Indu|36|Female|46000
George van Zaant|59|Male|47000
Glenn Brown|58|Male|40000
Harry Jones|38|Male|40000
Helen Brolin|52|Female|66000
Hiroshi Ito|24|Male|42000
Ian Underwood|40|Male|45000
Ingrid Hendrix|63|Female|27000
Ira Baumel|39|Female|39000
Jackie Kingsley|23|Female|28000
Jennica Williams|36|Female|48000
Jerry Tessel|31|Male|57000
Jim Bond|50|Male|58000
Joan Callins|60|Female|65000
Joan Cleaves|25|Female|61000
Joe Cheng|61|Male|41000
John Doe|36|Male|59000
John Lemon|43|Male|21000
Karen Helmkey|54|Female|25000
Karl Berger|38|Male|68000
Karl Straubaum|30|Male|40000
Kaya Alpan|32|Female|60000
Kenneth Finley|21|Male|25000
Leif Shine|63|Male|70000
Lennart Skoglund|63|Male|24000
Leona Korhonen|46|Female|50000
Lina André|50|Female|65000
Louis Presley|29|Male|36000
Luke Langston|50|Male|63000
Marcus Salvatori|31|Male|46000
Marie Simon|57|Female|23000
Mario Rossi|39|Male|62000
Markus Danzig|26|Male|48000
Michael Carlen|21|Male|45000
Michelle Tyson|44|Female|69000
Mike Ashkenaz|45|Male|68000
Miro Ito|40|Male|39000
Nina Mihn|62|Female|57000
Olivia Nguyen|35|Female|51000
Olivier Simenon|44|Male|31000
Östen Ärlig|68|Male|57000
Pamala Garcia|69|Female|29000
Paolo Romano|34|Male|45000
Pat Taylor|67|Female|69000
Paul Dupont|34|Male|38000
Peter Smith|56|Male|53000
Pierre Clouseau|21|Male|37000
Preben Jørgensen|35|Male|38000
Rey Jones|65|Female|20000
Ricardo Gucci|55|Male|65000
Richard Ranieri|30|Male|64000
Rob Carsson|46|Male|54000
Rolf Wesenlund|25|Male|51000
Ronaldo Costa|64|Male|39000
Sabrina Richards|57|Female|40000
Sato Hiromu|35|Male|21000
Sehoon Daw|57|Male|24000
Stefan Lind|67|Male|35000
Steve Cioazzi|58|Male|23000
Sunil Gupta|45|Male|40000
Sven Svensson|45|Male|55000
Tom Lindwall|46|Male|24000
Tomas Nilsson|27|Male|22000
Trinity Rizzo|52|Female|48000
Vanessa Lambert|54|Female|27000
] (delimiter is '|');