Vergleich der Daten klinischer Studien mit einer Kontrolle der Naturgeschichte


8

Kontext: Ich bin daran interessiert zu verstehen, wie Daten aus klinischen Studien mit einer naturgeschichtlichen Kontrolle analysiert werden können, dh einer klinischen Studie, in der eine Gruppe von Personen (z. B. Personen mit genetischem Risiko für eine Krankheit) rekrutiert wird, mit denen alle behandelt werden ein Medikament und sein Überleben (z. B. Alter bei Krankheitsbeginn oder Tod aufgrund dieser Krankheit) wird mit dem Überleben unbehandelter historischer Kontrollen mit demselben genetischen Risiko verglichen.

Bevor ich anfange, möchte ich nur anerkennen, dass ich FDA-Leitliniendokumente (z. B. seltene Krankheiten: Häufige Probleme bei der Arzneimittelentwicklung ) gelesen habe, die sich mit diesem Thema befassen, und mir ist klar, dass es viele Arten von Verzerrungen gibt, die sich in die Natur einschleichen können Anamnese-Vergleiche und aus diesem Grund akzeptiert die FDA solche Studien nur selten als Beweis für die Wirksamkeit eines Arzneimittels, sondern betrachtet randomisierte Studien in der Regel als weitaus stärkere Beweise. Die Frage, wie festgestellt werden kann, ob eine naturhistorische Kohorte fair mit einer potenziellen Kohorte verglichen werden kann, die mit einem Medikament behandelt wird, ist eine wichtige und komplexe Frage. Aber das ist heute nicht das Thema meiner Frage. Stattdessen stelle ich fest, dass ich bei einer noch viel einfacheren Frage, der Frage, ob, ratlos binEine naturhistorische Kohorte wird als vergleichbar und unvoreingenommen angesehen und so weiter. Wie würde man dann statistisch gesehen den Vergleich durchführen?

Hier ist ein Szenario.

  • Nehmen wir zur Vereinfachung an, meine Krankheit hat eine einzige bekannte genetische Ursache, und Menschen mit diesem Genotyp sind bis zu einem gewissen Alter vollkommen gesund, und dann werden sie plötzlich sehr krank. Das Alter des Ausbruchs der Krankheit ist sehr unterschiedlich und die Gefahr variiert in Abhängigkeit vom Alter. Jeder in jedem unten beschriebenen Datensatz hat diesen krankheitsverursachenden Genotyp.
  • In Datensatz A habe ich Daten zu Personen in einer hypothetischen klinischen Studie. Sie schrieben sich in einem Alter ein ( starting_age), wurden mit einem Medikament behandelt und erhielten eine variable Zeitspanne bis zu einem zweiten Alter ( last_age), in dem sie entweder krank wurden ( event == 1) oder sich aus der Studie zurückzogen ( event == 0).
  • In einem "ideal idealen" Szenario wäre die naturhistorische Kohorte möglicherweise eine große Anzahl von Menschen mit diesem Genotyp, die von der Geburt an verfolgt wurden, bis sie entweder an dieser Krankheit oder an einer nicht verwandten Ursache starben. Diese Art von Datensatz existiert nicht. Betrachten Sie stattdessen zwei mögliche Optionen für die naturhistorische Kohorte (B und C) ...
  • In Datensatz B habe ich Daten zu Personen, die in einem zufälligen Alter ( starting_age) in eine prospektive Studie aufgenommen wurden, mit keinem Medikament behandelt wurden und einfach für einen variablen Zeitraum bis zu einem zweiten Alter ( last_age) verfolgt wurden, in dem sie entweder wurden krank ( event == 1) oder aus der Studie zurückgezogen ( event == 0). Es kann nicht angenommen werden, dass die Verteilung des Anfangsalters und die Anzahl der Nachbeobachtungsjahre den gleichen Verteilungen wie in Datensatz A folgen.
  • In Datensatz C habe ich rein retrospektive Daten; hier gab es keine prospektive Nachverfolgung. Wir haben einfach jede Person einmal beobachtet. Einige Leute wurden beobachtet bei einem bestimmten Alter krank werden ( ageund event == 1) , während andere noch in einem bestimmten Alter gesund zu sehen sein ( ageund event == 0).

Wenn ich die Terminologie richtig verstehe, werden die Daten in A und B als links abgeschnitten und rechts zensiert betrachtet. Die Daten in C würden nur als rechtszensiert betrachtet. Nach den in Cain 2011 verwendeten Begriffen glaube ich, dass Datensatz B eine "vorherrschende Kohorte" ist, während Datensatz C eine "Vorfallkohorte" ist.

