펭귄 날개와 몸무게의 상관 계수
먼저, 피어슨 상관계수란? 일명 표본 상관계수(Correlation Coefficient). 두 수치형 변수의 선형관계의 정도를 파악할 수 있다. 피어슨 상관계수를 구하는 식은 아래와 같다.
피어슨 상관계수를 구하는 내장 함수 존재 여부는 DBMS에 따라 다르기 때문에, 작성 쿼리도 다르게 작성해야 한다.
▶️PostgreSQL
SELECT species
, ROUND(CAST(CORR(flipper_length_mm, body_mass_g) AS NUMERIC), 3) AS "corr"
FROM penguins
GROUP BY species
PostgreSQL에서는 CORR() 함수를 이용하여 쉽게 피어슨 상관계수를 구할 수 있다. 단, 반올림을 하기위해 ROUND()를 씌워주려면 먼저 타입 캐스트(변환)를 꼭 해줘야 한다. 왜냐하면
👉 PostgreSQL의 ROUND() 함수는 아래처럼 여러 오버로드(overload) 버전을 가지고 있는데, 원하는 소수점 자리수로 반올림하려면 numeric 타입만 입력받도록 정의되어 있다.
ROUND(double precision) | double precision 타입을 입력받아 가장 가까운 정수로 반올림 |
ROUND(numeric) | numeric 타입을 입력받아 가장 가까운 정수로 반올림 |
ROUND(numeric, integer) ✔️ | numeric 타입을 입력받고, 두 번째 인자로 지정된 소수점 자리수(integer)로 반올림 |
👉 그러나 PostgreSQL의 CORR() 함수는 상관계수를 계산하여 double precision (부동 소수점 숫자) 타입의 결과를 반환한다.따라서 CORR() 함수로 구한 값을 double precision → numeric 으로 타입을 변환해야 한다. 타입 변환은 CAST() 함수를 통해 작성할 수 있다. 포맷은 CAST(value AS NUMERIC) 이렇게 된다.
▶️ MySQL
MySQL에는 피어슨 상관계수를 구하는 내장함수가 존재하지 않는다. 따라서 이를 구하기 위해서는 쿼리로 계산 식을 작성해야 한다.