Inicio del cambio

Funciones de regresión (REGR_AVGX, REGR_AVGY, REGR_COUNT, ...)

Las funciones de regresión soportan la adecuación de una línea de regresión mínimo-cuadrados-normales del formato y = a * x + b para un conjunto de pares de números.

FL 507

Inicio del cambio
Expresión de solo paso: esta función es de solo paso y no se puede ejecutar en Db2 for z/OS® sin aceleración. Para obtener información sobre cómo invocar esta función, consulte Aceleración de consultas con expresiones de solo paso.
fin del cambio
Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualREGR_AVGXREGR_AVGYREGR_COUNTREGR_INTERCEPTREGR_ICPTREGR_R2REGR_SLOPEREGR_SXXREGR_SXYREGR_SYY(expression1,expression2 )

El esquema es SYSIBM.

expression1
Una expresión que devuelve un valor de cualquier tipo de datos numérico interno. Se interpreta como un valor de la variable dependiente (es decir, un valor y).
expression2
Una expresión que devuelve un valor de cualquier tipo de datos numérico interno. Se interpreta como un valor de la variable dependiente (es decir, un valor x).

La función REGR_COUNT devuelve el número de pares de números no nulos utilizados para acomodar la línea de regresión.

La función REGR_INTERCEPT (o REGR_ICPT) devuelve la intersección y de la línea de regresión (b en la ecuación mencionada anteriormente).

La función REGR_R2 devuelve el coeficiente de determinación (R-cuadrado o mejor-adecuación) para la regresión.

La función REGR_SLOPE devuelve la inclinación de la línea (a en la ecuación mencionada anteriormente).

Las funciones REGR_AVGX, REGR_AVGY, REGR_SXX, REGR_SXY y REGR_SYY devuelven cantidades que pueden utilizarse para calcular varias estadísticas de diagnóstico necesarias para la evaluación de la calidad y la validez estadística del modelo de regresión.

El tipo de datos del resultado de REGR_COUNT es un entero. Para las funciones restantes, si uno de los dos argumentos es DECFLOAT(n), el tipo de datos del resultado es DECFLOAT(34); en caso contrario, el tipo de datos del resultado es de coma flotante de precisión doble. Si cualquiera de los argumentos es un valor de coma flotante decimal especial, se aplicarán las normas para las operaciones aritméticas generales para la coma flotante decimal. Para más información, consulte Reglas generales de operaciones aritméticas para DECFLOAT

El resultado puede ser nulo. Cuando no es nulo, el resultado de REGR_R2 está en el rango de 0 a 1, y el resultado de REGR_SXX y REGR_SYY es no negativo.

Cada función se aplica al conjunto de pares (expresión1, expresión2) derivado de los valores del argumento por la eliminación de todos los pares para los que expresión1 o expresión2 es nulo.

Si el conjunto no está vacío y VARIANCE(expresión2) es positivo, REGR_COUNT devuelve el número de pares no nulos del conjunto y las demás funciones devuelven los resultados que se definen de la siguiente manera:
REGR_SLOPE(expression1,expression2) =
COVARIANCE(expression1,expression2)/VARIANCE(expression2)
REGR_INTERCEPT(expression1, expression2) =
AVG(expression1) - REGR_SLOPE(expression1, expression2) * AVG(expression2)
REGR_R2(expression1, expression2) =
POWER(CORRELATION(expression1, expression2), 2) if VARIANCE(expression1)>0
REGR_R2(expression1, expression2) = 1 if VARIANCE(expression1)=0
REGR_AVGX(expression1, expression2) = AVG(expression2)
REGR_AVGY(expression1, expression2) = AVG(expression1)
REGR_SXX(expression1, expression2) =
REGR_COUNT(expression1, expression2) * VARIANCE(expression2)
REGR_SYY(expression1, expression2) =
REGR_COUNT(expression1, expression2) * VARIANCE(expression1)
REGR_SXY(expression1, expression2) =
REGR_COUNT(expression1, expression2) * COVARIANCE(expression1, expression2)