Meine Fragen sind:

  1. Wie kann man (wenn überhaupt) eine Überlebensfunktion (oder eine Gefahrenfunktion usw.) für Datensatz A oder B konstruieren, wenn die Daten für jedes Individuum in unterschiedlichen Altersstufen abgeschnitten werden?
  2. Welcher statistische Test (oder welche Bootstrapping-Methode) würde verwendet, um zu testen, ob Personen in Datensatz A signifikant länger überleben oder eine signifikant geringere Gefahr aufweisen als Personen in B oder C?
  3. Wenn Sie nur Datensatz B oder C hätten und die statistische Aussagekraft einer bestimmten klinischen Studie mit N Personen für eine bestimmte Gefährdungsquote abschätzen möchten, wie würden Sie vorgehen?
  4. (Bonusfrage) Wenn Menschen beispielsweise auch unterschiedliche genetische Mutationen hätten, die mit unterschiedlichen Gefahren in Abhängigkeit vom Alter verbunden sind, wie würden Sie diese Variable in die obigen Antworten einbeziehen?

Einige Dinge, die ich bisher versucht habe:

  • Ich habe Floras Z-Statistik [ Flora 1978 ] betrachtet, die einige in ähnlichen Situationen angewendet haben, aber ich bin besorgt, dass sie die Stichprobenvarianz in der naturhistorischen Kohorte, die als Referenz verwendet wird, nicht berücksichtigt.
  • Ich habe ein paar verschiedene Kombinationen von Begriffen gegoogelt, z. B. Überlebensanalyse mit unterschiedlichen Verkürzungszeiten für die linke Seite, und einige Seiten gefunden, auf denen ähnliche Probleme behandelt werden, z. B. Überlebensanalyse: Links abgeschnittene Daten , Überleben der linken Kürzung mit PROC PHREG , aber diese haben den zugrunde liegenden Wert nicht erklärt Mathematik ihrer Lösung.
  • Endlich bin ich auf Cain 2011 gestoßen, das das Problem ausführlich bespricht und in der Beilage einen R-Code für den Umgang mit Linksabschneidungen enthält . Sie implementierten ihre eigene Funktion für einen MLE mit Linksabschneidung. Die Behauptung lautet jedoch, dass Linksabschneidungen bereits in einem Cox-Proportional-Hazards-Modell mithilfe der in die R- survivalBibliothek integrierten Funktionen behandelt werden können, z coxph(Surv(time=agestart,time2=x,event=cx,type='counting')~bmi). Hier wird ein SurvObjekt erstellt, das timeals Startalter und time2als Alter verwendet wird, in dem es evententweder passiert ist oder nicht. Das klingt sinnvoll, obwohl die Hilfedatei für Survnicht erklärt, was sie hier tatsächlich tut - zum Beispiel nicht, was das countingModell beinhaltet. Ich wandte mich dem survivalHandbuch zuund als Referenz für countingwurde auf Andersen & Gill 1982 verwiesen, was wiederum etwas über meinem Kopf lag und nicht über linke Kürzungen oder zumindest nicht unter diesem Namen zu sprechen scheint. Eine Besonderheit ist, dass das "Zähl" -Modell für Fälle geeignet ist, in denen eine Person mehrere Ereignisse in ihrem Leben haben kann, was in meinem Beispiel nicht der Fall ist, aber vielleicht spielt das keine Rolle.
  • Basierend auf dem oben Gesagten schien es, als wäre ein Cox-Zählmodell der richtige Weg, um Datensatz A mit B zu vergleichen, und ich konnte einen solchen Vergleich in R durchführen (siehe Code unten), obwohl ich immer noch Schwierigkeiten habe zu verstehen, ob Ich mache hier das Richtige und bin mir nicht sicher, wie (wenn überhaupt) ein solcher Ansatz angewendet werden könnte, um Datensatz A mit C zu vergleichen.
  • Schließlich suchte ich in Cross Validated nach Überlebenskürzungen und fand eine große Anzahl von Fällen, in denen Personen ähnliche Fragen gestellt hatten wie ich ( 1 , 2 , 3 , 4 , 4 , 5 , 6 , 7 ), die meisten jedoch unbeantwortet blieben. einer wies auf die obige Kain-Referenz hin, ein anderer auf Klein & Moeschberger 2003 Dies war hilfreich (siehe z. B. S. 123 und S. 312) und scheint die Vorstellung zu stützen, dass A und B mit einem relativ einfachen Cox-Ansatz verglichen werden können, obwohl weder die Vergleichbarkeit von A mit C noch die Frage der Leistungsberechnung behandelt werden (Wenn jedoch die statistische Testfrage beantwortet wird, könnte ich vermutlich mit etwas Bootstrapping an die Macht kommen).

