暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 当y列包含常数值 (例如,所有行的值为0.0038) 时,REGR_R2返回值为1。

ASKTOM 2019-10-22
494

问题描述

我在一个大型排放数据库中搜索具有相关值的成对列。
我的第一个努力基于盲目地将REGR_R2函数应用于离散的数字数据列对,确定了大量R2值为1的集合。

当我开始查看输出时,我注意到许多REGR_R2结果并不可靠,因为当语法REGR_R2(y_col,x_col) 中的y列为常量 (即y_col) 时,REGR_R2似乎返回1的值。

我计划在REGR_R2计算之前在脚本中添加标准偏差计算,并在y_col的标准偏差 = 0时放弃REGR_R2计算。

但是,为什么当y参数为常量且x参数为变量时,REGR_R2返回1的值?它不应该返回0或null吗?

表xy_values

Y _ 谷x _ 谷
第1行0.0038 0.023
第2行0.0038 0.022
第3行0.0038 0.085
第4行0.0038 0.087
第5行0.0038 0.019


select regr_r2(xy_values.y_val, xy_values.x_val) 
from  xy_values;

收益率
REGR_R2(Y_VAL,X_VAL) = 1


谢谢,
斯蒂芬




专家解答

根据文档:

https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/REGR_-Linear-Regression-Functions.html#GUID-A675B68F-2A88-4843-BE2C-FCDE9C65F9A9

NULL if VAR_POP(expr2)  = 0

                        1 if VAR_POP(expr1)  = 0 and 
                             VAR_POP(expr2) != 0

POWER(CORR(expr1,expr),2) if VAR_POP(expr1)  > 0 and
                             VAR_POP(expr2  != 0

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论