PostgreSQLでの相関関数の使用
2つの数値が互いにどのように関連しているかを判断するのに役立つ関数の1つは、相関関数です。
このチュートリアルでは、corr()PostrgreSQL関数について説明し、実際の使用法で示します。
相関係数は、2つの数値または2つの数値のセット間の関係の強さを決定するために広く使用されている方法です。この係数は、-1から1.1までの数値として計算されます。1は可能な限り強い正の相関であり、-1は可能な限り強い負の相関です。
正の相関は、1つの数値が増加すると、2番目の数値も増加することを意味します。
負の相関は、1つの数値が増加すると、2番目の数値が減少することを意味します。
2番目の数値の結果が最初の数値によって引き起こされているかどうかはここでは決定されていません。2つの数値の結果が互いに協調して発生しているだけです。
数式が0を返す場合、2つの数値セットの間に相関関係はまったくありません。
相関係数が.7の例では、x軸の数値が1増えるごとに、y軸の数値が0.7ずつ増えます。
数値が大きいほど、相関が強くなります。前に「-」記号が付いているかどうかは関係ありません。
最も一般的な相関係数の1つは、ピアソン相関係数です。詳細については、こちらの別のチュートリアルを参照してください。
postgresql相関関数でいくつかのテストを実行した後、3回すべてのピアソン相関係数の計算と同じになりました。
PostgreSQL関数を使用する際の重要な注意点は、これが集計関数であるということです。つまり、2つの一連の数値の全体の相関を計算します。シリーズ内の2つの数値の相関関係は表示されません。
すでにpostgresにある相関関数を使用するのは非常に簡単です。
これを2つの一連の数値の集計関数として使用して、一連のWebサイトアクティビティの相関係数と、サイトにあるChartioデモソースの収益を決定しました。
これらの2つの測定値を散布図にプロットすると、正の相関のパターンが現れます。相関係数を使用すると、PostgreSQL関数は0.9の結果を示します。これは、ほぼ直接的な相関です。
そのクエリは次のようになります:
SELECT
corr("Amount", "Activities") as "Corr Coef Using PGSQL Func"
FROM(
SELECT
DATE_TRUNC('day', p.payment_date)::DATE AS "Day",
SUM(p.amount) AS "Amount",
COUNT(DISTINCT a.activity_id) AS "Activities"
FROM
public.payments p
INNER JOIN public.subscriptions s ON p.subscription_id = s.subscription_id
INNER JOIN public.users u ON s.user_id = u.user_id
INNER JOIN public.activity a ON a.user_id = u.user_id
GROUP BY 1) as a
この特定のケースでは、サブクエリで収集されたメトリックの集計関数を使用する必要があります。これは非常に簡単です。列で区切られた括弧の間に相関を決定しようとしている2つの列を追加するだけで、次のチュートリアルで指摘するように、出力は集計関数によって計算された相関係数になります。ピアソンフォーミュラとほぼ同じです。