Skip to content

pipetcpt/hands-on

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

NONMEM Tutorial - 강의용 답안지

이 문서는 NONMEM 입문자를 위한 실습 답안지입니다. 각 문제에 대해 왜 그런지를 이해하는 것이 중요합니다.


I. Dataset의 작성 및 확인

목표: NONMEM에서 사용하는 데이터셋의 구조를 이해하고 직접 만들어봅니다.


I.1. '농도데이터' sheet는 총 몇 명의 대상자로부터 얻어진 데이터인가?

답: 40명

Solution 파일을 확인하면 ID가 1부터 40까지 있습니다.

Tip: 엑셀에서 ID 열을 선택하고 중복 제거 기능을 사용하면 쉽게 확인할 수 있어요!


I.2. '농도데이터' sheet의 각 대상자에서는 몇 번의 관측이 이루어졌는가?

답: 14회

각 대상자마다 아래 시점에서 혈액을 채취했습니다:

순서 1 2 3 4 5 6 7 8 9 10 11 12 13 14
TIME (hr) 0 0.25 0.5 0.75 1 1.5 2 3 4 6 8 12 18 24

해석: 투여 직후(0시간)부터 24시간까지 총 14번 채혈했습니다.


I.3. 이 데이터를 NONMEM dataset으로 변환하고자 한다. 어떤 data item이 요구되겠는가?

답: NONMEM이 이해할 수 있도록 다음 항목들이 필요합니다:

Data Item 설명 예시
ID 대상자 번호 (누구인지 구분) 1, 2, 3, ...
TIME 투여 후 경과 시간 0, 0.25, 0.5, ...
AMT 투여량 (얼마나 줬는지) 100000 (ug)
DV 관측된 농도 (Dependent Variable) 891.2, 1179.9, ...
MDV 농도값 유무 (0=있음, 1=없음) 0 또는 1

쉽게 말하면:

  • ID = "몇 번 환자?"
  • TIME = "언제 채혈했어?"
  • AMT = "약 얼마나 줬어?"
  • DV = "농도가 얼마야?"
  • MDV = "농도 측정했어? (0=응, 1=아니)"

I.4. I.3에서 결정한 item을 이용하여 실제 NONMEM dataset을 구현하여 'CONC.csv'로 저장하시오.

답: CONC.csv 구조 (처음 몇 행만 표시):

ID TIME AMT DV MDV
1 0 100000 0 0
1 0.25 100000 891.2 0
1 0.5 100000 1179.9 0
1 0.75 100000 1433.5 0
... ... ... ... ...

주의: 이 형태는 $PRED 블록 사용 시 적합합니다. 모든 행에 AMT가 반복되는 것이 특징입니다.


I.5. PREDPP를 이용하여 모델링을 하기에 적절한 형태로 용량 정보를 데이터셋에 반영하여 'PREDPP.csv'로 저장하시오.

답: PREDPP.csv 구조:

ID TIME AMT DV MDV CMT
1 0 100000 . 1 1
1 0 . 0 0 2
1 0.25 . 891.2 0 2
1 0.5 . 1179.9 0 2
... ... ... ... ... ...

핵심 차이점 (CONC.csv vs PREDPP.csv):

구분 CONC.csv ($PRED용) PREDPP.csv (PREDPP용)
투여/관측 한 행에 섞여있음 분리됨
AMT 모든 행에 있음 투여 행에만 있음
MDV 모두 0 투여 행은 1, 관측 행은 0
CMT 없음 있음 (구획 번호)

쉽게 말하면: PREDPP는 "약 주는 것"과 "피 뽑는 것"을 다른 줄에 씁니다!


I.6. $PRED를 이용하여 모델링을 하기 위한 데이터셋으로 구현하여 'PRED.csv'로 저장하시오.

답: PRED.csv 구조:

ID TIME AMT DV MDV SEX AGE WT HT
1 0 100000 0 0 1 50 73.7 184.5
1 0.25 100000 891.2 0 1 50 73.7 184.5
1 0.5 100000 1179.9 0 1 50 73.7 184.5
... ... ... ... ... ... ... ... ...

