CORR

構文

関連項目:

構文、セマンティクスおよび制限事項の詳細は、分析ファンクションを参照してください。

目的

CORRは、数値の組の集合に対する相関係数を戻します。これは、集計ファンクションまたは分析ファンクションとして使用できます。

このファンクションは、引数として、任意の数値データ型、または暗黙的に数値データ型に変換可能な数値以外のデータ型を取ります。Oracleは、数値の優先順位が最も高い引数を判断し、残りの引数をそのデータ型に暗黙的に変換して、そのデータ型を戻します。

関連項目:

暗黙的な変換の詳細は、表2-8を参照してください。数値の優先順位の詳細は、数値の優先順位を参照してください。

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係数)ファンクションも提供します。

関連項目:

exprの有効な書式の詳細は、集計ファンクションおよびSQL式を参照してください。CORR_SおよびCORR_Kファンクションの詳細は、CORR_*を参照してください。

集計の例

次の例では、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
. . .