2016-09-13 14 views

答えて

7

次のクエリは、数値的に安定で、任意の入力テーブルで動作するように簡単に修正された計算を使用して線形回帰を実行します。これは、モデル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の積を合計して、相違点を取り、除と比較して、このクエリの数値安定性を向上させていますが、行儀のデータセットで両方のアプローチを使用する場合は、それらが高い精度で同じ結果を生み出すことを検証することができる。

関連する問題