삼성 SDS Brightics

[삼성 SDS Brightics] 상관분석 - 부동산 데이터를 통해 전/월세와 매매가격 간 상관관계 분석(feat. Pearson분석)

Yeenn 2021. 7. 5. 02:40
728x90

 

안녕하세요! 브라이틱스 서포터즈 yeenn입니다:)

 

이제 드디어 서포터즈 활동 5주차에 접어들었는데요,

지난 주까지의 개인분석 미션이 모두 끝나고 드디어 팀 미션이 시작되었습니다!

 

제가 속해 있는 브라이틱스 3조는 현재 브라이틱스 홍보 영상관련해서 영상 기획안 회의를 진행중인데요,

관련 포스팅도 회의가 마무리되는 대로 정리하여 올리도록 하겠습니다!(기대해주세요ㅎㅎ)

 

 

이번 주 포스팅은 개인 미션은 아니구요, 3주간 개인분석 미션에서 다 다루지 못한 브라이틱스 공부&실습을 다루는 포스팅입니다..! 

브라이틱스 활동 종료시점까지,, 개인 포스팅으로 전반적인 머신러닝부분까지 다루는 것이 목표인데, 팀 미션들과 잘 병행할 수 있도록 호흡 조절 잘해보겠습니다!

 


 

이번 주 포스팅에서 다룰 내용은 '상관분석'인데요, 

브라이틱스 Tutorial 페이지에 개인적으로 흥미있어보이는 dataset분석이 있어서 튜토리얼을 따라 직접 실습을 진행해보려고 합니다!

 

* 브라이틱스 튜토리얼 페이지를 보시면 분석 프로세스별로, 분석이 이용되는 산업별로 예제를 통한 자세한 tutorial을 확인하실 수 있습니다!

 

 

 

 

[이론학습]

 

상관분석(Correlation Analysis)이란? 

두 변수가 서로 어떠한 선형관계를 가지는지 분석하는 기법으로 상관계수를 이용하여 측정하는 분석방법입니다.

 

 

상관계수란? 

상관계수 r은 X와 Y가 함께 변하는 정도와 X와 Y가 각각 변하는 정도를 나타내며, 이 'r'은 X와 Y가 완전히 동일하면 +1, 반대방향으로 완전히 동일하면 -1 의값을 가집니다.

※ r값이 0인 경우, '상관이 없다'라고 해석하기 보다는 '선형의 관계가 아니다' 라고 말하는 것이 적절합니다!

 

 

 

대표적인 상관계수로는 피어슨(Pearson) 상관계수, 스피어만(Spearman) 상관계수, 켄달(Kendall)상관계수가 있습니다!

 

 

1) Pearson 상관계수

-피어슨 상관계수는 두 연속형 변수가 한 직선에 얼마나 모여 있는지, 즉 선형관계의 정도와 그 방향이 어떠한지를 나타냅니다.

- -1≤r≤1 의 범위를 가지며, 절댓값이 1에 가까울수록 강한 상관관계를 나타냅니다.

 

2) Spearman 상관계수

-스피어만 상관계수는 원래 데이터를 그대로 사용했던 피어슨 상관계수와는 다르게, 원래 데이터에 대해 순위를 구한 후 그 순위에 대해 상관계수를 구한 것입니다.

-순위를 활용하여 상관계수를 구하기 때문에, 스피어만 순위 상관계수라고도 부릅니다. 

-피어슨 상관계수와 마찬가지로 -1≤r≤1 의 범위를 가지며, 절댓값이 클 수록 강한 상관관계를 나타냅니다. 

 

3) Kendall 상관계수

-켄달 상관계수는 두 변수의 순위의 일치정도를 측정합니다.

-켄달 상관계수 역시 순위와 관련된 상관계수이기 때문에 켄달 순위 상관계수라고 부르고, 타우를 사용하기 떄문에 '켄달의 타우'라고도 부릅니다.

 

