spr*_*ket 15
以下查询使用数值稳定且易于修改以在任何输入表上工作的计算执行线性回归.它使用内置函数CORR产生最适合模型Y = SLOPE*X + INTERCEPT和Pearson相关系数的斜率和截距.
例如,我们使用公共天性数据集来计算出生体重作为怀孕持续时间的线性函数,按州分列.你可以更紧凑地编写这个,但是我们使用几层子查询来突出这些部分是如何组合在一起的.要将此应用于其他数据集,您只需要替换最里面的查询.
SELECT Bucket,
SLOPE,
(SUM_OF_Y - SLOPE * SUM_OF_X) / N AS INTERCEPT,
CORRELATION
FROM (
SELECT Bucket,
N,
SUM_OF_X,
SUM_OF_Y,
CORRELATION * STDDEV_OF_Y / STDDEV_OF_X AS SLOPE,
CORRELATION
FROM (
SELECT Bucket,
COUNT(*) AS N,
SUM(X) AS SUM_OF_X,
SUM(Y) AS SUM_OF_Y,
STDDEV_POP(X) AS STDDEV_OF_X,
STDDEV_POP(Y) AS STDDEV_OF_Y,
CORR(X,Y) AS CORRELATION
FROM (SELECT state AS Bucket,
gestation_weeks AS X,
weight_pounds AS Y
FROM [publicdata.samples.natality])
WHERE Bucket IS NOT NULL AND
X IS NOT NULL AND
Y IS NOT NULL
GROUP BY Bucket));
Run Code Online (Sandbox Code Playgroud)
使用STDDEV_POP和CORR函数可以提高此查询的数值稳定性,而不是总结X和Y的乘积,然后进行差异和除法,但如果在行为良好的数据集上使用这两种方法,则可以验证它们是否生成相同的结果是高精度.
| 归档时间: |
|
| 查看次数: |
2301 次 |
| 最近记录: |