Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Cómo crear Rolling Average con +/-St. Dev. Band

Hola

Tengo una columna de serie temporal (por ejemplo, fecha con el precio del índice bursátil). Quiero mostrar este índice bursátil como gráfico de líneas, con promedio móvil de 365 días y +/- 1 std. dev. Creé 3 medidas en este índice: la media móvil (MA); el MA+1 std. dev; y MA-1 std. dev. Así que al gráfico le debería gustar esto:

wlf0032_0-1633736925875.png

Además, quiero que el eje de fecha responda a una segmentación de datos de fecha. Pero cuando cambio la segmentación de fechas, el gráfico se convierte en el siguiente. El eje de fecha no respondió, solo el índice bursátil desapareció parcialmente y las 3 medidas también se comportaron con timez.

(P.D. el valor de la medida para cada día no debe cambiar cuando cambia la segmentación de datos de fecha)

wlf0032_1-1633737090664.png

Entonces, ¿cómo modifico mi fórmula para que esto funcione? Aquí está la fórmula para la medida MA+1 std. dev.

¡Muchas gracias! ¡Agradezco mucho que ayudes!

StockIndex_1YMA+sd = 
VAR __LAST_DATE = LASTDATE('Data'[Dates].[Date])
RETURN
	AVERAGEX(
		DATESBETWEEN(
			'Data'[Dates].[Date],
			DATEADD(__LAST_DATE, -365, DAY),
			DATEADD(__LAST_DATE, 365, DAY)
			),
		CALCULATE(AVERAGE('Data'[StockIndex]))
       )
    + CALCULATE(STDEVX.S('Data','Data'[StockIndex]),ALL())

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hay @wlf0032

¿Desea mantener el visual en un cuadro rojo y mostrar otros en blanco?

1.png

Creo que puede agregar una función If en su medida.

New = 
If (Date[Dates]>= MIN(Date[Dates])&&Date[Dates]<=MAX(Date[Dates]),[StockIndex_1YMA+sd],blank())

O bien, puede intentar crear una tabla de fechas no relacionada para crear la segmentación de datos. A continuación, cree Nueva medida basada en una tabla de fechas no relacionada.

Saludos
Rico Zhou

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hay @wlf0032

¿Desea mantener el visual en un cuadro rojo y mostrar otros en blanco?

1.png

Creo que puede agregar una función If en su medida.

New = 
If (Date[Dates]>= MIN(Date[Dates])&&Date[Dates]<=MAX(Date[Dates]),[StockIndex_1YMA+sd],blank())

O bien, puede intentar crear una tabla de fechas no relacionada para crear la segmentación de datos. A continuación, cree Nueva medida basada en una tabla de fechas no relacionada.

Saludos
Rico Zhou

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

¡gracias! ¡Las funciones IF funcionan! pero lo hice de la siguiente manera (1Y MA está en blanco cuando las fechas no están seleccionadas):

IF(ISBLANK([Índice 1YMA]),"",[Índice 1YMA] - CALCULATE(STDEVX. S('Datos','Datos'[Índice]),ALLSELECTED()))
Syndicate_Admin
Administrator
Administrator

@wlf0032

Creé un archivo de Power BI con el valor de cierre msft, compruebe si se ajusta a sus requisitos. No entendí muy bien +1 y -1 aquí.

MA 365 = 
CALCULATE(
    AVERAGE(MSFT[Close]),
    DATESINPERIOD( Dates[Date] , MAX(Dates[Date]) , -365 , DAY )
)
Std + 1 = 
[MA 365] + 
STDEVX.S(
    DATESINPERIOD( Dates[Date] , MAX(Dates[Date]) , -365 , DAY ),
    [Close Value]
)
Std - 1 = 
[MA 365] - 
STDEVX.S(
    DATESINPERIOD( Dates[Date] , MAX(Dates[Date]) , -365 , DAY ),
    [Close Value]
) 

Fowmy_0-1633774706038.png

Revisa el archivo adjunto debajo de mi firma

¡Realmente apreciamos su solución! Intenté tu camino, pero esto parece que no resuelve mi problema.

1. la medida std dev no debe ser una medida en movimiento. Debe ser estático, es decir, std dev de todos los datos disponibles.

2. esto no ayudará con el problema de la segmentación de datos de fecha. cuando filtro la segmentación de datos, este desarrollador de std todavía se muestra en el gráfico para las fechas que se filtran.

¡Gracias de todos modos!

@wlf0032

Lo tienes, puedes calcular el STDEV de la siguiente manera. No entendí lo que quisiste decir con "y +/- 1 std. dev. "

Std + 1 = [MA 365] + STDEVX.S( ALL( Dates[Date] ) ,  [Close Value] )


Std - 1  = [MA 365] + STDEVX.S( ALL( Dates[Date] ) ,  [Close Value] )

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.