在BigQuery中进行线性回归时,默认是带有截距的,但有时候需要进行不带截距的线性回归。下面是一种在BigQuery中进行无截距线性回归的方法:
首先,创建一张包含输入数据的表,然后使用以下代码进行无截距线性回归:
WITH
data AS (
SELECT
x,
y - AVG(y) OVER() AS y
FROM
input_data_table)
SELECT
APPROX_QUANTILES(x, 2)[OFFSET(0)] x_0,
SUM(x * y) / SUM(x * x) AS slope
FROM
data
这里的AVG(y) OVER()
是求输入数据中y列的平均值,因为在无截距的线性回归中,回归线会通过数据的平均值点,所以需要用平均值对y列进行中心化处理。
执行查询后,将得到斜率和通过平均值点的x轴截距。
如果需要预测值,可以根据构建的线性回归方程使用以下代码进行预测:
WITH
data AS (
SELECT
x,
y - AVG(y) OVER() AS y
FROM
input_data_table),
regression AS (
SELECT
APPROX_QUANTILES(x, 2)[OFFSET(0)] x_0,
SUM(x * y) / SUM(x * x) AS slope
FROM
data)
SELECT
x,
slope * (x - x_0) AS predicted_y
FROM
input_data_table,
regression
其中,输入数据表中的x列为输入值,predicted_y列为对应的预测值。