LearnBayes R パッケージによる臨床試験と市販後の副作用データの解析

RのLearnBayes パッケージで臨床試験と市販後の副作用データを解析してみました

ここに提示されるデータは、治験・市販後の実データを元にしていますが、実際のデータではありません。LearnBayesというRのパッケージはベイズ推計を行えるような関数を提供しています。説明書を読みながら、このパッケージの一部機能を使ってみてみました。


1.海外試験の結果が事前にあって、国内の副作用情報が得られた

海外の治験のデータがすでにあり、その後国内で試験を行って副作用データが新たに得られた。と言う場合を想定した解析をしてみた。

海外臨床試験では、被験者135例中50例に副作用が報告された。普通の頻度の解析によると副作用が報告される割合は、本剤使用者の37.0% (95%CI; 28.9 – 45.8)となる。

> binom.test(50, 135)

Exact binomial test

data: 50 and 135
number of successes = 50, number of trials = 135, p-value = 0.00328
alternative hypothesis: true probability of success is not equal to 0.5
95 percent confidence interval:
0.2888945 0.4576672
sample estimates:
probability of success
0.3703704

この計算結果をもとに、β分布を推定する。95%信頼区間の上限(p=0.975)を与えるxの値は0.4576672であり、最尤値(p=0.5)を与えるxの値は0.3703704。この2点を与えれば事前確率のβ分布のパラメータが推定できる。

quantile2 <- list(p=.975, x=.458)
quantile1 <- list(p=0.5, x=.370)
beta_parm <- beta.select(quantile1, quantile2)
a <- beta_parm[1]
b <- beta_parm[2]

国内臨床試験では海外より被験者が少なく、23例が安全性解析対象症例となった。23例中11例で副作用が報告された。この結果と事前推定されているβ分布のパラメータを元に前後の分布を図示する。

# 事後分布
curve(dbeta(x,a+s,b+f), from=0, to=1, xlab=”p”,ylab=”Density”,lty=1,lwd=4)
# 実験結果から出てくるイベント発生頻度の尤度
curve(dbeta(x,s+1,f+1),add=TRUE,lty=2,lwd=4)
# 事前分布
curve(dbeta(x,a,b),add=TRUE,lty=3,lwd=4)
legend(.7,9,c(“Prior”,”Likelihood”,”Posterior”), lty=c(3,2,1),lwd=c(3,3,3))

国内試験のデータの分布(荒い破線)のデータが得られた後も、事後の分布(実線)は事前分布(細かい破線)と大きく変わらないようだ。

# 事後の分布による推定

> # 90%信頼区間
> qbeta(c(0.05, 0.95), a+s, b+f)
[1] 0.3222927 0.4550214
> # 点推定
> qbeta(0.5, a+s, b+f)
[1] 0.3872558

事後の確率は0.39 (90%CI; 0.32 – 0.46)で、国内のデータ0.48 (90%CI; 0.30 – 0.66)とずいぶんずれているように見える。

# 国内データのみによる推定

> binom.test(11, 23, conf.level=.9)

Exact binomial test

data: 11 and 23
number of successes = 11, number of trials = 23, p-value = 1
alternative hypothesis: true probability of success is not equal to 0.5
90 percent confidence interval:
0.2960934 0.6648524
sample estimates:
probability of success
0.4782609

2. 治験の結果をもとに製造販売が承認され、市販後に医薬品が使われて安全性データが集積した

上記の臨床試験の結果を元に承認申請がなされ、製造販売の承認を得た。市販後はこの医薬品は治験に参加した被験者の数よりはるかに多い患者さんに使用されて多くの安全性データを得た。治験の結果を事前分布、市販後のデータを加えて事後の分布を集計してみる。

上記の分布を事前分布の確率密度関数のパラメータ推計に用いる

# 90%信頼区間の上限 0.95のx値は0.455
quantile4 <- list(p=.95, x=.455)
quantile4$x <- qbeta(0.95, a+s, b+f)
# 事前確率(点推定; p=0.5)は0.387であった
quantile3 <- list(p=0.5, x=.387)
quantile3$x <- qbeta(0.5, a+s, b+f)
beta_parm <- beta.select(quantile3, quantile4)
a <- beta_parm[1]
b <- beta_parm[2]

国内の市販後の調査に登録され安全性解析対象とされた患者は2072例であり、そのうち964例に副作用が報告された。この結果と事前推定されているβ分布のパラメータを元に前後の分布を図示する。

s <- 964
f <- 2072-s
# 分布を見てみよう
# 事後分布
curve(dbeta(x,a+s,b+f), from=0, to=1, xlab=”p”,ylab=”Density”,lty=1,lwd=4)
# 実験結果から出てくるイベント発生頻度の尤度
curve(dbeta(x,s+1,f+1),add=TRUE,lty=2,lwd=4)
# 事前分布
curve(dbeta(x,a,b),add=TRUE,lty=3,lwd=4)
legend(.7,35,c(“Prior”,”Likelihood”,”Posterior”), lty=c(3,2,1),lwd=c(3,3,3))

 

