✍ 선형회귀는 데이터를 기반으로 선형 관계를 찾고, 이를 바탕으로 미래의 값을 예측하거나 현재의 데이터를 분석하는데 독립 변수와 종속 변수 간의 선형 관계를 모델링하는 기법
✍ y=mx+b
| 위치 | 설명 |
|---|---|
| y | 종속 변수 |
| m | 독립 변수 |
| x | 기울기 및 경사도 |
| b | y-절편 |
✍ 두 개의 숫자 입력을 사용하여 회귀 직선의 두 번째 인수(독립 변수)의 평균을 계산, AVG(X)와 같다.
SELECT AVG(SALARY)
FROM EMPLOYEES
WHERE COMMISSION_PCT IS NOT NULL; -- 8900 출력
-- REGR_AVGX(Y, X) = 두 번쨰 인수의 평균을 계산한다. 인수가 null인 값 쌍을 무시한다.
-- 즉 Y가 NULL이 아니라면 X의 평균을 구한다.
SELECT
AVG(SALARY),
REGR_AVGX(COMMISSION_PCT, SALARY)
FROM EMPLOYEES; -- COMMISSION_PCT가 NULL이 아닌 경우에만 SALARY의 평균을 구한다.
✍ 두 개의 숫자 입력을 사용하여 회귀 직선의 첫 번째 인수(종속 변수)의 평균을 계산, AVG(Y)와 같다.
-- REGR_AVGY(Y, X) = 첫 번쨰 인수의 평균을 계산한다. 인수가 null인 값 쌍을 무시한다.
-- 즉 X가 NULL이 아니라면 Y의 평균을 구한다.
SELECT
AVG(SALARY),
REGR_AVGY(SALARY, COMMISSION_PCT)
FROM EMPLOYEES; -- COMMISSION_PCT가 NULL이 아닌 경우에만 SALARY의 평균을 구한다.
✍ 첫 번째 인수(종속 변수)의 값이 NULL값이 아닌 두 번째 인수(독립 변수)의 개수를 반환
SELECT * FROM EMPLOYEES
WHERE MANAGER_ID IS NULL; -- 90번 부서 100번 사원의 매니저 아이디는 null
SELECT COUNT(*)
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 90; -- 90번 부서는 3명
-- REGR_COUNT(Y, X) = 두 인수의 값이 NOT NULL인 쌍 수를 계산합니다.
-- (Y의 값이 NULL이 아닌 X의 갯수를 구하는)
-- MANAGER_ID가 NULL이 아닌 DEPARTMENT_ID의 갯수를 구하는 쿼리
-- 자세히 보면 90번 부서의 갯수가 2인 것을 보아하니 MANAGER_ID가 NULL인 값을 제외되었다.
SELECT DISTINCT DEPARTMENT_ID,
REGR_COUNT(MANAGER_ID, DEPARTMENT_ID)
OVER(PARTITION BY DEPARTMENT_ID) REGR_COUNT
FROM EMPLOYEES
ORDER BY DEPARTMENT_ID;
✍ 회귀 직선의 기울기 측정(REGR_SLOPE), 계산 공식은 COVAR_POP(y, x) / VAR_POP(x)
-- REGR_SLOPE(Y, X) = 회귀 직선의 기울기를 측정하는 데 사용된다.
-- REGR_INTERCEPT(Y, X) = 회귀 직선의 Y절편을 반환한다.
SELECT JOB_ID, EMPLOYEE_ID, SALARY,
ROUND(SYSDATE-HIRE_DATE) WORKING_DAY,
ROUND(REGR_SLOPE(SALARY, SYSDATE-HIRE_DATE)
OVER(PARTITION BY JOB_ID), 2) REGR_SLOPE,
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80
ORDER BY JOB_ID, EMPLOYEE_ID;
✍ Y절편 반환(REGR_INTERCEPT), 계산 공식은 AVG(y) - REGR_SLOPE(y, x) * AVG(x)
-- REGR_INTERCEPT(Y, X) = 회귀 직선의 Y절편을 반환한다.
SELECT JOB_ID, EMPLOYEE_ID, SALARY,
ROUND(SYSDATE-HIRE_DATE) WORKING_DAY,
ROUND(REGR_INTERCEPT(SALARY, SYSDATE-HIRE_DATE)
OVER(PARTITION BY JOB_ID), 2) REGR_INTERCEPT
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80
ORDER BY JOB_ID, EMPLOYEE_ID;
✍ 회귀 분석에 대한 결정 계수를 반환
-- REGR_R2(Y, X) = 회귀 분석에 대한 결정 계수를 반환, 종속, 독립 변수간의 상관관계가 높을 수록 1에 가까워진다.
SELECT DISTINCT JOB_ID,
ROUND(REGR_SLOPE(SALARY, SYSDATE-HIRE_DATE)
OVER(PARTITION BY JOB_ID), 2) REGR_SLOPE,
ROUND(REGR_INTERCEPT(SALARY, SYSDATE-HIRE_DATE)
OVER(PARTITION BY JOB_ID), 2) REGR_INTERCEPT,
ROUND(REGR_R2(SALARY, SYSDATE-HIRE_DATE)
OVER(PARTITION BY JOB_ID), 2) REGR_R2
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 80;
https://atotw.tistory.com/21
인프런 오라클 데이터베이스 강의