首页 > 解决方案 > 斜坡动力枢轴

问题描述

如何计算两列与前五行之间的斜率?

在excel中应该是这样的:

例子

可能吗?

最好的问候, 若昂澳门

标签: rowspowerpivot

解决方案


SLOPE 函数基于线性回归,因此斜率计算为 的协方差xy除以 的方差x

斜率方程

在 DAX 中,整个表(而不仅仅是前五个)的计算如下所示:

Slope = 
    VAR AvgX = CALCULATE(AVERAGE(Data[Date]), ALL(Data))
    VAR AvgY = CALCULATE(AVERAGE(Data[Flow]), ALL(Data))
    RETURN DIVIDE(SUMX(Data, (Data[Date] - AvgX) * (Data[Flow] - AvgY)),
                  SUMX(Data, (Data[Date] - AvgX) * (Data[Date] - AvgX)))

为了获得前五个,我们需要更改计算平均值时使用的过滤器。

Slope = 
    VAR Filtered = TOPN(5, FILTER(Data, Data[Date] <= EARLIER(Data[Date])), Data[Date])
    VAR AvgX = CALCULATE(AVERAGE(Data[Date]), Filtered)
    VAR AvgY = CALCULATE(AVERAGE(Data[Flow]), Filtered)
    RETURN DIVIDE(SUMX(Filtered, (Data[Date] - AvgX) * (Data[Flow] - AvgY)),
                  SUMX(Filtered, (Data[Date] - AvgX) * (Data[Date] - AvgX)))

如果您只想在具有五个数据点的平均值时返回一个值,则可以添加一个条件:

RETURN IF(COUNTROWS(Filtered) < 5, BLANK(), DIVIDE([...]))

推荐阅读