특징:

  • $PRED 사용 시에는 모든 행에 AMT 포함
  • 투여/관측이 분리되지 않음
  • CMT 불필요 (control file에서 직접 처리)

I.7. GI tract을 나타내는 구획을 1로, 중심구획을 2로 지정하려 한다. 투여 경로를 구분하기 위해 어떤 data item이 필요한가?

답: CMT (Compartment Number)

투여 경로 CMT 값 의미
경구 투여 (PO) 1 위장관(GI tract)으로 들어감
정맥 투여 (IV) 2 혈액(Central)으로 바로 들어감

비유:

  • 경구투여 = 현관(CMT=1)으로 들어와서 거실(CMT=2)로 이동
  • 정맥투여 = 거실(CMT=2)로 바로 입장!
[경구투여]     [정맥투여]
   💊              💉
   ↓               ↓
┌──────┐      ┌──────┐
│CMT=1 │      │CMT=2 │
│ 위장 │ ──→  │ 혈액 │ ──→ 제거
└──────┘      └──────┘

I.8. 경구 투여(PO.csv)와 정맥 투여(IV.csv) 데이터셋을 작성하시오.

답:

PO.csv (경구 투여) - 약을 먹는 경우:

ID TIME AMT DV MDV SEX AGE WT HT CMT
1 0 100000 . 1 1 50 73.7 184.5 1
1 0 . 0 0 1 50 73.7 184.5 2
1 0.25 . 891.2 0 1 50 73.7 184.5 2
... ... ... ... ... ... ... ... ... ...

투여 행의 CMT=1 (위장관으로 투여)

IV.csv (정맥 투여) - 주사 맞는 경우:

ID TIME AMT DV MDV SEX AGE WT HT CMT
1 0 100000 . 1 1 50 73.7 184.5 2
1 0.25 . 2587.9 0 1 50 73.7 184.5 2
... ... ... ... ... ... ... ... ... ...

투여 행의 CMT=2 (혈액으로 바로 투여)


I.9. 30분간 지속 정맥 주사를 반영하려면 어떤 data item을 사용해야 하는가?

답: RATE

항목 계산
투여량 (AMT) - 100,000 ug
주입 시간 - 0.5 hr (30분)
RATE AMT ÷ 시간 200,000 ug/hr

쉽게 말하면:

  • IV bolus = 한 번에 "팍!" 주입 (RATE 없음)
  • IV infusion = 천천히 "쭈욱~" 주입 (RATE 필요)

RATE = "1시간에 얼마나 들어가?" 라는 뜻입니다.


I.10. 'IV.csv'에 RATE를 추가하여 'INF.csv'로 저장하시오.

답: INF.csv 구조:

ID TIME AMT RATE DV MDV SEX AGE WT HT CMT
1 0 100000 200000 . 1 1 50 73.7 184.5 2
1 0.25 . 2587.9 0 1 50 73.7 184.5 2
1 0.5 . 2310.5 0 1 50 73.7 184.5 2
... ... ... ... ... ... ... ... ... ... ...

주의: RATE는 투여 행에만 입력합니다. 관측 행은 비워둡니다.


I.11. 8시간 간격으로 5회 추가 투여(총 6회)를 반영하려면 어떤 data item을 사용해야 하는가?

답: ADDL (Additional Doses)과 II (Interdose Interval)

Data Item 의미
ADDL 5 추가로 5번 더 줌 (첫 투여 제외)
II 8 8시간마다 반복

투여 스케줄:

투여 횟수 시간 (hr)
1회차 (데이터에 기록) 0
2회차 (ADDL로 처리) 8
3회차 (ADDL로 처리) 16
4회차 (ADDL로 처리) 24
5회차 (ADDL로 처리) 32
6회차 (ADDL로 처리) 40

쉽게 말하면: "처음 1번 주고, 8시간마다 5번 더 줘!" 를 ADDL=5, II=8로 표현합니다.


I.12. 'INF.csv'에 ADDL, II를 추가하여 'ADD.csv'로 저장하시오.

답: ADD.csv 구조:

