Anónimo
Hola, tengo una gran cantidad de datos (digamos que se trata de la asistencia a las escuelas durante el covid), sobre los que he hecho algunos análisis para determinar las tasas de cambio de la asistencia de los estudiantes de un día a otro. He tomado la tasa de cambio mediana y estoy usando el método estadístico llamado ‘bootstrapping’ para obtener un intervalo de confianza para esto. Para cualquiera que no esté familiarizado con el bootstrapping, el proceso es:
1. Muestrear aleatoriamente los datos (con reemplazo) (esto se llama obtener una ‘muestra de arranque’) – He hecho esto usando dos columnas calculadas. Uno contiene una fecha aleatoria que determiné usando:
Random Sampling 1 =
VAR startdate = MIN(Bootstrapping[Date])
VAR enddate = MAX(Bootstrapping[Date])
return CALCULATE(RANDBETWEEN(startdate, enddate), ALL(Bootstrapping))
El siguiente tiene la tasa de cambio correspondiente:
Sampled Rate of Change 1 =
VAR WANTEDDATE = Bootstrapping[Random Sampling 1]
return CALCULATE(AVERAGE(Bootstrapping[Rate of change (Normalised)]), FILTER(ALL(Bootstrapping), Bootstrapping[Date] = WANTEDDATE))
Esto funciona bien, aunque tuve problemas para combinarlos en una columna, cada vez que lo intenté, se muestreó el mismo dato para cada fila de la columna, en lugar de un dato diferente.
2. Repite esto, digamos 2000 veces, y para cada muestra de bootstrap calcula el valor mediano. Esto da una distribución de medianas, que se puede utilizar para obtener un intervalo de confianza.
Mi salida ideal es una columna con las medianas de cada muestra de arranque que tomo.
El problema que tengo aquí es que necesito repetir esto muchas, muchas veces. Como está, tengo 2 columnas para cada muestra de arranque, que tengo que crear manualmente. Entonces serían más de 4000 columnas si lo hago correctamente. ¿Alguien tiene alguna sugerencia sobre cómo reducir esto usando algunas funciones que quizás no haya encontrado? ¿O alguna otra recomendación? Soy bastante nuevo en DAX y tengo problemas para adaptarme a su funcionamiento.
Muchas gracias.
v-yuaj-msft
Hola @Anónimo,
Perdón por que DAX no tenga actualmente la función para repetir una fórmula en un bucle. Puede considerar el uso de otro software estadístico como SAS, SPSS.
Espero que eso sea lo que estabas buscando.
Atentamente,
Yuna
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.
benfeditar
Hola @Anónimo
De hecho, escribí una publicación en mi blog sobre la implementación del muestreo de arranque en Power BI.
Para el «tipo de» bucles, utilicé la función generateeries que me permite crear muestras múltiples con reemplazos y también definir el tamaño de mi muestra.
Aquí está mi publicación:
https://datakuity.com/2021/02/15/bootstrap-analysis-with-power-bi/
Con respecto al rendimiento, probé solo en una pequeña muestra de aproximadamente 100k filas, por lo que estaría muy interesado en saber cómo funciona en una muestra grande.
No dude en comunicarse con nosotros si tiene alguna pregunta o desea discutirlo.
Ben
v-yuaj-msft
Hola @Anónimo,
Perdón por que DAX no tenga actualmente la función para repetir una fórmula en un bucle. Puede considerar el uso de otro software estadístico como SAS, SPSS.
Espero que eso sea lo que estabas buscando.
Atentamente,
Yuna
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.
lbendlin
DAX tiene un concepto de variables de tabla, accesible a través de ADDCOLUMNS o SELECTCOLUMNS. Puede usarlos para crear tablas temporales para su cálculo y luego devolver los resultados como escalares.
Dado que se trata de estadísticas, también puede considerar ejecutar scripts R o Python en lugar de DAX simple.