市販後の調査のデータの分布(荒い破線)のデータが得られた後、事後の分布(実線)は事前分布(細かい破線)から大きく右へシフトした。

# 90%信頼区間
> qbeta(c(0.05, 0.95), a+s, b+f)
[1] 0.4427958 0.4776115
> # 点推定
> qbeta(0.5, a+s, b+f)
[1] 0.4601712

図から受ける印象の通り、事後の確率は0.46 (90%CI; 0.44 – 0.48)は、事前のデータ0.39 (90%CI; 0.32 – 0.46)とずれているように見える。実は、事後の確率は、国内治験のデータ0.48 (90%CI; 0.30 – 0.66)を精密にしたように見える。

3. まとめ

ここまでやってみた感想

  1. 事前の試験・調査と事後とで大きく規模(被験者数)が違う場合、被験者数の大きな方の試験・調査の結果が事後の分布に反映しているだけではないか
  2. それなら単に規模の大きな試験・調査の結果の分布を集計しても同じではないか、あるいは、単純に足したような併合解析でも結果は似たようなものになるのではないか
  3. この様な例では、国内外で副作用の報告頻度が異なるという仮説を導きたい
  4. 結局事後分布って何を示しているものなんだろうか?
  5. なぜ、β分布を想定するのだろうか?

疑問がより具体化したので良しとしよう。

 

Childhood leukemia and residential magnetic fields

高圧電線と小児白血病

1988年に公開されたSavitzらの論文(症例対象研究)1のデータを触っています。

Caseは白血病症例、Controlはそれ以外の住民。そして、Exposureは閾値を3milligauss (mG)とした場合の居住地での磁気フィールドへの曝露の有無。データは次のようになります。

これを基にβ分布で症例とコントロールの分布の1万例のシュミレーションを行うプログラム。

そして、結果です。

そのヒストグラムを書くと次のように分布します。

ま、これとは別に普通にFisherのテストをすると次のような結果になっていて、オッズ比は3.48、95%CI 0.51 – 18.89 と幅広い分布をすることが計算できます。

1.
Savitz D, Wachtel H, Barnes F, John E, Tvrdik J. Case-control study of childhood cancer and exposure to 60-Hz magnetic fields. Am J Epidemiol. 1988;128(1):21-38. [PubMed]

‘Rcpp’ という名前のパッケージはありません

RでインストールしたはずのRcppパッケージが認識されないという悩ましい状況

> library(Rcpp)
library(Rcpp) でエラー: ‘Rcpp’ という名前のパッケージはあり

インストールを3回試してみて、ダメでした。ダメだった時のログですが、有用なエラーメッセージはありません。コンソールを見ている限り何がダメなのかわかりません。

install.packages(‘Rcpp’)
パッケージを ‘C:/Users/Oshima/Documents/R/win-library/3.3’ 中にインストールします
(‘lib’ が指定されていないため)
— このセッションで使うために、CRAN のミラーサイトを選んでください —
URL ‘https://cloud.r-project.org/bin/windows/contrib/3.3/Rcpp_0.12.15.zip’ を試しています
Content type ‘application/zip’ length 4357370 bytes (4.2 MB)
downloaded 4.2 MB

パッケージ ‘Rcpp’ は無事に展開され、MD5 サムもチェックされました

ダウンロードされたパッケージは、以下にあります
C:\______\Local\Temp\RtmpUfqmSC\downloaded_packages

しばらくやった後、これは、先人も経験があるはずと調べたところ、それらしい記事に当たりました。リンク先の柴田啓文先生、ありがとうございます。

セキュリティソフトを10分間無効にしてインストールすると、わたしも成功しました。

 

Armenian Dance part1

アルメニアンダンス パート1

楽曲の元になったと思われるKomitas (Gomidas)の曲集を見つけたので、スクリーンショットをまとめてみました。

(スクリーンショットは表示されたりされなかったりがあるので、曲集のダウンロードリンクも作成しました。)


VOICES OF ARMENIA (Geghard Ensemble, Pahayan)

アルメニア共和国大使館

先週職場近くのアルメニア共和国??大使館に行った!と言う話を職場でしていたら、近くなら行きたいと言う同僚たちが出てきたので、再び訪問しました。
今回は対応する係の人が少し説明してくださって、意外なことに(失礼)街には地下鉄がある事、国境線が未確定な部分が多い事、アララト山は隣国のトルコ領である事などなどお話しくださいました。 パスポートと称すスタンプ帳は前回訪問時にスタンプを押してもらったので、今回は30年以上前に演奏した、この曲のスコアを持って行って、ペッタン!しました。

iPodから送信

Medical Virtualist

Medical Virutualistという専門医

医療仮想主義者、なかなか面白い言葉です。

病院に行ったら、「変なホテル」みたいにロボットが受け付けして、診察室にも医者型ロボットがいて、ルーチンでさばけるような特に問題のなさそうな奴は本当の医者の診察抜きで投薬するとか。あるいは、そこまでの機能だと、街角の自動販売機型の病院でスクリーニングして必要なら自動販売機で本当の施設を予約するとか…あ、回転ずしのペッパー君みたいだ

 

Translate »