ID TIME AMT RATE ADDL II DV MDV SEX AGE WT HT CMT
1 0 100000 200000 5 8 . 1 1 50 73.7 184.5 2
1 0.25 . 2587.9 0 1 50 73.7 184.5 2
... ... ... ... ... ... ... ... ... ... ... ... ...

주의: ADDL, II도 투여 행에만 입력합니다.


I.13. '인구학적 정보' sheet를 'ADD.csv'에 반영하시오.

답: 이미 ADD.csv에 아래 정보가 포함되어 있습니다:

Column 설명 범위
SEX 성별 0=여성, 1=남성
AGE 나이 (세) 14 ~ 55
WT 체중 (kg) 43.5 ~ 91.0
HT 키 (cm) 146.1 ~ 210.4

공변량(Covariate)이란? 약물 반응에 영향을 줄 수 있는 환자 특성입니다. 예: 체중이 큰 사람은 분포용적(V)이 클 수 있어요!


I.14. 'CONC.csv'를 이용하여 시간-농도 그래프를 그리고 모델링 전략을 제안하시오.

답:

그래프 특징:

농도(DV)
   │    ★ Cmax (최고농도)
   │   /\
   │  /  \
   │ /    \____
   │/          \_____
   └──────────────────→ 시간(TIME)
   0    Tmax

   [흡수상]  [제거상]
구간 시간 특징
흡수상 0 ~ 2시간 농도 상승 (약이 흡수되는 중)
Tmax 약 1~2시간 최고 농도 도달
제거상 2시간 이후 농도 감소 (약이 제거되는 중)

모델링 전략 제안:

항목 선택 이유
구획 모델 1-구획 단순한 지수적 감소 패턴
투여 경로 경구 (PO) 흡수상이 존재함
추정 파라미터 KA, CL, V 흡수속도, 청소율, 분포용적
오차 모델 Combined 낮은 농도와 높은 농도 모두 고려
BSV CL, V 개체간 변이

II. 특수 ADVAN을 이용한 control file의 이해

목표: NONMEM의 built-in 모델(ADVAN1~4)을 이해합니다.


II.1. H0_IV_1comp.CTL과 H0_IV_2comp.CTL의 투여 경로와 구획 모델

답:

항목 H0_IV_1comp.CTL H0_IV_2comp.CTL
투여 경로 정맥 (IV) 정맥 (IV)
구획 모델 1-구획 2-구획
사용 ADVAN ADVAN1 ADVAN3

1-구획 vs 2-구획:

[1-구획]              [2-구획]
                      ┌──────┐
   💉                 │말초구획│
   ↓                  └───┬──┘
┌──────┐                 ↕
│중심구획│ → 제거      ┌──────┐
└──────┘              │중심구획│ → 제거
                      └──────┘
                         💉

II.2. II.1의 특성은 어디서 확인하는가?

답: $SUBROUTINE 블록

$SUBROUTINE ADVAN1 TRANS2   ; IV 1-구획
$SUBROUTINE ADVAN3 TRANS4   ; IV 2-구획

ADVAN 번호의 의미:

ADVAN 투여경로 구획 수 설명
ADVAN1 IV 1 가장 단순한 모델
ADVAN2 PO 1 흡수 구획 추가
ADVAN3 IV 2 말초 구획 추가
ADVAN4 PO 2 흡수 + 말초 구획

TRANS의 의미:

TRANS 파라미터화 사용 파라미터
TRANS2 CL, V 청소율, 분포용적
TRANS4 CL, V1, Q, V2 2-구획용

쉽게 외우기:

  • 홀수 ADVAN (1, 3) = IV
  • 짝수 ADVAN (2, 4) = PO

II.3. H0_IV_1comp.CTL과 H0_PO_1comp.CTL의 투여 경로와 구획 모델

답:

항목 H0_IV_1comp.CTL H0_PO_1comp.CTL
투여 경로 정맥 (IV) 경구 (PO)
구획 모델 1-구획 1-구획 + 흡수구획
사용 ADVAN ADVAN1 ADVAN2

II.4. II.3의 특성은 어디서 확인하는가?

답: $SUBROUTINE 블록

