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 '|');