臨床試験データを自然史コントロールと比較する方法


8

コンテキスト:私は、自然史制御を伴う臨床試験のデータを分析する方法を理解することに興味があります。つまり、あるグループの人々(たとえば、疾患の遺伝的リスクがある人々)が採用され、すべてが扱われる臨床試験です薬物、およびそれらの生存率(たとえば、発症時の年齢、またはこの疾患による死亡)が、同じ遺伝的リスクを持つ未治療の歴史的対照の生存率と比較されます。

始める前に、このトピックに触れたFDAガイダンスドキュメント(例:希少疾患:医薬品開発における一般的な問題)を読んだことを認めたいと思います。自然に忍び込むことができる多くの種類のバイアスがあることをよく認識しています歴史の比較と、この理由から、FDAはそのような試験を薬の有効性の証拠として受け入れることはほとんどなく、通常は無作為化試験をはるかに強力な証拠と見なしています。自然史コホートを薬物で治療される将来のコホートと公平に比較​​できるかどうかをどのように決定するかという問題は、重要で複雑な問題です。しかし、それは今日の私の質問のトピックではありません。その代わり、私は、まだはるかに簡単な質問に困惑の問題だということを発見しています場合に自然史のコホートは比較可能で偏りがないと見なされます。統計的に言えば、比較はどのように行われますか?

これがシナリオです。

  • 簡単にするために、私の病気には単一の既知の遺伝的原因があり、この遺伝子型の人はある程度の年齢まで完全に健康であり、その後突然病気になったとします。発症年齢は非常に変動しやすく、危険は年齢の関数として変化します。以下に説明するすべてのデータセットの誰もが、この病気を引き起こす遺伝子型を持っています。
  • データセットAには、架空の臨床試験に参加している人々に関するデータがあります。彼らは1歳で登録し(starting_age)、薬剤で治療され、2番目の年齢(last_age)で病気になる(event == 1)か、または試験から離脱する()まで、さまざまな期間が経過したevent == 0
  • 「理想的な理想」のシナリオでは、おそらく自然史コホートは、この遺伝子型を持つ多数の人々であり、出生からこの疾患または無関係の原因で死亡するまで続きます。そのようなデータセットは存在しません。代わりに、自然史コホートが何であるかについて2つの可能なオプションを検討してください(BおよびC)...
  • データセットBには、いくつかのランダムな年齢(starting_age)で前向き研究に登録し、薬物治療を受けておらず、2番目の年齢(last_age)になるまで、さまざまな期間、単純に追跡された人々に関するデータがあります。病気(event == 1)または研究を中止(event == 0)。開始年齢の分布とフォローアップの年数は、データセットAと同じ分布に従うとは想定できません。
  • データセットCには、純粋に遡及的なデータがあります。ここでは将来のフォローアップはありませんでした。私たちは一人一人を単純に観察しました。一部の人々は、いくつかの特定の年齢で病気になることを観察した(してage、そしてevent == 1他の人がまだいくつかの特定の年齢で健康であることを見て(している間)age、およびevent == 0)。

用語を正しく理解していれば、AとBのデータは左打ち切りと右打ち切りと見なされます。Cのデータは、右打ち切りのみと見なされます。Cain 2011で使用されている用語によると、データセットBは「流行しているコホート」であり、データセットCは「インシデントコホート」であると思います。

私の質問は:

  1. データが各個人の異なる年齢で左端が切り捨てられている場合、データセットAまたはBの生存関数(またはハザード関数など)を構築するにはどうすればよいでしょうか。
  2. データセットAの人がBまたはCの人よりも有意に長く生存するか、ハザードが著しく低いかをテストするためにどの統計テスト(またはブートストラップ法)が使用されますか?
  3. データセットBまたはC しかなく、特定のハザード比に対してN人の個人を対象とした特定の臨床試験の統計的検出力を推定したい場合、どうすればよいでしょうか?
  4. (ボーナス質問)人々が、たとえば、年齢の関数としてさまざまなハザードに関連するさまざまな遺伝的変異も持っている場合、その変数を上記の回答にどのように組み込みますか?

