NKがいつのまにかlayout関数を使いこなしている…だ…と…?

MikuHatsune2011-01-11

オレも使ってみよう。
 
薬物動態学の続き。
薬を投与するのにはいくつか経路がある。
経口投与では、腸管で吸収されるときに初回通過効果を受けて、投与した内のいくらか損失する。
静脈注射では、血管内に薬物を打ち込むので、初回通過効果は受けない。投与した量すべてが体内に入る。
ある薬を経口および静脈注射で投与して、体内濃度をモニターしたら

xtime<- c(0,0.5,1,2,3,4,6,8,12,16,24)
yiv<- c(8,7,6,5,4,3,2,1,0.5,0.2,0.03)
ypo<- c(0,0.5,1,1.5,2,1.4,1,0.5,0.25,0.1,0.02)

となったとしよう。
ここで、時間-濃度でプロットしたとき、積分量が、生体が暴露された薬物量になる。
これをArea Under Curve(AUC)という。

AUC<- function(xvec,yvec){                      # 台形の面積を計算する。
  int<- 0
  for(i in 1:(length(yvec)-1)){
    int<- int + 
          (yvec[i]+yvec[i+1])*(xvec[i+1]-xvec[i])/2
  }
  return(int)
}
AUC(xtime,yiv)
AUC(xtime,ypo)

ここで、経口投与と静脈注射投与のAUC比

AUC(xtime,ypo)/AUC(xtime,yiv)

は、生体が薬物をどれだけ体内に取り込んで利用できるか、という指標になる。これをBioavailabilityという。
layout関数を使ってみよう。

M<- matrix(c(1,1,1,1,3,2,2,2,2,4,
             1,1,1,3,1,2,2,2,4,2,
             1,1,1,1,1,2,2,2,2,2,
             1,1,1,1,1,2,2,2,2,2,
             1,1,1,1,1,2,2,2,2,2),nr=5,byrow=T)
layout(M)
# 1の領域
plot(xtime,yiv,type="n",xlab="",ylab="",xaxt="n")
polygon(c(xtime,rev(xtime)),c(rep(0,length(xtime)),rev(yiv)),col=5,density=c(20,20))
par(new=T)
plot(xtime,yiv,type="o",xlab="time",ylab="iv concentration",main="iv",xaxt="n",lwd=2)
axis(1,xtime)
# 2の領域
plot(xtime,ypo,type="n",xlab="",ylab="",ylim=c(0,max(yiv,ypo)),xaxt="n")
polygon(c(xtime,rev(xtime)),c(rep(0,length(xtime)),rev(ypo)),col=2,density=c(20,20))
par(new=T)
plot(xtime,ypo,type="o",xaxt="n",xlab="time",ylab="po concentration",main="po",lwd=2,ylim=c(0,max(yiv,ypo)))
axis(1,xtime)
# 3と4の領域
# ちなみに両方3にしてしまうと、びよ〜んと伸びた図が描かれてしまう。
for(i in 1:2){
plot(xtime,ypo,type="n",xlab="",ylab="",
     xlim=c(0,max(xtime)),ylim=c(0,max(ypo,yiv)))
polygon(c(xtime,rev(xtime)),c(rep(0,length(xtime)),rev(yiv)),col=5,density=c(20,20))
polygon(c(xtime,rev(xtime)),c(rep(0,length(xtime)),rev(ypo)),col=2,density=c(30,30))
par(new=T)
plot(xtime,ypo,type="o",xlab="",ylab="",lwd=2,
     xlim=c(0,max(xtime)),ylim=c(0,max(ypo,yiv)))
par(new=T)
plot(xtime,yiv,type="o",xlab="time",ylab="",lwd=2,
     xlim=c(0,max(xtime)),ylim=c(0,max(ypo,yiv)))
}


病院では、ある薬物濃度をモニターするらしい。
それでこんな感じ。

xrenal<- c(0,1,2,4,8,12)
yimmune<- c(9.1,15.4,36,26.1,14.4,11)
plot(xrenal,yimmune,type="o",ylim=c(0,max(yimmune)),xaxt="n",lwd=2,
     xlab="time",ylab="drug concentration",main="Immune suppressant TDM")
polygon(c(xrenal,rev(xrenal)),c(rep(0,length(xrenal)),rev(yimmune)),density=c(20,20))
axis(1,xrenal)