Използване на корелационна функция в PostgreSQL
Една функция, която може да бъде полезна при определянето на връзката между две числа, е корелационната функция.
В този урок ще обясним функцията corr() PostrgreSQL, както и ще я покажем в реалния свят.
Коефициентът на корелация е широко използван метод за определяне на силата на връзката между две числа или два набора от числа. Този коефициент се изчислява като число между -1 и 1. 1 е възможно най-силната положителна корелация, а -1 е възможно най-силната отрицателна корелация.
Положителната корелация означава, че с увеличаване на едно число, второто число също ще се увеличава.
Отрицателна корелация означава, че с увеличаване на едно число, второто число намалява.
Тук не се определя дали резултатът от второто число е ПРИЧИНЕН или не от първото, просто резултатите от двете числа се случват съвместно един с друг.
Ако формулата върне 0, тогава няма абсолютно НИКАКВА корелация между двата набора от числа.
В пример, при който коефициентът на корелация е .7, за всяко увеличение с 1 на числото по оста x числото по оста y се увеличава с .7.
Колкото по-голямо е числото, толкова по-силна е корелацията. Дали е предшестван от знака „-“ или не, няма значение.
Един от най-популярните коефициенти на корелация е коефициентът на корелация на Пиърсън и повече информация можете да намерите в друг урок тук.
След като проведохме няколко теста на корелационната функция postgresql, тя се оказа равна на изчислението на коефициента на корелация на Пиърсън и трите пъти.
Докато използвате функцията PostgreSQL, важната забележка е, че тя е функция за агрегиране. Това означава, че ще изчисли корелацията на съвкупностите на две серии от числа. Няма да показва корелацията на две числа в поредицата.
Използването на корелационната функция вече в postgres е доста лесно.
Използвахме го като обобщена функция от две серии от числа, за да определим коефициента на корелация за поредица от времеви дейности на уебсайта и приходи в демо източник на Chartio, който имаме на нашия сайт.
Начертавайки тези две измервания върху диаграма на разсейване, се появява модел на положителна корелация. Използването на коефициента на корелация функцията 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
В този конкретен случай ще трябва да използвате функцията за агрегиране на показателите, събрани в подзаявка. Това е много лесно, просто добавете двете колони, на които се опитвате да определите корелацията между скоби, разделени от колона, и вашият изход ще бъде коефициентът на корелация, изчислен от функцията за агрегиране, която, както посочихме в следващия урок, е почти точно същото като формулата на Пиърсън.