我对PowerBI / Dax相当陌生,在创建线性回归时遇到了麻烦。包括的趋势线功能不足以适应我的用例,因为我需要预测未来的值并显示最佳拟合方程。我试图修改此博客https://xxlbi.com/blog/simple-linear-regression-in-dax/中提供的代码,但无法绘制度量。似乎已将所有值汇总在一起。
值得注意的是,在我的数据集中只有11个唯一的日期。但是大约容纳3万行,可以容纳所有可能的过滤器。我需要线性回归来响应那些可能的过滤器。 另外,我确实为模型应该用于计算的当前值和将来值创建了一个单独的Date表。
另一种尝试是,我从预设的“相关常数”度量中修改了默认代码,以计算斜率和y截距。
Slope =
VAR __CORRELATION_TABLE = VALUES('Sheet1'[Date])
VAR __COUNT =
COUNTX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(COUNTA('Sheet1'[Date]) * SUM('Sheet1'[Expenditure]))
)
VAR __SUM_X =
SUMX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(COUNTA('Sheet1'[Date]))
)
VAR __SUM_Y =
SUMX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(SUM('Sheet1'[Expenditure]))
)
VAR __SUM_XY =
SUMX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(COUNTA('Sheet1'[Date]) * SUM('Sheet1'[Expenditure]))
)
VAR __SUM_X2 =
SUMX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(COUNTA('Sheet1'[Date]) ^ 2)
)
VAR __SUM_Y2 =
SUMX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(SUM('Sheet1'[Expenditure]) ^ 2)
)
RETURN
DIVIDE(
(__COUNT * __SUM_XY - __SUM_X * __SUM_Y),
(__COUNT * __SUM_X2 - __SUM_X ^ 2)
)
Y Intercept =
VAR __CORRELATION_TABLE = VALUES('Sheet1'[Date])
VAR __COUNT =
COUNTX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(COUNTA('Sheet1'[Date]) * SUM('Sheet1'[Expenditure]))
)
VAR __SUM_X =
SUMX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(COUNTA('Sheet1'[Date]))
)
VAR __SUM_Y =
SUMX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(SUM('Sheet1'[Expenditure]))
)
VAR __SUM_XY =
SUMX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(COUNTA('Sheet1'[Date]) * SUM('Sheet1'[Expenditure]))
)
VAR __SUM_X2 =
SUMX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(COUNTA('Sheet1'[Date]) ^ 2)
)
VAR __SUM_Y2 =
SUMX(
KEEPFILTERS(__CORRELATION_TABLE),
CALCULATE(SUM('Sheet1'[Expenditure]) ^ 2)
)
RETURN
ROUND(DIVIDE(
(__SUM_Y * __SUM_X2 - __SUM_X * __SUM_XY),
(__COUNT * __SUM_X2 - __SUM_X ^ 2)),0
)
最初,我这样做是为了显示最佳拟合方程式,并且能够成功地“显示”常数并使它们对过滤器做出响应。但是,然后我尝试使用这些常量来创建线性回归的度量。
Linear Regression =
SUMX (
DISTINCT('Date'[Date]),
[Y Intercept] + [Slope] * 'Date'[Date]
)
我没有收到任何错误,但是我也没有收到任何数据。该度量显示为空白。关于我在做什么错以及如何解决的任何见解?谢谢!