★ 최종 프로젝트 - FDA 이상반응 데이터 활용한★

[QA/QC - 5기] 82일차 - 최종 프로젝트 +09 : 전처리 - FDA OTC + OrangeBook

qc-standard 2026. 7. 3. 21:40

2026/07/03 FRI.

O  ERP 정보관리사 생산 1급 시험 접수
O  데이터 전처리

※ 한 주 마무리

내가 조에 딱히 도움되지는 않는 거 같지만

어떤 사안에 대해 다같이 의견을 내고 조율을 하고

팀원 모두가 참여하는 현재 상황이 꽤 좋다

프로젝트 자체는,,, 어렵다,,, 맨날 길을 잃는다,,,,


 ERP 정보관리사_생산 1급

  • 공인민간자격증 / 자재 소요 계획(MRP), 싱산 공정 관리, 재고 관리 등 모듈 기능을 ERP 시스템에 대한 자격증
  • 혹시 모르잖아,,, 제약회사도 제조업이니까 생산 공정 관리, 재고 관리 필요할 수도 있으니;;;

 최종 프로젝트 - 데이터 전처리

0. 전날 진행한 전처리

       ① `suspect_drug`기준 한국 일반의약품(OTC) 데이터 분리

       ② 라니티딘 제거 : 현재 사용되지 않는 성분

       ③ 그룹화 (계열 대분류 기준)

             소화기·위산억제제·지사제 / 해열·진통제 / 알레르기약·항히스타민제

       ④ 마약성·통제성 의약품 제거

          24,892행(건) 남음

      → ⑤ FDA OTC 기준과 대조하여 필터링


1. FDA OTC 기준과 대조하여 필터링

      suspect_drug 컬럼 - 성분을 활용해 일반의약품(OTC)만 분리한 데이터를 

      FDA OTC 기준 = OTC Monographs 대조를 통한 필터링하면 된다고 생각했다      그러나 용량, 제형으로 OTC를 정밀하게 나눌 수 없으며      OTC Monographs만으로 OTC/전문 규격·제형 중복을 정밀하게 나눌 수 없다는 의견에 팀원 모두의 생각이 도달했다

OTC Monographs
https://www.accessdata.fda.gov/scripts/cder/omuf/index.cfm?event=monographsearch

2. FDA OTC 분류 기준 - OTC 모노그라프 + NAD/ANDA 전환 : OrangeBook    

    "OTC 모노그라프" 1972년 이전부터 사용된 성분 카테고리별 승인 기준

     "NAD/ANDA OrangeBook" 처방약에서 OTC로 전환된 성분 목록

     모노그라프 + 오렌지북 정보를 교차 검증하여 OTC 데이터 필터링

        → 성분을 이용한 필터링

    + 브랜드명으로 확인할 수 있는 OTC 구체화

NAD/ANDA OrangeBook
https://www.fda.gov/drugs/drug-approvals-and-databases/approved-drug-products-therapeutic-equivalence-evaluations-orange-book
https://www.fda.gov/drugs/development-approval-process-drugs/orange-book-preface

 

     팀원 각각 LLM을 통해 OTC 필터링하여 csv 파일을 LLM에 비교 검증을 맡겨 가장 좋은 csv 파일과 근거를 찾음

        - 처방약 리포트가 섞여있는 경우

        - PPI(esomeprazole 등), 라니티딘(철수약)이 섞여 있는 경우

 

   528,000 → 20,355 필터링


3. 일반의약품 ATC 그룹화

     (의료지식이 없는 일반) 소비자에게 의약품 성분명은 생소할 것이므로 WHO ATC 분류 그룹화 후 이해도를 높일 수 있도록 용어를 풀어서 서비스 제공하기 위한 그룹화

     WHO ATC 코드 분류 : 의약품 성분을 코드 별 특징을 쉽게 보여줄 수 있고 그룹화에 대한 신뢰도를 가질 수 있음

약학정보원 - ATC 코드
https://health.kr/searchDrug/ATCcode.renewal.asp
WHO ATC Index
https://atcddd.fhi.no/atc_ddd_index/

 

     20,355 데이터의 의약품을 ATC 5단계 코드 분류 후 1단계 코드로 줄여 그룹화

       : 1단계는 알파벳 대문자로 표기하며 직관적으로 이해할 수 있는 계열로 분류되어 있음

 


   
