아래와 같은 프로그램을 만들어보려고 합니다.

진단키트의 민감도, 특이도, 질병발생률을 입력하면 음성예측도와 양성예측도를 알려주는 프로그램입니다. 언어는 파이썬을 이용하겠습니다.
몇가지 사전지식이 필요하다. 아래 용어들을 알아야 한다.
민감도(Sensitivity, SE) : 병에 걸린 사람이 양성이 나올 확률 (참양성)
특이도(Specificity, SP) : 병에 걸리지 않은 사람이 음성이 나올 확률 (참음성)
양성예측도(Positive Predictive Value, PPV) : 양성이 나왔을 때 병에 걸려있을 확률
음성예측도(Negative Predictive Value, NPV) : 음성이 나왔을 때 병에 걸리지 않았을 확률
유병률(Prevalence Rate) : 병의 발생 확률
수식으로 유도하겠지만 민감도,특이도,유병률을 이용하면 양성예측도와 음성예측도를 구할 수가 있습니다.
민감도와 특이도는 키트에서 제공한다. 아래는 식약처 보도자료이다.

우리가 궁금한 것은 양성예측도와 음성예측도이다. 둘다 조건부확률을 통해 구할 수 있다. 한번 구해보자. 먼저 양성예측도이다.
1. 양성예측도
양성예측도(PPV) : 양성(Positive, PSTV)이 나왔을 때 병에 걸려있을(Disease, D) 확률
우변을 아래와 같이 바꿀 수 있다.
전체확률법칙을 적용하면 분모를 아래와 같이 바꿀수 있습니다. ND는 병에 걸리지 않은 것입니다.
조건부확률의 정의를 이용하면 분자는 아래와 같이 바꿀 수 있습니다.
변형은 끝났습니다. 우변 각 항의 의미는 아래와 같습니다.
P(D) : 코로나 걸릴 확률 (Prevalence Rate)
P(PSTV|D) : 코로나에 걸렸을 때, 양성일 확률 (민감도)
P(PSTV|ND) : 코로나에 걸리지 안았을 때 양성일 확률 (1-특이도)
수식을 용어를 넣어 바꿔봅시다.
2. 음성예측도
음성예측도(NPV) : 음성(Negative, NGTV)이 나왔을 때 병에 걸려있지 않을(ND) 확률
우변을 아래와 같이 바꿀 수 있다.
전체확률법칙을 적용하면 분모를 아래와 같이 바꿀수 있습니다. ND는 병에 걸리지 않은 것입니다.
조건부확률의 정의를 이용하면 분자는 아래와 같이 바꿀 수 있습니다.
변형은 끝났습니다. 우변 각 항의 의미는 아래와 같습니다.
P(ND) : 코로나 안걸릴 확률 (1-PrevalenceRate)
P(NGTV|D) : 코로나에 걸렸을 때, 음성일 확률 (1-민감도)
P(NGTV|ND) : 코로나에 걸리지 안았을 때 음성일 확률 (특이도)
수식을 용어를 넣어 바꿔봅시다.
요약하면 아래와 같습니다. 우리가 구할 두가지 값입니다.
병에 걸릴 확률, 민감도, 특이도를 입력하면 PPV 와 NPV를 계산해주는 프로그램을 만들어볼 것입니다.
'파이썬 > tkinter GUI (코로나 양성예측도,음성예측도)' 카테고리의 다른 글
[파이썬 tkinter GUI 만들기] #6. 버튼 눌러서 값 입력받기 (0) | 2022.02.01 |
---|---|
[파이썬 tkinter GUI 만들기] #5. 입력 창 만들기 (0) | 2022.01.31 |
[파이썬 tkinter GUI 만들기] #4. 라벨 하나 추가해보기 (0) | 2022.01.31 |
[파이썬 tkinter GUI 만들기] #3. 화면 만들고 이름,사이즈 설정 (0) | 2022.01.31 |
[파이썬 tkinter GUI 만들기] #2. 레이아웃 짜기 (0) | 2022.01.31 |
댓글
만다린망고님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.