$SUBROUTINE ADVAN1 TRANS2   ; IV - KA 없음
$SUBROUTINE ADVAN2 TRANS2   ; PO - KA 있음

핵심 차이점:

비교 ADVAN1 (IV) ADVAN2 (PO)
흡수 구획 없음 있음 (Depot)
KA 파라미터 없음 있음
구획 구조 Central만 Depot → Central

PO 모델의 추가 코드:

TVKA = THETA(3)           ; 흡수 속도 상수
KA = TVKA * EXP(ETA(3))   ; 개체별 KA

II.5. 데이터셋에 적합한 모델 선택

답:

데이터셋 적합한 CTL 선택 이유
H0data_IV.csv H0_IV_1comp.CTL TIME=0에서 농도 최고 → 흡수상 없음 (IV 특성)
H0data_PO.csv H0_PO_1comp.CTL TIME=0에서 농도 0, 이후 상승 → 흡수상 존재 (PO 특성)

데이터로 투여경로 구분하는 법:

특징 IV PO
TIME=0 농도 최고 0 또는 낮음
흡수상 없음 있음
그래프 \ 형태 /\ 형태

II.6. 'H0data_PO.csv'를 적합한 control file로 실행하시오.

실행 명령어:

nmfe75 HO_PO_1comp.CTL HO_PO_1comp.res

확인할 결과:

  • ✅ MINIMIZATION SUCCESSFUL
  • ✅ Parameter estimates (THETA, OMEGA, SIGMA)
  • ✅ Objective Function Value (OFV)

III. 일반 ADVAN을 이용한 control file의 이해

목표: 유연한 모델 구현을 위한 ADVAN5, ADVAN6을 이해합니다.


III.1. General Linear Model용 ADVAN은?

답: ADVAN5

구분 Specific ADVAN (1~4) General ADVAN (5, 6)
구조 정해진 구조만 가능 자유롭게 정의 가능
용도 표준 PK 모델 복잡한 모델

ADVAN5 특징:

  • Rate constants (K12, K20 등)를 직접 정의
  • 선형 모델에 적합 (미분 방정식 직접 안 씀)

III.2. ADVAN5 사용 시 필요한 블록들

답:

$SUBROUTINE ADVAN5

$MODEL                         ; ① 구획 정의
 COMP(DEPOT, DEFDOSE)          ;    흡수 구획 (1번)
 COMP(CENT, DEFOBS)            ;    중심 구획 (2번)

$PK                            ; ② Rate constant 정의
 K12 = KA                      ;    1→2 이동 속도
 K20 = CL/V                    ;    2→밖 제거 속도
 S2 = V                        ;    Scaling factor

Rate Constant 명명 규칙:

  • K12 = 1번 구획 → 2번 구획
  • K20 = 2번 구획 → 밖(0번 = 제거)

III.3. GLM.ctl (ADVAN5 버전) 작성

답:

$PROB HO_PO_1comp using ADVAN5 (General Linear Model)
$DATA ../HOdata_PO.csv IGNORE=@
$INPUT ID TIME AMT DV MDV SEX AGE WT HT

$SUBROUTINE ADVAN5

$MODEL
 COMP(DEPOT, DEFDOSE)    ; 구획1: 흡수 구획 (약 투여되는 곳)
 COMP(CENT, DEFOBS)      ; 구획2: 중심 구획 (농도 측정하는 곳)

$PK
;---- 고정 효과 (전체 평균) ----
 TVCL = THETA(1)         ; 평균 청소율
 TVV  = THETA(2)         ; 평균 분포용적
 TVKA = THETA(3)         ; 평균 흡수속도상수

;---- 개체간 변이 적용 ----
 CL = TVCL * EXP(ETA(1)) ; 개인별 청소율
 V  = TVV  * EXP(ETA(2)) ; 개인별 분포용적
 KA = TVKA * EXP(ETA(3)) ; 개인별 흡수속도

;---- ADVAN5용 설정 ----
 S2  = V                 ; 구획2의 scaling factor
 K12 = KA                ; Depot → Central 속도
 K20 = CL/V              ; Central → 제거 속도

