3 R을 사용한 비구획분석
3.1 이 장에서는
NonCompart
(Bae 2020)은 비구획 분석을 R을 통해 쉽고 빠르게 (매우 빠르게) 행할 수 있는 패키지입니다.
약동학 교재의 내용을 충실히 반영하였습니다. (Gabrielsson 2016; Rowland 2011)
이에 대해 좀더 자세히 알아보겠습니다.
NonCompart
의 DESCRIPTION
파일을 보면 다음과 같이 설명하고 있습니다.
Conduct a noncompartmental analysis with industrial strength. Some features are 1) Use of CDISC SDTM terms 2) Automatic or manual slope selection 3) Supporting both ‘linear-up linear-down’ and ‘linear-up log-down’ method 4) Interval(partial) AUCs with ‘linear’ or ‘log’ interpolation method * Reference: Gabrielsson J, Weiner D. Pharmacokinetic and Pharmacodynamic Data Analysis - Concepts and Applications. 5th ed. 2016. (ISBN:9198299107).
3.2 NonCompart 사용법
tblNCA의 사용법은 다음과 같습니다.
## function (concData, key = "Subject", colTime = "Time", colConc = "conc",
## dose = 0, adm = "Extravascular", dur = 0, doseUnit = "mg",
## timeUnit = "h", concUnit = "ug/L", down = "Linear", R2ADJ = 0.9,
## MW = 0, iAUC = "")
## NULL
concData
는 데이터셋 이름을 설정합니다. 참고로 tibble
형식은 지원하지 않기 때문에
readr::read_csv()
를 통해 자료를 불러왔다면 as.data.frame()
함수 등을 사용하여 data.frame
형식으로 변환하여야 합니다.
key
는 subject ID의 컬럼명 혹은 treatment code의 컬럼명 (교차시험 등에서)을 벡터 형태로 지정할 수 있습니다.
colTime
은 time의 컬럼명, colConc
는 concentration의 컬럼명 등을 함수 인자로 갖습니다. 그 외 인자들에 대해서 살펴보자면 다음과 같습니다.
down
- AUC와 AUMC를 구하는 trapezoidal method 설정이며, 기본값은
Linear
입니다. Linear
와Log
중 선택 가능하며 각각 linear trapezoidal method와 linear-up and log-down method를 의미합니다.
- AUC와 AUMC를 구하는 trapezoidal method 설정이며, 기본값은
dose
- 투여량에 대한 설정입니다. 단위에 주의해야 합니다. 벡터값을 줌으로서 각 대상자별 용량을 다르게 할 수 있습니다.
adm
- 투여경로에 대한 설정, 기본값은 “Extravascular”으로 경구 투여 등을 의미합니다.
- Bolus, Infusion, Extravascular 중에서 선택 가능하다.
dur
- 주입하는 기간(infusion duration)을 설정합니다. 기본값은 0입니다.
R2ADJ
R2ADJ
값이 설정값 이하인 경우DetSlope()
함수에 의해 terminal slope를 수동으로 interactive하게 고를 수 있게됩니다.
이제 약동학 파라미터를 산출하기 위해서는 아래와 같이 하면 됩니다. 우선 Theophylline 의 약동학 파라미터를 구해보겠습니다.
## ID b0 CMAX CMAXD TMAX TLAG CLST
## [1,] "1" "2.36878509420585" "10.5" "0.0328125" "1.12" "0" "3.28"
## [2,] "2" "2.41123733696293" "8.33" "0.02603125" "1.92" "0" "0.9"
## [3,] "3" "2.52971150145858" "8.2" "0.025625" "1.02" "0" "1.05"
## [4,] "4" "2.59275546723663" "8.6" "0.026875" "1.07" "0" "1.15"
## [5,] "5" "2.55109229061238" "11.4" "0.035625" "1" "0" "1.57"
## [6,] "6" "2.0334043955261" "6.44" "0.020125" "1.15" "0" "0.92"
## [7,] "7" "2.28854976005424" "7.09" "0.02215625" "3.48" "0" "1.15"
## [8,] "8" "2.17040271754659" "7.56" "0.023625" "2.02" "0" "1.25"
## [9,] "9" "2.12464810390587" "9.03" "0.02821875" "0.63" "0" "1.12"
## [10,] "10" "2.65770546248091" "10.21" "0.03190625" "3.55" "0" "2.42"
## [11,] "11" "2.1475943307927" "8" "0.025" "0.98" "0" "0.86"
## [12,] "12" "2.82449347826545" "9.75" "0.03046875" "3.52" "0" "1.17"
## CLSTP TLST LAMZHL LAMZ
## [1,] "3.28014647414312" "24.37" "14.304377571097" "0.0484569969657749"
## [2,] "0.888639849106919" "24.3" "6.65934156262252" "0.104086443688432"
## [3,] "1.05509670837553" "24.17" "6.76608737718236" "0.102444314109434"
## [4,] "1.15642160174997" "24.65" "6.98124666099893" "0.0992870205306231"
## [5,] "1.55569511595616" "24.35" "8.0022640410078" "0.0866188839818201"
## [6,] "0.941271173708175" "23.85" "7.89499786796582" "0.0877957400561702"
## [7,] "1.16071921229933" "24.22" "7.84666826130148" "0.0883364961379133"
## [8,] "1.22852675835656" "24.12" "8.51003788342506" "0.0814505399453019"
## [9,] "1.11648311706515" "24.43" "8.40599880716182" "0.0824586341803179"
## [10,] "2.41369227401111" "23.7" "9.24691582297898" "0.0749598237757766"
## [11,] "0.859806606884089" "24.08" "7.26123651504339" "0.0954585598642772"
## [12,] "1.17553904959565" "24.15" "6.28650816367189" "0.110259489451627"
## LAMZLL LAMZUL LAMZNPT CORRXY R2
## [1,] "9.05" "24.37" "3" "-0.99999986483748" "0.999999729674979"
## [2,] "7.03" "24.3" "4" "-0.998596709529913" "0.99719538828397"
## [3,] "9" "24.17" "3" "-0.999662423945811" "0.999324961849213"
## [4,] "9.02" "24.65" "3" "-0.999461923749821" "0.998924137025692"
## [5,] "7.02" "24.35" "4" "-0.999323363372814" "0.998647184582752"
## [6,] "2.03" "23.85" "7" "-0.999120281624298" "0.998241337153017"
## [7,] "6.98" "24.22" "4" "-0.999334862622512" "0.998670167652754"
## [8,] "3.53" "24.12" "6" "-0.995496052943785" "0.991012391426654"
## [9,] "8.8" "24.43" "3" "-0.99972179371205" "0.999443664822839"
## [10,] "9.38" "23.7" "3" "-0.999754311749369" "0.999508683861454"
## [11,] "9.03" "24.08" "3" "-0.999999127979356" "0.999998255959473"
## [12,] "9.03" "24.15" "3" "-0.999698355328196" "0.9993968016459"
## R2ADJ AUCLST AUCALL AUCIFO
## [1,] "0.999999459349959" "148.92305" "148.92305" "216.611933038226"
## [2,] "0.995793082425955" "91.5268" "91.5268" "100.173459143183"
## [3,] "0.998649923698427" "99.2865" "99.2865" "109.535970740547"
## [4,] "0.997848274051385" "106.7963" "106.7963" "118.378881427603"
## [5,] "0.997970776874129" "121.2944" "121.2944" "139.419777837118"
## [6,] "0.99788960458362" "73.77555" "73.77555" "84.2544183301878"
## [7,] "0.998005251479131" "90.7534" "90.7534" "103.771801796293"
## [8,] "0.988765489283318" "88.55995" "88.55995" "103.906686815243"
## [9,] "0.998887329645677" "86.32615" "86.32615" "99.9087179279482"
## [10,] "0.999017367722909" "138.3681" "138.3681" "170.652060635217"
## [11,] "0.999996511918946" "80.0936" "80.0936" "89.1027449234385"
## [12,] "0.998793603291801" "119.9775" "119.9775" "130.588831558118"
## AUCIFOD AUCIFP AUCIFPD
## [1,] "0.676912290744456" "216.614955803818" "0.67692173688693"
## [2,] "0.313042059822447" "100.064317640308" "0.312700992625963"
## [3,] "0.342299908564208" "109.585721753278" "0.342455380478994"
## [4,] "0.369934004461258" "118.44355857992" "0.370136120562249"
## [5,] "0.435686805740995" "139.254630430615" "0.435170720095671"
## [6,] "0.263295057281837" "84.4966985785753" "0.264052183058048"
## [7,] "0.324286880613414" "103.893147024686" "0.324666084452144"
## [8,] "0.324708396297635" "103.643051464786" "0.323884535827455"
## [9,] "0.312214743524838" "99.8660676588793" "0.312081461433998"
## [10,] "0.533287689485054" "170.567912545332" "0.533024726704162"
## [11,] "0.278446077885745" "89.1007189855217" "0.278439746829755"
## [12,] "0.408090098619118" "130.639068046815" "0.408247087646298"
## AUCPEO AUCPEP AUMCLST AUMCIFO
## [1,] "31.2489169404534" "31.2498763313113" "1459.0711035" "4505.53481941065"
## [2,] "8.63168669340252" "8.53203003991598" "706.586566" "999.772287999786"
## [3,] "9.3571734209797" "9.39832451573008" "803.18587" "1150.96476871455"
## [4,] "9.7843308603032" "9.83359392402986" "901.0842105" "1303.25240140958"
## [5,] "13.0005786254328" "12.8974026752838" "1017.1143165" "1667.72161189007"
## [6,] "12.4371736674055" "12.688245527848" "609.1523875" "978.428485741731"
## [7,] "12.5452209279821" "12.6473664538854" "782.41986" "1245.09840831465"
## [8,] "14.7697297311878" "14.5529307094073" "739.534598" "1298.11575468474"
## [9,] "13.5949777052926" "13.5580763078894" "705.2296255" "1201.77153812025"
## [10,] "18.9180022292417" "18.8780011813617" "1278.180042" "2473.99342735889"
## [11,] "10.1109622730249" "10.1089184106194" "617.2422125" "928.559971386069"
## [12,] "8.12575733430562" "8.16108703637935" "977.8807235" "1330.38400236898"
## AUMCIFP AUMCPEO AUMCPEP
## [1,] "4505.67086458209" "67.6160286851172" "67.6170064935417"
## [2,] "996.071583509104" "29.3252499112927" "29.0626720309864"
## [3,] "1152.65289026304" "30.2162940315685" "30.318495985664"
## [4,] "1305.4981091996" "30.8588106551423" "30.9777467963968"
## [5,] "1661.79367436228" "39.011744571249" "38.7941877387202"
## [6,] "986.966459689532" "37.7417566662308" "38.280335514986"
## [7,] "1249.41106012833" "37.1599983764277" "37.376906210544"
## [8,] "1288.52011616077" "43.0301500208197" "42.605894256157"
## [9,] "1200.2123597462" "41.3174964516894" "41.2412628670872"
## [10,] "2470.87654175199" "48.3353501320931" "48.2701777931124"
## [11,] "928.489963582081" "33.5269415524517" "33.5219295081337"
## [12,] "1332.05283411623" "26.4963558071417" "26.5884431567018"
## MRTEVLST MRTEVIFO MRTEVIFP
## [1,] "9.79748335465867" "20.8000305256292" "20.8003683211179"
## [2,] "7.71999639449866" "9.98041094468705" "9.95431345556755"
## [3,] "8.08957783787323" "10.5076420187191" "10.5182762117325"
## [4,] "8.43741038313125" "11.0091630001303" "11.0221115006327"
## [5,] "8.38550103302378" "11.9618725389051" "11.9334895308224"
## [6,] "8.25683288704727" "11.612785479182" "11.6805328053348"
## [7,] "8.62138344128154" "11.9984271908357" "12.0259237101698"
## [8,] "8.3506663903943" "12.4930915850769" "12.4322865638375"
## [9,] "8.1693626496722" "12.0286954236259" "12.0182198807093"
## [10,] "9.23753409926132" "14.4972959491374" "14.4861744795951"
## [11,] "7.70651103833515" "10.4212274513421" "10.4206786898426"
## [12,] "8.15053425433936" "10.1875787270284" "10.1964355229393"
## VZFO VZFP CLFO
## [1,] "30.4867482345887" "30.4863228055447" "1.47729626669981"
## [2,] "30.6904415765423" "30.7239160557228" "3.19445891892989"
## [3,] "28.5170999496524" "28.5041534217657" "2.92141474473231"
## [4,] "27.2259641330176" "27.2110971545992" "2.70318485984093"
## [5,] "26.4979946505636" "26.5294196385914" "2.29522672438806"
## [6,] "43.2597344953234" "43.135694392041" "3.79802040465035"
## [7,] "34.9084408430805" "34.8676684452056" "3.08368934971535"
## [8,] "37.8105081118408" "37.9066861615621" "3.07968630131565"
## [9,] "38.8427934436931" "38.8593822173436" "3.20292369511514"
## [10,] "25.0155401378403" "25.0278813214113" "1.87516048038837"
## [11,] "37.6221852019531" "37.6230406407462" "3.59135961832556"
## [12,] "22.2242935639128" "22.2157473419508" "2.4504392617801"
## CLFP
## [1,] "1.47727565168591"
## [2,] "3.19794315842211"
## [3,] "2.92008844656286"
## [4,] "2.70170876184947"
## [5,] "2.29794872178016"
## [6,] "3.78713021198604"
## [7,] "3.08008765894795"
## [8,] "3.08752005539633"
## [9,] "3.20429158273309"
## [10,] "1.87608557333405"
## [11,] "3.59144127728081"
## [12,] "2.44949695970983"
## attr(,"units")
## [1] "" "" "mg/L" "mg/L/mg" "h" "h"
## [7] "mg/L" "mg/L" "h" "h" "/h" "h"
## [13] "h" "" "" "" "" "h*mg/L"
## [19] "h*mg/L" "h*mg/L" "h*mg/L/mg" "h*mg/L" "h*mg/L/mg" "%"
## [25] "%" "h2*mg/L" "h2*mg/L" "h2*mg/L" "%" "%"
## [31] "h" "h" "h" "L" "L" "L/h"
## [37] "L/h"
여기서 dose=320
으로 되었다는 것은 아미노필린 400mg 투여시 테오필린 320mg이 경구로 투여되었음을 의미합니다.
이는 문자(character)로 구성된 matrix로 구성된 결과물과 단위 정보가 담긴 attribute를 포함하고 있습니다.
다음으로 Indomethacin 의 약동학 파라미터를 구해보겠습니다.
이는 IV bolus 이므로 adm="bolus"
인자를 정의해야 합니다.
3.3 구간 NCA
- iAUC
- 일부구간에 대한 AUC를 구하기 위한 구간설정 옵션입니다.
- “Name”, “Start”, “End” 3개의 컬럼으로 구성된 데이터 프레임으로 설정해야 합니다.
일부 구간의 AUC를 구하는 방법은 조금 더 복잡하므로 자세히 알아봅시다. 예를 들어 0~12시간까지의 AUC, 0~24시간까지의 AUC를 구하고자 한다면 다음과 같이 하면 됩니다. 먼저 구하고자 하는 구간에 대한 정보를 갖는 변수를 아래와같이 생성합니다.
## Name Start End
## 1 AUC[0-12h] 0 12
## 2 AUC[0-24h] 0 24
Name Start End
1 AUC[0-12h] 0 12 2 AUC[0-24h] 0 24
이제 iAUC 옵션을 이용해서 이를 구합니다.
맨 마지막 파라미터로 AUC[0-12h], AUC[0-24h]가 추가되었음을 알 수 있습니다.
개인별 일부 구간의 AUC를 구하는 방법은 아래와 같다. 예를 들어 0~12시간까지의 AUC, 0~24시간까지의 AUC를 구하고자 한다면 다음과 같이 하면 된다.
Name Start End
1 AUC[0-12h] 0 12 2 AUC[0-24h] 0 24
3.4 함수 살펴보기
3.4.1 AUC
AUC와 AUMC를 ‘Linear trapezoidal method’ 혹은 ’linear-up and log-down method’의 두가지 방식으로 계산하게 됩니다.
## [,1] [,2]
## [1,] 0.00000 0.000000
## [2,] 0.44750 0.088750
## [3,] 1.95310 0.801534
## [4,] 6.64735 5.065382
## [5,] 15.71935 19.138321
## [6,] 32.13535 66.198241
## [7,] 42.97695 114.461665
## [8,] 58.25290 206.281512
## [9,] 72.75650 322.298798
## [10,] 92.45055 528.521903
## [11,] 148.92305 1459.071104
## [,1] [,2]
## [1,] 0.00000 0.000000
## [2,] 0.44750 0.088750
## [3,] 1.95310 0.801534
## [4,] 6.64735 5.065382
## [5,] 15.71410 19.243482
## [6,] 32.11090 66.830600
## [7,] 42.95189 115.151380
## [8,] 58.21173 207.426110
## [9,] 72.70744 323.774418
## [10,] 92.36544 531.108538
## [11,] 147.23475 1499.129085
3.5 긴 형식으로 변환하면서 단위 추가하기
NonCompart 패키지의 tblNCA()함수를 사용해서 비구획분석 결과를 내면 attr로 names와 units를 등일 갖게 됩니다. 이를 long format의 tidy data로 변환하는 방법은 다음과 같습니다.
left_join(as_tibble(Theoph_nca) %>%
gather(PPTESTCD, PPORRES, -Subject),
tibble(PPTESTCD = attributes(Theoph_nca)$names,
UNIT = attributes(Theoph_nca)$units)) %>%
arrange(PPTESTCD)
## Error: Can't subset columns that don't exist.
## x Column `Subject` doesn't exist.
참고문헌
Bae, Kyun-Seop. 2020. NonCompart: Noncompartmental Analysis for Pharmacokinetic Data. https://CRAN.R-project.org/package=NonCompart.
Gabrielsson, Johan. 2016. Pharmacokinetic and Pharmacodynamic Data Analysis : Concepts and Applications. Stockholm: Apotekarsocieteten.
Rowland, Malcolm. 2011. Clinical Pharmacokinetics and Pharmacodynamics : Concepts and Applications. Philadelphia: Wolters Kluwer Health/Lippincott William & Wilkins.