반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Ethan's Values

파이썬 비즈니스 통계분석 - 상관관계 분석 본문

Python

파이썬 비즈니스 통계분석 - 상관관계 분석

Ethan_hyk 2023. 11. 28. 13:57
반응형

1. 수치형 상관분석

총 매출액과 방문빈도, 구매 카테고리수 사이의 관계를 분석하고자 한다.

상관계수를 한개씩 살펴볼때는 stats에 pearsonr 함수로 확인할 수 있고, 테이블을 볼 때는 pandas의 corr함수로 확인할 수 있다. 반면 유의한지는 확인할 수 없다.

print(stats.pearsonr(df1.총_매출액,df1.방문빈도))
print(stats.pearsonr(df1.총_매출액,df1.구매_카테고리_수))
print(stats.pearsonr(df1.방문빈도,df1.구매_카테고리_수))

=>

df1.corr(method='pearson')
#수치형은 피어슨

=>

2. 편상관분석

3개 이상 변수간의 상관관계 분석은 특정 두 변수간의 순수한 상관관계를 나타낸다고 볼 수 없다. 왜냐하면 또 다른 제3의 변수가 두 변수의 연관성 자체에 영향을 줄 수 있기 때문이다. 이렇게 특정 변수의 영향을 제거한 상태에서의 두 변수간의 순수한 상관관계를 파악하기 위해서는 편(부분) 상관관계 분석이라는 기법을 사용해야 한다.

from pingouin import partial_corr

편상관분석은 위와같은 모듈을 불러와 사용한다.

위에서 분석했던 총매출액과 방문빈도간 편상관분석을 진행해보자

partial_corr(data=df1, x='총_매출액', y = '방문빈도', covar='구매_카테고리_수')\

=> 피어슨으로 했을때 상관계수가 0.6 -> 구매_카테고리_수를 통제 후 0.58로 감소함, 이렇게 상관성이 낮아져 상관성이 있는것으로 파악되었지만 편상관분석을 하면 상관성이 없을 수도 있기 때문에 구체적인 분석이 필요하다.

3. 순서형 변수 상관분석

방문빈도가 많으면 ~ 1회당 평균매출액이 클까? 상관성이 있을까? 알아보기 위해서는 스피어만 방법을 사용한다.

df1.corr(method='spearman')

=> 음의 상관성으로 방문빈도가 높을수록 오히려 1회 평균 구매 수준은 떨어진다고 볼 수 있다.

4. 정준 상관분석

예) 제품 만족도와 매장 만족도의 상관분석
제품 만족도 변수: 품질, 가격, 디자인
매장 만족도 변수: 직원 서비스, 매장 시설, 고객관리

제품 만족도 - 매장 만족도 사이의 상관관계를 파악하고, 둘 사이의 상관성을 가장 잘 표현해주는 요인 변수들의 선형 결합을 찾는 분석방법이다. 

from sklearn.cross_decomposition import CCA

먼저 피팅할 변수를 정의한다.

U = df[['품질','가격','디자인']]
V = df[['직원 서비스','매장 시설','고객관리']]

그 후, 피팅(학습시키고 실제 데이터에 적합시키기 위해)해주는데 정준상관계수를 몇개로 할 것인지 결정한다. 여기서는 제품 만족도와 매장 만족도를 각 각 1개의 요인으로 묶어 두 그룹간의 관계를 보기위해서 이기 때문에 1개로 설정한다.

cca = CCA(n_components=1).fit(U,V)

그 다음, tranform 함수를 사용하여 정준변수를 산출하여 그의 값을 U_c1, V_c1에 프레임 형식으로 넣어준다.

U_c, V_c = cca.transform(U,V)
U_c
U_c1 = pd.DataFrame(U_c)[0]
V_c1 = pd.DataFrame(V_c)[0]
print(U_c1)
print('\n',V_c1)

그 후, pearsonr 함수로 정준상관계수의 피어슨 상관계수를 확인해본다. 

CC1 = stats.pearsonr(U_c1,V_c1)
print('제1정준상관계수:',CC1)

=>

그 후 corrcoef로 정준적재량과 교차적재량을 확인한다.

print('제품 만족도 정준변수와 해당 변수들간 정준적재량',np.corrcoef(U_c1.T,U.T)[0,1:4])
print('제품 만족도 정준변수와 매장 만족도 변수들간 교차적재량',np.corrcoef(U_c1.T,V.T)[0,1:])

print('매장 만족도 정준변수와 해당 변수들간 정준적재량',np.corrcoef(V_c1.T,V.T)[0,1:])
print('매장 만족도 정준변수와 제품 만족도 변수들간 교차적재량',np.corrcoef(V_c1.T,U.T)[0,1:4])

=>

결과 해석
정준상관분석 결과
-> 제품만족도와 매장만족도는 0.77 p-value는 0.00이하로 유의미하게 강한 양의 상관관계가 있음

정준적재량 결과
-> 제품 만족도에서는 가격과 디자인이 0.77, 0.55로 중요한 역할
-> 매장 만족도에서는 직원 서비스와 고객관리가 0.91, 0.58로 중요한 역할

교차적재량 결과
-> 제품 만족도는 매장 만족도의 직원 서비스와 고객관리가 0.70, 0.58로 두 변수에 의해 제품 만족도가 결정됨
-> 매장 만족도는 제품 만족도의 가격과 디자인이 0.59, 0.42로 두 변수에 의해 매장 만족도가 결정됨

 

 

 

 

 

 

 

 

 

 

 

본 내용은 파이썬 비즈니스 통계분석, 김형수 저자 책에서 공부한 내용을 바탕으로 작성한 글입니다.

Comments