MutualInfo - 图表函数
MutualInfo 计算 Aggr() 中两个字段之间或聚合值之间的互信息(MI)。
MutualInfo 返回两个数据集的聚合互信息。这允许在字段和潜在驱动因素之间进行关键驱动因素分析。互信息是数据集之间关系的一种度量,并为在图表维度上迭代的 (x,y) 对值进行聚合。互信息在 0 和 1 之间测量,可以格式化为百分位值。MutualInfo 由选择或集合表达式定义。
MutualInfo 允许不同种类的 MI 分析:
-
对范围 MI:计算驱动程序字段和目标字段之间的 MI。
-
驱动因素按值分解:MI 是在驱动因素字段和目标字段中的单个字段值之间计算的。
-
特性选择:使用网格图中 MutualInfo 的生成一个矩阵,其中所有字段基于 MI 相互比较。
MutualInfo 不一定表示共享互信息的字段之间的因果关系。两个字段可以共享相互的信息,但对彼此来说可能不相等。例如,当比较冰淇淋销量和室外温度时,MutualInfo 会显示两者之间的互信息。它不会指出是室外温度推动冰淇淋销售(这是可能的),还是冰淇淋销售推动室外温度(这是不可能的)。
在计算互信息时,关联会影响来自不同表的字段的值之间的对应关系和频率。
相同字段或选择的返回值可能略有不同。这是由于每次 MutualInfo 调用都是对随机选择的样本进行操作,并且 MutualInfo 算法本身具有随机性。
MutualInfo 可应用于 Aggr() 函数。
语法:
MutualInfo({SetExpression}] [DISTINCT] [TOTAL] field1, field2 , datatype [, breakdownbyvalue [, samplesize ]])
返回数据类型: 数字
参数:
参数 | 说明 |
---|---|
field1, field2 | 表达式或字段,其中包含两个要度量交互信息的样本集合。 |
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 {.fld}>](其中 TOTAL 限定符后跟一个或多个字段名称作为图表维度变量的子集的列表),您可以创建总可能值的子集。 |
限制:
数据对任意部分或两部分中的文本值,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 '|');