Nachfolgend sind einige hypothetische Daten in R aufgeführt, die dieses Szenario veranschaulichen. Ich habe 20 Zeilen für jeden Datensatz eingefügt, obwohl in dem von mir vorgestellten realen Szenario die Datensätze A und B möglicherweise in der Größenordnung von 50 oder 100 Patienten liegen und der Datensatz C in der Größenordnung von 500 oder 1.000 Patienten.

# 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)

Schlussbemerkung: Da eine Reputation von 10 erforderlich ist, um> 2 Links auf Cross Validated zu veröffentlichen, habe ich alle (vielen) Hyperlinks entfernt, die oben angezeigt werden sollten. Eine Version dieses Beitrags mit Links ist in meinem Blog verfügbar. Ich werde diesen Beitrag aktualisieren, um die Links aufzunehmen, wenn oder wann ich dazu berechtigt bin. Update: Danke an alle, die gestimmt haben! Ich habe jetzt einen Ruf> 10 und habe diesen Beitrag aktualisiert, um Links aufzunehmen.


Wenn Sie in Ihrer Frage "Aus der Studie zurückgezogen" sagen, kann es von Bedeutung sein, ob die Rücknahme lediglich das Ende der Datenerfassung für die Studie darstellt oder ob dies auf inakzeptable Nebenwirkungen usw. zurückzuführen ist. Auch in Ihrem Datensatz A, wie viele Veranstaltungen gibt es?
EdM

@EdM Ich denke all das oben. Die Rücknahme kann das Ende des Versuchs, die Rücknahme unerwünschter Ereignisse, Todesfälle aufgrund nicht verwandter Ursachen und Personen umfassen, die aus irgendeinem Grund das Interesse verloren haben (einschließlich unbekannter / verlorener Folgemaßnahmen). Der Einfachheit halber können wir jedoch davon ausgehen, dass der Entzug unabhängig vom interessierenden Ergebnis ist (dh der Entzug wird nicht durch den Ausbruch einer Krankheit ausgelöst). Der Datensatz A hängt vermutlich von der Gefährdungsquote ab. Wenn das Medikament sehr wirksam ist, gibt es möglicherweise keine Ereignisse. Wenn Ihre Frage lautet, wie viele Ereignisse pro Person vorhanden sind, lautet die Antwort, dass jede Person höchstens ein Ereignis jemals haben kann.
Ericminikel

Das ist eine lange Frage. Sind Sie sicher, dass es nicht in kleinere Fragen unterteilt werden kann? Auf diese Weise könnten nicht-epidemiologische Menschen in
Aksakal

Antworten:


3

Jahre später bin ich zu einer zufriedenstellenden Antwort gekommen. Es stellte sich tatsächlich heraus, dass ein Cox-Proportional-Hazards-Counting-Modell verwendet wurde , mit dem Sie zusätzlich zu den rechten Zensurzeiten verschiedene Zeiten für das Abschneiden der linken Seite (Alter, in dem Sie begonnen haben, den Personen zu folgen) berücksichtigen können. Wie in der Frage erwähnt, wird dies in R in der survivalPaketfunktion implementiert coxph, wobei timedie Zeit time2für die Linksabschneidung, die Zeit für die Rechtszensur, die Zeit für eventdie rechte Zeit ist und Sie type='counting'das Cox-Zählmodell angeben .

Die Antworten auf bestimmte Fragen in meinem Beitrag lauten:

1. Das Überleben kann in der Tat berechnet werden mit survfit- das Modell berücksichtigt, wie die Anzahl gefährdeter Personen im Laufe der Zeit sowohl wachsen als auch schrumpfen kann, wenn Menschen die Altersgruppen betreten und verlassen, in denen sie verfolgt wurden. Ein Beispiel für den oben angegebenen Spielzeugdatensatz wäreplot(survfit(Surv(time=starting_age,time2=last_age,event=event,type='counting')~1, data=data_a))

