대외활동/Brightics 서포터즈

[Brightics | 실습] 흡연자 수와 코로나 사망자 수의 관계 파악하기 :: 회귀분석

케이와이엠 2021. 6. 29. 16:10

안녕하세요 ! 이번주는 개인 분석 미션의 마지막 주차 활동이 될 것 같은데요 !

지난 시간까지 따릉이 데이터로 이용자와 이용 시간 분석을 EDA 시각화 작업으로 보여드렸어요.

오늘은 새로운 주제 < 코로나 데이터 > 로 돌아왔습니다.

아직까지 코로나 역학 연구가 한창일텐데요 , 항상 코로나 원인 분석을 다룰 때면 "~~~한 사람이 코로나에 감염될 위험 더 높아 .."라는 뉴스를 많이들 접해보셨을 거에요.

오늘 저는 과연 흡연율이 높을 수록, 코로나로 인해 사망할 위험이 더 높은지 브라이틱스를 활용해서 분석 실습을 진행해보고자 합니다.


주제 선정 및 DATA 수집

 

저는 작년 한 해 보건복지부에서 주관하는 금연서포터즈 14기로 활동했었는데요,

코로나 19의 고위험군으로 흡연자가 포함된다는 사실을 알고 있었어요.

 

이 고위험군에는 임산부, 65세 이상 성인, 당뇨병, 만성호흡기 질환자 등이 포함이 되는데요

흡연이 폐에 직접적인 영향을 줄 뿐만 아니라, 호흡기 증상과 폐렴 동반에 취약하며 건강을 악화하는 원인이 된다는 점에서 흡연 또한 코로나 19 고위험군으로 분류되었어요.

따라서 과연 둘 사이의 유의미한 관계가 존재하는지 !! 궁금해졌습니다. 

오늘 사용해볼 데이터는 

https://www.kaggle.com/johnjdavisiv/us-counties-covid19-weather-sociohealth-data?select=us_county_sociohealth_data.csv

 

US Counties: COVID19 + Weather + Socio/Health data

Daily COVID19 cases + fatalities, daily weather, and socio/econ/health data

www.kaggle.com

캐글의 '미국 카운티: COVID19 + 날씨 + 사회/건강 데이터' 입니다.

위에서 다들 다운받으실 수 있어요!

[LOAD 하기]

 

새로운 주제인만큼 새로운 모델을 만들어줍니다.

 

 delimiter는 콤마로 선택해준 다음, 원하는 데이터 칼럼을 선택합니다.

저는 이번 데이터의 경우에 칼럼이 181개나 ..!!! 되었는데요

사회 건강 요인들이 정말 많이 들어있어서 하나하나 살펴보는 재미도 있었답니다.

 

요약통계량 확인

 

이제는 친해진 Statistic Summary 함수로 요약 통계량을 확인해주습니다.

미국 county에 코로나로 인한 사망자의 평균은 1364명이나 되네요.

그리고 흡연자 비중은 17%입니다.

이때 null count를 확인해주세요 ! 저처럼 분명 null값이 은근슬쩍 끼여있을 수도 있으니까요.

저는 Delete Missing Data 함수로 null 값을 가진 row를 모두 삭제해주었어요.

그랬더니 대략 3100열에서 2850열 정도만 남았네요 !

Correlation

상관관계 확인

이제 회귀분석에 들어가기 앞서 상관분석을 해줄게요.

상관분석은 말 그대로 두 변수간의 상관관계가 존재하는지를 확인하는 것입니다.

Correlation 이라고 하죠!

브라이틱스 안에 있는 correlation 함수로 확인할 수 있어요.

 

이때 상관분석의 종류에는

pearson 피어슨 상관계수 / spearman 상관계수 / kendall 상관계수 가 있어요.

피어슨 상관계수는 모수 검정법으로, 연속형 변수의 상관관계를 확인할 때 주로 사용됩니다.

스피어만 상관계수와 켄달 상관계수는 비모수 검정으로 자료가 순위척도 일 때 이용해요.

저는 이때 피어슨 상관계수를 선택해주었습니다.

상관관계를 살펴본 결과, 상관 계수가 -0.17이 나왔어요.

