# 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 | 包含在目標和驅動程式中的資料類型，<br><br>1 或 'dd' 用於 discrete:discrete<br><br>2 或 'cc' 用於 continuous:continuous<br><br>3 或 'cd' 用於 continuous:discrete<br><br>4 或 'dc' 用於 discrete:continuous<br><br>資料類型不區分大小寫。 |
| breakdownbyvalue | 靜態值對應至驅動程式中的值。若套用，計算將會計算 MI 對該值的占比。您可以使用 ValueList() 或 ValueLoop()。若新增 Null()，計算將會計算驅動程式中所有值的整體 MI。<br><br>依值分解需要驅動程式包含離散資料。 |
| samplesize | 要從目標和驅動程式取樣的值的數量。取樣為隨機。MutualInfo 需要的最低取樣大小為 80。依照預設，MutualInfo 取樣最多僅達 10,000 個資料對，因為 MutualInfo 可以是資源密集性質。您可以依樣本大小指定更大的資料對數量。若 MutualInfo 逾時，減少樣本大小。 |
| SetExpression | 依預設，彙總函數將彙總選項所定義的一組可能記錄。集合分析運算式可定義一組替代的記錄。 |
| DISTINCT | 如果 DISTINCT 這個字出現在函數引數之前，會忽略評估函數引數所產生的重複項目。 |
| TOTAL | 如果單字 TOTAL 位於函數引數之前，則會在提供現行選項的所有可能值上進行計算，而不僅僅是關於目前維度值的那些選項，也就是說，它會忽略圖表維度。<br><br>透過使用 TOTAL [&lt;fld {.fld}&gt;] (其中 TOTAL 限定詞後面是做為圖表維度變數子集之一或更多欄位名稱的清單)，您可建立總可能值的子集。<br><br>[定義彙總範圍](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/define-aggregation-scope.htm) |

限制：

若資料配對中有任一資料是 (或兩個都是) 文字值、NULL 值及遺漏值，會導致整個資料配對被忽略。

範例與結果：

將範例指令碼新增至您的應用程式並予以執行。若要查看結果，將結果資料行中列出的欄位新增至您應用程式中的工作表。

函數範例

| 範例 | 結果 |
| --- | --- |
| `mutualinfo(Age, Salary, 1)` | 對於包含維度 `Employee name` 和量值 `mutualinfo(Age, Salary, 1)` 的表格，結果為 0.99820986。只會顯示總計儲存格的結果。 |
| `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 '|');`

相關學習內容：

* [如何使用相互資訊評估關係？](https://help.qlik.com/lnk/How_evaluate_relationships_using_Mutual_information)

## 瞭解更多資訊

* [如何使用相互資訊評估關係？](https://help.qlik.com/lnk/How_evaluate_relationships_using_Mutual_information)