BigQueryには、STDDEV(X)やCORR(X、Y)などの統計集計関数がありますが、線形回帰を直接実行する関数はありません。BigQueryで線形回帰を実行するにはどうすればよいですか?
存在する関数を使って線形回帰を計算するにはどうすればよいですか?
BigQueryには、STDDEV(X)やCORR(X、Y)などの統計集計関数がありますが、線形回帰を直接実行する関数はありません。BigQueryで線形回帰を実行するにはどうすればよいですか?
存在する関数を使って線形回帰を計算するにはどうすればよいですか?
次のクエリは、数値的に安定で、任意の入力テーブルで動作するように簡単に修正された計算を使用して線形回帰を実行します。これは、モデルY = SLOPE * X + INTERCEPTおよび組み込み関数CORRを使用したピアソン相関係数に最もよくフィットする傾きと切片を生成します。
例として、誕生体重を妊娠期間の線形関数として状態別に計算するために、公的恒常性データセットを使用します。これをよりコンパクトに書くことができますが、いくつかのサブクエリのレイヤーを使用して、どのようにピースが一緒になっているかを強調します。これを別のデータセットに適用するには、最も内側のクエリを置換するだけです。
STDDEV_POPとCORRの機能を使用して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));
XとYの積を合計して、相違点を取り、除と比較して、このクエリの数値安定性を向上させていますが、行儀のデータセットで両方のアプローチを使用する場合は、それらが高い精度で同じ結果を生み出すことを検証することができる。