$ERROR
 IPRED = F
 W     = SQRT(THETA(4)**2 + THETA(5)**2 * IPRED**2)
 IRES  = DV - IPRED
 IWRES = IRES / W
 Y     = IPRED + W * EPS(1)

$THETA
 (0, 10, 30)    ; CL
 (0, 30, 100)   ; V
 (0, 1.5, 5)    ; KA
 0.001 FIX      ; Additive error
 (0, 0.3, 1)    ; Proportional error

$OMEGA
 0.04           ; BSV on CL
 0.04           ; BSV on V
 0 FIX          ; BSV on KA (고정)

$SIGMA
 1 FIX

$ESTIMATION NOABORT MAXEVAL=9999 METHOD=1 INTER PRINT=10

$TABLE ID TIME DV IPRED CWRES ONEHEADER NOPRINT FILE=sdtab5

III.4. GLM.ctl 실행 결과는 ADVAN2와 동일한가?

답: 예, 동일합니다!

비교 항목 ADVAN2 ADVAN5
수학적 모델 동일 동일
OFV 같음 같음
Parameter 같음 같음

왜 같을까? 둘 다 같은 1-구획 경구투여 모델을 표현하는 다른 방법일 뿐입니다. ADVAN2는 "미리 만들어진 템플릿", ADVAN5는 "직접 조립"한 것!


III.5. General Non-Linear Model용 ADVAN은?

답: ADVAN6

ADVAN 유형 방정식 계산 방법
ADVAN5 선형 Rate constant 해석적 (정확)
ADVAN6 비선형 미분 방정식 수치적 (근사)

ADVAN6이 필요한 경우:

  • Michaelis-Menten kinetics (포화 동력학)
  • Target-mediated drug disposition (TMDD)
  • 복잡한 비선형 모델

III.6. ADVAN6 사용 시 필요한 블록들

답:

$SUBROUTINE ADVAN6 TOL=4     ; TOL = 계산 정밀도

$MODEL                        ; ① 구획 정의
 COMP(DEPOT, DEFDOSE)
 COMP(CENT, DEFOBS)

$PK                           ; ② 파라미터 정의
 S2  = V
 K20 = CL/V

$DES                          ; ③ 미분 방정식 (핵심!)
 DADT(1) = -KA*A(1)           ;    dA1/dt (흡수구획 변화)
 DADT(2) = KA*A(1) - K20*A(2) ;    dA2/dt (중심구획 변화)

$DES 블록 이해하기:

  • A(1) = 1번 구획의 약물량
  • DADT(1) = 1번 구획 약물량의 시간에 따른 변화율
  • -KA*A(1) = 흡수되어 나가는 양 (음수 = 감소)
  • KA*A(1) - K20*A(2) = 들어오는 양 - 나가는 양

III.7. GNLM.ctl (ADVAN6 버전) 작성

답:

$PROB HO_PO_1comp using ADVAN6 (General Non-Linear Model)
$DATA ../HOdata_PO.csv IGNORE=@
$INPUT ID TIME AMT DV MDV SEX AGE WT HT

$SUBROUTINE ADVAN6 TOL=4     ; TOL=4는 10^-4 정밀도

$MODEL
 COMP(DEPOT, DEFDOSE)
 COMP(CENT, DEFOBS)

$PK
;---- 고정 효과 ----
 TVCL = THETA(1)
 TVV  = THETA(2)
 TVKA = THETA(3)

;---- 개체간 변이 ----
 CL = TVCL * EXP(ETA(1))
 V  = TVV  * EXP(ETA(2))
 KA = TVKA * EXP(ETA(3))

;---- ADVAN6용 설정 ----
 S2  = V
 K20 = CL/V

$DES
;---- 미분 방정식 ----
; dA1/dt = -KA × A1 (흡수구획: 약이 빠져나감)
 DADT(1) = -KA*A(1)

; dA2/dt = KA × A1 - K20 × A2 (중심구획: 들어오고 나감)
 DADT(2) = KA*A(1) - K20*A(2)

$ERROR
 IPRED = F
 W     = SQRT(THETA(4)**2 + THETA(5)**2 * IPRED**2)
 IRES  = DV - IPRED
 IWRES = IRES / W
 Y     = IPRED + W * EPS(1)

