Frecuencia acumulada inversa

Un usuario Pregunto ✅

Jack-B-Quick

Nuevo en BI y recién me estoy mojando los pies.

Tengo la siguiente tabla de resumen a continuación basada en algunos datos de fondo (tabla ‘SampleLicCnts’). La columna Frecuencia era simple, por supuesto, simplemente establezca el valor en ‘recuento’ frente a ‘suma’. Creé la columna Bin para poder usarla para calcular la frecuencia acumulativa. Fórmulas respectivas para bin y frecuencia acumulada aquí…

Bin = FLOOR(DIVIDE('SampleLicCnts'[LicCnt],1),1)
Cumulative Frequency = CALCULATE(COUNT(SampleLicCnts[LicCnt])
,FILTER(ALL(SampleLicCnts),SampleLicCnts[BIN_NUMBER]<=MAX(SampleLicCnts[BIN_NUMBER])))

Estoy luchando para calcular el Frecuencia acumulada inversa (texto rojo) como se muestra aquí…

Licencias Compartimiento Frecuencia Frecuencia acumulada Frecuencia acumulada inversa
1 1 2715 2715 90980
2 2 1774 4489 88265
3 3 1083 5572 83776
4 4 565 6137 78204
5 5 249 6386 72067
6 6 100 6486 65681
7 7 44 6530 59195
8 8 27 6557 52665
9 9 dieciséis 6573 46108
10 10 8 6581 39535
11 11 6 6587 32954
12 12 1 6588 26367
13 13 3 6591 19779
14 14 2 6593 13188
15 15 2 6595 6595

Traté de revertir a la lógica de la frecuencia acumulativa cambiando <=MAX a>=MIN pero eso no produce los resultados correctos. También hice referencia a este tema de «Suma inversa», pero no es exactamente el mismo problema.

¿Alguna idea sobre cómo calcular la frecuencia acumulada inversa? Por cierto… En última instancia, busco el acumulado inverso Relativo Frecuencia, pero para llegar allí primero necesito la Frecuencia Acumulativa Inversa.

¡Gracias por adelantado!

cmmahan

En respuesta a Jack-B-Quick

Veo lo que quieres decir sobre el cambio de datos. Para esta solución, asumo que su valor Lic se puede ordenar en sus datos y no es solo una clave aleatoria. Si es así, es probable que deba volver a crear la columna Bin, solo para que se pueda ordenar.

Primero, cambié la medida de frecuencia acumulada a esta expresión:

Cumulative count = if(HASONEVALUE(Data[LicCnt]),COUNTAX(FILTER(ALL(Data),Data[LicCnt]<=SELECTEDVALUE(Data[LicCnt])),[Count]),BLANK())

Luego configuré la medida de frecuencia acumulativa inversa en esto:

Measure1 = SUMX(FILTER(SUMMARIZE(ALL(Data),Data[LicCnt],"Cumulative Count",[Cumulative count]),[LicCnt]>=SELECTEDVALUE(Data[LicCnt])),[Cumulative count])

Lo que está haciendo es crear una tabla virtual donde agrega el Conteo acumulativo al LicCnt, y luego lo acumula en una sola tabla que se ve así:

snipo.png

Luego suma los valores de esta tabla virtual donde LicCnt es mayor que el valor actual. Esto mantiene el conteo cuando las cosas se reordenan a través de la clasificación, pero depende de que pueda ordenar por LicCnt.

Ashish_Mathur

Hola,

¿Podría compartir los datos sin procesar (en un formato que se pueda pegar en un archivo de MS Excel)?

Jack-B-Quick

En respuesta a Ashish_Mathur

La base de los datos se basa en un archivo de texto muy simple (LicCnt.txt) que se parece a los datos a continuación (primeras 50 filas de datos copiados/pegados). El problema no cambia, pero hay 6595 filas en total con valores variables del 1 al 15 (Frecuencia de cada valor presentado arriba). Adjuntaría el archivo pero no veo la opción para hacerlo.

