All thing of the world!

Oracle REGR_*(선형회귀함수) 설명 : 오라클 함수 본문

IT/Oracle DBMS

Oracle REGR_*(선형회귀함수) 설명 : 오라클 함수

WorldSeeker 2021. 3. 30. 10:51

* 선형회귀분석에 사용하는 함수 세트로 아래 9개 함수에 대한 내용을 담고 있다. (통계에 관련된 내용이므로, 용어나 내용을 이해하기 위해서 선형회귀분석에 대한 이해를 먼저 해야함)
■ REGR_SLOPE
■ REGR_INTERCEPT
■ REGR_COUNT
■ REGR_R2
■ REGR_AVGX
■ REGR_AVGY
■ REGR_SXX
■ REGR_SYY
■ REGR_SXY


1. 함수의 목적


    선형회귀함수로 각각의 함수마다 다음과 같은 각각의 기능을 가지고 있다.

    ■ REGR_SLOPE : 회귀 직선의 기울기를 구한다.  COVAR_POP(expr1, expr2) / VAR_POP(expr2)의 계산이 수행된다.

   ■ REGR_INTERCEPT : 회귀 직선의 y절편을 구한다.  AVG(expr1) - REGR_SLOPE(expr1, expr2) * AVG(expr2)의 계산이 수행된다.

   ■ REGR_COUNT : 회귀선을 맞추기 위해 사용된 널 (NULL)이 아닌 숫자 쌍의 갯수를 정수로 리턴한다.

   ■ REGR_R2 : 회귀분석에 대한 결정 계수(R-squared org fitness fit)를 반환한다. expr1 및 expr2의 NULL 쌍을 제거한 후에 평가하며  반환값은 다음과 같다.

  ■ REGR_AVGX : 회귀직선의 독립변수(expr2)의 평균을 계산한다. expr1/expr2의 NULL 쌍을 제거한 후 AVG(expr2)을 계산한다.

  ■ REGR_AVGY : 회귀직선의 종속변수(expr1)의 평균을 계산한다. expr1/expr2의 NULL 쌍을 제거한 후 AVG(expr1)을 계산한다.
 

  ■ REGR_SXX : 회귀분석 검증에 사용되는 함수로, expr1/expr2의 NULL쌍을 제거한 후REGR_COUNT(expr1, expr2) * VAR_POP(expr2)를 계산한다.

  ■ REGR_SYY : 회귀분석 검증에 사용되는 함수로, expr1/expr2의 NULL쌍을 제거한 후 REGR_COUNT(expr1, expr2) * VAR_POP(expr1)를 계산한다.


  ■ REGR_SXY : 회귀분석 검증에 사용되는 함수로, expr1/expr2의 NULL쌍을 제거한 후 REGR_COUNT(expr1, expr2) * COVAR_POP(expr1, expr2)를 계산한다.


2. 샘플을 통한 개념 퀵뷰

SYSDATE에서 employees테이블의 hire_date컬럼을 뺀 값을 독립변수(x)로, salary를 종속변수(y)로 보고 REGR_SLOPE/REGR_INTERCEPT/REGR_R2/REGR_COUNT/REGR_AVGX/REGR_AVGY값을 구한 예제다.

SELECT job_id, employee_id ID, salary,
REGR_SLOPE(SYSDATE-hire_date, salary)
OVER (PARTITION BY job_id) slope,
REGR_INTERCEPT(SYSDATE-hire_date, salary)
OVER (PARTITION BY job_id) intcpt,
REGR_R2(SYSDATE-hire_date, salary)
OVER (PARTITION BY job_id) rsqr,
REGR_COUNT(SYSDATE-hire_date, salary)
OVER (PARTITION BY job_id) count,
REGR_AVGX(SYSDATE-hire_date, salary)
OVER (PARTITION BY job_id) avgx,
REGR_AVGY(SYSDATE-hire_date, salary)
OVER (PARTITION BY job_id) avgy
FROM employees
WHERE department_id in (50, 80)
ORDER BY job_id, employee_id;

3. 사용방법

4. 함수 PARAMETER 설명

[expr1]
선형회귀분석의 독립변수(independent)를 뜻한다. x에 해당한다.

[expr2]
선형회귀분석의 종속변수(dependent)를 뜻한다.  y에 해당한다.

[over]
일반적 분석함수로 쓰일 때의 over와 같다.

5. 다양한 샘플표현

example1) employees테이블에서 채용된 기간과 급여 사이의 회귀직선의 기울기와 y절편을 구한다. 결과는 job_id로 그룹핑한다.

SELECT job_id,
REGR_SLOPE(SYSDATE-hire_date, salary) slope,
REGR_INTERCEPT(SYSDATE-hire_date, salary) intercept
FROM employees
WHERE department_id in (50,80)
GROUP BY job_id
ORDER BY job_id;

 

example2) employees테이블에서 department_id가 '30'과 '50'인 부서의 직원 중에, 회귀분석에 사용된 직원의 숫자를 카운팅하여 job_id 별로 보여준다.

SELECT job_id,
REGR_COUNT(SYSDATE-hire_date, salary) count
FROM employees
WHERE department_id in (30, 50)
GROUP BY job_id
ORDER BY job_id, count;

 

example3) employees테이블에서 department_id가 '80'과 '50'인 부서의 직원을 사용한 회귀분석 결정계수를 job_id별로 반환한다.

SELECT job_id,
REGR_R2(SYSDATE-hire_date, salary) Regr_R2
FROM employees
WHERE department_id in (80, 50)
GROUP by job_id
ORDER BY job_id, Regr_R2;

example4) employees테이블에서 department_id가 '30'과 '50'인 부서의 직원을 대상으로 독립평수의 평균(avgx)과 종속변수(avgy)의 평균을 job_id별로 구한다.

SELECT job_id,
REGR_AVGY(SYSDATE-hire_date, salary) avgy,
REGR_AVGX(SYSDATE-hire_date, salary) avgx
FROM employees
WHERE department_id in (30,50)
GROUP BY job_id
ORDER BY job_id, avgy, avgx;

example5) employees테이블에서 department_id가 '80'과 '50'인 부서의 직원을 대상으로, REGR_SXY/REGR_SXX/REGR_SYY함수를 적용하여 JOB_ID별로 구한다.

SELECT job_id,
REGR_SXY(SYSDATE-hire_date, salary) regr_sxy,
REGR_SXX(SYSDATE-hire_date, salary) regr_sxx,
REGR_SYY(SYSDATE-hire_date, salary) regr_syy
FROM employees
WHERE department_id in (80, 50)
GROUP BY job_id
ORDER BY job_id;

Comments