pbj0812의 코딩 일기

[통계학] Python으로 피어슨의 상관계수 구현하기 본문

Science/통계학

[통계학] Python으로 피어슨의 상관계수 구현하기

pbj0812 2020. 8. 14. 00:36

0. 목표

 - python으로 피어슨의 상관계수 구현하기

 - 상관의 정도를 나타내는 지표로 -1에서 1 사이의 값을 취함

1. 실습

 1) 실습 데이터 생성

  - 한눈에 봐도 상관 있어 보이는 느낌의 데이터 생성

data1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 11]
data2 =  [2, 5, 7, 9, 12, 13, 15, 16, 19, 20]

 2) 평균 함수 구현

def mean(inp):
    result = 0
    len_inp = len(inp)    
    for i in inp:
        result += i
    result = result / len_inp
    return result

 3) 제곱근 함수 구현

  - 반복 횟수가 커질수록 정확도 상승

def sqrt(inp):
    result = inp/2
    for i in range(30):
        result = (result + (inp / result)) / 2
    return result

 4) 피어슨의 상관계수 구현

def cor(inp1, inp2):
    # 평균 먼저 계산
    mean_inp1 = mean(inp1)
    mean_inp2 = mean(inp2)
    # 분자
    son = 0
    for i in range(len(inp1)):
        son += (inp1[i] - mean_inp1) * (inp2[i] - mean_inp2)
    # 분모
    x_mom = 0
    for i in range(len(inp1)):
        x_mom += (inp1[i] - mean_inp1) ** 2
    y_mom = 0
    for i in range(len(inp2)):
        y_mom += (inp2[i] - mean_inp2) ** 2
    mom = sqrt(x_mom) * sqrt(y_mom)
    result = son / mom
    return result

 5) 결과 확인

  - 결과 : 0.9873373132677561

print(cor(data1, data2))

2. 참고

 - 피어슨 상관 계수

Comments