# MutualInfo - función de gráfico

MutualInfo calcula la información mutua (IM) entre dos campos o entre los valores agregados en Aggr().

MutualInfo permite diferentes tipos de análisis de IM:

* IM emparejado: Calcule el IM entre un campo de controlador y un campo de destino.

* Desglose del controlador por valor: La IM se calcula entre los valores de los campos individuales en el controlador y los campos de destino.

* Selección de funciones: Utilice MutualInfo en un gráfico de cuadrícula para crear una matriz donde todos los campos se comparen entre sí en función de la IM (Información Mutua).

MutualInfo devuelve la información mutua agregada de dos conjuntos de datos. La información mutua es una medida de la relación entre 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. MutualInfo viene definida por la selección o la expresión establecida.

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 el mismo objetivo y controlador 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] target, driver , datatype [, breakdownbyvalue [, samplesize ]])

Tipo de datos que devuelve: numérico

Argumentos:

Argumentos

| Argumento | Descripción |
| --- | --- |
| target, driver | Las expresiones o campos que contienen los dos conjuntos de muestra para los que se ha de medir la información mutua. |
| datatype | Los tipos de datos contenidos en el objetivo y el controlador,<br><br>1 o 'dd' para discreto:discreto<br><br>2 o 'cc' para continuo:continuo<br><br>3 o 'cd' para continuo:discreto<br><br>4 o 'dc' para discreto:continuo<br><br>Los tipos de datos no 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 estimará la contribución de IM para ese valor. Puede usar ValueList() o ValueLoop(). Si se añade Null(), el cálculo calculará la IM general para todos los valores del controlador.<br><br>El desglose por valores requiere que el controlador contenga datos discretos. |
| samplesize | El número de valores que se han de muestrear desde el objetivo y el controlador. El muestreo es aleatorio. MutualInfo requiere un tamaño de muestra mínimo de 80. De forma predeterminada, MutualInfo solo muestrea hasta 10.000 pares de datos como MutualInfo, ya que puede requerir muchos 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 | Por defecto, 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 que los argumentos de la función, se descartarán los duplicados resultantes de evaluar los argumentos de la función. |
| TOTAL | Si la palabra TOTAL aparece antes de los argumentos de la función, el cálculo se realiza con todos los valores posibles dadas las selecciones actuales, y no solo con los que pertenecen al valor dimensional actual, es decir, ignora las dimensiones del gráfico. El cualificador TOTAL puede ir seguido de una lista con uno o más nombres de campo entre paréntesis angulares &lt;fld&gt;. Estos nombres de campo deberían ser un subgrupo de las variables de dimensión del gráfico.<br><br>[Definir el ámbito de agregación](https://help.qlik.com/es-ES/qlikview/September2025/Subsystems/Client/Content/QV_QlikView/ChartFunctions/define-aggregation-scope.htm) |

Limitaciones:

Los valores de texto, valores NULL y valores perdidos en una o ambas partes de un par de datos harán que se descarte el par de datos completo.

Ejemplos y resultados:

Añada el script de ejemplo a su app y ejecútelo. A continuación, añada como mínimo los campos de la columna de resultados a una hoja de su documento para ver el resultado.

Ejemplos de funciones

| Ejemplo | Resultado |
| --- | --- |
| `mutualinfo(Age, Salary, 1)` | Para una tabla que incluya la dimensión `Employee name` y la medida `mutualinfo(Age, Salary, 1)`, el resultado es 0,99820986. El resultado solo se muestra para la celda de totales. |
| `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 se seleccione Female y 0,99847373 si se selecciona Male. 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 desde 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 '|');`