MySQLとPostgreSQLにおける相関係数
数値の間に相関性があるかどうか説明する場合に、数値化して求められる事があるケースがあると思う。参考値として相関係数を算出して説明する為のMySQLとPostgreSQLの関数概要。
PostgreSQLにはCORRという関数がある。MySQLには相関係数を算出する関数自体は無いが算出する事が可能。比較軸にもよるけれど、説明する上で数値的な参考値としては使える。
−1以上1以下の実数に値をとる。相関係数が正のとき確率変数には正の相関が、負のとき確率変数には負の相関があるという。また相関係数が0のとき確率変数は無相関であるという
参照:WIKI
参考:日経
例)広告宣伝費と売り上げの相関性のシュミレーション
EXCELの場合
PostgreSQLの場合
rails_app=# select corr(ad,sales) from t1; corr ------------------- 0.848628572784027 (1 row) rails_app=# select * from t1; ad | sales ----+------- 10 | 11 20 | 30 30 | 20 40 | 30 50 | 50 (5 rows)
MySQLの場合
[confirm]> select (( SUM( ad * sales ) - SUM( ad ) * SUM( sales ) / COUNT( ad ) ) / COUNT( sales )) / (STDDEV_POP(ad) * STDDEV_POP(sales)) as corr from t1; +--------------------+ | corr | +--------------------+ | 0.8486285727840269 | +--------------------+ 1 row in set (0.00 sec) [confirm]> select * from t1; +------+-------+ | ad | sales | +------+-------+ | 10 | 11 | | 20 | 30 | | 30 | 20 | | 40 | 30 | | 50 | 50 | +------+-------+ 5 rows in set (0.01 sec)
補足:負の相関関係
root@localhost [confirm]> select (( SUM( ad * price ) - SUM( ad ) * SUM( price ) / COUNT( ad ) ) / COUNT( price )) / (STDDEV_POP(ad) * STDDEV_POP(price)) as corr from t1; +---------------------+ | corr | +---------------------+ | -0.9999999999999999 | +---------------------+ 1 row in set (0.00 sec) root@localhost [confirm]> select * from t1; +------+-------+ | ad | price | +------+-------+ | 10 | 1000 | | 20 | 800 | | 30 | 600 | | 40 | 400 | | 50 | 200 | +------+-------+ 5 rows in set (0.00 sec) root@localhost [confirm]>