2016-09-13 2 views

답변

7

다음 쿼리는 수치 적으로 안정되고 모든 입력 테이블에서 작동하도록 쉽게 수정 된 계산을 사용하여 선형 회귀를 수행합니다. 내장 함수 CORR을 사용하여 모델 Y = SLOPE * X + INTERCEPT와 피어슨 상관 계수에 가장 잘 맞는 기울기와 절편을 만듭니다.

예를 들어, 출생 체중을 상태에 따라 분류 된 임신 기간의 선형 함수로 계산하기 위해 공개 출생 데이터 세트를 사용합니다. 이것을 더 작게 작성할 수 있지만 여러 레이어의 하위 쿼리를 사용하여 조각이 어떻게 함께 움직이는 지 강조 표시합니다. 이것을 다른 데이터 세트에 적용하려면 가장 안쪽의 쿼리 만 바꾸면됩니다. 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의 제품을 합산 한 후 차이를 복용하고 분할에 비해이 쿼리의 수치 안정성을 향상,하지만 당신은 잘 행동 데이터 세트에 대한 두 가지 접근 방식을 사용하는 경우, 높은 정확도로 동일한 결과를 산출하는지 확인할 수 있습니다.

관련 문제