피어슨 상관계수 스피어만/켄달 상관계수
-두 변수의 형태가 등간형(interval) 또는 비율형(ratio)일 경우의 상관계수
-두 변수의 선형 정도를 파악할 때 사용
-한 변수의 값이 증가할 때, 다른 변수의 값도 같이 증가 또는 감소하는지의 관계
-두 변수의 형태가 순서형(ordinal)인 경우. 서열변수간의 상관관계
-변수의 순위가 증가할 때, 다른 변수의 순위도 같이 증가 또는 감소하는지의 관계
-두 연속형 변수의 분포가 정규분포를 심하게 벗어날 경우의 상관관계를 측정시에도 사용

 

 

여기까지 간단히 상관분석에 대한 이론학습을 해보았는데요, 충분히 선행 학습이 되셨다면 다음 실습으로 넘어가보도록하겠습니다!

 


[실습]

 

1. 상황 및 분석 목표

  • 부동산 시장에 관심이 많은 재승이는 주거 밀집지역인 송파구를 대상으로 전/월세 가격와 매매가격 간에 상관관계가 있는지 분석해보고자 합니다.
  • 한국감정원, 공공데이터포탈 등에서 부동산 관련 데이터를 제공하고 있으므로 2017년의 월별 데이터로 상관관계를 분석해보고자 합니다.

 

2. Dataset

  • 송파구 지역 아파트 단지의 전/월세 데이터(61_py_rent_price.csv)
변수 변수 설명
address1 시군구
address2 번지
main_num 본번
sub_num 부번
complex_name 단지명
rent_type 전, 월세 구분
area 면적(제곱미터)
contract_ym 계약연월
contract_date 계약일(초, 중 하순 구분)
deposit 보증금
monthly_rent_fee 월세
floor 층수
construction_year 시공연월
street 도로명
area2 평형대

 

  • 전월세 전환율(61_py_rent_ratio.csv)
변수 변수 설명
yyyymm 연월
ratio 전환율

 

  • 매매가격(61_py_sale_price.csv)
변수 변수 설명
address1 시군구
address2  번지
main_num 본번
sub_num  부번
complex_name 단지명
area  면적
contract_ym  계약연월
contract_date  계약일
price 매매가
floor  층수
construction_year 시공연월
street  도로명
area2 평형대

 

 

 

0. Data Flow Model

 

 

 

1. Data Load

 

3 종류의 dataset - 송파구 지역 아파트 단지의 전/월세 데이터(61_py_rent_price.csv) / 전월세 전환율(61_py_rent_ratio.csv) / 매매가격(61_py_sale_price.csv) 을 모두 load해줍니다.

 

세 dataest의 Delimiters는 모두 Comma로 설정하고 load해주시면 됩니다!

특별히 load과정에서 수정해야 할 사항은 없는 듯 합니다.

 

 

61_py_rent_price.csv 를 load해줍니다.

 

 

61_py_rent_ratio.csv 를 load해줍니다.

 

 

61_py_sale_price.csv 를 load해줍니다.

 

 

 

 

2. 데이터 전처리

 

앞서 목표에서 전/월세 데이터를 모두 살펴보기로 했었는데요, 두 금액의 단위가 다르기 때문에 월세의 단위를 전세로 환산하는 작업을 진행하도록 하겠습니다.

월세의 경우 보증금의 크기에 따라 정해지기 때문에, 한국감정원에서 매달 발표하는 '전월세 전환율' 데이터를 이용하여 월세를 전세 단위로 환산하여 계산해보겠습니다!

 

 

2-1. 데이터 전처리-결합

 

전/월세 데이터와 전/월세 전환율 데이터의 거래년월을 key value로 결합합니다.

 

 

Parameter 설정을

Join Type: Inner join

Left Keys: contract_ym

Right Keys: yyyymm

Sort: Flase

로 지정해주세요.

 

참!

 

 

work flow model에서 rent_price 데이터와 rent_ratio 데이터 load함수를 모두 join함수로 연결시키는 것 유의해주세요!

 

 

 

2-2. 데이터 전처리-전환

 

그 다음은 전월세 전환율을 이용하여 월세를 전세로 전환할 경우의 보증금을 계산해볼 건데요,

한국감정원에서 발표한 전월세 전환율을 활용한 수식을 사용해보겠습니다.

 

※ 전환된 보증금 = ((월세 * 12) / 전월세전환율) * 100 + 기존 보증금

 

 

New Column Name에는 전환된 변수임이 잘 들어날 수 있는 새 변수명을 지정해주시고,

