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 (
age
undevent == 1
) , während andere noch in einem bestimmten Alter gesund zu sehen sein (age
undevent == 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:
- 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?
- 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?
- 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?
- (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-
survival
Bibliothek integrierten Funktionen behandelt werden können, zcoxph(Surv(time=agestart,time2=x,event=cx,type='counting')~bmi)
. Hier wird einSurv
Objekt erstellt, dastime
als Startalter undtime2
als Alter verwendet wird, in dem esevent
entweder passiert ist oder nicht. Das klingt sinnvoll, obwohl die Hilfedatei fürSurv
nicht erklärt, was sie hier tatsächlich tut - zum Beispiel nicht, was dascounting
Modell beinhaltet. Ich wandte mich demsurvival
Handbuch zuund als Referenz fürcounting
wurde 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.
quelle
Antworten:
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
survival
Paketfunktion implementiertcoxph
, wobeitime
die Zeittime2
für die Linksabschneidung, die Zeit für die Rechtszensur, die Zeit fürevent
die rechte Zeit ist und Sietype='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:
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.
coxph
erlaubt 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)
wofamily_mutation
eine 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.
quelle
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!
Aalen OO. Medizinische Statistik - keine Zeit für Selbstzufriedenheit. Stat Methoden Med Res. 2000; 9 (1): 31 & ndash; 40. doi: 10.1177 / 096228020000900105 .
Ibrahim JG, Chen MH, Sinha D. Bayesianische Überlebensanalyse. New York: Springer; 2010.
quelle