$THETA
 (0, 10, 30)
 (0, 30, 100)
 (0, 1.5, 5)
 0.001 FIX
 (0, 0.3, 1)

$OMEGA
 0.04
 0.04
 0 FIX

$SIGMA
 1 FIX

$ESTIMATION NOABORT MAXEVAL=9999 METHOD=1 INTER PRINT=10

$TABLE ID TIME DV IPRED CWRES ONEHEADER NOPRINT FILE=sdtab6

III.8. GNLM.ctl 결과는 GLM.ctl과 동일한가?

답: 실질적으로 동일합니다!

비교 ADVAN5 (GLM) ADVAN6 (GNLM)
계산 방법 해석적 (정확) 수치적 (근사)
속도 빠름 느림
결과 정확 TOL에 따라 약간 차이
OFV 기준값 거의 동일

언제 ADVAN6을 써야 하나?

  • 선형 모델 → ADVAN5 (더 빠르고 정확)
  • 비선형 모델 → ADVAN6 (어쩔 수 없이 필요)

IV. NONMEM 실행 결과의 해석

목표: Output 파일을 읽고 결과의 적절성을 평가합니다.


IV.1. 'dataset1.csv'와 'PO.csv' 비교

차이점:

항목 PO.csv dataset1.csv
AMT 단위 100000 (ug) 100 (mg)
TIME=0 DV 0 . (missing)

처리 방법:

  1. 단위 차이 해결: $PK에서 Scaling factor 조정

    S2 = V/1000   ; mg 단위 보정
    
  2. Missing 값 처리: MDV=1로 설정하여 likelihood에서 제외

중요: 단위 불일치는 잘못된 파라미터 추정의 원인이 됩니다!


IV.2. ETA 추정을 순차적으로 허용하여 최종 ETA 선택

진행 과정:

단계 추가한 ETA OFV 변화 채택?
0 없음 (모두 FIX) 기준값 -
1 ETA on CL 큰 감소
2 ETA on V2 유의한 감소
3 ETA on KA 작은 감소 ❌ 또는 ✅

선택 기준:

기준 의미
ΔOFV > 3.84 p < 0.05로 유의
OMEGA 값 > 0 0에 가깝지 않아야 함
Shrinkage < 30% 너무 높으면 신뢰 어려움

쉽게 말하면: "이 파라미터에 개인차가 있나?" → ETA 추가 후 OFV가 많이 줄면 "있다!"


IV.3. $TABLE 수정 및 control file 설명

수정된 $TABLE:

; 유의미한 ETA만 포함
$TABLE ID ETA1 ETA2 ONEHEADER NOPRINT NOAPPEND FILE=patab1

Control file 블록별 설명:

블록 역할 비유
$PROB 문제 이름 제목
$DATA 데이터 파일 재료
$INPUT 컬럼 이름 재료 라벨
$SUBROUTINE 모델 구조 레시피 종류
$PK 파라미터 정의 조리법
$ERROR 오차 모델 완성도 평가
$THETA 고정효과 초기값 기본 양념량
$OMEGA BSV 분산 개인 입맛 차이
$SIGMA 잔차 분산 측정 오차
$TABLE 출력 내용 결과물

IV.4. Output file로 결과 적절성 평가

확인 체크리스트:

항목 좋은 결과 나쁜 결과
수렴 MINIMIZATION SUCCESSFUL TERMINATED 또는 WARNING
RSE < 50% > 50%
Shrinkage < 30% > 30%
Condition Number < 1000 > 1000
경계값 도달 없음 THETA가 경계에 있음

RSE (Relative Standard Error)란? 추정값의 불확실성을 나타냅니다. RSE = (SE / 추정값) × 100% → 낮을수록 추정이 정확합니다!


IV.5. Xpose4를 이용한 fitting 평가

R 코드:

library(xpose4)

# 데이터 로드
xpdb <- xpose.data(runno = 1)