これまでに試したいくつかのこと:

  • 私はフローラのZ統計[ フローラ1978 ] を検討しましたが、いくつかは同様の状況で適用されましたが、参照として使用されている自然史コホートのサンプリングの差異を考慮していないのではないかと心配しています。
  • 左打ち切り時間の異なる生存分析などの用語のいくつかの異なる組み合わせをグーグル検索し生存分析:左打ち切りデータPROC PHREGを使用した左打ち切りの存続など、同様の問題について説明しているページをいくつか見つけましたが、これらは根本的な原因を説明していません彼らのソリューションの数学。
  • 私はついにCain 2011に出会いました。この記事では、問題を詳細に説明しており、補足として、左切り捨てを処理するためのRコードがあります。左打ち切りを組み込んだMLEに独自の関数を実装しましたが、R survivalライブラリに組み込まれた機能を使用して、左打ち切りはCox比例ハザードモデルですでに処理できると主張していますcoxph(Surv(time=agestart,time2=x,event=cx,type='counting')~bmi)。ここで、Survオブジェクトはtime、開始年齢time2として、eventまたは発生したか発生しなかった年齢として使用して作成されます。これは賢明に聞こえるSurvかもしれませんが、のヘルプファイルでは、ここで実際に何が行われているのかは説明されていませんcounting。私はsurvivalマニュアルを見ましたそして、の参照としてcountingAndersen&Gill 1982を指摘しました。これは私の頭の上に少しあり、左の切り捨てについて、または少なくともその名前では議論していないようです。特徴の1つは、「カウント」モデルが、個人が生涯に複数のイベントを保持できるケースに適合するように構築されているように見えることです。私の例ではそうではありませんが、おそらくそれは問題ではありません。
  • 上記に基づいて、Coxの「カウント」モデルはデータセットAとBを比較する正しい方法であると思われ、Rでそのような比較を行うことができました(以下のコードを参照)。私はここで正しいことをしていますが、そのようなアプローチがデータセットAとCを比較するためにどのように(もしあれば)適用できるかわかりません。
  • 最後に、私は、検索クロス検証済みのため切り捨てを左に生存し、人々は私が(求めているのと同様の質問をしていた事例が多数見つかった12344567)が、ほとんど未回答だったが、1つは上記のカインリファレンスを指し、もう1つはクライン&モエシュバーガー2003を指しました これは役に立ちました(egp 123とp。312を参照)。AとBはかなり単純なCoxアプローチを使用して比較できるという概念をサポートしているようですが、AとCの比較可能性や電力計算の質問には対応していません。 (ただし、統計的検定の質問に答えた場合、ブートストラップを行うことでおそらく能力を引き出すことができます)。

以下は、このシナリオを示すRの架空のデータです。各データセットに20行を含めましたが、重要なのは、私が想像している実際のシナリオでは、データセットAとBはおそらく50または100の患者のオーダーであり、データセットCは500または1,000人の患者。

