使用DAX函数LINESTX实现线性回归出现异常问题求助
DAX LINESTX线性回归结果异常排查
问题原因
你直接用Date类型字段作为LINESTX的自变量x,而DAX中日期本质是从1900年1月1日开始计数的整数天数(比如2023年的日期数值普遍在44000以上)。这种超大的x值会扭曲线性回归公式y = kx + m的计算:即使斜率k确实接近0,乘以几万的x后,为了拟合y值(约1.5),截距m会被计算成一个偏离预期的大数值,最终得到29.12这样的结果。
修正方案
把日期转换成相对偏移量,比如数据集起始日期后的天数,或者当年的第几天,缩小x的数值范围。示例代码如下:
Linreg = VAR StartDate = MIN('BWi-data 2023'[Date]) // 将日期转换为从起始日开始的天数差 VAR AdjustedData = ADDCOLUMNS( 'BWi-data 2023', "X_Value", DATEDIFF(StartDate, 'BWi-data 2023'[Date], DAY) ) VAR Line = LINESTX( AdjustedData, [BWi], [X_Value] ) VAR k = SELECTCOLUMNS(Line, "Slope", [Slope1]) VAR m = SELECTCOLUMNS(Line, "Int", [Intercept]) VAR x = SELECTEDVALUE(AdjustedData[X_Value]) VAR y = k*x + m RETURN m
补充说明
如果你的日期是按年周期的,也可以用DAYOFYEAR('BWi-data 2023'[Date])作为X_Value,x的范围会控制在1-365之间,同样能避免大数值干扰回归计算。
内容的提问来源于stack exchange,提问作者Håkan Rolin
相关产品推荐
相关产品推荐