Expression Type: SQLite

Expression: ((monthly_rent_fee*12)/ratio)*100+deposit)

을 지정하여 Run을 눌러주세요. 

월세를 전세로 전환할시의 보증금 변수가 새로 생성이 되었네요!

 

 

 

2-3. 데이터 전처리-변환

 

그 다음, 주소, 단지명, 전/월세 타입, 계약연월, 평형 별로 평균 보증금 을 구하기 위해서는 데이터의 열과 행을 변환해야 겠죠? pivot함수를 사용해줍니다.

 

 

Rows: address1, complex_name, rent_type, contract_ym, area2

Values: deposit

Agreegate Function: Mean

을 지정한 후, Run을 눌러주세요!

 

그럼 다음과 같은 결과가 나타나게 됩니다.

 

 

여담이지만,, 피벗 함수사용도 엑셀보다 브라이틱스가 훨씬 편해요bbb

 

 

2-4. 데이터 전처리 - 전세 case filtering

 

그 다음, 전세인 경우 전세보증금과 매매가격과의 상관관계를 알아보기 위해, 전처리된 데이터에서 전세인 경우의 데이터만 필터링해보겠습니다. 

 

 

Filter 함수의 Condition에 

rent type=='lease'를 지정해줍니다.

(따옴표 잊지 마세요!)

 

 

rent type 중 전세 항목인 lease type만 필터링되었습니다!

 

 

 

그 다음은, 월세인 경우 전세보증금과 매매가격과의 상관관계를 알아보아야 겠죠?

앞서 진행한 process와 동일하게 pivot 함수를 통한 데이터 정렬 → filter함수를 통한 월세경우 추출 작업을 진행해줍니다.

 

 

2-5. 데이터 전처리-변환

 

 

 

Rows: address1, complex_name, rent_type, contract_ym, area2

Values: mean_monthly_pay_to_deposit

Agreegate Function: Mean

을 지정한 후, Run을 눌러주세요!

 

 

 

2-6. 데이터 전처리 - 월세 case filtering

 

월세인 경우 전세보증금과 매매가격과의 상관관계를 알아보기 위해, 전처리된 데이터에서 월세인 경우의 데이터만 필터링해보겠습니다. 

 

 

Filter 함수의 Condition에

rent type=='monthly rent'를 지정해줍니다.

 

 

rent type 중 월세 항목인 monthly rent type만 필터링되었습니다!

 

 

 

2-7. 데이터 전처리 - 변환

 

그 다음, 주소, 단지명, 계약연월, 평형 별로 평균 가격 을 구하기 위해서 데이터의 열과 행을 변환하는 pivot함수를 사용해줍니다.

 

 

 

Row: address_1, complex_name, contract_ym, area2

Vaule: price

Aggregate Function: Mean

을 지정하고 Run을 눌러주세요.

 

 

주소, 단지명, 계약연월, 평형 별 평균 매매가격이 table에 재정렬되었습니다!

 

 

 

2-8. 데이터 전처리 - 결합

 

그 다음은, 앞서 전처리된 평균 전세보증금과 평균 매매가격을 비교해보겠습니다.

송파구 지역의 아파트 단지별 계약연월, 평형별 평균 전세보증금과 평균 매매가격을 비교하기 위해 

두 dataset을 join함수를 이용해 결합해보겠습니다. 

 

 

Join Type: innerjoin

Left Keys: address1, complex_name, contract_ym, area2

Right Keys: address1, complex_name, contract_ym, area2

를 지정하고 Run을 눌러줍니다.

 

산점도(Scatter Plot)을 통해 위 table을 조금 더 자세히 살펴보겠습니다!

 

 

평형별 평균 매매가와 평균 보증금의 관계를 산점도를 통해 살펴보기 위해 parameter을 다음과 같이 지정합니다.  

Chart Type: Scatter Plot

X-axis: mean_price

Y_axis: mean_deposit

Color By: area2

 

 

그럼 위와 같은 산점도를 확인할 수 있는데요, 전체 데이터의 갯수가 1322개로 default Show rows 1000개보다 많으므로, Show Rows를 3000으로 설정하여 전체 data를 확인할 수 있게 해줍니다.

 

 → 데이터가 선형으로 분포하고 있음을 알 수 있습니다!

 

 

 