# 기본 진단 플롯
dv.vs.pred(xpdb)    # DV vs PRED
dv.vs.ipred(xpdb)   # DV vs IPRED
res.vs.pred(xpdb)   # CWRES vs PRED
res.vs.idv(xpdb)    # CWRES vs TIME

# 개인별 플롯
ind.plots(xpdb)

좋은 fitting의 특징:

플롯 좋은 결과
DV vs PRED 점들이 대각선(y=x) 주변에 분포
DV vs IPRED 위와 유사, 더 tight함
CWRES vs PRED 0 주변에 랜덤 분포, 패턴 없음
CWRES vs TIME 위와 유사
[좋은 예]              [나쁜 예]
CWRES                  CWRES
  2│  ·  ·   ·            2│      · · ·
  0│ · ·  ·  ·   ·        0│ · ·
 -2│·    ·    ·          -2│· ·
   └─────────→ TIME        └─────────→ TIME
   (랜덤 분포)              (패턴 있음!)

V. Covariate Searching

목표: 약물 반응에 영향을 주는 환자 특성(공변량)을 찾아 모델에 반영합니다.


Step 1. Covariate evaluation and screening

1. 잠재적 공변량의 분포 확인

분포 평가:

변수 유형 분포 특성 적절성
AGE 연속형 넓게 분포 ✅ 적절
WT 연속형 정규 분포 ✅ 적절
CLCR 연속형 약간 치우침 ✅ 적절
SEX 범주형 0/1 ✅ 적절
CRRT 범주형 0/1 ✅ 적절
TBSA 연속형 우측 치우침 ⚠️ 주의

부적절한 분포의 예:

  • 모든 값이 거의 같음 (변이 없음)
  • 극단적으로 한쪽에 치우침

2. 공변량 간 공선성 확인

상관관계 확인 필요 쌍:

변수 1 변수 2 예상 관계 이유
WT CLCR 양의 상관 Cockcroft-Gault 공식에 WT 포함
AGE CLCR 음의 상관 나이 들면 신기능 감소

공선성이 문제인 이유: 두 변수가 너무 비슷한 정보를 담고 있으면, 둘 다 모델에 넣을 때 어떤 게 진짜 영향인지 구분이 안 됩니다.

기준: |상관계수| > 0.7 이면 함께 사용 주의!


3. 파라미터 간 공선성 확인

ETA 간 상관관계:

ETA1 (CL)과 ETA2 (V)가 상관관계가 있다면:

  • Full OMEGA block 사용 고려
  • 또는 allometric scaling 적용

4. Visual covariate screening (ETA vs Covariate plots)

R 코드:

ranpar.vs.cov(xpdb)

해석 방법:

패턴 의미 조치
기울기 있음 공변량 효과 있을 수 있음 모델에 포함 고려
수평 효과 없음 제외
곡선 비선형 관계 변환 고려
[효과 있음]           [효과 없음]
ETA                   ETA
 │  · ·                │ ·  ·  ·  ·
 │ ·                   │   ·  ·
 │·                    │ ·    ·  ·
 └────→ WT             └────→ WT

5. GAM을 이용한 수치적 screening

R 코드:

gam(xpdb)

결과 해석:

  • AIC가 감소하는 공변량 = 유의미한 효과

6. 공변량 모델링 전략 제안

권장 전략:

단계 내용 기준
1 Base model 확립 CL, V에 BSV
2 명백한 공변량 우선 생리학적 타당성
3 Forward inclusion ΔOFV > 3.84 (p<0.05)
4 Backward elimination ΔOFV > 6.63 (p<0.01)

Forward vs Backward:

  • Forward: 하나씩 추가하면서 좋아지나 확인
  • Backward: 다 넣고 하나씩 빼면서 나빠지나 확인
  • 둘 다 해서 최종 모델 선정!

Step 2. 명백한 공변량 고려

7. CRRT를 CL의 공변량으로 포함

수정된 $PK (PK110):

$PK
IF(CRRT.EQ.0) THEN
  CL = THETA(1) * EXP(ETA(1))   ; 정상 환자
ELSE
  CL = THETA(2)                  ; CRRT 환자 (다른 CL, ETA 없음)
ENDIF

V = THETA(3) * EXP(ETA(2))

