天天看點

PostgreSQL 計算 任意類型 字段之間的線性相關性

PostgreSQL自帶了計算numeric和numeric字段的線性相關性的聚合函數corr(numeric, numeric)。

例如:

如果要計算多元的線性相關性,可以使用madlib提供的linregr_train函數來統計。

<a href="http://doc.madlib.net/latest/group__grp__linreg.html">http://doc.madlib.net/latest/group__grp__linreg.html</a>

注意不管是一進制回歸還是多元回歸,都需要提供數字類型,如果是文本是不支援的,如下:

那麼怎麼處理呢?

PostgreSQL提供了強大的視窗功能,因為任意字段都可以排序,是以隻要使用視窗輸出字段排序後的rank()就可以代表它的位置進而計算相關性。

例如

這個例子要計算c1,c3的相關性,c1是數字字段,但是c3是text。 corr函數不支援這麼操作。

是以我使用上面這條帶視窗的SQL,把text字段根據rank抽象為數值,正好和其他字段可以比對相關性。

來看計算結果:

建議采用corr(rc1,rc3)的結果,這個比較有代表性。 代表被評測列的線性相關性。

應用場景大家猜一猜。

繼續閱讀