# A) hypothetical data from clinical trial
data_a = read.table(sep='|',header=T,textConnection("
indiv_id|starting_age|last_age|event
1|33|42|0
2|45|49|0
3|47|52|1
4|30|34|0
5|37|44|0
6|34|37|0
7|29|34|0
8|58|66|0
9|58|60|0
10|66|75|0
11|37|41|0
12|37|46|0
13|58|62|0
14|44|48|1
15|45|50|0
16|56|65|0
17|54|63|0
18|36|41|0
19|47|55|1
20|45|55|0
"))

# B) hypothetical data from a prospective natural history study
data_b = read.table(sep='|',header=T,textConnection("
indiv_id|starting_age|last_age|event
101|19|28|0
102|39|52|0
103|38|41|1
104|18|27|0
105|20|24|0
106|16|20|0
107|39|41|0
108|48|50|0
109|40|50|0
110|38|41|1
111|40|43|1
112|26|29|0
113|37|39|0
114|21|30|0
115|36|41|1
116|46|48|0
117|27|32|0
118|26|29|0
119|29|38|0
120|47|58|0
"))


# C) hypothetical data from a retrospective natural history study
data_c = read.table(sep='|',header=T,textConnection("
indiv_id|age|event
201|43|1
202|53|1
203|64|1
204|45|1
205|88|1
206|70|1
207|66|1
208|55|1
209|51|1
210|48|1
211|63|1
212|36|0
213|61|0
214|63|1
215|63|1
216|57|1
217|74|0
218|63|1
219|59|1
220|57|1
"))


# one possible approach to compare A and B using Cox counting model
data_a$drug = TRUE
data_b$drug = FALSE
nh_compare = rbind(data_a, data_b)
m = survfit(Surv(time=starting_age,time2=last_age,event=event,type='counting')~drug, data=nh_compare)
summary(m)
coxph(Surv(time=starting_age,time2=last_age,event=event,type='counting')~drug, data=nh_compare)

最後の注意:Cross Validatedに2つを超えるリンクを投稿するには10の評判が必要なため、上に表示されるはずの(多くの)ハイパーリンクをすべて削除しました。リンク付きのこの投稿のバージョンは私のブログで入手できます。許可された場合、または許可された場合は、リンクを含めるようにこの投稿を更新します。 更新:賛成票を投じたすべての人に感謝!私の評判は> 10で、リンクを含めるようにこの投稿を更新しました。


質問で「治験からの脱退」と言う場合、脱退が単に治験のデータ収集の終わりを表しているのか、それとも容認できない副作用などが原因であったのかが問題になる可能性があります。また、データセットAでは、イベントはありますか?
EdM 2017年

@EdM上記のすべてを考える。撤退には、治験の終了、有害事象の撤回、無関係な原因による死亡、および何らかの理由で興味を失った人々(不明/フォローアップの喪失を含む)が含まれる場合があります。簡単にするために、離脱は関心のある結果とは無関係であると合理的に想定できると考えます(つまり、離脱は疾患の発症によって引き起こされません)。データセットAについては、ハザード比に依存すると思います。薬が非常に効果的であれば、イベントはないかもしれません。質問が1人あたりのイベント数である場合、答えは、各人が最大で1つのイベントを持つことができるということです。
ericminikel 2017年

それは長い質問です。それを小さな質問に分解できないと確信していますか?そのようにして、非疫学の人々がチャイムになる可能性がある
Aksakal 2017年

回答:


3

数年後、私は満足のいく答えに到達しました。これは実際、Cox比例ハザードカウンティングモデルを使用することで判明しました。これにより、さまざまな右打ち切り時間に加えて、さまざまな左打ち切り時間(個人の追跡を開始した年齢)を考慮することができます。質問で述べたように、これはsurvivalパッケージcoxph関数のRに実装されています。ここtimeで、は左time2打ち切り時間、右打ち切り時間、event右手で発生した時間でありtype='counting'、Coxカウントモデルの指定に使用します。

私の投稿で提起された特定の質問への回答は次のとおりです。

1.生存率は実際に次のように計算できます。survfitこのモデルは、リスクのある個人の数が、追跡されている年齢範囲に出入りするときに、時間の経過とともにどのように増加および減少するかを説明します。上に投稿されたおもちゃのデータセットの例はplot(survfit(Surv(time=starting_age,time2=last_age,event=event,type='counting')~1, data=data_a))

2.遡及的データが出生後の人々を追跡することと同等であると単純に仮定する場合、モデルは左切り捨て予測データと非左切り捨て遡及的データを比較できます。この仮定は完全ではないかもしれませんが、これはモデルが回避するデータセットの固有の制限です。上記のおもちゃのデータセットのコード例は次のようになります。

data_c$starting_age = 0
data_c$last_age = data_c$age
data_c$drug = FALSE
nh_compare = rbind(data_a, data_c[,c('indiv_id','starting_age','last_age','event','drug')])
coxph(Surv(time=starting_age,time2=last_age,event=event,type='counting')~drug, data=nh_compare)

3.閉じた形の電力計算がないように見えますが、代わりにブートストラップによってこれを行いました。特定のデータセットに対してこれを行うためのコードがここに表示されます

4. coxph共変量を考慮しているため、たとえば、ここで使用したコードcoxph(Surv(time=ascertainment_age,time2=surv_age,event=surv_status,type='counting')~asc+family_mutation,data=prore)family_mutationはが共変量です。

このアプローチを使用して、遺伝子プリオン病の予防的臨床試験の検出力を計算した論文を発表しました。あなたはbioRxivの詳細を読むことができ、私たちのRコードはすべてパブリックGitHubリポジトリにあります:

https://github.com/ericminikel/prnp_onset/

引用:

Minikel EV、Vallabh SM、Orseth MC、Brandel JP、HaïkS、Laplanche JL、Zerr I、Parchi P、Capellari S、Safar J、Kenny J、Fong JC、Takada LT、Ponto C、Hermann P、Knipper T、Stehmann C 、北本T、Ae R、浜口T、三条N、塚本T、水沢H、コリンズSJ、Chiesa R、ロイターI、de Pedro-Cuesta J、Calero M、Geschwind MD、山田M、中村Y、ミードS. Age遺伝性プリオン病の発症時および予防的臨床試験のデザイン神経学。2019 6月6日pii:10.1212 / WNL.0000000000007745。土井:10.1212 / WNL.0000000000007745。PubMed PMID:31171647。


1

エリック、おおまかに言って、あなたの問題は非常に深刻に聞こえるので、既製の解決策を探すのは見当違いです。むしろ、ほぼ確実に、疾患の病態生理学に関する特別なドメインの知識を活用するために、オーダーメイドのモデリングに頼る必要があります。あなたがそのような知識をもたらすことを可能にするモデリングアプローチを使用しない限り、あなたはあなたが直面している手ごわい「対戦相手」に対してチャンスに耐えられないかもしれません!

あなたの最善の最初のステップは、あなたが実際に持っている「特別なドメイン知識」を正確に理解することかもしれません。データセットの個人のエントリを管理する(左トランケーション)プロセスを含む、データを生成したプロセス(つまり、データ生成プロセスまたはDGP)をシミュレートできますか?DGPをシミュレーションできるようになると、ベイジアン手法により、シミュレーションモデルにデータを「チャレンジ」できるようになります。たとえば、モデルのパラメーターを推定できます。Odd Aalenの生存分析のベイジアン手法に関する懐疑論[1]にも関わらず、私は現在、そのようなアプローチについて少なくとも1つの文章がある[2] ことに注意します。

もし私がそのような問題に直面したなら、私はまずシミュレーションとベイズ推論を通してそれを探求する傾向があります。おそらく私は、そのプロセスで十分に学習して、より伝統的な頻度主義の推定アプローチにつながる可能性のあるより単純なプロセスモデルを定式化するでしょう。より単純なモデルとより豊富なシミュレーションの間の相互作用は、確かにそれ自身の貴重な形の洞察と理解をもたらすかもしれません。

最終的にどのアプローチを採用するか、またそれがどのように機能するかについて、最終的にここで私たち全員を更新してください。

  1. アーレンOO。医療統計-自己満足の時間はありません。Stat Methods Med Res。2000; 9(1):31-40。土井:10.1177 / 096228020000900105

  2. イブラヒムJG、陳MH、シンハD.ベイジアン生存分析。ニューヨーク:スプリンガー; 2010。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.