是什么?
血藥濃度-時間曲線,簡稱藥時圖。是以時間為橫坐標、以血藥濃度為縱坐標,得到的血藥濃度關(guān)于時間變化的曲線,可在一定程度上反映藥物在體內(nèi)的動態(tài)變化規(guī)律。在生物等效性(BE)試驗或者早期藥代動力學(xué)試驗中通常需要畫藥時曲線。
有什么用?
根據(jù)藥時曲線可以觀察藥物在人體內(nèi)的吸收速度和吸收程度,可以計算得到相應(yīng)的PK參數(shù)。BE試驗是比較受試制劑(T)與參比制劑(R)的吸收速度和吸收程度差異是否在可接受范圍內(nèi)的研究,若差異較小,可視為生物等效,則可認為有同樣的療效。
國家藥品監(jiān)督管理局年
月發(fā)布了《生物等效性研究的統(tǒng)計學(xué)指導(dǎo)原則》。對BE試驗的設(shè)計、數(shù)據(jù)處理、統(tǒng)計分析等做了相應(yīng)的要求。指導(dǎo)原則規(guī)定了生物等效性標準:
,
和
幾何均值比的
在
之間。另外,當
與藥物的臨床療效密切相關(guān)時,通常還需采用配對非參數(shù)方法對
進行差異性檢驗。
重要的PK參數(shù)含義
: 給藥后出現(xiàn)的血藥濃度最高值
: 給藥后達到達峰濃度所需的時間
: 0時刻至最后一個可測時刻的藥時曲線下面積
: 0時刻至無窮大時刻的藥時曲線下面積

注意事項&BLQ的處理
一般來說,要求,如果該比值小于
,推算出的
就不可靠,需要延長采樣時間點,滿足AUC的預(yù)測。統(tǒng)計分析時,對于這樣的受試者,需要剔除相應(yīng)的
、
等指標。

BLQ的處理
① 給藥前或者達到Cmax之前的BLQ可按0計算;
② 在兩個可定量濃度之間出現(xiàn)BLQ。一般來說,濃度不會出現(xiàn)反跳的情況,出現(xiàn)這種情況會認為數(shù)據(jù)不合理,需要提交質(zhì)疑,若還有樣本可進行復(fù)測,若無法獲得合理準確的濃度,則該點視為缺失,統(tǒng)計分析或者繪圖時不納入;
③ 在最后一次可測量濃度后出現(xiàn)BLQ??梢栽O(shè)置為0或者LLOQ/2,具體情況,可與統(tǒng)計師、藥理同事等溝通確認。
藥時圖繪制
一般,藥時圖需要繪制個體圖和平均圖。個體血藥-時間曲線(線性圖、半對數(shù)圖):每個受試者畫一張圖,X軸用實際采樣時間。平均(±標準差)血藥-時間曲線(線性圖、半對數(shù)圖):每組受試者每個計劃時間點的平均血藥濃度繪圖,X軸采用計劃采血時間。


