ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 편상관계수 정의 및 파이썬 코드 구현(Partial Correlation Coefficient)
    Data Science/데이터마이닝 2023. 5. 7. 22:31
    반응형

    데이터 분석에 있어서 가장 많이 활용되는 기법 중 하나로 상관관계 분석이 있다.

    그러나 실제 현업의 데이터에서는 여러 독립변수들이 직/간접적으로 영향을 미치며 이에 대한 정확한 상관관계/인과관계의 분석이 어렵다.

    그렇기에 단순히 상관관계만을 보고 분석을 하는것은 한계가 있으며, 같이 활용 될 수 있는 편상관계수를 설명하고,

    파이썬 코드로 구현하는 예시를 작성해본다.

     

     

    1. 상관계수의 정의 및 한계(Correlation Coefficient)

    상관계수는 두 변수간의 상호관계정도를 나타내는 통계적 수치이다.

    -1 ~ +1 사이의 값을 가지며, -1일때 완벽한 음의 상관관계 그리고 +1일때 완벽한 양의 상관관계를 나타낸다.

    주의할 점은 상관계수가 0일 경우 상관관계가 0인 것이 아닌, 선형의 상관관계가 보이지 않는 다는 의미를 지닌다.

    (관련 내용으로 공분산의 경우 값의 범위가 정해져 있지 않아 값의 크기가 일정한 의미를 지니지 않으며,

    상관계수의 경우 공분산의 값을 정규화하여 -1~+1 범위의 값을 가져 상관관계의 정도(강도)를 알 수 있다.)

     

    그렇다면, 어떠한 예측 모델을 구현하는데 있어서 종속변수(Y)와 독립변수(X)들 간의 상관계수를 분석하면 유효한 인자들을 찾을 수 있을까?

    아래의 예시를 하나 들어본다.

     

    "특정 질병 발병 여부"와 "연봉"이라는 변수간의 상관계수가 높다고 했을 경우,

    정말로 "연봉"이 높을 수록 "특정 질병 발병 여부"가 빈번한 것이 아니라,

    "나이"가 높을 수록  "특정 질병 발병 여부"가 빈번하며 "연봉" 또한 높은 경우 일 수 있다.

    2. 편상관계수의 정의(Partial Correlation Coefficient)

    편상관계수는 다른 독립변수를 통제한 상태에서 두 변수간의 상관관계를 분석하는 통계적 기법이다.

    위의 예시를 재활용 한다면, "나이"가 동일한 상태에서 "특정 질병 발병 여부"와 "연봉"간의 상관계수를 측정한다는 의미이다.(설명을 위한 예시로 수식적으로 정확하지는 않다.)

     

    3. 편상관계수 파이썬 구현하기(pingouin.partial_corr)

    편상관계수를 구현하기 위해서는 pingouin 라이브러리가 필요하다.

    해당 라이브러리 인스톨 명령어는 아래와 같다.

    pip install pingougin

    사용 방법은 아래와 같다.

    import pingouin as pg
    pg.partial_corr(data=df, x='col1', y='col2', covar='col3')
    
    # x : 변수 1
    # y : 변수 2
    # z : 통제할 변수

    pingouin 라이브러리가 설치되었다면, 데이터프레임(DataFrame)에서 .pcorr() 매서드를 통해서 사용 가능하다.

    import pandas as pd
    import seaborn as sns
    import pingouin as pg
    
    # 예시 데이터 생성
    df = sns.load_dataset('taxis')
    
    df.corr()
    
    df.pcorr()

    간단히  Taxis 데이터셋에 대해서 설명하자면, 종속변수(Y)는 택시요금의 총합(total)이며,

    이에 대해서 다음의 독립변수들이 주어졌다.

    [ 승객수(passengers), 이동거리(distance), 순수요금(fare), 팁(tip), 톨비(tolls) ]

     

    종속변수 "total"와 독립변수들에 대한 상관계수와 편상관계수의 차이를 비교해 보자.

     "fare"의 경우 동일하게 높은 계수를 보여 중요 인자임을 확인 할 수 있다.

    "distance"의 경우 상관계수는 높지만, 편상관계수는 매우 낮아짐을 확인 할 수 있다. (0.9 => -0.008)

    즉, 다른 변수들의 효과를 제어했을 때 종속변수와의 관계가 매우 낮아짐을 확인 할 수 있다.

    반대로 "tip"의 경우 상관계수 보다 편상관계수가 높아짐을 확인 할 수 있다. (0.6 => 0.9)

     

     

     

    반응형

    댓글

Designed by Tistory.