2-2. 바이오와 코딩의 첫 만남 - 데이터분석

Part 2. 헬로 월드..?

by 미르


파이썬 문법의 늪에서 허우적대는 우리에게, 드디어 올 것이 왔다.


첫 번째 실전 프로젝트. 과제의 명칭은 ’헬스케어 데이터 기반의 분석 및 시각화’이다.


주어진 무기는 약 7,500명에 달하는 사람들의 실제 건강 검진 데이터. 우리의 최종 목표는 이 방대한 데이터를 바탕으로 '흡연자와 비흡연자 사이에 유의미한 신체적 차이가 존재하는지' 분석하고, 그로부터 실질적인 인사이트를 도출하여 발표하는 것이었다.


설레는 마음으로 VS Code 창에 데이터를 불러왔다. 그리고 곧바로 숨이 턱 막혔다. 엑셀로는 한눈에 담기지도 않는 방대한 숫자와 알 수 없는 영문 컬럼들이 까만 화면을 가득 채웠다. 교과서에서나 보던 예쁘게 정제된 데이터?


> df.head()


를 치면 깔끔하게 나오던 그 타이타닉 생존자 데이터 같은 것이 아니었다. 듬성듬성 비어있는 결측치, 상식적으로 말이 안 되는 이상치들이 지뢰처럼 깔려 있었다. 이론으로만 배우던 코딩을 이토록 복잡한 '날것'의 데이터에 적용하려니 막막함이 앞섰다.


이러고 있을 때가 아니지, 배정된 우리 조원들이랑 먼저 친해져볼까?

"우리 돌아가면서 자기소개 한 번 씩 할까요?"


고개를 돌려 우리 조의 구성원 면면을 살펴보니 묘한 안도감이 들었다.



어벤져스 조 결성: 코딩 고수들과 생물학 도메인 현업 경험자들


우리 조는 각기 다른 분야의 지식을 무기로 가진 특공대 같았다.

(익명성을 위해 이니셜로 표현했습니다.)


SJ: 뇌과학 쪽 대학원 인턴 경험이 있다고 한다.[파이썬 잘함]

JH: 박사님이시다. 의료기기 회사에서 연구하셨다고 한다.[파이썬 잘함]

JM: 간호사님이시다. 우리조에서 인체생리학적인 의문이 생길때마다 전부 설명해주실거다.

그리고 나: 항암제 회사 GMP에서 일하다 통계데이터과학을 전공한 지 1년도 안 된 코딩 입문자다.


참고로 우리는 파이썬 과목을 마치고 나서, 자기성취도평가를 통해 파이썬 실력에 따라 반이 나뉘어져 보충수업을 들었었다.

새싹반, 열정반, 심화반. 우리 조 4명 중에 심화반 수업을 듣는 사람이 2명이다.

파이썬 잘하는 사람이 우리 조에 2명이나 있다니..!!


조장은 사다리 타기를 통해 공정하게 의료기기 업계 출신 박사님인 JH님이 맡게 되었다. 곧바로 우리는 작업 파이프라인을 설계했다. 방대한 데이터를 올바르게 파악하고, 그에 맞는 설득력 있는 스토리라인을 구성하는 것이 프로젝트의 핵심이라고 판단했다.


코딩만 잘한다고 해결될 문제가 아니다. 우리는 자연스럽게 각자의 능력치 스탯에 맞춰 톱니바퀴처럼 역할을 분담했다.

가장 먼저 분석의 시작인 이상치 정제와 통계적 가설 검정의 설계는 전공자인 내가 맡게 되었다.

"이 혈압 수치는 사람이 살아있을 수 없는 수치인데요. 날릴까요 말까요?", "이 두 변수는 피어슨 상관계수를 돌려보는 게 좋겠습니다.", "이거 한 번 t-test 해봤는데 결과가 이렇네요." 내가 통계적 논리 구조와 뼈대를 스케치하면, 파이썬 코딩 실력이 가장 좋은 두 명의 팀원이 눈부신 속도로 코딩하여 완벽하게 구현해 주었다.


통계데이터과학과 라는 학과 이름만 보면 재빠른 속도로 코딩을 구현해낼 것 같지만, 아직은 우리 학과에 파이썬이라는 언어를 적극적으로 사용하는 수업은 거의 없고, R이라는 언어에 갇혀있다(전국의 통계학과 출신들이 겪는 고질적인 문제다. 파이썬은 사실상 독학해야 한다). 그래서 R코드로 통계 분석을 구현해 주면, 나머지 팀원들이 파이썬으로 재구현해주는 방식이었다.