藥時圖代碼示例
/****************************************************************************************************************
Program Name : pc_series_plot.sas
Platform/SAS Version : SAS 9.4
Author : Sophia
Description : Generation pc series plot
Note :
-----------------------------------------------------------------------------------------------------------------
Modification History:
Rev# Author Date Description
---- ---------------- -------------- -------------------------------------------------------------------------
*****************************************************************************************************************/
**== 用來畫圖的PC數(shù)據(jù)集 ==**;
data pc;
input STUDYID$ SUBJID$ RANDNUM$ TRTA$ TRTAN VISIT$ PCTPTNUM ARELTM PRELTM AVAL;
aval_ = ifn(aval>0,aval,.);
label aval_ = 'Drug A (ug/mL)';
datalines;
XY-123 001 A01 A 1 D1 0 0 0 0
XY-123 001 A01 A 1 D1 2 0.0875 0.083333333 50
XY-123 001 A01 A 1 D1 12 0.5 0.5 113
XY-123 001 A01 A 1 D2 . 1 1 200
XY-123 001 A01 A 1 D3 . 2 2 299
XY-123 001 A01 A 1 D8 . 6.979166667 7 266
XY-123 001 A01 A 1 D15 . 14 14 112
XY-123 001 A01 A 1 D22 . 21.04166667 21 65
XY-123 001 A01 A 1 D29 . 28 28 27
XY-123 002 A02 B 2 D1 0 0 0 0
XY-123 002 A02 B 2 D1 2 0.083333333 0.083333333 57
XY-123 002 A02 B 2 D1 12 0.5 0.5 147
XY-123 002 A02 B 2 D2 . 1 1 199
XY-123 002 A02 B 2 D3 . 1.991666667 2 289
XY-123 002 A02 B 2 D8 . 7 7 200
XY-123 002 A02 B 2 D15 . 14.00833333 14 168
XY-123 002 A02 B 2 D22 . 21.08333333 21 78
XY-123 002 A02 B 2 D29 . 28.04166667 28 29
XY-123 003 A03 A 1 D1 0 0 0 0
XY-123 003 A03 A 1 D1 2 0.083333333 0.083333333 58
XY-123 003 A03 A 1 D1 12 0.5 0.5 147
XY-123 003 A03 A 1 D2 . 1.008333333 1 180
XY-123 003 A03 A 1 D3 . 2 2 302
XY-123 003 A03 A 1 D8 . 7 7 234
XY-123 003 A03 A 1 D15 . 14.01666667 14 89
XY-123 003 A03 A 1 D22 . 21 21 49
XY-123 003 A03 A 1 D29 . 28 28 18
XY-123 004 A04 B 2 D1 0 0 0 0
XY-123 004 A04 B 2 D1 2 0.083333333 0.083333333 64
XY-123 004 A04 B 2 D1 12 0.5 0.5 175
XY-123 004 A04 B 2 D2 . 1 1 220
XY-123 004 A04 B 2 D3 . 2 2 302
XY-123 004 A04 B 2 D8 . 6.979166667 7 244
XY-123 004 A04 B 2 D15 . 13.95833333 14 134
XY-123 004 A04 B 2 D22 . 20.98333333 21 99
XY-123 004 A04 B 2 D29 . 28.03333333 28 40
;
run;
**== 定義個體圖Template ==**;
proc template;
define statgraph pcindiv;
begingraph / designwidth=9in designheight=4.5in;
entrytitle "Plot of Individual of Drug xx Plasma Concentration";
layout lattice / columns=2 rowdatarange=data;
cell;
cellheader;
entry "Linear Scale";
endcellheader;
layout overlay _id='overlay1' / walldisplay=all
xaxisopts = (display=(line ticks tickvalues label)
tickvalueattrs=(size=10pt) label="Actual Time (Day)" labelattrs=(size=10pt)
linearopts=(viewmin=0 viewmax=29 tickvaluelist=(0 1 2 7 14 21 28) tickvaluefitpolicy=none))
yaxisopts = (type=linear display=(line ticks tickvalues label)
tickvalueattrs=(size=10pt) label="Concentration (ng/mL)" labelattrs=(size=10)
linearopts=(viewmin=0 viewmax=350 tickvaluesequence=(start=0 end=350 increment=50)));
seriesplot x=areltm y=aval / display=all markerattrs=(size=5pt) name="series";
endlayout;
endcell;
cell;
cellheader;
entry "Semi-Logarithmic Scale";
endcellheader;
layout overlay _id='overlay2' / walldisplay=all
xaxisopts = (display=(line ticks tickvalues label)
tickvalueattrs=(size=10pt family="Times New Roman")
label="Actual Time (Day)" labelattrs=(size=10pt)
linearopts=(viewmin=0 viewmax=29 tickvaluelist=(0 1 2 7 14 21 28) tickvaluefitpolicy=none)
)
yaxisopts = (type=log display=(line ticks tickvalues label)
tickvalueattrs=(size= 10pt) label="Concentration (ng/mL)" labelattrs=(size=10pt)
logopts=(base=10 viewmin=1 viewmax=350 tickvaluelist=(1 10 100 350)));
seriesplot x=areltm y=aval_ / display=all markerattrs=(size=5pt) name="series";
endlayout;
endcell;
endlayout;
endgraph;
end;
quit;
options nonumber nodate;
ods listing close;
ods graphics / reset noborder imagefmt=jpg noscale;
title;
ods rtf file = "pc_single.rtf" bodytitle gtitle;
proc sgrender data = pc template = pcindiv;
where subjid = '001';
quit;
ods rtf close;
ods listing;
**== 平均圖數(shù)據(jù)處理:計算各組均值、標準差 ==**;
proc sql;
create table pcavg as
select trta, trtan, preltm, avg(aval) as mean, std(aval) as std,
calculated mean - calculated std as low,
calculated mean + calculated std as up,
case when calculated mean>0 then calculated mean end as mean_,
case when calculated low>0 then calculated low end as low_,
case when calculated up >0 then calculated up end as up_
from pc group by trtan, trta, preltm;
quit;
**== 定義平均圖Template ==**;
proc template;
define statgraph pcavg;
begingraph / designwidth=9in designheight=4.5in;
entrytitle "Plot of Mean (±SD) of Drug xx Plasma Concentration";
layout lattice / columns=2 rowdatarange=data;
cell;
cellheader;
entry "Linear Scale";
endcellheader;
layout overlay _id='overlay1' / walldisplay=all
xaxisopts = (display=(line ticks tickvalues label)
tickvalueattrs=(size=10pt) label="Actual Time (Day)" labelattrs=(size=10pt)
linearopts=(viewmin=0 viewmax=29 tickvaluelist=(0 1 2 7 14 21 28) tickvaluefitpolicy=none))
yaxisopts = (type=linear display=(line ticks tickvalues label)
tickvalueattrs=(size=10pt) label="Concentration (ng/mL)" labelattrs=(size=10)
linearopts=(viewmin=0 viewmax=350 tickvaluesequence=(start=0 end=350 increment=50)));
seriesplot x=preltm y=mean / display=all group=trta yerrorupper=up yerrorlower=low markerattrs=(size=5pt) name="series";
endlayout;
endcell;
cell;
cellheader;
entry "Semi-Logarithmic Scale";
endcellheader;
layout overlay _id='overlay2' / walldisplay=all
xaxisopts = (display=(line ticks tickvalues label)
tickvalueattrs=(size=10pt family="Times New Roman")
label="Actual Time (Day)" labelattrs=(size=10pt)
linearopts=(viewmin=0 viewmax=29 tickvaluelist=(0 1 2 7 14 21 28) tickvaluefitpolicy=none)
)
yaxisopts = (type=log display=(line ticks tickvalues label)
tickvalueattrs=(size= 10pt) label="Concentration (ng/mL)" labelattrs=(size=10pt)
logopts=(base=10 viewmin=1 viewmax=350 tickvaluelist=(1 10 100 350)));
seriesplot x=preltm y=mean_ / display=all group=trta yerrorupper=up_ yerrorlower=low_ markerattrs=(size=5pt) name="series";
endlayout;
endcell;
endlayout;
layout globallegend;
discretelegend 'series' ;
endlayout;
endgraph;
end;
quit;
ods listing close;
ods graphics / reset noborder imagefmt=jpg noscale;
title;
ods rtf file = "pc_avg.rtf" bodytitle;
proc sgrender data = pcavg template = pcavg;
quit;
ods rtf close;
ods listing;
SAS學(xué)習(xí)畫圖最開始還是通過學(xué)習(xí)參考程序了解各個選項、畫圖procedure的用法以及定義template相關(guān)的語句等等。遇到不了解的statement,查SAS help慢慢積累。講解程序步驟的每個statement、option的話太冗長無味了,而且SAS help例子、解釋都寫得非常清晰,照搬SAS help就沒有必要了。后續(xù)畫圖程序的分享主要還是根據(jù)實際工作中遇到的問題、或者一些不常見的需求來展開,分享技巧、或者一些好用的options。今天就分享到這里啦!
參考文獻
《生物等效性研究的統(tǒng)計學(xué)指導(dǎo)原則》.