# MutualInfo — funkcja wykresu

MutualInfo oblicza informacje wzajemne pomiędzy dwoma polami lub wartościami zagregowanymi w Aggr().

MutualInfo umożliwia różne rodzaje analizy informacji wzajemnej:

* Informacja wzajemna parami: Obliczenie informacji wzajemnej między polem driver a polem target.

* Podział pól driver według wartości: Informacja wzajemna jest obliczana między poszczególnymi wartościami pól driver i target.

* Wybór funkcji: Użyj MutualInfo w wykresie siatkowym, aby wygenerować macierz, w której wszystkie pola są porównywane ze sobą na podstawie informacji wzajemnej.

MutualInfo zwraca zagregowaną informację wzajemną o dwóch zestawach danych. Informacja wzajemna jest miarą relacji między zestawami danych i jest agregowana dla wartości par (x, y) iterowanych po wymiarach wykresu. Informacja wzajemna jest mierzona w zakresie od 0 do 1. MutualInfo jest definiowana przez wybór lub wyrażenie zestawu

Podczas obliczania informacji wzajemnej asocjacje wpływają na powiązanie i częstotliwość wartości z pól pochodzących z różnych tabel.

Zwracane wartości dla tego samego pola target i driver mogą się nieznacznie różnić. Wynika to z tego, że każde wywołanie MutualInfo działa na losowo wybranej próbce, a także z nieodłącznej losowości algorytmu MutualInfo.

MutualInfo można zastosować do funkcji Aggr().

Składnia:

MutualInfo({SetExpression}] [DISTINCT] [TOTAL] target, driver , datatype [, breakdownbyvalue [, samplesize ]])

Typ zwracanych danych: liczbowy

Argumenty:

Argumenty

| Argument | Opis |
| --- | --- |
| target, driver | Wyrażenia lub pola zawierające dwa zestawy próbek, dla których będzie obliczana informacja wzajemna. |
| datatype | Typy danych zawarte w polu driver i target,<br><br>1 lub 'dd' — dyskretne:dyskretne<br><br>2 lub 'cc' — ciągłe:ciągłe<br><br>3 lub 'cd' — ciągłe:dyskretne<br><br>4 lub 'dc' — dyskretne:ciągłe<br><br>W typach danych nie jest uwzględniana wielkość liter. |
| breakdownbyvalue | Wartość statyczna odpowiadająca wartości w polu driver. Jeśli podano, obliczony zostanie udział informacji wzajemnej w tej wartości. Możesz użyć ValueList() lub ValueLoop(). W przypadku dodania Null() obliczona zostanie ogólna informacja wzajemna dla wszystkich wartości w polu driver.<br><br>Podział według wartości wymaga, aby pole driver zawierało dane dyskretne. |
| samplesize | Liczba wartości do próbkowania z pól target i driver. Pobieranie próbek jest losowe. MutualInfo wymaga minimalnej wielkości próbki 80. MutualInfo domyślnie próbkuje tylko do 10 000 par danych, ponieważ działanie MutualInfo może intensywnie wykorzystywać zasoby. Można określić większą liczbę par danych w próbce. Jeśli MutualInfo spowoduje przekroczenie limitu czasu, zmniejsz rozmiar próbki. |
| SetExpression | Funkcja agregacji będzie domyślnie dokonywać agregacji na zbiorze możliwych rekordów zdefiniowanym przez daną selekcję. Alternatywny zestaw wierszy można zdefiniować za pomocą wyrażenia analizy zestawów. |
| DISTINCT | Jeśli przed argumentami funkcji występuje słowo DISTINCT, wówczas duplikaty wynikające z wyników obliczenia argumentów funkcji są pomijane. |
| TOTAL | Jeśli słowo TOTAL występuje przed argumentami funkcji, wówczas obliczenie jest wykonywane względem wszystkich możliwych wartości z uwzględnieniem bieżących selekcji, nie tylko tych należących do bieżącej wartości wymiaru, to znaczy z pominięciem wymiarów wykresu. Po kwalifikatorze TOTAL może następować lista zawierająca co najmniej jedną nazwę pola w nawiasach trójkątnych &lt;fld&gt;. Te nazwy pól powinny być podzbiorem zmiennych wymiaru wykresu.<br><br>[Określenie zakresu agregacji](https://help.qlik.com/pl-PL/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/define-aggregation-scope.htm) |

Ograniczenia:

Wartości tekstowe, wartości NULL i wartości brakujące w dowolnej części pary danych powodują pominięcie całej pary danych.

Przykłady i wyniki:

Dodaj przykładowy skrypt do aplikacji i uruchom ją. Następnie dodaj do arkusza w swojej aplikacji pola wyszczególnione w kolumnie wyników, aby wyświetlić wynik.

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `mutualinfo(Age, Salary, 1)` | W przypadku tabeli zawierającej wymiar `Employee name` i miarę `mutualinfo(Age, Salary, 1)`, wynik wynosi 0,99820986. Wynik ten jest wyświetlany tylko dla komórki sumy. |
| `mutualinfo(TOTAL Age, Salary, 1, null(), 81)` | Jeśli utworzysz panel filtrowania z wymiarem Gender, a następnie dokonasz wyborów z niego, wówczas pojawi się wynik 0,99805677 w przypadku wyboru Female oraz wynik 0,99847373 w przypadku wyboru Male. Przyczyną jest to, że selekcja wyklucza wszystkie wyniki, które nie należą do drugiej wartości wymiaru Gender. |
| `mutualinfo(TOTAL Age, Gender, 1, ValueLoop(25,35))` | 0.68196996. Wybór dowolnej wartości z Gender spowoduje zmianę na 0. |
| `mutualinfo({1} TOTAL Age, Salary, 1, null())` | 0.99820986. Nie zależy to od wyborów. Wyrażenie set {1} ignoruje wszystkie wybory i wymiary. |

Dane zastosowane w przykładach:

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