2-9. 데이터 전처리 - 결합

 

그 다음은, 송파구 지역의 아파트 단지별 계약연월, 평형별 전환된 월세보증금 평균금액과 평균 매매가격을 비교하기 위해 전처리된 두개의 데이터셋을 Join 함수를 이용하여 결합해보겠습니다!

 

 

Join Type : Inner Join

Left Keys : address1, complex_name, contract_ym, area2

Right Keys : address1, complex_name, contract_ym, area2

Sort : False

을 지정한 후, Run을 눌러줍니다.

 

위와 마찬가지로, 산점도(Scatter Plot)을 통해 위 table을 조금 더 자세히 살펴보겠습니다!

 

 

아파트 단지별 계약연월, 평형별 전환된 월세보증금 평균금액과 평균 매매가격을 비교하기 위해

Parameter을 다음과 같이 지정해줍니다.

Chart Type: Scatter Plot

X-axis: mean_price

Y-axis: mean_monthly_pay_to_deposit

Color By: area2

 

 

→ 데이터가 대체적으로 선형으로 분포하고 있으나 매매가격에 비해 월세 보증금은 크게 오르지 않는 경우가 존재하는 것으로 보여지네요!

 

 

 

3-1. Pearson 상관분석

 

앞서 살펴 본 평형대 별 매매가격과 전세보증금 간의 상관계수를 계산하여 매매가격의 상승이 전세보증금과 어느정도의 연관성을 가지고 있는지 상관관계분석을 진행해보도록 하겠습니다.

 

 

Correlation 함수를 추가하여

Input Columns: mean_price, mean_deposit

Method: Pearson

Display Plots: True

Group By: area2

를 지정해주시고 Run을 눌러주세요.

 

결과를 살펴볼까요?

 

  • 0평형

 

 

  • 10평형 

 

 

 

  • 20평형

 

 

  • 30평형

 

 

  • 40평형

 

 

  • 50평형

 

→20평형 미만대의 소규모 평수에서 상관계수가 0.84~0.96 로 매우 높은 것을 확인할 수 있었는데요, 이를 통해 매매가격이 오르면 전세보증금도 거의 비슷한 규모로 상승함을 알 수 있었습니다.

→또한, 평형 별로 차이는 있으나 대부분 0.5 이상으로 전세가격과 매매가격 사이에 높은 상관관계가 있음을 알 수 있었습니다.

 

 

 

3-1. Pearson 상관분석

 

마지막으로, 앞서 살펴 본 평형대 별 매매가격과 월세보증금 간의 상관계수를 계산하여 매매가격의 상승이 월세보증금과 어느정도의 연관성을 가지고 있는지 상관관계분석을 진행해보도록 하겠습니다.

 

 

Correlation 함수를 추가하여

Input Columns: mean_price, mean_monthly_pay_to_deposit

Method: Pearson

Display Plots: True

Group By: area2

를 지정해주시고 Run을 눌러주세요.

 

결과를 살펴볼까요?

 

  • 0평형

 

 

  • 10평형

 

 

  • 20평형

 

  • 30평형

 

  • 40평형

 

 

  • 50평형

 

→ 월세보증금의 경우도 20평형 미만대의 소규모 평수에서 상관계수가 비교적 높은 상관성을 띄고있는 것을 확인할 수 있었습니다.(0.91, 0.83)

→다만 월세보증금은 송파구 전체의 평균 전월세전환율로 전환된 보증금이므로 실제 세입자가 월세를 전세로 전환할 경우의 보증금 가격과 차이가 존재하기 때문에 전세 보증금과는 다르게 상관관계가 낮게 나타날 수 있습니다.

 

 

※ 위의 실습과정은 아래 Brightics Studio Tutorial을 참고하여 작성되었습니다.

 

https://www.brightics.ai/kr/docs/ai/s1.0/tutorials/61_py_housing_rent_sales_corr?type=insight 

 

Brightics Studio

 

www.brightics.ai

 

 


-본 게시물은 Brightics 서포터즈 활동의 일환으로 작성된 포스팅 입니다.

728x90