藥時曲線知多少?

是什么?

血藥濃度-時間曲線,簡稱藥時圖。是以時間為橫坐標、以血藥濃度為縱坐標,得到的血藥濃度關(guān)于時間變化的曲線,可在一定程度上反映藥物在體內(nèi)的動態(tài)變化規(guī)律。在生物等效性(BE)試驗或者早期藥代動力學(xué)試驗中通常需要畫藥時曲線。

有什么用?

根據(jù)藥時曲線可以觀察藥物在人體內(nèi)的吸收速度和吸收程度,可以計算得到相應(yīng)的PK參數(shù)。BE試驗是比較受試制劑(T)與參比制劑(R)的吸收速度和吸收程度差異是否在可接受范圍內(nèi)的研究,若差異較小,可視為生物等效,則可認為有同樣的療效。

國家藥品監(jiān)督管理局201810月發(fā)布了《生物等效性研究的統(tǒng)計學(xué)指導(dǎo)原則》。對BE試驗的設(shè)計、數(shù)據(jù)處理、統(tǒng)計分析等做了相應(yīng)的要求。指導(dǎo)原則規(guī)定了生物等效性標準:C_{max}, AUC_{0-t}AUC_{0-∞}幾何均值比的90\%CI80\%-125\%之間。另外,當{T}_{max}與藥物的臨床療效密切相關(guān)時,通常還需采用配對非參數(shù)方法對{T}_{max}進行差異性檢驗。

重要的PK參數(shù)含義

C_{max} : 給藥后出現(xiàn)的血藥濃度最高值
T_{max} : 給藥后達到達峰濃度所需的時間
AUC_{0-t}: 0時刻至最后一個可測時刻的藥時曲線下面積
AUC_{0-∞}: 0時刻至無窮大時刻的藥時曲線下面積

注意事項&BLQ的處理

一般來說,要求AUC_{0-t}/AUC_{0-∞}>=80\%,如果該比值小于80\%,推算出的AUC_{0-∞}就不可靠,需要延長采樣時間點,滿足AUC的預(yù)測。統(tǒng)計分析時,對于這樣的受試者,需要剔除相應(yīng)的AUC_{0-t}、AUC_{0-∞}等指標。

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)原則》.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容