Mehrere Zeilen derselben Person oder Gruppe: Cluster und Frailty
Kurz
Gehören mehrere Zeilen zur selben Person oder Gruppe (Würfe, Zentren, wiederholte Ereignisse), sind sie nicht unabhängig. In der Karte „Wie lange dauert es bis zu einem Ereignis?“ gibt es unter „Weitere Wege“ die Kennung mit zwei Wegen. Cluster (Voreinstellung) ändert nur die Standardfehler (robust, Sandwich); die Hazard Ratios bleiben genau gleich und gelten im Mittel über die Gruppen (marginal). Frailty (gamma, fortgeschritten) gibt jeder Gruppe eine eigene Neigung und schätzt deren Varianz; die Hazard Ratio gilt bei gleicher Gruppe (bedingt). Beides zugleich rechnet Statable nie. Die Kennung geht als Zahlencode nach R, nicht als Text.
Ein Beispiel mit Zahlen
rats: 300 Ratten in 100 Würfen, 42 Ereignisse, Behandlung rx. Ohne Kennung: b = 0,714, Standardfehler 0,309, HR = 2,04, p = ,021. Mit Cluster: dasselbe b, robuster Standardfehler 0,271, z = 2,63, p = ,008. Mit Frailty (gamma, Efron): b = 0,727, HR = 2,07, Varianz der Frailty 2,02, p = ,022. Der Test auf Varianz 0 ist ein Likelihood-Quotient: χ² = 10,23, halbiertes p = ,0007.
Grenzen und Fallen
- Bedingt und marginal sind verschiedene Zahlen. Gemessen (100 Gruppen zu 5, wahres b = 1, Frailty-Varianz 2, 150 Läufe): Cox ohne Frailty oder mit Cluster im Mittel 0,749 (± 0,013), Frailty 1,01 (± 0,015). Das ist keine Schwäche des Clusters, sondern eine andere Frage.
- Der p-Wert der Zeile „frailty“ in der R-Ausgabe ist kein Test auf Varianz 0. Statable nimmt den Likelihood-Quotienten mit halbiertem p, weil die Varianz nicht unter 0 liegen kann (Rand des Parameterraums).
- Die Varianz kann gegen 0 gehen (Beispiel kidney: 5·10⁻⁹). Dann gibt es über die Angaben hinaus keine Unterschiede zwischen den Gruppen, und die Koeffizienten sind wie ohne Frailty. Statable sagt es.
- Mindestens zwei Gruppen mit je mindestens zwei Zeilen; sonst ist die Rechnung gesperrt. Unter 20 Gruppen warnt Statable (Faustregel ohne Quelle): Standardfehler und Varianz sind dann unsicher. Gruppen mit nur einer Zeile tragen nichts bei.
- Die Frailty ist gamma-verteilt angenommen. Eine normalverteilte Frailty (coxme) gibt andere Zahlen: bei rats b = 0,730 und Varianz 1,32. Statable bietet sie nicht an.
- Gleiche Zeiten: Efron (Voreinstellung) oder Breslow, die Zahlen unterscheiden sich leicht (rats: b = 0,727 gegen 0,721; Varianz 2,02 gegen 1,98). Zeitabhängige Größen gibt es mit Kennung nicht.
Ergebnis berichten
Cox-Regression mit Cluster (100 Gruppen): HR = 2,04, 95 %-KI [1,20; 3,47], p = ,008 (Behandlung); 300 Zeilen, 42 Ereignisse
Für Fachleute
library(survival)
m1 <- coxph(Surv(time, status) ~ rx + cluster(litter), data = rats)
m2 <- coxph(Surv(time, status) ~ rx + frailty(litter, distribution = "gamma"), data = rats)
m2$history[[1]]$theta # Varianz der Frailty