如何在PostgreSQL中进行线性回归?

4
在回归方程 Y=aX+b 中,regr_intercept(Y, X) 等于 "b",而 regr_slope(Y, X) 等于 "a"?

1
是的。截距为 b,斜率为 a。您提供 YX 列。这将返回聚合结果。为了好玩,您可以执行以下操作:SELECT 'Y=' || regr_slope(col1, col2) || 'X+' || regr_intercept(col1, col2) || ' 是回归公式,R-squared 值为 ' || regr_r2(col1, col2) AS regression_formula_output FROM yourtable; - JNevill
我不确定这里的问题是什么。 - Haleemur Ali
1个回答

18

您没有提供太多细节,但是这里有一些信息。

回归

回归线只是一条能够为输入变量x计算输出变量y的线性方程y = ax + b。一条直线可以由两个参数来描述,也称为系数:

  • 斜率a

  • 截距b

找到斜率和截距

假设您有两列数字数据,Y和X填写了所需的X和Y值。

CREATE TABLE foo(
 id serial PRIMARY KEY,
 X integer NOT NULL,
 Y integer NOT NULL
);
INSERT INTO foo VALUES (0,10,3);
INSERT INTO foo VALUES (1,20,5);

你可以按照以下步骤找到斜率。

SELECT regr_slope(y, x) slope FROM foo;
SELECT regr_intercept(y, x) intercept FROM foo;

查询结果:

斜率:0.2

截距:1

SQL Fiddle


你之后如何将斜率和截距应用到你的列中? - Snow
1
你可以这样做:WITH query_1 AS ( SELECT regr_slope(y, x) AS slope, regr_intercept(y, x) AS intercept FROM foo ) SELECT foo.x, foo.y, query_1.slope * foo.x + query_1.intercept AS regression_line FROM foo, query_1 - feinmann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接