MutualInfo — funkcja wykresu
MutualInfo oblicza informacje wzajemne pomiędzy dwoma polami lub wartościami zagregowanymi w Aggr().
MutualInfo zwraca zagregowaną informację wzajemną o dwóch zestawach danych. Pozwala to na analizę kluczowych czynników wpływających między polem a potencjalnym czynnikiem wpływającym. Informacja wzajemna mierzy relacje 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 i może być formatowana jako wartość percentyla. MutualInfo definiuje się przy użyciu wyborów lub wyrażenia set.
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 niekoniecznie wskazuje na związek przyczynowy między polami dzielącymi informację wzajemną. Dwa pola mogą dzielić między sobą informację wzajemną, ale mogą nie być dla siebie równorzędnymi czynnikami wpływającymi. Na przykład, porównując sprzedaż lodów i temperaturę zewnętrzną, MutualInfo pokaże informację wzajemną między nimi. Nie wskaże natomiast, czy to temperatura zewnętrzna wpływa na sprzedaż lodów, co jest prawdopodobne, czy też to sprzedaż lodów ma wpływ na temperaturę zewnętrzną, co jest mało prawdopodobne.
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 tych samych pól lub wyborów 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] field1, field2 , datatype [, breakdownbyvalue [, samplesize ]])
Typ zwracanych danych: numeric
Argumenty:
Argument | Opis |
---|---|
field1, field2 | 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, 1 lub 'dd' — dyskretne:dyskretne 2 lub 'cc' — ciągłe:ciągłe 3 lub 'cd' — ciągłe:dyskretne 4 lub 'dc' — dyskretne:ciągłe 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. 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 wierszy zdefiniowanym przez 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. Korzystając z polecenia TOTAL [<fld {.fld}>], gdzie po kwalifikatorze TOTAL podana jest lista nazw pól stanowiących podzbiór zmiennych wymiarów wykresu, można utworzyć podzbiór wszystkich możliwych wartości. |
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 skrypt przykładowy do aplikacji i uruchom ją. Aby zobaczyć wynik, dodaj do arkusza w swojej aplikacji pola wyszczególnione w kolumnie wyników.
Przykład | Wynik |
---|---|
mutualinfo(Age, Salary, 1) |
W przypadku tabeli zawierającej wymiar |
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. 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 '|');