Перейти к основному содержимому

MutualInfo — функция диаграммы

MutualInfo calculates the mutual information (MI) between two fields or between aggregated values in Aggr().

MutualInfo возвращает агрегированную взаимную информацию для двух наборов данных. Это позволяет провести анализ ключевых факторов между полем и потенциальным фактором. Взаимная информация (MI) измеряет отношение между наборами данных. Она агрегирована для пар значений (x,y), повторяемых в измерениях диаграммы. Взаимная информация измеряется в диапазоне от 0 до 1 и может быть представлена в виде значения процентиля. MutualInfo определяется выборками или выражением множества.

MutualInfo позволяет выполнять различные виды анализа MI:

  • Попарный MI: рассчитывается MI между полем фактора и целевым полем.

  • Разбивка фактора по значению: MI рассчитывается между индивидуальными значениями в поле фактора и целевом поле.

  • Выбор функции: используйте MutualInfo на сетчатой диаграмме для создания матрицы, где все поля сравниваются друг с другом на основе MI.

MutualInfo не обязательно указывает на причинно-следственную связь между полями, обменивающимися взаимной информацией. Два поля могут иметь взаимную информацию, но не могут быть равноценными факторами друг для друга. Например, при сравнении продаж мороженого и температуры наружного воздуха MutualInfo покажет взаимную информацию между ними. Он не покажет, является ли температура наружного воздуха фактором, определяющим продажи мороженого (что вполне вероятно), или продажи мороженого определяют температуру наружного воздуха (что маловероятно).

При расчете взаимной информации связи затрагивают соотношение между значениями из полей различных таблиц и частоту этих значений.

Возвращаемые значения для одних и тех же полей или выборок могут незначительно отличаться. Причина этого в том, что каждый вызов MutualInfo использует случайным образом выбранный образец и свойственную случайность алгоритма MutualInfo.

MutualInfo может быть применена к функции Aggr().

Syntax:  

MutualInfo({SetExpression}] [DISTINCT] [TOTAL] field1, field2 , datatype [, breakdownbyvalue [, samplesize ]])

Return data type: числовое значение

Arguments:  

Аргументы
Аргумент Описание
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 предшествует списку из одного или нескольких имен полей, выступающих в качестве подмножества переменных измерения диаграммы, создается подмножество всех возможных значений.

Определение объема агрегирования

Limitations:  

Текстовые значения, значения NULL и отсутствующие значения в какой-либо или обеих частях пары значений приводят к игнорированию всей пары значений.

Examples and results:  

Добавьте образец скрипта в свое приложение и запустите. Затем добавьте на лист приложения поля, указанные в столбце с результатами, чтобы увидеть результаты.

Примеры функции
Пример Результат
mutualinfo(Age, Salary, 1)

Для таблицы, включающей измерение Employee name и меру mutualinfo(Age, Salary, 1), результат будет 0,99820986. Результат отображается только для итоговой ячейки.

mutualinfo(TOTAL Age, Salary, 1, null(), 81)

0.99823109.

При создании фильтра с измерением 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|50Beat 5|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 '|');