>>-+-REGR_AVGX----------+--(----expression1--,--expression2--)-->< +-REGR_AVGY----------+ +-REGR_COUNT---------+ +-+-REGR_INTERCEPT-+-+ | '-REGR_ICPT------' | +-REGR_R2------------+ +-REGR_SLOPE---------+ +-REGR_SXX-----------+ +-REGR_SXY-----------+ '-REGR_SYY-----------'
スキーマは SYSIBM です。
回帰関数は、通常の最小 2 乗法による回帰直線 (形式 y = a * x + b) を数値の組の集合に当てはめることをサポートします。 各対の最初の要素 (expression1) は、 従属変数の値 (つまり、"y 値") として解釈されます。 各対の 2 番目の要素 (expression2) は、 独立変数の値 (つまり、"x 値") として解釈されます。
関数 REGR_COUNT は、 回帰直線をフィッティングするために使用された非ヌル文字の対の数を戻します (下記参照)。
関数 REGR_INTERCEPT (省略形は REGR_ICPT) は、 回帰直線の y 切片 (前述の式では "b") を戻します。
関数 REGR_R2 は、 回帰に関する判別の係数 ("R 2 乗" または "適合度" ともいう) を戻します。
関数 REGR_SLOPE は、直線の傾き (前述の式ではパラメーター "a") を戻します。
関数 REGR_AVGX、REGR_AVGY、REGR_SXX、REGR_SYY、 および REGR_SXY が戻す数量データを使用すれば、 回帰モデルの質と統計としての有効性を評価するために必要な各種の診断統計を計算できます (下記参照)。
引き数には、数値を指定しなければなりません。
REGR_COUNT の結果のデータ・タイプは整数です。 その他の関数については、結果のデータ・タイプは倍精度の浮動小数点です。 結果はヌル値の場合もあります。 値がヌル値でない場合、REGR_R2 の結果は 0 〜 1 になります。 REGR_SXX と REGR_SYY の結果はどちらも非負になります。
各関数は、 引き数の値から導出された対の集合 (expression1, expression2) から、 expression1 または expression2 のどちらかがヌル値の対を除外したものに対して適用されます。
集合が空ではなく、かつ VARIANCE(expression2) が正の場合、 REGR_COUNT は非ヌルの対の数を集合に戻し、 その他の関数は次のように定義された結果を戻します。
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 はそれぞれヌル値を戻し、 その他の関数は上記のように定義された戻り値を戻します。 集合が空の場合は、REGR_COUNT はゼロを戻し、その他の関数はヌル値を戻します。
値を集計する順序は定義されていませんが、 すべての中間結果は結果のデータ・タイプの範囲内になければなりません。
回帰関数はすべて、1 回のデータ・パススルーでまとめて計算されます。 一般に、回帰関数を使用して回帰分析に必要な統計を計算した方が、 AVERAGE、VARIANCE、COVARIANCE などの通常の列関数を使用して同じ計算を実行するよりも効率的です。
線形回帰分析に関係する一般的な診断統計についても、上記の関数を使用して計算できます。 たとえば、次のようにします。
例:
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