왜 CRRT 환자는 ETA가 없나? CRRT(지속적 신대체요법)를 받는 환자는 기계가 청소를 대신하므로 개인차가 적습니다.


7-1. CRRT 그룹 분리의 대안

대안 방법:

CLCRRT = 1
IF(CRRT.EQ.1) CLCRRT = THETA(4)  ; 비율로 표현

CL = THETA(1) * CLCRRT * EXP(ETA(1))

장점: THETA(4)가 "CRRT 환자의 CL이 몇 배인가"를 직접 알려줍니다.


8. CRRT=1 그룹에도 BSV 추정 허용 (PK111)

IF(CRRT.EQ.0) THEN
  CL = THETA(1) * EXP(ETA(1))
ELSE
  CL = THETA(2) * EXP(ETA(2))  ; 별도 ETA
ENDIF

문제점:

  • CRRT=1 그룹이 적으면 추정 불안정
  • OMEGA가 0으로 가는 boundary 문제

9. 4~6 과정 반복

CRRT 적용 후 다시:

  1. ETA vs Covariate plots 확인
  2. 남은 효과 있는지 확인
  3. 추가 공변량 탐색

Step 3. Covariate modeling

10. WT를 V의 공변량으로 포함

세 가지 구조 비교:

Run 구조 코드 해석
121 V = WT × θ V = WT * THETA(3) θ = V per kg
122 V = (WT/평균WT) × θ V = (WT/62) * THETA(3) θ = 평균 체중에서의 V
123 V = (WT/평균WT) × θ + θ₄ V = (WT/62)*THETA(3) + THETA(4) 절편 추가

추천: Run 122

이유:

  • THETA(3)가 "평균 체중(62kg)인 사람의 V"로 해석 가능
  • 임상적으로 의미 있는 값
  • Centering으로 추정 안정성 향상

11. V에 다른 공변량은?

확인 방법:

  1. WT 포함 후 ETA(V) vs 다른 공변량 플롯
  2. 아직 기울기가 있다면 → 추가 공변량 후보

가능한 추가 공변량:

  • AGE
  • TBSA (화상 면적)

12. Full model에서 Backward elimination

방법:

단계 제거한 공변량 ΔOFV 결과
1 WT on V +8.5 유지 (> 6.63)
2 AGE on V +2.1 제거 (< 6.63)

Backward elimination 기준: 제거했을 때 OFV 증가 < 6.63 → 그 공변량은 빼도 됨


13. CL의 공변량 모델링

후보 공변량:

  • CLCR (신장 청소율) - 가장 유력!
  • AGE
  • WT
  • CRRT (이미 포함)

예시 코드:

CL = THETA(1) * (CLCR/100)**THETA(5) * EXP(ETA(1))

해석: CLCR이 100일 때 기준, CLCR이 변하면 CL이 THETA(5) 승으로 변함


요약 정리

NONMEM Data Items 총정리

Item 설명 필수? 예시
ID 대상자 번호 1, 2, 3
TIME 시간 0, 1, 2
AMT 투여량 100, 200
DV 농도 (관측값) 50.3, 42.1
MDV Missing DV (0/1) 0, 1
CMT 구획 번호 PREDPP 1, 2
RATE 주입 속도 Infusion 100
ADDL 추가 투여 횟수 반복투여 5
II 투여 간격 반복투여 24

ADVAN 선택 가이드

상황 ADVAN 이유
IV + 1구획 ADVAN1 가장 단순
PO + 1구획 ADVAN2 흡수 포함
IV + 2구획 ADVAN3 분포상 포함
PO + 2구획 ADVAN4 흡수+분포
선형 복잡 모델 ADVAN5 유연한 선형
비선형 모델 ADVAN6 ODE 필요

공변량 모델링 체크리스트

  • 공변량 분포 확인
  • 공변량 간 공선성 확인
  • ETA vs Covariate plots
  • GAM screening
  • Forward inclusion (p < 0.05)
  • Backward elimination (p < 0.01)
  • 최종 모델 진단

문의: 질문이 있으시면 강의 중 또는 이메일로 연락주세요!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published