데이터상에서 유의미한 수치(P-value < 0.05)가 툭툭 튀어나올 때마다, 간호사 JM님은 인체 생리학 관련 의학 논문을 탐색하며 "아, 이건 담배의 일산화탄소 때문이네요"라며 수치가 타당한지 꼼꼼하게 근거를 덧붙여 주셨다. 나는 도출된 통계 분석 결과의 의미와 한계점을 조장님에게 상세히 설명하며 발표의 논리를 단단하게 보강했다. 각자의 파편화된 도메인 지식이 파이썬이라는 공통 언어를 통해 하나의 이야기로 융합되는, 짜릿한 순간이었다.


숫자가 들려주는 담배의 해악: 4가지 인사이트


오랜만에 눈에 불을 켜고 데이터를 닦고 조이고 분석한 결과, 우리는 흡연 여부에 따른 흥미로운 지표들을 여러 개 찾아낼 수 있었다.


1. 충치 발생 여부와 흡연의 관계 (범주형 & 범주형 분석)

: 흡연과 충치 발생 여부는 통계적으로 매우 강한 연관성을 보였다. 통계 수치로도 간단히 증명할 수 있었지만, 간호사 JM님이 설명을 덧붙였다. "흡연은 구강 내 침 분비랑 관련이 있어요. 세균을 씻어내야 하는데 그게 정상적으로 안 되니 충치가 폭발적으로 늘어나는 거에요." 데이터의 숫자에 의학적 생명력이 불어넣어지는 순간이었다.




2. 헤모글로빈 수치의 역설 (연속형 & 혼합 파생변수 분석)

: 단순히 분석해보니 흡연자의 헤모글로빈 수치가 비흡연자보다 월등히 높았다. 보통 헤모글로빈이 높으면 건강하다고 생각하기 쉽지만, 실상은 달랐다. 흡연 시 체내에 들어오는 일산화탄소가 산소 대신 헤모글로빈과 결합해버리니, 우리 몸은 '산소가 부족하다'고 착각하여 뼛속(골수)에서 적혈구를 비정상적으로 뿜어내는 보상 작용을 한 것이다.


그러나 우리는 '나이'라는 변수가 미칠 수 있는 영향까지 통제(Control)한 후에도, 동일 연령대에서 흡연자의 헤모글로빈 수치가 유의하게 높다는 사실을 통계적으로 증명해 냈다.






3. 끈적해지는 피 (연속형 파생변수 & 범주형 분석)

image.png

: 혈당 및 지질 수치 분석에서는 흡연자의 중성지방(TG) 대비 고밀도 지단백 콜레스테롤(HDL) 비율이 비흡연자보다 확연히 높게 나타났다. 한마디로 흡연자의 피가 훨씬 더 탁하고 끈적하다는 것을 데이터가 가리키고 있었다. 여기까지는 의학 논문에서도 흔히 찾아볼 수 있는, 상식적이고 예측 가능한 결과였다.


4. 뚱뚱할수록 담배를 많이 피운다? (연속형 & 예측 확률 분석)

: 우리의 통찰력이 빛을 발한 부분은 '데이터가 가진 한계'를 정확히 지적한 대목들이었다. 우리는 체질량지수(BMI)와 몸무게가 흡연 확률에 미치는 영향을 파악하기 위해 로지스틱 회귀 분석(Logistic Regression)을 진행했다.




분석 결과, 체질량지수가 1만큼 증가할 때마다 그 사람이 흡연자일 오즈(Odds, 어떤 일이 일어날 확률을 일어나지 않을 확률로 나눈 값)가 약 7.8% 증가한다는 결과값을 얻었다.

수치상으로는 체중이 나갈수록 담배를 피울 경향성이 데이터상에 존재한다는 뜻이다.

image.png

하지만 나는 회귀 모델의 설명력을 나타내는 유사 결정계수(Pseudo R-squared) 값이 고작 0.0121에 불과하다는 점에 주목했다. 쉽게 말해, 통계적으로 경향성은 존재하지만 이 모델의 예측 정확도는 1.2% 수준이라는 뜻이다. 나는 "통계적으로 유의미한 수치이긴 하지만 설명력이 너무 낮아, 이 지표 하나만으로 특정 개인의 흡연 여부를 예측하기에는 심각한 무리가 있습니다"라는 문장을 발표 자료에 명시했다. 컴퓨터가 뱉어내는 단편적인 숫자의 마법에 매몰되지 않으려는 깐깐한 시도였다.


클라이맥스: 사라진 '성별'


가장 치열했던 토론이자 우리 팀의 백미는 요단백과 크레아티닌 등 신장(콩팥) 관련 지표를 분석할 때 벌어졌다.


image.png

코드를 돌려본 결과, 신장 지표가 나쁘게 나타날수록 흡연자 비율이 압도적으로 높았다. 당장이라도 발표 자료에 "여러분! 흡연이 이렇게 무섭습니다! 콩팥을 다 망가뜨립니다!"라는 자극적인 결론을 박아넣고 싶었다.


