CORR
構文
関連項目:
構文、セマンティクスおよび制限事項の詳細は、分析ファンクションを参照してください。
目的
CORR
は、数値の組の集合に対する相関係数を戻します。これは、集計ファンクションまたは分析ファンクションとして使用できます。
このファンクションは、引数として、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。Oracleは、数値の優先順位が最も高い引数を判断し、残りの引数をそのデータ型に暗黙的に変換して、そのデータ型を戻します。
Oracle Databaseは、expr1
またはexpr2
がNULLである組を排除した後、このファンクションを(expr1
, expr2
)の集合に適用します。その後、Oracleは次の計算を行います。
COVAR_POP(expr1, expr2) / (STDDEV_POP(expr1) * STDDEV_POP(expr2))
ファンクションは、NUMBER
型の値を戻します。ファンクションが空の集合に適用されると、NULLを戻します。
ノート:
CORR
ファンクションは、ピアソンの相関係数を計算します。この計算を行うには、数式を引数として指定する必要があります。Oracleは、ノンパラメトリックまたは順位相関をサポートするためのCORR_S
(スピアマンのロー係数)およびCORR_K
(ケンドールのタウb係数)ファンクションも提供します。
集計の例
次の例では、oe.product_information
サンプル表の重さクラスごとの製品の表示価格と最小価格の相関係数を計算します。
SELECT weight_class, CORR(list_price, min_price) "Correlation" FROM product_information GROUP BY weight_class ORDER BY weight_class, "Correlation"; WEIGHT_CLASS Correlation ------------ ----------- 1 .999149795 2 .999022941 3 .998484472 4 .999359909 5 .999536087
分析の例
次の例では、会社での勤務年数と給与の相関を従業員の役職別に示します。結果セットでは、指定した業務の従業員ごとに同じ相関を示します。
SELECT employee_id, job_id, TO_CHAR((SYSDATE - hire_date) YEAR TO MONTH ) "Yrs-Mns", salary, CORR(SYSDATE-hire_date, salary) OVER(PARTITION BY job_id) AS "Correlation" FROM employees WHERE department_id in (50, 80) ORDER BY job_id, employee_id; EMPLOYEE_ID JOB_ID Yrs-Mns SALARY Correlation ----------- ---------- ------- ---------- ----------- 145 SA_MAN +04-09 14000 .912385598 146 SA_MAN +04-06 13500 .912385598 147 SA_MAN +04-04 12000 .912385598 148 SA_MAN +01-08 11000 .912385598 149 SA_MAN +01-05 10500 .912385598 150 SA_REP +04-05 10000 .80436755 151 SA_REP +04-03 9500 .80436755 152 SA_REP +03-10 9000 .80436755 153 SA_REP +03-03 8000 .80436755 154 SA_REP +02-07 7500 .80436755 155 SA_REP +01-07 7000 .80436755 . . .