복기1. 확진자 수 예상 복기(feat. SIQ Model)
나는 예상 글을 올린 이후로 ‘내가 감으로 만든 모델을 수학적으로 설명할 수는 없는 걸까?’ 이 문제로 고민이 아주 많았다. 정확한 유도과정 없이 감으로 때려맞추듯 만들어 추정했기 때문이다. 그래서 나는 이걸 정확히 확인해보고 싶었는데 우연히 수학적 감염병확산모델인 SIR이 있다는 사실을 알게 되었다(링크). 이 분의 추정을 보고, SIR 모델로 향후 감염자 수를 추정하는 방법을 이해하는데 많은 도움을 받을 수 있었다(정확히는 R를 뺀 SI모델, 더 정확히는 로지스틱모델).
내가 이해하기로 SI모델은 감염자 수(I)와 비감염자 수(S)의 곱에 비례해 신규감염자가 생기는 모델이다. 이 모델에서 신규감염자 수가 감소하는 구간은 감염자가 비감염자보다 많아지는 순간부터고, 전체 인구가 다 감염될 때까지 진행된다.
처음에 잘 몰랐을 때 이걸 보면서 ‘SI모델은 전체인구가 감염되는 모델인데 어떻게 이 모델로 총감염자 수를 추정하지?’라고 고민했고, 아마도 단순히 감염자 수가 같은 그래프 형태로 늘어난다고 가정하고 전체 감염자 수를 추정하는 방법인 것 같은데 간단히 계산할 수 있어 유용해 보였지만, 논리적으로 잘 이해가 되지는 않았다. (나중에 다시보니 그래서 logistic model을 사용했다고 하신 거였음)
암튼 무식해서 한참 고민하다가 나는 다른 아이디어를 하나 생각해냈는데 SI모델이 ‘감염자의 격리’를 고려하지 않았기 때문이고, 만약 어느 순간부터 감염자가 일정기간 후 격리되는 가정을 추가하면 신규감염은 격리되기 전까지의 감염자들을 통해서만 발생하므로 인구전체가 감염되지 않는 모델을 만들 수 있을 것으로 생각했다. 이렇게 격리를 고려한 모델을 엑셀로 대충 만들어봤는데(다운로드) 내 맘대로 SIQ(quarantined) model 이라고 이름을 붙여봤다.
전체 인구 10만 명 중 초기 감염자 수 10명, 질병발생 20일 이후부터 격리조치를 시작하고, 감염 5일 후 격리된다고 가정했다. 이 경우 감염자는 5일 간만 다른 이들을 감염시킬 수 있기 때문에, 전체가 감염되지는 않는다(위 모델에서는 약 6만명).
SIQ model 이 신종코로나 데이터와 잘 맞을까?
이 SIQ 모델은 우연인지 몰라도 SI 모델보다 신종코로나바이러스의 데이터를 잘 설명하는 것으로 보였는데 이유는 크게 두 가지였다.
1. 엄지효과(Thumb Effect): 엑셀 밖에 할 줄 몰라 이걸로 SIQ 모델을 만들어 이런저런 테스트를 해봤는데 신규감염자 수 그래프를 그려보다가 재미난 걸 발견했다.
20일째부터 격리를 시작하는 모델을 만들었더니, 격리 다음날 신규감염자 수가 감소했다가 다시 증가하는 현상이 나타났다. 손바닥의 엄지처럼 생겨서 나의 네이밍 능력을 최대치로 발휘해 Thumb Effect라고 이름 붙여봤다. (잘 보면 검지도 보임) 재밌는건 우연인지는 몰라도 이번 신종코로나 신규확진자 수 그래프에서도 이 형태가 관찰된다는 점이다.
위 그래프를 보자. 정확히 1월 28일에 엄지손가락이 나타나는데, 중국이 우한을 폐쇄한지 정확히 5일만이다. 격리 다음날 엄지효과가 발생했으나 잠복기가 지난 5일 후에 확진자 증가로 확인된 것으로 이해하면 SIQ 모델과 잘 들어맞는다.
2. 총감염자수(I)와 감염자증가율((dI/dt)/I))의 분포: SI모델로 확진자 수를 추정하신 분의 자료를 보니, 이 추이가 SI모델에서 선형으로 나타나고 있었다. 그렇다면 SIQ는 어떤 모양이 나올까? 엑셀로 그려보니 재밌게도 선형이 아니라 ㄴ자 모양의 직선에 가까운 곡선으로 나타났다(이 곡선은 좀 특이한데, 로지스틱 곡선의 일부처럼 보이기도 한다).
그렇다면 신종코로나의 데이터는 어떤 분포를 보일까?
위 그래프를 보면 신종코로나의 분포(1/27~2/11)가 제법 SIQ 모델과 비슷한 형태로 나타나는 것처럼 보인다. 격리전 데이터는 매우 높게 찍히다가, 격리 후 뚝 떨어지는 ㄴ자 모양이다. 나는 위의 두 가지 특징을 근거로 신종코로나의 확진자 수는 SI 보다는 SIQ 모델에 더 가깝지 않을까 생각했다.
내가 참고한 분은 1월 30일 이후 데이터로 선형회귀해서 감염률과 확진자 수를 추정하신 것 같은데, SIQ 모델에서는 선형이 아닌 ㄴ자 형태 곡선으로 나타나며 초기보다 나중변화율이 더 커지기 때문에, 초기데이터를 가지고 선형회귀로 추정할 때는 좀 더 보수적으로 확진자 수를 추측해야 조금 더 정확하지 않을까하는 생각을 해봤다. 하지만 초기 뚝떨어지는 부분을 배제하고 이후 데이터로 추정하면 대체로 직선에 가까워 SIQ와 거의 차이가 나지 않는 근사값을 얻게 되므로 오히려 심플하고 충분해 보인다.
내가 감으로 만들었던 모델도 수학적으로 설명이 될까?
그렇다면 내가 이런 배경지식 없이 감으로 만든 모델은 SI나 SIQ로 추정하는 것과 같거나 비슷한 방식이었을까? 결론부터 말하자면 두 모델과 같지는 않았지만 그렇다고 아주 잘못된 방식도 아니었으며, 모양이 SIQ에 약간 더 가까웠던 것 같다.
내가 만든 모델은 ‘확진자수증가/5일전총확진자’가 같은 비율로 매일 감소하는 모델이었다. 이 때 내가 만든 모델을 위의 분포로 나타내면 다음과 같다.
내가 감으로 만들었던 모델을 수학적으로 표현해보면 저 파란색 데이터가 로그그래프와 유사한(같은?) 곡선 형태를 보일 것으로 가정하고, 최근 데이터에 좀 더 가중치를 둬서 보수적으로 추정해 향후 확진자 수를 대략 찍어 맞춰보는 방식이었다. 내가 초기데이터를 이용해 곡선 형태로 추정했는데, SI모델은 직선으로 나타나고, SIQ 모델은 뚝 떨어진 ㄴ자 형태의 곡선으로 나타난다는 점을 고려하면 내가 감으로 만들기는 했지만 나름 SI보다는 SIQ에 가깝게 추정했던 것이고, SIQ가 초기에 ㄴ자 형태로 뚝 떨어지다가 완만해진다는 현상을 몰랐기 때문에, 2월 2일까지 나온 초기데이터로는 최종확진자를 작게 추정할 수 밖에 없었던 것으로 이해된다.
그래도 만약에 1월 30일 당시에 내가 SI 모델을 미리 알았는데 잘못 사용해 초기 데이터를 가지고 선형회귀를 이용해 추정했다면, 더 오차가 심한 값이 나왔을 것이므로, 내가 계산한 방식이 SI 모델보다는 그래도 조금이라도 더 나았지 않았을까 생각해봤다. 나름 수학적으로 설명가능한 방법이었고… 이 정도면 나름 잘한듯? ㅎㅎ
또 여담이지만 평균잠복일 5일을 가정해 5일전 확진자수를 분모로 사용한 것은 그래도 적절한 방식이었는지.. 이건 좀 더 생각해 봐야겠다. (수정. 이건 5일 전이 아니라 하루 전 걸로 했었어야 했다. 어이없는 실수ㅎㅎ)
아무튼 많은 데이터가 추가되고 모델도 수정한 현재 최종 확진자 수 예상은 다른 분 추정과 비슷한 약 5~6만 명 정도이고, 이제부터 신규확진자는 빠른 감소추세로 갈 것 같다. 다행히 2월 말 쯤 거의 마무리된다는 건 처음 예상과 달라지지 않았다. 물론 특정지역에서 제대로 방역이 이루어지지 않는 등의 이유로 이변이 생길 수도 있지만…
복기2. 우한이 예상보다 상황이 안좋았음
기존 예상은 하루 지난 발표일 기준으로 2월 3일(늦어도 5일) 쯤 확진자 수 증가가 정점을 찍고 하락하는 것이었는데, 지금까지 나온 수치로만 보면, 후베이 성 외 지역은 2월 4일, 후베이성은 2월 5일에 정점이었다. 예상과 약간 차이가 있었던 또다른 이유로 우한 상황이 통계로 보이는 것보다 더 안좋았던 영향도 있었던 것 같다. 하지만 대략적인 피크 시기는 잘 맞은 편이었다.
아마도 국내 임상의료진들의 의견처럼 우한지역에서 환자 수가 폭발적으로 증가하다보니 의료인프라가 부족해 간단한 발열증상은 자가격리로 처리하고, 폐렴증상을 보이는 환자들 위주로 검사를 하면서 확진자가 폭넓게 검사할 수 있는 다른 지역에 비해 적게 잡히는 부분이 있었던 것 같다. 이렇게 생각하면 왜 우한지역이 특히 치사율이 높은지도 설명이 된다. 아마도 2월 5일 확진자가 통계적 패턴을 넘어서며 급증한 것은 좀 더 증상이 약한 사람들까지 검사를 확대하면서 많은 확진자를 더 발견한 것은 아닐까 추측된다. 결국 증상이 경미한 감염자를 포함하면 더 많은 감염자가 있었던 것은 어느 정도는 사실이다. 물론 이건 통계 조작이라고 할 것은 아니고, 사례 정의가 달랐던 부분이라고 표현하는 것이 더 맞다.
그 차이가 큰 것은 아닌 것 같음
지난번 글에서도 지적했듯이 통계와 현실의 차이가 엄청나게 컸다면(예컨대 10배 가까이), 우한 지역에서 타 지역으로 이동한 인구 수를 감안할 때 타 지역(국가)에서도 지금보다 훨씬 많은 수의 확진자가 나왔어야 한다. 우리나라만 보면 우한에서 입국한 사람은 약 3700~3800명 수준이인데 그 중 확진자가 내가 예상한 것보다 좀 더 많은 9~10명 정도 나왔다. 이는 0.2~0.3% 정도의 비중으로 우한 인구 1100만 명이라면 2~3만명 정도였다는 뜻이 된다. 확진자 수는 나는 여러가지 정황으로 볼 때 1.5배 이하(최대 2배)의 차이가 나지 않았을까 생각이 든다.
복기3. 국내 환자 수: 중국 외에서 1차 감염자가 나온 건 의외의 결과
1월 30일 예상 당시 국내 격리되지 않은 환자 수가 최대 10명 이내일 것으로 추측했다. 복기해보면 이후 발견된 19명의 확진자 중 12명이 30일 기준 감염자 수였다. 예상보다 많았던 이유는 첫째, 아마도 우한에서 실제 감염자 비율이 통계보다 다소 높았지 않나 싶고, 둘째, 아주 특이하게도 우한 외 지역에서 1차감염자가 의외로 많이 발생한 것 때문이다. 일본, 태국, 싱가폴에서 4명이 발생했는데 1월 30일 당시 중국 외 확진자 수가 82명, 현재까지도 300여 명에 불과한 것에 비하면 꽤 놀랄만큼 많은 수가 발생한 것이라고 할 수 있다.
여담: 중국 통계 조작설은 잘못
얼마전 중국이 확진자, 사망자 수를 조작한다고 서울대생이 썼다는 글이 화제가 됐다. 이 글은 나는 통계적으로 잘못된 판단이라고 생각하는데, 이와 관련해서 아주 잘 정리하신 분이 계셔서 링크로 대체한다.
어떤 곡선의 일부만 놓고 볼 때, 이차함수 곡선과 비슷한 곡선은 너무나 많다. 감염병 뿐 아니라 이런 그럴싸한 분석은 항상 조심해야 한다는 생각이 든다.
결론: 그런대로 잘 맞았다(자화자찬)
미묘한 차이가 있는 모델이긴 했고 약간의 이변은 있었지만 큰 이변은 아니었고, 비교적 빠른 시기에 최선의 예측을 하지 않았나 싶다. 감으로 만든 모델치고 나름 괜찮은 모델이었고 확진자증가 피크 시기나 마무리되는 시기도 대략 맞아가고 있다. 돌이켜보면 이것들은 좀 이른 시기에도 큰 오차없이 추정이 가능했으나, 최종확진자 수 예상은 2월 3일 이후에 나오는 데이터로 했었어야 더 정확히 할 수 있었던 것 같다(당시에도 최종확진자 수 전망은 많이 틀릴 수 있을 것이라고 예상은 했으니 결과적으로 나쁘지 않았다).
이제는 많은 곳에서 전망들을 발표하고 있고 정점도 지났기 때문에 여기까지만 공부하고 마무리해도 좋을 것 같다. 이번에도 배운게 많았다. ㅎㅎ 이걸 감염병 말고 어디에 활용할만한 곳은 없을지나 좀 생각해봐야겠다.
코로나로 생각지도 못했던 고생 살짝 했는데, 이 글 보고나니 맘이 괜히 더 편해집니다. 얼른 사태가 싹 진정되기를!!
다시 생각해보니 최초 모델에서 5일 전 확진자수를 분모로 계산하는 건 문제가 있는 방법이었다. 오늘 신규확진자수가 5일전 신규감염자수라면 오늘 총확진자수도 어차피 5일전총감염자수인데.. ㅎㅎ 내가 뭔가 머리가 순간 나빴나보다… ㅎㅎ 향후 확진자수 추정할 때도 5일전 총확진자수를 분모로 하는 것보다 하루전을 분모로 하는 것이 더 일관성있는 값이 나온다.(사실 잠복기가 5일이라고 해도, 논리적으로는 분모를 6일전으로 했어야지…)