Si el conjunto no está vacío y VARIANCE(expresión2) es igual a cero, la línea de regresión tiene una inclinación infinita o no está definida. En este caso, las funciones REGR_SLOPE, REGR_INTERCEPT y REGR_R2 devuelven cada una un valor nulo y las demás funciones devuelven valores tal como se ha definido anteriormente. Si el conjunto está vacío, REGR_COUNT devuelve cero y las demás funciones devuelven un valor nulo.

El orden en el que los valores se agregan no está definido, pero cada resultado intermedio debe estar dentro del rango del tipo de datos del resultado.

Las funciones de regresión se calculan simultáneamente durante un sólo paso a través de los datos. En general, es más eficaz utilizar las funciones de regresión para calcular las estadísticas necesarias para un análisis de regresión que realizar cálculos equivalentes utilizando las funciones normales de columna como AVERAGE, VARIANCE, COVARIANCE, etcétera.

Las estadísticas de diagnóstico normales que acompañan a un análisis de regresión-lineal se pueden calcular en términos de las funciones indicadas anteriormente. Por ejemplo:
R2 ajustada
1 - ( (1 - REGR_R2) * ((REGR_COUNT - 1) / (REGR_COUNT - 2)) )
Error estándar
SQRT( (REGR_SYY-(POWER(REGR_SXY,2)/REGR_SXX))/(REGR_COUNT-2) )
Suma total de cuadrados
REGR_SYY
Suma de cuadrados de regresión
POWER(REGR_SXY,2) / REGR_SXX
Suma de cuadrados residuales
(Suma total de cuadrados)-(Suma de cuadrados de regresión)
t estadística de inclinación
REGR_SLOPE * SQRT(REGR_SXX) / (Error estándar)
t estadística para intersección y
REGR_INTERCEPT/((Error estándar)*SQRT((1/REGR_COUNT)+ (POWER(REGR_AVGX,2)/REGR_SXX))

ejemplos

  • Utilizando la tabla EMPLOYEE, calcule la línea de regresión de cuadrados-mínimos-normales que expresa la bonificación de un empleado del departamento (WORKDEPT) 'A00' como una función lineal del salario del empleado. Establezca las variables del lenguaje principal SLOPE, ICPT, RSQR (coma flotante de precisión doble) en la inclinación, intersección y coeficiente de determinación de la línea de regresión, respectivamente. Establezca también las variables host AVGSAL y AVGBONUS en el salario medio y la bonificación media, respectivamente, de los empleados del departamento 'A00', y establezca la variable host CNT (entero) en el número de empleados del departamento 'A00' para los que están disponibles los datos de salario y de bonificación. Almacene las demás estadísticas de regresión en las variables del lenguaje principal SXX, SYY y SXY.
    SELECT REGR_SLOPE(BONUS,SALARY), REGR_INTERCEPT(BONUS,SALARY),
    REGR_R2(BONUS,SALARY), REGR_COUNT(BONUS,SALARY),
    REGR_AVGX(BONUS,SALARY), REGR_AVGY(BONUS,SALARY),
    REGR_SXX(BONUS,SALARY), REGR_SYY(BONUS,SALARY),
    REGR_SXY(BONUS,SALARY)
    INTO	:SLOPE, :ICPT,
    :RSQR, :CNT,
    :AVGSAL, :AVGBONUS,
    :SXX, :SYY,
    :SXY
    FROM EMPLOYEE
    WHERE WORKDEPT = 'A00'
    Al utilizar la tabla de ejemplo, las variables del lenguaje principal se establecen en los siguientes valores aproximados:
    SLOPE:  +1.71002671916749E-002
    ICPT:  +1.00871888623260E+002
    RSQR:  +9.99707928128685E-001
    CNT:  3
    AVGSAL:  +4.28333333333333E+004
    AVGBONUS:  +8.33333333333333E+002
    SXX:  +2.96291666666667E+008
    SYY:  +8.66666666666667E+004
    SXY:  +5.06666666666667E+006
fin del cambio