Además… Un error ligeramente ambiguo de mi parte en la publicación original. En realidad, no tengo una tabla «Resumen» separada (solo la tabla original importada «LicCnt»). Agregué la columna Bin a la tabla (según la fórmula anterior). Luego creé un Visual y agregué LicCnt (cambio de Sum a Count) para obtener la columna de Frecuencia. Luego creé una medida para obtener la frecuencia acumulativa (nuevamente según la fórmula anterior).

¡Gracias!

licCnt
1
1
1
1
1
1
1
1
3
3
3
4
2
2
4
2
1
1
1
1
2
1
1
3
5
2
2
1
2
2
3
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
4
4
5

Ashish_Mathur

En respuesta a Jack-B-Quick

Hola,

¿Es este el resultado que esperas? Puede descargar mi archivo PBI desde aquí.

Sin título.png

Jack-B-Quick

En respuesta a Ashish_Mathur

Los resultados que muestra (y en su archivo) están cerca, pero no exactamente lo que quiero, y cambian según la forma en que se ordenan los datos (esto no es lo deseado). Basado en las primeras 50 filas de datos pegados arriba, estos son los resultados que espero. Esto parece ser demasiado difícil en BI en comparación con fórmulas y «rellenos» muy simples en Excel.

licencia Frecuencia Frecuencia acumulada Frecuencia acumulativa inversa Frecuencia relativa acumulada inversa
1 15 15 196 1.0000
2 24 39 181 0.9235
3 5 44 142 0.7245
4 4 48 98 0.5000
5 2 50 50 0.2551

Estoy mirando sus funciones tratando de averiguar exactamente qué están haciendo, pero aún no estoy familiarizado con RANKX y algunas de las otras lógicas que usó.

chile picante: También le agradezco su ayuda, pero su fórmula tampoco devuelve los valores adecuados para la frecuencia acumulada inversa. Y sí, ahora me doy cuenta de que no era necesario agregar la columna Bin.

¡Gracias!

Ashish_Mathur

En respuesta a Jack-B-Quick

Hola,

No tengo claro tu requerimiento. ¿Está diciendo que LicCnt siempre debe estar en orden ascendente?

cmmahan

En respuesta a Jack-B-Quick

Veo lo que quieres decir sobre el cambio de datos. Para esta solución, asumo que su valor Lic se puede ordenar en sus datos y no es solo una clave aleatoria. Si es así, es probable que deba volver a crear la columna Bin, solo para que se pueda ordenar.

Primero, cambié la medida de frecuencia acumulada a esta expresión:

Cumulative count = if(HASONEVALUE(Data[LicCnt]),COUNTAX(FILTER(ALL(Data),Data[LicCnt]<=SELECTEDVALUE(Data[LicCnt])),[Count]),BLANK())

Luego configuré la medida de frecuencia acumulativa inversa en esto:

Measure1 = SUMX(FILTER(SUMMARIZE(ALL(Data),Data[LicCnt],"Cumulative Count",[Cumulative count]),[LicCnt]>=SELECTEDVALUE(Data[LicCnt])),[Cumulative count])

Lo que está haciendo es crear una tabla virtual donde agrega el Conteo acumulativo al LicCnt, y luego lo acumula en una sola tabla que se ve así:

snipo.png

Luego suma los valores de esta tabla virtual donde LicCnt es mayor que el valor actual. Esto mantiene el conteo cuando las cosas se reordenan a través de la clasificación, pero depende de que pueda ordenar por LicCnt.

picante

En respuesta a Jack-B-Quick

Inv Cumulative Frequency = CALCULATE(COUNT(SampleLicCnts[LicCnt])
                                    ,FILTER(ALL(SampleLicCnts), SampleLicCnts[BIN] >= MAX(SampleLicCnts[Bin])))

Además, ¿hay alguna razón específica para usar la fórmula Bin, en lugar de simplemente decir BIN = ¿Licenciado?

picante

Está en el camino correcto, pero no necesita consultar la tabla original una vez que tenga suficientes datos en su tabla de resumen.

InvCumulative Frequency = CALCULATE(SUM(Summary[Cumulative Frequency]),
                                FILTER(ALL(Summary), Summary[Bin] < MAX(Summary[Bin])))

También puede volver a escribir su medida de ‘Frecuencia acumulada’ para obtener los datos que necesita de su tabla de resumen

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *