[논문이야기] 혈액 보유량은 어떻게 유지될까? ② 혈액 공급량 모델링

헌혈 방법에 따라 전혈, 혈장, 혈소판&다종성분으로 나뉘지만, '전혈'을 분석 대상으로 삼아
데이터 그룹 간 차이 간과하여 발생하는 '누락 변수 편향' 조심해야
조화 회귀를 이용한 연간 주기성 제거, 'DGP'에 맞는 계산법

[논문이야기] 혈액 보유량은 어떻게 유지될까? ① 관리가 까다로운 혈액 시장에서 이어집니다.

이전 글에서는 혈액 보유량 관리가 어려운 이유에 대해 살펴봤다. 그 이유는 혈액의 공급은 자발적인 참여로만 얻을 수 있고, 혈액의 수요는 건강보험 의료비를 기준으로 가격이 고정되어 수요량 조절이 어렵다. 이번 글에서는 혈액의 공급에 해당하는 헌혈 데이터에 어떤 행동 패턴이 있는지 알아보자.

전혈 헌혈에 초점, 채혈량을 통합한 헌혈자 수를 분석 대상으로

대한적십자사에서는 매년 혈액사업 통계연보를 발행하여, 헌혈자 그룹별(연령, 성별, 헌혈 방법 등) 헌혈자 수를 공개한다. 본 분석에서는 위 데이터를 활용하여 분석을 진행했다.

그럼 우리가 관심을 갖고 분석해야할 혈액은 어떤 종류일까? 헌혈 방법에 따라 전혈, 혈장, 혈소판&다종성분으로 나뉜다. 혈장은 전체 채혈량의 상당 부분(68%)이 의약품 제조 원료로 활용되며 긴 유통기한(1년)으로 인해 수입이 자유롭다. 따라서 혈장 부족 시 수입을 통해 문제를 해결할 수 있어 우리의 큰 관심사가 아니다.

다음으로 혈소판&다종성분 헌혈은 기준이 까다롭다. 임신 경험이 있는 여성은 아예 참여하지 못하며 다른 헌혈 방법에 비해 좋은 혈관 상태를 요구한다. 따라서 헌혈자의 성별 비율 편중(20:1)이 심하고 표본 편향으로 인해 분석 시 올바른 추정량을 구하기 어렵다. 또한 대부분의 수술에 사용되는 전혈과 달리 특정 질환 위주로 사용되어 혈소판&다종성분도 분석에서 제외했다. 이러한 이유로 본 연구에서는 ‘전혈’ 헌혈만을 분석 대상으로 삼았다.

그럼 전혈은 어떤 특성이 있을까? 필자가 받은 데이터는 320ml/400ml로 채혈량에 따라 데이터가 구분되어 있었다. 남/여 그룹을 나누듯이 채혈량에 따라 그룹을 나눠야 할까? 아니다. 채혈량에 따라 데이터를 나눌 시 데이터 구조와 맞지 않게 되는데, 채혈량은 우리가 선택할 수 있는 사항이 아니라 헌혈자의 연령과 체중에 의해 결정되기 때문이다. 실제로 헌혈하러 가면 문진표를 작성하고 간단한 검사를 진행한 뒤, 검사 결과와 헌혈자의 신체정보를 바탕으로 채혈량이 결정된다. 건장한 남성은 400ml, 여성은 320ml로 헌혈하는 게 일반적이다.

다시 말해 채혈량은 헌혈자가 선택할 수 있는 사항이 아니므로, 각 성별의 320ml와 400ml는 같은 분포에서 나왔고 이를 나누게 되면 하나의 분포를 임의로 나누게 되는 셈이다. 따라서 본 분석에서는 채혈량으로 구분된 데이터를 통합해 ‘헌혈자 수’로 정의하고 이에 초점을 둘 것이다.

채혈량 분포
채혈량에 따른 헌혈자 수 분포(왼쪽), 전체 현혈자 수 분포(오른쪽)

요일 효과 제거, 요일과 휴일에 따라 달라지는 헌혈자 수

분석 대상이 헌혈자 수로 명확해졌으니, 이제 분석에 들어가자. 헌혈자 수는 시계열 데이터로 계절성을 가질 가능성이 높다. 또한 헌혈의 집 운영시간은 센터별로 다르기 때문에, 요일과 휴일에 따라 헌혈자 수가 차이날 것으로 예상된다. 데이터 내의 그룹 간 차이를 간과하여 모델에 포함시키지 않으면, 추정량에 누락 변수 편향(OVB, Omitted Variable Bias)이 생겨 분석 결과를 신뢰하지 못한다. 따라서 그룹 간의 차이를 모델에 반영시켜주자.

요일효과
요일에 따른 헌혈자 수 분포(왼쪽), 평일과 휴일에 따른 헌혈자 수 분포(오른쪽)

요일과 휴일에 따라 헌혈자 수가 다를 것이라는 가설을 데이터로 확인해보자. 위 그래프를 보면 예상대로 평일에 헌혈자 수가 많고 휴일에 헌혈자 수가 적은 것을 알 수 있다. 이 정보를 모델에 포함시켜 OVB를 피하자.

다음으로 성별에 따른 그룹은 왜 안 나누는지 궁금할 것이다. 우리의 분석 목표는 헌혈자 수로 전체 인구 측면에서 혈액 시장을 보는 것이다. 만약 개인별 헌혈 횟수를 파악하는 것이 분석 목적이었다면, 성별은 중요한 변수로 작동했을 것이다. 그러나 우리가 보려는 데이터는 전체 인구 데이터이므로 성별을 나눌 필요가 없다. 또한 남/여 헌혈자 수 데이터는 평균과 분산을 정규화 하면 아주 유사한 패턴을 가진다. 이러한 이유로 성별 데이터를 통합해 분석했다.

성별 분포차이
요일과 성별에 따른 헌혈자 수 분포(왼쪽), 평일과 휴일에 따른 남/여 헌혈자 수 분포(오른쪽),

그럼 헌혈자 수는 어떤 분포를 따를까? 사회과학에서 흔히 볼 수 있는 정규분포 형태를 띌까? 데이터를 확인해보니, 전체 헌혈자 수 분포는 쌍봉분포(Bimodal distribution) 형태를 띈다. 이 말은 아직 분포에 설명하지 않은 요인이 남아있다는 것을 의미한다. 그럼 위에서 그룹 간 차이를 파악한 요일 효과를 없애보자. 요일 효과를 제거한 평일 데이터의 분포는 쌍봉 형태가 아니고, 종 모양(Bell shape)에 가깝게 바뀌다.

요일별 헌혈자 수 분포
전체 헌혈자 수 분포(왼쪽), 평일 헌혈자 수 분포(오른쪽)

요일 효과를 제거한 데이터의 분포는 종 모양을 갖지만, 왼쪽으로 뻗어있는 긴 꼬리(Left long tail)가 마음에 걸린다. 이는 다수의 헌혈의 집이 동시에 쉬어 생긴 현상으로, 요일 효과를 제거한 것처럼 ‘휴일이 아닌 날’의 데이터만 사용해 분포를 그리면 꼬리 형태는 사라진다.

요일과 휴일 헌혈자 수 분포
평일 헌혈자 수 분포(왼쪽), 휴일이 아닌 날 헌혈자 수 분포(오른쪽)

조화 회귀를 통한 연간 주기성 제거

지금까지 헌혈자 수에 영향을 주는 요인으로 요일과 휴일을 확인했다. 혈액 부족 시 변화를 정확히 파악하기 위해서는 이러한 요인들을 통제해야 한다. 회귀식에 요일과 휴일 변수를 넣고, 잔차 분석을 통해 더 이상 통제 해야할 요인이 없는 지 알아보자. 회귀식은 아래와 같다.

\[ (bd_{320ml} \cup bd_{400ml}) \sim d_{dow}, d_{holiday} \]

반응 변수로는 320ml/400ml를 통합한 전혈 헌혈자 수를 두었고, 설명 변수로는 요일과 휴일을 더미 형태로 회귀식에 집어넣었다.

연간주기 제거전 잔차분포
연간 주기성 제거 전 잔차 분포

요일과 휴일 효과를 제거한 잔차는 원본 데이터의 특이한 형태(쌍봉, 긴 꼬리)를 갖지 않는다. 그러나 평균의 우측 부분을 잘 보면, 이전 분석에서 확인하지 못한 특이한 형태를 발견할 수 있다. 이는 요일과 휴일 변수로는 설명하지 못한 구조가 데이터에 존재함을 의미한다. 어떤 존재일까?

헌혈자 수는 일간 데이터이고, 대부분의 일간 데이터는 주간 시계열성과 연간 시계열성을 갖는다. 우리 데이터에 적용해보면, 헌혈자 수는 평일과 휴일에 해당하는 주간 시계열성과 날씨에 따른 연간 시계열성을 가질 것이다. 앞서 요일을 나타내는 변수를 모델에 추가해 주간 주기성은 제거했으나, 아직 연간 주기성은 잔차에 남아있어 특이한 구조를 가졌다.

월별 헌혈자 수 분포
월별 헌혈자 수 분포

