説明
この関数は線形回帰関数であり、一般最小二乗法によって一連のデータ点に回帰直線をフィッティングします。集計または分析関数として使用できます。
説明
- 分析関数として使用する場合は、
OVER句を使用してウィンドウを定義し、計算を行う必要があります。これは一連の行の集合に対して計算を行い、複数の値を返します。 - 集計関数として使用する場合、この関数は一連の行の集合に対して集計計算を行い、結果として1つの値しか返せません。この場合は
OVER句を追加する必要はありません。
構文
{ REGR_SLOPE
| REGR_INTERCEPT
| REGR_COUNT
| REGR_R2
| REGR_AVGX
| REGR_AVGY
| REGR_SXX
| REGR_SYY
| REGR_SXY
}(expr1 , expr2)
[ OVER (analytic_clause) ]
パラメータの説明
| パラメータ | 説明 |
|---|---|
| REGR_SLOPE | 直線の傾き(勾配)を返します。戻り値は数値データ型であり、NULL とすることができます。空の数値ペア(expr1,expr2)を無視した後、次の計算を行います: sql COVAR_POP(expr1, expr2) / VAR_POP(expr2) |
| REGR_INTERCEPT | 回帰線の y 截距を返します。戻り値は数値データ型であり、NULL とすることができます。空の数値ペア(expr1,expr2)を無視した後、次の計算を行います: sql AVG(expr1) - REGR_SLOPE(expr1, expr2) * AVG(expr2) |
| REGR_COUNT | 回帰線を補完するために使用される非空の数値ペアの数を返します。これは整数です。 |
| REGR_R2 | 回帰の決定係数(R平方または適合度とも呼ばれる)を返します。戻り値は数値データ型であり、NULL とすることができます。 VAR_POP(expr1) および VAR_POP(expr2) の空値を無視して評価を行います。戻り値は次のとおりです: sql 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 |
| REGR_AVGX | 回帰線の独立変数(expr2)の平均値を返します。 空の数値ペア(expr1,expr2)を無視した後、次の計算を行います: sql AVG(expr2) |
| REGR_AVGY | 回帰線の従属変数(expr1)の平均値を返します。 空の数値ペア(expr1,expr2)を無視した後、次の計算を行います: sql AVG(expr1) |
| REGR_SXX | 空の数値ペア(expr1,expr2)を無視した後の数値ペアの個数に独立変数の値の全体分散を乗じた値、すなわち以下の式の計算結果を返します: sql REGR_COUNT(expr1, expr2) * VAR_POP(expr2) |
| REGR_SYY | 空の数値ペア(expr1,expr2)を無視した後の数値ペアの個数に従属変数の値の全体分散を乗じた値、すなわち以下の式の計算結果を返します: sql REGR_COUNT(expr1, expr2) * VAR_POP(expr1) |
| REGR_SXY | 返される値は、空の数値ペア(expr1,expr2)を無視した後の数値ペアの個数に全体の共分散を乗じたものであり、以下の式の計算結果となります: sql REGR_COUNT(expr1, expr2) * COVAR_POP(expr1, expr2) |
| expr1 | 因変数の値(y値)を指定します。 |
| expr2 | 独立変数の値(x値)を指定します。 |
| OVER | OVER 句を使用してウィンドウを定義し、計算を行います。詳細については分析関数の説明を参照してください。 |
説明
REGR_SXX、REGR_SYY、および REGR_SXY は、さまざまな診断統計データを計算するための補助関数です。
返り値の型
返り値は数値データ型またはNULLです。
例
既にテーブル tbl1 が作成されています。
obclient> SELECT * FROM tbl1;
+------+------+------+------+
| COL1 | COL2 | COL3 | COL4 |
+------+------+------+------+
| 1 | A1 | 8 | 12 |
| 1 | A2 | 10 | 15 |
| 1 | A3 | 11 | 16 |
| 2 | B1 | 9 | 14 |
| 2 | B2 | 10 | 15 |
| 2 | B3 | 8 | 13 |
| 2 | B4 | 11 | 16 |
| 3 | C1 | 8 | 18 |
| 3 | C2 | 9 | 16 |
| 3 | C3 | 10 | 15 |
| 3 | C4 | 11 | 12 |
| 3 | C5 | 12 | 10 |
| 4 | d1 | 8 | NULL |
| 4 | d1 | 9 | 10 |
| 4 | d1 | 10 | NULL |
+------+------+------+------+
15 rows in set
集計関数の例
数値対列 col3 と列 col4 の線形回帰に基づく3種類の診断統計量を計算します。
obclient> SELECT col1,REGR_SXX(col3,col4) "REGR_SXX",
REGR_SYY(col3,col4) "REGR_SYY",
REGR_SXY(col3,col4) "REGR_SXY"
FROM tbl1
GROUP BY col1;
+------+----------------------------------------+------------------------------------------+----------------------------------------+
| COL1 | REGR_SXX | REGR_SYY | REGR_SXY |
+------+----------------------------------------+------------------------------------------+----------------------------------------+
| 1 | 8.666666666666666666666666666666666667 | 4.66666666666666666666666666666666666701 | 6.333333333333333333333333333333333333 |
| 2 | 5 | 5 | 5 |
| 3 | 40.8 | 10 | -20 |
| 4 | 0 | 0 | 0 |
+------+----------------------------------------+------------------------------------------+----------------------------------------+
4 rows in set
分析関数の例
列 col1 でグループ化し、列 col2 で昇順にソートして、数値対列 col3 と列 col4 の累積傾きを計算します。
obclient> SELECT col1,col2,col3,col4,
REGR_SLOPE(col3,col4) OVER(PARTITION BY col1 ORDER BY col2) "REGR_SLOPE"
FROM tbl1;
+------+------+------+------+--------------------------------------------+
| COL1 | COL2 | COL3 | COL4 | REGR_SLOPE |
+------+------+------+------+--------------------------------------------+
| 1 | A1 | 8 | 12 | NULL |
| 1 | A2 | 10 | 15 | .6666666666666666666666666666666666666667 |
| 1 | A3 | 11 | 16 | .7307692307692307692307692307692307691642 |
| 2 | B1 | 9 | 14 | NULL |
| 2 | B2 | 10 | 15 | 1 |
| 2 | B3 | 8 | 13 | 1 |
| 2 | B4 | 11 | 16 | 1 |
| 3 | C1 | 8 | 18 | NULL |
| 3 | C2 | 9 | 16 | -.5 |
| 3 | C3 | 10 | 15 | -.6428571428571428571428571428571428570956 |
| 3 | C4 | 11 | 12 | -.5066666666666666666666666666666666666667 |
| 3 | C5 | 12 | 10 | -.4901960784313725490196078431372549019608 |
| 4 | d1 | 8 | NULL | NULL |
| 4 | d1 | 9 | 10 | NULL |
| 4 | d1 | 10 | NULL | NULL |
+------+------+------+------+--------------------------------------------+
15 rows in set