跳到主要内容

MutualInfo - 图表函数

MutualInfo calculates the mutual information (MI) between two fields or between aggregated values in Aggr().

MutualInfo 返回两个数据集的聚合互信息。这允许在字段和潜在驱动因素之间进行关键驱动因素分析。互信息是数据集之间关系的一种度量,并为在图表维度上迭代的 (x,y) 对值进行聚合。互信息在 0 和 1 之间测量,可以格式化为百分位值。MutualInfo 由选择或集合表达式定义。

MutualInfo 允许不同种类的 MI 分析:

  • 对范围 MI:计算驱动程序字段和目标字段之间的 MI。

  • 驱动因素按值分解:MI 是在驱动因素字段和目标字段中的单个字段值之间计算的。

  • 特性选择:使用网格图中 MutualInfo 的生成一个矩阵,其中所有字段基于 MI 相互比较。

MutualInfo 不一定表示共享互信息的字段之间的因果关系。两个字段可以共享相互的信息,但对彼此来说可能不相等。例如,当比较冰淇淋销量和室外温度时,MutualInfo 会显示两者之间的互信息。它不会指出是室外温度推动冰淇淋销售(这是可能的),还是冰淇淋销售推动室外温度(这是不可能的)。

在计算互信息时,关联会影响来自不同表的字段的值之间的对应关系和频率。

相同字段或选择的返回值可能略有不同。这是由于每次 MutualInfo 调用都是对随机选择的样本进行操作,并且 MutualInfo 算法本身具有随机性。

MutualInfo 可应用于 Aggr() 函数。

Syntax:  

MutualInfo({SetExpression}] [DISTINCT] [TOTAL] field1, field2 , datatype [, breakdownbyvalue [, samplesize ]])

Return data type: 数字

Arguments:  

参数
参数 说明
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 限定符后跟一个或多个字段名称作为图表维度变量的子集的列表),您可以创建总可能值的子集。

定义聚合范围

Limitations:  

数据对任意部分或两部分中的文本值,NULL 值和缺失值在整个数据对中忽略不计。

Examples and results:  

将示例脚本添加到应用程序并运行。然后,要将结果列中列出的字段添加到应用程序中的表格才能查看结果。

函数示例
示例 结果
mutualinfo(Age, Salary, 1)

对于包含维度 Employee name以及度量 mutualinfo(Age, Salary, 1) 的表格,结果为 0.99820986。仅显示合计单元格的结果。

mutualinfo(TOTAL Age, Salary, 1, null(), 81)

0.99823109.

如果创建具有维度 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|50Beat 5|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 '|');