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

Get inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.

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
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code FABINSIDER for a $400 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

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

Top Solution Authors
Top Kudoed Authors