Кілька рядків однієї особи або групи: cluster і frailty
Коротко
Якщо кілька рядків належать одній особі або групі (посліди, центри, повторні події), вони не є незалежними. У картці «Скільки часу минає до події?» ідентифікатор має в «Більше параметрів» два шляхи. Cluster (за замовчуванням) змінює лише стандартні похибки (робастні, sandwich); відношення ризиків лишаються точно тими самими й стосуються в середньому всіх груп (маргінально). Frailty (гамма, для досвідчених) дає кожній групі власну схильність і оцінює її дисперсію; відношення ризиків стосується тієї самої групи (умовно). Statable ніколи не рахує обидва одночасно. Ідентифікатор передається в R як числовий код, а не як текст.
Приклад із числами
rats: 300 щурів у 100 послідах, 42 події, лікування rx. Без ідентифікатора: b = 0,714, стандартна похибка 0,309, HR = 2,04, p = ,021. З cluster: те саме b, робастна стандартна похибка 0,271, z = 2,63, p = ,008. З frailty (гамма, Efron): b = 0,727, HR = 2,07, дисперсія frailty 2,02, p = ,022. Критерій для дисперсії 0 - відношення правдоподібності: χ² = 10,23, p, поділене навпіл, = ,0007.
Межі та пастки
- Умовне й маргінальне - різні числа. Виміряно (100 груп по 5, справжнє b = 1, дисперсія frailty 2, 150 прогонів): Кокс без frailty або з cluster у середньому 0,749 (± 0,013), frailty 1,01 (± 0,015). Це не слабкість cluster, а інше питання.
- p-значення в рядку «frailty» у виведенні R не є критерієм для дисперсії 0. Statable використовує відношення правдоподібності з p, поділеним навпіл, бо дисперсія не може бути меншою за 0 (межа простору параметрів).
- Дисперсія може впасти до 0 (приклад kidney: 5·10⁻⁹). Тоді понад предиктори групи не відрізняються, а коефіцієнти такі самі, як без frailty. Statable про це повідомляє.
- Щонайменше дві групи щонайменше з двома рядками; інакше обчислення заблоковано. Якщо груп менше ніж 20, Statable попереджає (емпіричне правило без джерела): стандартні похибки та дисперсія тоді невизначені. Групи з одним рядком нічого не додають.
- Припускається, що frailty має гамма-розподіл. Frailty з нормальним розподілом (coxme) дає інші числа: для щурів b = 0,730 і дисперсія 1,32. Statable цього не пропонує.
- Однакові значення часу: Efron (за замовчуванням) або Breslow, числа трохи відрізняються (щури: b = 0,727 проти 0,721; дисперсія 2,02 проти 1,98). З ідентифікатором коваріат, залежних від часу, немає.
Подання результату
Регресія Кокса з cluster (100 груп): HR = 2,04, 95% ДІ [1,20; 3,47], p = ,008 (лікування); 300 рядків, 42 події
Для фахівців
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