상관계수는 -1에서 1 사이의 값을 가지는데 절댓값 1에 가까워질수록 두 변수간의 상관관계가 높다, highly 하게 관계가 있다라고 판단해요.

또한 + 값을 가지면 양의 상관관계(비례), - 값을 가지면 음의 상관관계(반비례)라고 해요.

따라서 위의 결과를 본다면 사실 상 유의미한 상관관계는 없다고 볼 수 있습니다 .

 

이후 혹시 몰라 outlier를 LOF 방법으로 제거해보았습니다.

[Outlier Detection (LOF) 함수]

LOF는 TUKEY 방법과는 달리 '밀도'를 기준으로 이상치를 감지하기 때문에 조금은 더 함수모양이 이뻐질 것 같았어요.

그 결과 산점도 분포는 달라졌지만 상관계수는 그대로였다는 점 ....

하지만 포기하지 않았습니다 !!

뭔가 이상하다 .. 고민하던 중에 CATCH 캐치 했습니다 제가 ㅠㅠ

흡연이 아닌 흡연자 수 와 사망자 수 를 비교해야한단 걸요 !!!!

 

Add Function Column 을 통해 직접 흡연자 수를 계산한 num_smokers 열을 만들어주었어요.

 

그랬더니 상관계수가 무려 .. 0.99가 나오는게 아니겠어요 ..?

-0.17 에서 0.99라니

직접 보고도 믿을 수 없는 광경 .....

 이로써 흡연과 코로나로 인한 사망 간의 관계는 아주 높은 상관관계를 갖고 있네요!

Linear Regression

회귀분석

이제 드디어 회귀분석을 진행해보겠습니다.

 

[Split Data]

먼저 Train 데이터와 Test 데이터를 7:3 비율로 분할해줍니다.

이때 랜덤 seed를 123으로 만들어줍니다.

[Linear Regression Train]

이제 train 데이터를 linear regresson train 함수에 넣어줍니다.

이때 x 변수에 해당하는 num_smokers를 Feature Columns에,

y 변수에 해당하는 num_deaths를 Label Column에 지정해줍니다.

그렇게 런을 진행시키면 다음과 같은 결과가 나옵니다.

먼저 R-squared 값이 0.984가 나왔어요!

이는 x변수(흡연)로 y변수(코로나로 인한 사망)를 얼만큼 설명할 수 있냐고 물었을 때, 98.4% 설명할 수 있다는 뜻이에요.

또한 이때 p-value는 0에 가까이 수렴하고 있어서 유의성을 확인해주고 있네요 !

[Linear Regression Prediction]

그렇다면, train 데이터로 만든 모델을 활용해서 test 데이터를 예측해봅시다 !

이때 input에는 test table을 넣어주셔야 해요!

그리고 model에는 방금 위에서 만든 train모델을 넣어주세요.

그렇게 run을 하면 예측값이 끝에 추가됩니다.

④[Evaluate Regression]

마지막으로 예측값이 얼마나 일치하는지 평가해줍니다!

evaluate regression으로 말이죠!

label 에는 y변수값을 넣고

prediction column에는 위에서 구한 prediction을 넣어줍니다.

그 결과 !!

최종적으로 R제곱 값이 0.975에 달하는 모델이 만들어졌습니다 !!!

정리하자면 , 흡연자일수록 코로나19로 인해 사망할 가능성이 매우 높아지게 됩니다.

흡연자와 코로나19 사망자수 사이의 회귀분석을 통해 얻어낸 결론이지요

ㄴ물론 !! 이는 저의 개인적인 분석일 뿐 진리는 아니라는 점 조심해주세요 !


이렇게 해서 오늘 회귀분석을 키워드로 한 분석 실습이 모두 마무리되었습니다 !

평소 궁금하던 사실을 직접 파헤쳐볼 수 있어서 정말 짜릿했던 시간이었습니다 ㅎㅎ

다음에도 더 재밌고, 심도있는 주제로 찾아오겠습니다 ♡

*해당 게시글은 Brightics 서포터즈 활동의 일환으로 작성된 포스팅 입니다.

게시글 관련 문의 및 소통을 원하신다면 아래 댓글로 남겨주세요

브라이틱스 사용 중 문의사항은

brightics@samsung.com으로 연락주세요 :)