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.