2. Das Modell kann die links abgeschnittenen prospektiven Daten mit den nicht links abgeschnittenen retrospektiven Daten vergleichen, wenn Sie einfach davon ausgehen, dass die retrospektiven Daten den folgenden Personen von Geburt an entsprechen. Diese Annahme ist möglicherweise nicht perfekt, aber dies ist eine inhärente Einschränkung des Datensatzes, die kein Modell umgehen kann. Beispielcode für den obigen Spielzeugdatensatz wäre:

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. Es scheint keine geschlossene Leistungsberechnung zu geben, stattdessen haben wir dies durch Bootstrapping getan. Unser Code dafür für unseren spezifischen Datensatz wird hier angezeigt .

4. coxpherlaubt Kovariaten, also haben wir zum Beispiel in unserem Code verwendet, coxph(Surv(time=ascertainment_age,time2=surv_age,event=surv_status,type='counting')~asc+family_mutation,data=prore)wo family_mutationeine Kovariate ist.

Wir haben ein Papier veröffentlicht, in dem dieser Ansatz zur Berechnung der Leistung für präventive klinische Studien bei genetisch bedingten Prionenerkrankungen verwendet wurde. Sie können die Details zu bioRxiv lesen und unser R-Code befindet sich in einem öffentlichen GitHub-Repo:

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

Zitat:

Minikel EV, Vallabh SM, Orseth MC, Brandel JP, Haïk S., Laplanche JL, Zerr I., Parchi P., Capellari S., Safar J., Kenny J., Fong J. C., Takada LT, Ponto C., Hermann P., Knipper T., Stehmann C. Kitamoto T., Ae R., Hamaguchi T., Sanjo N., Tsukamoto T., Mizusawa H., Collins S. J., Chiesa R., Roiter I., de Pedro-Cuesta J., Calero M., Geschwind MD, Yamada M., Nakamura Y., Mead S. Age zu Beginn der genetischen Prionkrankheit und des Designs präventiver klinischer Studien . Neurologie . 2019 Jun 6. pii: 10.1212 / WNL.0000000000007745. doi: 10.1212 / WNL.0000000000007745. PubMed PMID: 31171647.


1

Eric, im Großen und Ganzen klingt Ihr Problem so schwerwiegend, dass eine Suche nach Standardlösungen fehlgeleitet erscheint. Vielmehr müssen Sie mit ziemlicher Sicherheit auf maßgeschneiderte Modelle zurückgreifen, um Ihr spezielles Domänenwissen über die Pathophysiologie der Krankheit zu nutzen. Wenn Sie keinen Modellierungsansatz verwenden, mit dem Sie dieses Wissen einbringen können, haben Sie möglicherweise keine Chance gegen den gewaltigen „Gegner“, dem Sie gegenüberstehen!

Ihr bester erster Schritt könnte darin bestehen, herauszufinden, über welches „spezielle Domänenwissen“ Sie tatsächlich verfügen. Können Sie den Prozess simulieren, der Ihre Daten generiert hat (dh den Datengenerierungsprozess oder DGP ), einschließlich des Prozesses ( Linksabschneidung ), der die Eingabe von Personen in Ihren Datensatz regelt ? Sobald Sie den DGP simulieren können, sollten Bayes'sche Methoden es Ihnen ermöglichen, Ihr Simulationsmodell mit Daten herauszufordern, z. B. um die Parameter Ihres Modells zu schätzen. Ungeachtet der Fin de Siècle- Skepsis von Odd Aalen gegenüber Bayes'schen Methoden zur Überlebensanalyse [1] stelle ich fest, dass es jetzt mindestens einen Text zu solchen Ansätzen gibt [2].

Wenn ich mit einem solchen Problem konfrontiert wäre, wäre ich geneigt, es zuerst durch Simulation und Bayes'sche Folgerung zu untersuchen. Vielleicht würde ich in diesem Prozess genug lernen, um einfachere Prozessmodelle zu formulieren, die zu traditionelleren Ansätzen der häufigeren Schätzung führen könnten. Das Zusammenspiel zwischen einfacheren Modellen und umfangreicheren Simulationen könnte tatsächlich zu wertvollen Einsichten und Verständnis führen.

Ich hoffe, Sie werden uns alle hier irgendwann darüber informieren, welchen Ansatz Sie letztendlich verfolgen und wie er funktioniert!

  1. Aalen OO. Medizinische Statistik - keine Zeit für Selbstzufriedenheit. Stat Methoden Med Res. 2000; 9 (1): 31 & ndash; 40. doi: 10.1177 / 096228020000900105 .

  2. Ibrahim JG, Chen MH, Sinha D. Bayesianische Überlebensanalyse. New York: Springer; 2010.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.