MutualInfo - función de gráfico
MutualInfo calcula la información mutua (IM) entre dos campos o entre los valores agregados en Aggr().
MutualInfo devuelve la información mutua agregada de dos conjuntos de datos. Esto permite el análisis de controladores clave entre un campo y un controlador potencial. La información mutua mide la relación entre los conjuntos de datos y se agrega para valores de pares (x, y) iterados sobre las dimensiones del gráfico. La información mutua se mide entre 0 y 1 y se puede formatear como un valor de percentil. MutualInfo se define mediante selecciones o mediante una expresión de conjunto.
MutualInfo permite diferentes tipos de análisis de IM:
-
IM pareada: Calcula la IM entre un campo controlador y un campo destino.
-
Desglose del controlador por valor: La información mutua IM se calcula entre los valores individuales de los campos en el controlador y los campos de destino.
-
Selección de características: Use MutualInfo en un gráfico de cuadrícula para crear una matriz en la que todos los campos se comparen entre sí en función de la IM.
MutualInfo no necesariamente indica causalidad entre campos que comparten información mutua. Dos campos pueden compartir información mutua, pero pueden no ser iguales entre sí. Por ejemplo, al comparar las ventas de helados y la temperatura exterior, MutualInfo mostrará información mutua entre los dos. No indicará si es la temperatura exterior lo que impulsa las ventas de helados, lo cual es probable, o si es la venta de helados lo que impulsa la temperatura exterior, lo cual es poco probable.
Al calcular la información mutua, las asociaciones afectan a la correspondencia y la frecuencia de los valores de los campos que son de diferentes tablas.
Los valores devueltos para los mismos campos o selecciones pueden variar ligeramente. Esto se debe a que cada llamada a MutualInfo opera en una muestra seleccionada al azar y a la aleatoriedad inherente del algoritmo MutualInfo.
MutualInfo se puede aplicar a la función Aggr().
Sintaxis:
MutualInfo({SetExpression}] [DISTINCT] [TOTAL] field1, field2 , datatype [, breakdownbyvalue [, samplesize ]])
Tipo de datos que devuelve: numérico
Argumentos:
Argumento | Descripción |
---|---|
field1, field2 | Las expresiones o campos que contienen los dos conjuntos de muestra para los que se ha de medir el coeficiente de información mutua. |
datatype |
Los tipos de datos que contienen el campo destino y el campo controlador, 1 o 'dd' para discreto:discreto 2 o 'cc' para continuo:continuo 3 o 'cd' para continuo:discreto 4 o 'dc' para discreto:continuo Los tipos de datos distinguen entre mayúsculas y minúsculas. |
breakdownbyvalue |
Un valor estático que corresponde a un valor en el controlador. Si se proporciona, el cálculo calculará la contribución de IM para ese valor. Puede usar ValueList() o ValueLoop(). Si se añade Null(), el cálculo computará el IM general para todos los valores del controlador. El desglose por valor requiere que el controlador contenga datos discretos. |
samplesize |
El número de valores para extraer muestras desde el destino y el controlador. Las muestras son aleatorias. MutualInfo requiere un tamaño de muestra mínimo de 80. De forma predeterminada, MutualInfo muestrea hasta 10.000 pares de datos ya que MutualInfo puede consumir demasiados recursos. Puede especificar un número mayor de pares de datos en el tamaño de la muestra. Si se agota el tiempo de espera de MutualInfo, reduzca el tamaño de la muestra. |
SetExpression | De forma predeterminada, la función de agregación agregará sobre el conjunto de registros posibles definidos por la selección. Se puede definir un conjunto alternativo de registros mediante una expresión de análisis de conjuntos. |
DISTINCT | Si la palabra DISTINCT aparece antes de los argumentos de la función, los duplicados resultantes de evaluar los argumentos de la función se descartan. |
TOTAL |
Si la palabra TOTAL aparece antes de los argumentos de la función, el cálculo se realiza sobre todos los valores posibles dadas las selecciones actuales y no solo aquellas que pertenecen al valor dimensional actual, es decir, no tiene en cuenta las dimensiones del gráfico. Usar TOTAL [<fld {.fld}>], donde al cualificador TOTAL le sigue una lista de uno o más nombres de campo como un subconjunto de las variables de dimensión del gráfico, crea un subconjunto de los valores totales posibles. |
Limitaciones:
Los valores de texto, valores NULL y los valores perdidos en cualquiera o ambas partes de un par de datos dan como resultado que el par de datos completo no se tenga en cuenta.
Ejemplos y resultados:
Agregue el script de ejemplo en su app y ejecútelo. Para ver el resultado, agregue los campos enumerados en la columna de resultados a una hoja de su app.
Ejemplo | Resultado |
---|---|
mutualinfo(Age, Salary, 1) |
Para una tabla que incluya la dimensión |
mutualinfo(TOTAL Age, Salary, 1, null(), 81) |
Si crea un panel de filtrado con la dimensión Gender y realiza selecciones desde el mismo, verá el resultado 0.99805677 cuando Female esté seleccionado y 0.99847373 si Male está seleccionado. Esto se debe a que la selección excluye todos los resultados que no pertenecen al otro valor de Gender. |
mutualinfo(TOTAL Age, Gender, 1, ValueLoop(25,35)) |
0.68196996. Seleccionar cualquier valor de Gender cambiará esto a 0. |
mutualinfo({1} TOTAL Age, Salary, 1, null()) |
0.99820986. Esto es independiente de las selecciones. La expresión de conjunto {1} ignora todas las selecciones y dimensiones. |
Datos utilizados en los ejemplos:
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 '|');