MutualInfo - diagramfunktion
MutualInfo beräknar ömsesidig information (MI) mellan två fält eller mellan aggregerade värden i Aggr().
MutualInfo returnerar den aggregerade gemensamma informationen för två datauppsättningar. Detta möjliggör analys av nyckeldrivare för ett fält och en potentiell drivare. Gemensam information mäter förhållandet mellan datauppsättningarna och aggregeras för (x,y)-parvärden, vilket upprepas för diagrammets dimensioner. Gemensam information har ett mått mellan 0 och 1 och kan formateras som ett percentilvärde. MutualInfo definieras av antingen urval eller ett set-uttryck.
MutualInfo tillåter olika typer av MI-analys:
-
Gemensam information (MI) för par: Beräkna MI i ett drivande fält och ett målfält.
-
Uppdelning av drivare efter värde: MI beräknas med individuella fältvärden i drivande fält och målfält.
-
Funktionsurval: Använd MutualInfo i ett rutnätsdiagram om du vill skapa en matris där alla fält jämförs med varandra baserat på MI.
MutualInfo visar inte nödvändigtvis på kausalitet mellan fält med gemensam information. Även om information är gemensam för två fält behöver de inte driva varandra lika mycket. Om du till exempel jämför glassförsäljning och utomhustemperatur, visar MutualInfo att de har gemensam information. Detta visar inte om det är utomhustemperaturen som driver glassförsäljningen, vilket är troligt, eller om det är glassförsäljningen som driver utomhustemperaturen, vilket är osannolikt.
Vid beräkning av ömsesidig information påverkar associationer överensstämmelsen mellan och frekvensen av värden från fält som kommer från olika tabeller.
Värdena som returneras för samma fält eller urval kan variera något. Detta beror på att varje MutualInfo-anrop verkar på slumpmässigt utvalda exempeldata och på MutualInfo-algoritmens inbyggda slumpmässighet.
MutualInfo kan tillämpas på funktionen Aggr().
Syntax:
MutualInfo({SetExpression}] [DISTINCT] [TOTAL] field1, field2 , datatype [, breakdownbyvalue [, samplesize ]])
Returnerad datatyp: numeriska
Argument:
Argument | Beskrivning |
---|---|
field1, field2 | Uttrycken eller fälten som innehåller de två exempeluppsättningarna den gemensamma informationen ska mätas för. |
datatype |
Datatyperna som finns i målet och drivaren, 1 eller 'dd' för diskret:diskret 2 eller 'cc' för kontinuerlig:kontinuerlig 3 eller 'cd' för kontinuerlig:diskret 4 eller 'dc' för diskret:kontinuerlig Datatyper är inte skiftlägeskänsliga. |
breakdownbyvalue |
Ett statiskt värde som motsvarar ett värde i drivaren. Om det tillhandahålls beräknas MI-bidraget för det värdet. Du kan använda ValueList() eller ValueLoop(). Om Null() läggs till beräknas total MI för alla värden i drivaren. För uppdelning efter värde måste drivaren innehålla diskreta data. |
samplesize |
Antal värden som ska ingå i exempeldata från mål och drivare. Val av exempeldata är slumpmässigt. MutualInfo kräver en exempelstorlek på minst 80. Som standard använder MutualInfo endast upp till 10 000 datapar som exempeldata eftersom MutualInfo kan kräva mycket resurser. Du kan specificera fler datapar i exempeldatastorleken. Om MutualInfo når tidsgränsen minskar du mängden exempeldata. |
SetExpression | Som standard kommer aggregeringsfunktionen att aggregera över den uppsättning möjliga poster som definierats av urvalet. En alternativ uppsättning poster kan definieras med ett uttryck för set-analys. |
DISTINCT | Om predikatet DISTINCT förekommer framför funktionsargumenten ignoreras alla dubbletter som evaluerats utifrån funktionsargumenten. |
TOTAL |
Om ordet TOTAL står före funktionsargumenten görs beräkningen över alla valbara värden givet de aktuella valen, och inte bara sådana som rör det aktuella dimensionsvärdet, det vill säga att diagramdimensionerna ignoreras. Genom att använda TOTAL [<fld {.fld}>], där kvalificeraren TOTAL följs av en lista med ett eller flera fältnamn som en delmängd av diagramdimensionens variabler, skapar du en delmängd av de totala möjliga värdena. |
Begränsningar:
Textvärden, NULL-värden och saknade värden i någon eller båda delarna av ett datapar resulterar i att hela dataparet ignoreras.
Exempel och resultat:
Lägg till exempelskriptet i appen och kör det. När du vill se resultatet lägger du till de fält som anges i resultatkolumnen i ett ark i din app.
Exempel | Resultat |
---|---|
mutualinfo(Age, Salary, 1) |
Om en tabell innehåller dimensionen |
mutualinfo(TOTAL Age, Salary, 1, null(), 81) |
Om du skapar en filterruta med dimensionen Gender och gör urval från den, ser du resultatet 0.99805677 när Female är valt och 0.99847373 om Male är valt. Detta beror på att urvalet utesluter alla resultat som inte hör till det andra värdet för Gender. |
mutualinfo(TOTAL Age, Gender, 1, ValueLoop(25,35)) |
0.68196996. Alla värden som väljs från Gender ändrar detta till 0. |
mutualinfo({1} TOTAL Age, Salary, 1, null()) |
0.99820986. Detta är oberoende av urval. Set-uttrycket {1} bortser från alla urval och dimensioner. |
Data som används i exempel:
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 '|');