求助:在PowerBI中为同一时间序列叠加多线性回归预测线的DAX方案
在PowerBI同一可视化图表中为Spent和Remaining合计值添加双线性回归预测线的DAX方案
核心思路
通过DAX手动计算线性回归的斜率与截距,基于时间索引生成预测值,最终将实际值与预测值同时添加到时间轴可视化图表中。
步骤1:创建时间索引度量值
将日期转换为连续的数值索引(以数据中最早日期为基准的天数差),作为线性回归的自变量:
Date Index = VAR MinDate = MIN('你的数据表名'[Date]) RETURN DATEDIFF(MinDate, SELECTEDVALUE('你的数据表名'[Date]), DAY)
步骤2:计算实际值合计
如果数据表未预先计算合计,创建以下度量值:
Total Spent = SUM('你的数据表名'[Spent])
Total Remaining = SUM('你的数据表名'[Remaining])
步骤3:计算线性回归参数与预测值
针对Spent的预测
Spent Slope = VAR X = SUMX('你的数据表名', [Date Index]) VAR Y = SUMX('你的数据表名', [Total Spent]) VAR XX = SUMX('你的数据表名', [Date Index] * [Date Index]) VAR XY = SUMX('你的数据表名', [Date Index] * [Total Spent]) VAR N = COUNTROWS('你的数据表名') RETURN DIVIDE(N * XY - X * Y, N * XX - X * X)
Spent Intercept = VAR X = SUMX('你的数据表名', [Date Index]) VAR Y = SUMX('你的数据表名', [Total Spent]) VAR Slope = [Spent Slope] VAR N = COUNTROWS('你的数据表名') RETURN DIVIDE(Y - Slope * X, N)
Spent Prediction = VAR CurrentIndex = [Date Index] RETURN [Spent Intercept] + [Spent Slope] * CurrentIndex
针对Remaining的预测
Remaining Slope = VAR X = SUMX('你的数据表名', [Date Index]) VAR Y = SUMX('你的数据表名', [Total Remaining]) VAR XX = SUMX('你的数据表名', [Date Index] * [Date Index]) VAR XY = SUMX('你的数据表名', [Date Index] * [Total Remaining]) VAR N = COUNTROWS('你的数据表名') RETURN DIVIDE(N * XY - X * Y, N * XX - X * X)
Remaining Intercept = VAR X = SUMX('你的数据表名', [Date Index]) VAR Y = SUMX('你的数据表名', [Total Remaining]) VAR Slope = [Remaining Slope] VAR N = COUNTROWS('你的数据表名') RETURN DIVIDE(Y - Slope * X, N)
Remaining Prediction = VAR CurrentIndex = [Date Index] RETURN [Remaining Intercept] + [Remaining Slope] * CurrentIndex
步骤4:在可视化图表中添加预测线
- 打开目标时间轴图表(如折线图)
- 将
Total Spent、Total Remaining添加到「值」区域,作为实际数据系列 - 再将
Spent Prediction、Remaining Prediction添加到「值」区域 - 调整预测线的视觉样式(如设置为虚线),与实际值区分开
注意事项
- 确保日期序列连续,若存在缺失日期,需创建日历表生成连续日期并与原数据表关联
- 若需预测未来日期,扩展日历表至目标未来日期范围,预测值会自动计算
- 若数据表已有预计算的合计字段,可直接替换上述度量值中的
Total Spent/Total Remaining
内容的提问来源于stack exchange,提问作者BP130
相关产品推荐
相关产品推荐

