MutualInfo — функция диаграммы
MutualInfo рассчитывает взаимную информацию (mutual information, MI) между двумя полями или агрегированными значениями в Aggr().
MutualInfo возвращает агрегированную взаимную информацию для двух наборов данных. Это позволяет провести анализ ключевых факторов между полем и потенциальным фактором. Взаимная информация (MI) измеряет отношение между наборами данных. Она агрегирована для пар значений (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' для комбинации «дискретный:дискретный» 2 или 'cc' для комбинации «непрерывный:непрерывный» 3 или 'cd' для комбинации «непрерывный:дискретный» 4 или 'dc' для комбинации «дискретный:непрерывный» Типы данных не чувствительны к регистру. |
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 и выборками из него полученный результат составит 0,99805677, если выбран элемент Female, и 0,99847373, если выбран элемент Male. Это обусловлено тем, что выборка исключает все результаты, которые не принадлежат другому значению элемента 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 '|');