回帰関数 (REGR_AVGX、REGR_AVGY、REGR_COUNT ...)

回帰関数は、通常の最小二乗法による回帰直線 (形式 y = a * x + b) を数値ペアの集合に当てはめることをサポートします。

Read syntax diagramSkip visual syntax diagramREGR_AVGXREGR_AVGYREGR_COUNTREGR_INTERCEPTREGR_ICPTREGR_R2REGR_SLOPEREGR_SXXREGR_SXYREGR_SYY(expression1,expression2 )

スキーマは SYSIBM です。

expression1
組み込み数値データ・タイプの値を戻す式。 これは、従属変数の値 (つまり y 値) として解釈されます。
expression2
組み込み数値データ・タイプの値を戻す式。 これは、独立変数の値 (つまり x 値) として解釈されます。

REGR_COUNT 関数は、回帰直線を求めるために使用する NULL ではない数字のペアの数を戻します。

REGR_INTERCEPT (または REGR_ICPT) 関数は、回帰直線の y 切片 (前述の式のb) を戻します。

REGR_R2 関数は、回帰に関する判別の係数 (R 二乗 または適合度ともいう) を戻します。

REGR_SLOPE 関数は、直線の傾き (前述の式の a) を戻します。

REGR_AVGX、REGR_AVGY、REGR_SXX、REGR_SXY、および REGR_SYY 関数は数量を戻します。そのデータを使用すれば、 回帰モデルの質と統計としての有効性を評価するために必要な各種の診断統計を計算できます。

REGR_COUNT の結果のデータ・タイプは整数です。 残りの関数の場合、引数のいずれかが DECFLOAT(n) であれば、結果のデータ・タイプは DECFLOAT(34) になります。そうでない場合、結果のデータ・タイプは倍精度浮動小数点になります。 いずれかの引数が特殊 10 進浮動小数点値である場合、10 進浮動小数点数の一般算術演算の規則が適用されます。 「 10 進浮動小数点の一般算術演算規則」の「 10 進浮動小数点の一般算術演算規則 」を参照してください。

結果は NULL 値の場合もあります。 値が NULL 値でない場合、REGR_R2 の結果は 0 から 1 になります。 REGR_SXX と REGR_SYY の結果はどちらも非負になります。

各関数は、 expression1 または expression2 のどちらかが NULL であるペアの除外によって、 引数の値から導出されたペアの集合 (expression1, expression2) へ適用されます。

集合が NULL ではなく、かつ VARIANCE(expression2) が正の場合、 REGR_COUNT は NULL ではない数字のペアの数を集合に戻し、 その他の関数は次のように定義された結果を戻します。
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)

集合が空ではなく、かつ VARIANCE(expression2) がゼロに等しい場合、 回帰直線は無限の傾きになるか、未定義の状態になります。 その場合、関数 REGR_SLOPE、REGR_INTERCEPT、および REGR_R2 はそれぞれ NULL 値を戻し、 その他の関数は上記のように定義された戻り値を戻します。 集合が空の場合は、REGR_COUNT はゼロを戻し、その他の関数は NULL 値を戻します。

値を集計する順序は定義されていませんが、 すべての中間結果は結果のデータ・タイプの範囲内になければなりません。

回帰関数はすべて、1 回のデータ・パススルーでまとめて計算されます。 一般に、回帰関数を使用して回帰分析に必要な統計を計算した方が、 AVERAGE、 VARIANCE、 COVARIANCE などの通常の列関数を使用して同じ計算を実行するよりも効率的です。

線形回帰分析に関係する一般的な診断統計についても、上記の関数を使用して計算できます。 以下に例を示します。
調整を加えた R2
1 - ( (1 - REGR_R2) * ((REGR_COUNT - 1) / (REGR_COUNT - 2)) )
標準誤差
SQRT( (REGR_SYY-(POWER(REGR_SXY,2)/REGR_SXX))/(REGR_COUNT-2) )
二乗和の合計
REGR_SYY
二乗和の回帰
POWER(REGR_SXY,2) / REGR_SXX
二乗和の残差
(二乗和の合計) - (回帰二乗和)
傾きについての t 統計
REGR_SLOPE * SQRT(REGR_SXX) / (標準誤差)
y 切片についての t 統計
REGR_INTERCEPT/(標準誤差)*SQRT((1/REGR_COUNT)+(POWER(REGR_AVGX,2)/REGR_SXX))

EMPLOYEE 表を使用して、部門 (WORKDEPT) 'A00' の従業員の賞与を表す回帰直線 (通常の最小二乗法による) を従業員の給与の線形関数として計算します。 ホスト変数 SLOPE、ICPT、RSQR (いずれも倍精度浮動小数点数) をそれぞれ、 回帰直線の判別の傾き、切片、係数に設定します。 また、ホスト変数 AVGSAL と AVGBONUS を、それぞれ部門 'A00' の従業員の平均給与と平均賞与に設定し、ホスト変数 CNT (整数) を、部門 'A00' の従業員のうち、給与データと賞与データが両方とも存在している従業員の数に設定します。 その他の回帰統計はホスト変数 SXX、SYY、および 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'
サンプル表を使用する場合、ホスト変数は以下の概数値に設定されます。
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