하지만 데이터를 뜯어볼수록 찝찝한 구석이 발견되었다. 흡연자 그룹의 평균 키와 체중이, 비흡연자 그룹에 비해 상식 밖으로 월등히 높게 나타난 것이다.


"잠깐만요. 아무리 그래도 비흡연자 그룹의 평균 키가 이렇게 작을 수가 있나요? 이거... 대한민국 여성의 평균 키 잖아요."


우리가 분석한 7,500명의 데이터 세트에는 결정적으로 '성별'을 나타내는 변수 컬럼이 아예 누락되어 있었다. 우리는 이 비정상적으로 높은 신체 조건과 신장 지표(단백질과 크레아티닌은 근육량에 비례하므로 남성이 기본적으로 수치가 더 높다)가 흡연 때문이 아니라, 해당 데이터의 흡연자 그룹에 '남성'이 압도적으로 많이 포함되어 있기 때문에 나타난 거대한 착시 현상(교란 효과, Confounding Effect)이라는 의심을 품었다.


결론적으로 우리는 "통계 수치상으로는 요단백이나 크레아티닌 수치와 흡연 여부가 강력하게 관련이 있다고 나왔음에도 불구하고, 우리는 이 결과를 신뢰할 수 없다"고 발표했다. 성별이라는 너무나 강력하고 중요한 변수가 누락되었기 때문에, 흡연이 신장 지표 악화와 직접적인 관련이 있다는 가설을 타당하게 채택하기는 불가능하다는 것이 우리의 최종 결론이었다.


데이터 분석가가 실무에서 가장 경계해야 할 함정인 '오도된 인과관계'와 '교란 변수'를, 섣부른 확증 편향에 빠지지 않고 스스로 찾아내어 방어해 낸 것이다.


13개의 팀 중 Top 3: 화려함보다 빛난 '기본기'


모든 조의 프로젝트 발표가 끝난 후, 발표를 직접 들은 수강생들이 서로를 평가하여 최종 점수를 합산하는 동료 평가 시간이 이어졌다. 전체 13개의 조 중에서 분석을 가장 논리적으로 수행한 단 3개의 조만 선정하여 수상하는 잔인하면서도 흥미로운 방식이었다.


다른 조들의 발표는 화려했다. 우리가 배우지도 않은 데이터시각화 라이브러리를 끌고 와서 데이터 산점도를 전부 나타내거나, 데이터를 범주화해서 이리저리 색깔을 다르게한 화려한 3D 그래프를 뽐내는 조도 있었다.


우리 조의 발표 자료는 투박한 막대그래프와 상관관계 히트맵, 그리고 딱딱한 통계 수치들이 전부였다. 하지만 하나도 주눅들지 않았다. 우리 조 만큼 통계학적으로 데이터를 깊게 살펴본 조는 없었기 때문이다.


순위는 공개되지 않았지만, 결과발표 당시에 우리 조는 당당히 수상 명단에 이름을 올렸다.


동료들은 화려한 PPT나 여러가지 복잡한 시각화 기법보다는 데이터의 본질을 끝까지 의심하고, 설명력이 낮은 모델의 한계를 짚어 설명하고, 생리학적 도메인 지식을 활용해 치명적인 통계적 오류(성별 누락)를 정확히 짚어낸 우리의 '논리'와 JH님의 발표에 큰 인상을 받은 것이 아닐까 싶다.


기술이라는 도구를 잘 활용하는 것도 좋지만, 중요한 것은 데이터를 바라보는 통찰력과 도메인에 대한 이해도라는 것을 배운 프로젝트였다. 제약회사 실험실과 임상 현장을 누비며 쌓아온 '바이오 도메인 지식'과 파이썬이라는 '차가운 코딩 기술'이 만나는 경계선에서 빚어낸, 제법 성공적인 첫 합작품이었다.



References

- Khan, M. A., et al. (2024). The association between smoking and smokeless tobacco use with dental caries.
- Jiang, X., et al. (2019). Correlation between tobacco smoking and dental caries.
- Choi, M.-K., et al. (2019). Comparative Study on Nutrient Intakes, Blood Pressure and Serum Lipid Profile of Korean Adult Men According to Smoking Status.
- Alkhedaide, A. Q. (2019). Tobacco smoking causes secondary polycythemia.
- Kim, S. W. (2021). The relationship between smoking cigarettes and metabolic syndrome.
- Kim, S. K., et al. (2019). Effects of cigarette smoking on blood lipids in Korean men.
- Dare, S., et al. (2025). Relationship between Smoking and Obesity.
- Taylor, A. E., et al. (2019). The effect of body mass index on smoking behaviour and nicotine metabolism.
- Matsumoto, A., et al. (2024). Cigarette smoking and progression of kidney dysfunction.
- Farah, N. M., et al. (2023). Impact of Cigarette Smoking on Serum Cystatin C and Creatinine Levels and MAU.