본문 바로가기
통계

[기초통계] 상관분석(Correlation Analysis)

by daisy26 2023. 10. 11.

상관분석이란?

: 연속형 변수들 간에 어떤 선형적인 또는 비선형적인 관계를 갖고 있는지 분석하는 방법

 

상관분석은 두 변수 간의 관계상관계수(Correlation Coefficient)로 나타냅니다.

상관계수는 -1과 1 사이의 값을 갖으며, 음의 부호일 경우에는 반비례 관계인 음의 상관관계를 나타내고, 양의 부호일 때는 비례 관계인 양의 상관관계를 나타냅니다. 상관계수의 경우 두 변수 간에 연관된 정도만을 나타낼 뿐, 인과관계를 설명하는 것은 아닙니다.

 

Kaggle의 Salary_data를 토대로 나이, 경력, 그리고 급여의 상관관계에 대해 간단하게 분석해보고자 합니다.

 

Salary_Data

Salary Data based on Experience,Age,Gender,Job Title and Education Level

www.kaggle.com

correlation-analysis.ipynb
0.21MB

우선, 해당 데이터의 정보는 아래와 같습니다.

df.info()

상관분석의 경우, 연속형 변수(숫자로 구성된 변수)만을 분석할 수 있기 때문에 Dtype이 float64인 'Age', 'Years of Experience', 'Salary'를 활용하여 분석을 진행하도록 하겠습니다.

df.isnull().sum()

분석을 진행하기 앞서, 데이터에 결측치가 있는지 확인하는 과정이 필요합니다. NULL 값이 있는 경우 오류가 나거나 부정확한 결과값이 도출될 우려가 있기 때문에 확인하여 제거해야 합니다. 위 데이터의 경우에는 NULL 값을 갖는 데이터가 있기 때문에 제거해주는 과정이 필요합니다.

df = df.dropna(how='any')
df.isnull().sum()

dropna 함수를 활용하여 간단하게 결측치를 제거해주고 다시 데이터를 확인해보면 결측치가 제거된 것을 확인할 수 있습니다. 

data 변수에 'Age', 'Years of Experience', 'Salary' 열의 값들을 저장한 후, corr 함수를 활용하여 상관관계 분석을 수행하면 상관계수 값이 도출됩니다.  

data = df.loc[:,['Age', 'Years of Experience', 'Salary']]
cor_result = data.corr(method='pearson')
cor_result

위의 상관행렬을 시각화하여 나타내면 아래와 같습니다.

plt.figure(figsize = (10,6))
sns.heatmap(cor_result, annot = True, cmap = 'Blues')
plt.show()

상관행렬의 형태로만 상관분석 결과를 해석하다보면 데이터 해석이 왜곡될 우려가 있기 때문에 산점도를 통해 함께 확인하는 것이 중요합니다. 이를 통해 데이터의 분포와 선형관계 등을 확인할 수 있습니다.

sns.pairplot(data)

 

'통계' 카테고리의 다른 글

[기초통계] 회귀분석(Regression Analysis)  (1) 2023.10.11