在Postgresql中的普通线性回归中使用别名,如何在窗口函数中使用别名

时间:2018-06-20 16:37:16

标签: regression postgresql-9.5 aliases

我想在PostGreSQL中执行线性回归。 y = wx+b,我能够得到斜率并截取线性趋势方程。但是,我的目标是根据趋势线获得y'的新“预测”值。例如对于1970年,我计算

w (slope)= 5.89  
intercept = -11526.88

计算y'_1970将是2014*5.89-11526.88 = 82.78

我不知道如何重用斜率并截取别名来计算预测值。我当然可以重复该斜率并拦截查询,但是看起来很乱。如何使用通过窗口函数计算出的别名?

SELECT *,
    regr_slope(salary,year) 
        OVER (ORDER BY year ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS slope,
    regr_intercept(salary,year)
        OVER (ORDER BY year ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS intercept, 
    regr_slope(salary,year) 
        OVER (ORDER BY year ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) * year +
    regr_intercept(salary,year)
        OVER (ORDER BY year ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS intercept_end

FROM test01
WHERE month = 1

SQL Fiddle

0 个答案:

没有答案