위 그래프를 보면, 월마다 헌혈자 수 분포가 다른 것을 볼 수 있다. 따라서 데이터에 연간 주기성이 존재함을 확인했고, 이를 모델에서 반영해주자.

어떻게 연간 주기성을 모델에 반영할 수 있을까? 가장 간단한 방법은 365개의 더미 변수를 넣는 것이다. 그러나 이 방법은 변수가 너무 많아 모델 복잡도를 기하급수적으로 높인다. 또한 하루마다 변화가 큰 데이터가 아니므로 다중공선성(multicollinearity) 문제도 의심된다. 그럼 365개의 더미 변수를 사용한 것과 비슷한 정보를 주려면 어떻게 해야 할까?

‘주기’라는 단어에 집중해보자. 주기 함수하면 떠오르는 것 중에 푸리에 급수가 있다. 푸리에 급수는 주기를 갖는 임의의 함수를 사인과 코사인의 무한급수로 나타낼 수 있다는 아이디어이다. 이 아이디어를 빌려 우리는 주기를 적당한 사인과 코사인으로 표현할 수 있다. 이걸 ‘조화 회귀’라고 부르며 DGP에 적합한 계산법이다.

조화회귀로 fitting
조화 회귀를 통해 연간 주기성을 잡아낸 모습

위 그래프를 보면 적당한 사인과 코사인으로 연간 주기성을 잡아낸 것을 볼 수 있다. 주기의 특성에 맞는 계산법을 사용함으로써 더미 변수를 사용할 때보다 훨씬 적은 수의 설명 변수 만으로도 비슷한 정보를 나타냈다.

연간주기 제거 후 잔차분포
연간 주기성 제거 후 잔차 분포

연간 주기성을 모델에 반영한 결과, 이전에 잔차가 갖는 특이한 패턴이 제거된 것을 볼 수 있다. 회귀식을 업데이트하면 아래와 같다.

\[ (bd_{320ml} \cup bd_{400ml}) \sim d_{dow}, d_{holiday}, sin_i, cos_i \]

내부 요인 뿐만 아니라 외부 요인도 잡아내야

지금까지는 데이터의 날짜를 활용하여 요일, 휴일, 계절성을 뽑아냈다. 그러나 날짜 외에 외부적 요인도 헌혈자 수에 영향을 미칠 것이다. 예를 들어 지역과 날씨가 대표적으로 헌혈자 수에 영향을 주는 변수일 것이다.

지역별 효과
장소별 헌혈자 수(왼쪽), 직업별 헌혈자 수(가운데), 연령별 헌혈자 수(오른쪽)

위 그래프를 보면, 헌혈자 수는 지역별 인구 구성(연령, 성별, 직업 등)에 영향을 받는다. 예를 들어 10대, 20대 헌혈자 수가 다른 연령대에 비해 많다. 따라서 이후 분석에서는 지역별로 데이터를 분리하여 지역별 특성 차이가 모델에 누락되는 것을 방지하고, 특정 효과가 모든 지역에서 일관적으로 작동하는지 확인할 계획이다.

장소별 헌혈자 수
장소별 헌혈자 수

또한 위 사진을 보면 헌혈자의 70%는 헌혈의 집에 방문하는 것을 알 수 있다. 그러므로 외출에 영향을 주는 기온과 강수량이 헌혈자 수에 영향을 미칠 것이라는 강한 의심이 든다.

강수량에 따른 헌혈자 수
강수량이 헌혈자 수에 미치는 영향

날씨는 지역별로 차이가 크므로, 지역을 나눠 분석을 진행했다. 따라서 개별 지역에 대해 기온과 강수량을 모델에 추가해 변수 유의성을 확인했다. 그 결과 모든 지역에서 강수량이 헌혈자 수에 부정적인 영향을 주는 것으로 나타났다. 하지만 기온은 헌혈자 수에 유의한 영향을 주지 못했다. 이는 앞서 연간 계절성을 모델에 반영하여 기온이 주는 정보를 이미 포함했기 때문이다. 외부 요인을 포함한 회귀식은 아래와 같다.

\[ (bd_{320ml} \cup bd_{400ml} | region) \sim d_{dow}, d_{holiday}, sin_i, cos_i, rain \]

이번 편에서는 요일, 휴일, 계절, 날씨에 의한 효과를 모두 통제한 상태에서 공급량(헌혈자 수)을 분석했다. 다음 편에서는 혈액 시장이 큰 충격에 어떻게 반응할지 보기 위해 코로나 시기의 혈액 보유량-사용량-공급량 관계를 파악할 예정이다.

[논문이야기] 혈액 보유량은 어떻게 유지될까? ③ 코로나 시기 혈액 보유량-사용량-공급량 관계로 이어집니다.

Similar Posts