Oracle 回归分析函数使用
文章目录
- Oracle 回归分析函数使用
- 什么是 回归分析函数
- 回归分析函数示例
- 1. 分析 SAL 和 COMM 之间的回归关系
- 2. 按部门分析 SAL 和 COMM 的关系
- 3. 根据 SAL 预测 COMM
- 4. 分析员工薪资与工作年限的关
- 5. 按部门分析工作年限与薪资的关系
- 6. 计算 REGR_AVGX 和 REGR_AVGY
- 7. 检测薪资和奖金的相关性
- 8. 分析奖金与薪资平方和
- 总结
什么是 回归分析函数
回归分析的定义
回归分析是一种统计方法,用于分析两个或多个变量之间的关系。在回归分析中:
自变量(独立变量 X):用于预测的变量。
因变量(依赖变量 Y):被预测或解释的变量。
回归分析的目的是通过数学模型表示变量之间的关系,常用于预测和因果分析。
提示:以下是本篇文章正文内容,下面案例可供参考
回归分析函数示例
回归分析函数是一组内置在数据库中的统计函数,用于直接在 SQL 查询中完成线性回归的计算。这些函数帮助用户分析数据集中的两列数据(X 和 Y)之间的关系,无需借助外部工具(如 Python、R)。
1. 分析 SAL 和 COMM 之间的回归关系
分析员工的薪资(SAL)和奖金(COMM)之间的关系。
SELECT REGR_SLOPE(comm, sal) AS slope,REGR_INTERCEPT(comm, sal) AS intercept,REGR_R2(comm, sal) AS r_squared,REGR_AVGX(comm, sal) AS avg_sal,REGR_AVGY(comm, sal) AS avg_comm,REGR_COUNT(comm, sal) AS valid_pairs
FROM emp
WHERE comm IS NOT NULL;
结果解释
SLOPE:薪资每增加 1 单位时,奖金的变化量。
INTERCEPT:回归线在 Y 轴上的截距。
R_SQUARED:拟合优度,越接近 1,表示模型越准确。
AVG_SAL:参与计算的薪资的平均值。
AVG_COMM:参与计算的奖金的平均值。
VALID_PAIRS:有效的薪资和奖金数据对数。
2. 按部门分析 SAL 和 COMM 的关系
对于每个部门,分析薪资与奖金之间的关系。
SELECT deptno,REGR_SLOPE(comm, sal) AS slope,REGR_INTERCEPT(comm, sal) AS intercept,REGR_R2(comm, sal) AS r_squared,REGR_AVGX(comm, sal) AS avg_sal,REGR_AVGY(comm, sal) AS avg_comm,REGR_COUNT(comm, sal) AS valid_pairs
FROM emp
WHERE comm IS NOT NULL
GROUP BY deptno;
结果解释
每个部门的回归模型描述了薪资和奖金之间的线性关系。
有效数据点数目可以帮助判断模型的可靠性。
3. 根据 SAL 预测 COMM
假设 COMM 是因变量,使用回归模型根据薪资预测奖金。
SELECT empno, ename, sal,REGR_SLOPE(comm, sal) OVER () * sal + REGR_INTERCEPT(comm, sal) OVER () AS predicted_comm
FROM emp
WHERE comm IS NOT NULL;
结果解释
PREDICTED_COMM 是根据薪资计算出的预测奖金。
可以与实际奖金值(COMM)比较,以评估模型的准确性。
4. 分析员工薪资与工作年限的关
假设 HIREDATE 表示员工入职日期,可以计算员工的工作年限,并分析薪资与工作年限之间的关系。
SELECT REGR_SLOPE(sal, FLOOR(MONTHS_BETWEEN(SYSDATE, hiredate) / 12)) AS slope,REGR_INTERCEPT(sal, FLOOR(MONTHS_BETWEEN(SYSDATE, hiredate) / 12)) AS intercept,REGR_R2(sal, FLOOR(MONTHS_BETWEEN(SYSDATE, hiredate) / 12)) AS r_squared,REGR_AVGX(sal, FLOOR(MONTHS_BETWEEN(SYSDATE, hiredate) / 12)) AS avg_years,REGR_AVGY(sal, FLOOR(MONTHS_BETWEEN(SYSDATE, hiredate) / 12)) AS avg_sal
FROM emp;
结果解释
SLOPE:工作年限每增加 1 年,薪资的平均增量。
INTERCEPT:工作年限为 0 时的起始薪资。
R_SQUARED:薪资与工作年限的拟合优度。
AVG_YEARS:工作年限的平均值。
AVG_SAL:薪资的平均值。
5. 按部门分析工作年限与薪资的关系
对每个部门的员工,分析工作年限与薪资之间的关系
SELECT deptno,REGR_SLOPE(sal, FLOOR(MONTHS_BETWEEN(SYSDATE, hiredate) / 12)) AS slope,REGR_INTERCEPT(sal, FLOOR(MONTHS_BETWEEN(SYSDATE, hiredate) / 12)) AS intercept,REGR_R2(sal, FLOOR(MONTHS_BETWEEN(SYSDATE, hiredate) / 12)) AS r_squared,REGR_COUNT(sal, FLOOR(MONTHS_BETWEEN(SYSDATE, hiredate) / 12)) AS valid_pairs
FROM emp
GROUP BY deptno;
结果解释
每个部门的回归模型显示工作年限对薪资的影响。
VALID_PAIRS 表示有效数据对数,数据对越多,模型越可靠。
6. 计算 REGR_AVGX 和 REGR_AVGY
直接计算 SAL 和 COMM 的平均值,作为回归分析的辅助信息。
SELECT REGR_AVGX(sal, comm) AS avg_salary,REGR_AVGY(sal, comm) AS avg_comm
FROM emp
WHERE comm IS NOT NULL;
结果解释
AVG_SALARY 是薪资的平均值。
AVG_COMM 是奖金的平均值。
7. 检测薪资和奖金的相关性
使用 CORR 函数计算薪资与奖金之间的相关性。
SELECT CORR(sal, comm) AS correlation
FROM emp
WHERE comm IS NOT NULL;
结果解释
CORRELATION 是相关系数:
值为 1:表示完全正相关。
值为 -1:表示完全负相关。
值为 0:表示无相关性。
8. 分析奖金与薪资平方和
计算奖金和薪资的平方和及协方差,用于进一步的回归分析。
SELECT REGR_SXX(comm, sal) AS sxx, -- X 的平方和REGR_SYY(comm, sal) AS syy, -- Y 的平方和REGR_SXY(comm, sal) AS sxy -- X 和 Y 的协方差
FROM emp
WHERE comm IS NOT NULL;
结果解释
SXX 是薪资的平方和。
SYY 是奖金的平方和。
SXY 是薪资和奖金的协方差,用于表示 X 和 Y 的关系。
总结
Oracle 的回归分析函数提供了一种快速、高效的方法来分析变量之间的线性关系。通过这些函数,用户可以直接在 SQL 中完成线性回归建模、相关性分析和预测任务,特别适合简单的单变量线性回归场景。对于更复杂的回归分析(如多元回归或非线性回归),可以结合其他工具(如 Python 或 R)进一步分析。