데이터 수가 많은 A>N>M>R 위주의 데이터 분석 예정


4. 추가 전처리    

  • 중복값 없음
  • 필요없는 컬럼 제거
    report_age_days : 보고서 접수 후 경과 일수
    year / month : 보고 연도, 월 대신 보고 분기를 사용할 예정
    report_id : FDA 고유 식별자 삭제하려했으나 중복값 문제로 하지 않음
  • 결측치 : 유지
    FAERS(FDA 의약품 부작용 보고)이기에 결측치에서 얻을 수 있는 정보와 통계량이 있을 거라 판단
  • 이상치 처리 = 오늘의 난관
부작용 데이터의 이상치(극단값)는 중증 사례, 과다 복용, 고령/취약 환자군으로 발생할 수 있어
데이터 오류라 단정지을 수 없음 
처리 불가능한 값
출생 체중 최저치(0.4kg)에도 미치지 못하는 몸무게 존재 → 삭제
num_drugs 이상치
환자가 복용한 총 약물 수라고 알고 있었지만 극단값(=이상치)이 몇 있다
middle : 8인데
max 2,108 / 그 외에도 637,656,1027,1066이라는 값이 있음
환자가 복용한 총 약물 수 컬럼인데 max가 2,108?? 도저히 이해할 수 없는 값이다
환자가 복용한 총 약물수 컬럼이 아닌가? 싶어 FDA 데이터를 확인했으나 num_drugs라는 컬럼 자체가 존재하지 않았다
→ 우리가 사용하는 데이터는 어느 정도 가공되어 kaggle에 기재된 데이터
→ 이상치 처리 예정

원본 데이터
https://open.fda.gov/apis/drug/event/
https://www.kaggle.com/datasets/kanchana1990/fda-drug-adverse-event-reports-2015-to-2026-faers/data


 


5. 중간 보고서

더보기

1. 프로젝트 개요

  • 프로젝트 이름: 의약품 이상 사례를 활용한 정보 격차 해소
  • 분석 목적:특히 환자 특성 (체성분 데이터를 활용)을 기반으로 일반의약품의 안전성 정보를 소비자 친화적으로 제공하여 의약품 정보 격차를 줄이고자 한다.
  • FDA 이상사례 보고 데이터를 활용하여 일반 소비자가 이해하기 어려운 의약품 이상 반응 중 일반의약품 이상반응 정보의 분류.요약을 통해 주요 이상사례 경향을 파악하는 것을 목적으로 한다.
  • 데이터 출처: https://www.kaggle.com/datasets/kanchana1990/fda-drug-adverse-event-reports-2015-to-2026-faers
  • 분석 대상 및 범위: FDA 이상사례 보고 데이터 중 일반의약품 데이터를 대상으로 분석
  • 예상 결과물:
    • 인사이트 요약: 일반의약품군별로 자주 보고되는 이상반응, 중증 이상사례 비율이 높은 약물군, 특정 연령대·성별에서 주의가 필요한 이상사례 특징 도출
    • 대시보드 구성: 일반 소비자가 이해하기 쉽도록 약물군별 주요 이상반응과 복용 시 주의사항을 정리한 의약품 안전정보 카드 및 대시보드 구성
    • 보고서 및 발표 자료: 분석 결과를 요약한 프레젠테이션 자료와 PDF 보고서

2. 데이터 개요

  • 데이터셋 설명
    • 데이터 수집 방법: kagle 서치
    • 데이터셋의 크기: 데이터 개수 : 528,000 컬럼 수 : 30
    • 주요 변수 및 설명:

3. 탐색적 데이터 분석(EDA)

  1. 기술 통계 분석
    • ATC 기준 코드 중 분석에 사용할 코드별 데이터 수A - 소화기계/대사 9,667
      N - 신경계 5,689
      M - 근골격계 2,211
      R - 호흡기계 1,996
    • 전처리 후 컬럼 수 : 27
    • 총 데이터 수 : 20,355
  2. 패턴 및 트렌드
    • 같이 복용하는 약물의 수가 많을 수록 심각한 부작용(사망,입원,생명위협,장애)의 빈도가 높음을 확인
    • 연도 또는 분기별 이상사례 보고 건수 변화를 분석하여 특정 시기에 보고가 증가하거나 감소하는 경향이 있는지 확인
    • WHO ATC 분류별로 이상사례 보고 건수를 비교하여 어떤 약물군에서 보고가 많이 발생하는지 확인
    • 약물군별 중증 이상사례 비율, 입원 비율, 사망 비율을 비교하여 단순 보고 건수와 위험도가 같은 방향으로 나타나는지도 확인
    • 각 계열마다 생체적특성 (나이,성별)에 따른 주요 부작용 증상이 다름
  3. 주요 인사이트 도출
    • WHO ATC 기준 분류 A: 소화관 및 대사, N: 신경계, M: 근골격계, R: 호흡기계 약물군의 보고 건수가 많게 나타남
    • 단순 보고 건수가 많은 약물군이 반드시 더 위험하다고 단정할 순 없으므로, 중증이상사례 비율과 함께 분석해야함
    • 전체 보고 건수 중 여성 보고 건수 대비 남성의 보고 건수가 많아서 남성의 부작용 발생 비율이 높게 보고될 수 있음: A약물에서 남성의 부작용 건수가 많다고 A약물은 남성이 더 위험으로 단정할 수 없음

4 현재 진행 상황

  • 진행한 작업
    • https://www.kaggle.com/datasets/kanchana1990/fda-drug-adverse-event-reports-2015-to-2026-faers 데이터 확인 및 이해
    • 비 의료인을 대상으로 한 정보 격차 감소 목적 설정
    • 데이터 전처리
      • FDA 기준 suspect drug 값에서 일반의약품으로 판매되는 데이터만 필터링1972년 이전부터 사용된 성분을 카테고리별로 승인한 정보 (OTC 모노그래프) + 처방약에서 OTC로 전환된 성분 목록이 포함된 정보 (오렌지북)을 사용
      • OTC 성분 필터링 구체화
      • → OTC 모노그래프 + 오렌지북 (NDA 경로) 를 통한 일반의약품 필터링
      • WHO ATC 코드를 이용하여, 어떤 계열의 약물인지 그룹화
      • (5단계 코드 매칭 후, 1단계 코드만 남기는 방식)
      • → 각 코드에 따라 분석하여 일반 소비자들의 이해가 수월하도록 (설명이 용이하도록)
      • 중복값 없음, report_age_days, year, month 컬럼 제거 (다른 컬럼 정보와 중복)
      • 결측치 유지 -
      • FAERS는 보고 시스템이라 결측 자체가 구조적 특성을 가지기 때문에, 결측치에서 얻을 수 있는 정보와 통계량이 있을 것이라 판단하여 유지
      • 이상치 처리 -추가적으로, 생물학적으로 불가능한 값 처리→ num_drugs 이상치 처리
      • → 출생체중 최저치(약 0.4kg)에도 미치치 못하는 몸무게 데이터 존재, 삭제
      • 부작용 데이터에서 극단값 (이상치) 은 중증 사례, 과다복용, 고령/취약 환자군으로 인해 발생하는 경우가 많고, 데이터 오류라고 판단할 수 없음
  • 해결된 문제
    • 일반의약품으로 판매되는 데이터를 필터링하기 위해, OTC 모노그래프 +
    • 오렌지북을 이용한 다중 정보 수집 및 크롤링
    • WHO ATC 코드를 활용하여 데이터 그룹화 및 설명 용이
    • 중복값 / 결측치 / 이상치 처리
  • 진행 중 문제
    • 데이터 이해 단계와 구체적인 목표 설정 단계의 반복적인 수정으로 인한 더딘 진행속도
    • : 데이터 전처리 완료 후 다음 단계에서 속도를 내야할 것 같음
    • 머신러닝 목적 명확화 필요
    • : 머신러닝 모델을 이용하여 어떤 정보를 얻을 수 있을까?

5. 다음 단계 기획

  • 추가로 분석할 내용
    • 성별,연령대별 이상사례 차이 분석
    • 시계열 분석을 통한 추세 확인
    • ATC 코드 별 분석
    • 각 시각화 자료에 따른 통계 분석
  • 예상 일정
    • 7/6 전처리 완료 및 시각화 / 통계 분석 진행
    • 7/10(금) 까지 시각화 / 통계 인사이트 1차 정리
    • 부작용 예측 베이스라인 모델 선정 회의