Słownik metodologiczny · Modele regresji

Model Coxa – jak ocenić kilka predyktorów czasu do zdarzenia?

Model proporcjonalnych hazardów Coxa pozwala ocenić wpływ grupy na czas do zdarzenia przy kontroli innych zmiennych. Pokazujemy wzór, HR surowy i skorygowany, przykład w R, opis do pracy i najczęstsze pułapki.

Strona główna / Słownik / Model Coxa
W skrócie: Model Coxa to regresja dla czasu do zdarzenia z obserwacjami cenzurowanymi. exp(β) każdego predyktora to iloraz hazardów przy stałych pozostałych zmiennych. Sprawdź proporcjonalność hazardów i pilnuj liczby zdarzeń na predyktor.

Co to jest model Coxa?

Model Coxa (ang. Cox proportional hazards model) to regresja dla czasu do zdarzenia, w której hazard jest iloczynem nieokreślonego hazardu bazowego i funkcji predyktorów (Cox, 1972). Uwzględnia obserwacje cenzurowane i pozwala ocenić kilka predyktorów naraz, np. grupę, nasilenie objawów i wiek. Tym różni się od krzywej Kaplana–Meiera i testu log-rank, które porównują grupy bez korekty na inne zmienne.

Jak to działa?

h(t) = h0(t) · exp(β1x1 + β2x2 + … + βkxk)

h0(t) to hazard bazowy, którego kształtu model nie zakłada, a exp(β) to iloraz hazardów przy wzroście predyktora o jedną jednostkę i stałych pozostałych zmiennych. Dla zmiennej ciągłej wybierz sensowną jednostkę, np. 5 punktów skali zamiast jednego. Model zakłada, że HR jest stały w czasie (proporcjonalność hazardów).

Przykład

Obserwowano 240 osób po leczeniu depresji do 52 tygodni. Nawrót wystąpił u 151 z nich (dane symulowane). Terapię podtrzymującą częściej dostawały osoby z cięższymi objawami. W modelu z samą grupą HR = 0.82, 95% CI [0.60, 1.13]. Po uwzględnieniu objawów na starcie i wieku HR terapii wyniósł 0.66, 95% CI [0.47, 0.91], p = .012. Każde 5 punktów objawów zwiększało hazard nawrotu (HR = 1.45, 95% CI [1.26, 1.67], p < .001). Test reszt Schoenfelda nie wskazał naruszenia proporcjonalności (globalnie p = .705).

Jak opisać w pracy

Czas do nawrotu analizowano modelem proporcjonalnych hazardów Coxa z grupą, nasileniem objawów na starcie (na 5 punktów) i wiekiem jako predyktorami (151 zdarzeń u 240 osób). Terapia podtrzymująca wiązała się z niższym hazardem nawrotu, HR = 0.66, 95% CI [0.47, 0.91], p = .012, a większe nasilenie objawów z wyższym, HR = 1.45, 95% CI [1.26, 1.67], p < .001. Założenie proporcjonalności hazardów sprawdzono testem reszt Schoenfelda (globalnie p = .705).

Na co uważać

  • Liczy się liczba zdarzeń, nie osób. W symulacji Peduzziego i in. (1995) przy mniej niż 10 zdarzeniach na predyktor współczynniki były obciążone, a przedziały ufności traciły pokrycie.
  • Pojedynczy HR to średnia w czasie. Hernán (2010) przypomina, że HR może się zmieniać w trakcie obserwacji, więc jego wartość zależy od jej długości, a interpretacja przyczynowa jest ryzykowna nawet w badaniu randomizowanym.
  • Korekta to nie randomizacja. Model uwzględnia tylko zmierzone zmienne zakłócające.

Pełną analizę z krzywymi, testem log-rank i diagnostyką modelu pokazuje wpis Analiza przeżycia: Kaplan–Meier i model Coxa.

Przykład reprodukowalny

Model Coxa w R

Kod symuluje dane, dopasowuje model surowy i model z trzema predyktorami w pakiecie survival oraz sprawdza proporcjonalność hazardów.

HR surowy i skorygowany

Dane wejściowe: 240 osób: terapia (0/1), wiek, objawy na starcie (0–40), czas do nawrotu w tygodniach i wskaźnik zdarzenia; osoby bez nawrotu do końca obserwacji są cenzurowane (dane symulowane, set.seed(2610)).

Co odczytać: liczbę zdarzeń, HR z 95% CI w obu modelach, wartości p i wynik cox.zph().

R
library(survival)
set.seed(2610)
n <- 240
dane <- data.frame(terapia = rbinom(n, 1, 0.5), wiek = round(rnorm(n, 35, 10)))
dane$objawy <- round(rnorm(n, 20 + 3 * dane$terapia, 6))   # objawy na starcie (0–40); terapię częściej dostają ciężsi
lin <- -0.6 * dane$terapia + 0.06 * dane$objawy
t_zd <- rexp(n, 0.012 * exp(lin)); t_cenz <- runif(n, 20, 52)    # tygodnie do nawrotu / koniec obserwacji
dane$czas <- round(pmin(t_zd, t_cenz), 1); dane$nawrot <- as.integer(t_zd <= t_cenz)
dane$objawy5 <- dane$objawy / 5                                  # HR na 5 punktów skali
sum(dane$nawrot)                                                 # liczba zdarzeń
surowy <- coxph(Surv(czas, nawrot) ~ terapia, data = dane)
pelny  <- coxph(Surv(czas, nawrot) ~ terapia + objawy5 + wiek, data = dane)
round(exp(cbind(HR = coef(surowy), confint(surowy))), 2)
round(cbind(exp(cbind(HR = coef(pelny), confint(pelny))), p = summary(pelny)$coefficients[, 5]), 3)
round(cox.zph(pelny)$table[, "p"], 3)                           # test proporcjonalnych hazardów
Wynik w R
[1] 151
          HR 2.5 % 97.5 %
terapia 0.82   0.6   1.13
           HR 2.5 % 97.5 %     p
terapia 0.656 0.471  0.913 0.012
objawy5 1.452 1.263  1.671 0.000
wiek    0.986 0.968  1.005 0.145
terapia objawy5    wiek  GLOBAL
  0.501   0.810   0.378   0.705

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet survival).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. survival (wersja 3.8.6): Therneau, T. M. (2026). A package for survival analysis in R (R package version 3.8-6) [Computer software]. https://CRAN.R-project.org/package=survival

Najczęstsze pytania

Czym różni się model Coxa od regresji logistycznej?

Regresja logistyczna modeluje, czy zdarzenie wystąpiło w ustalonym okresie. Model Coxa wykorzystuje też czas do zdarzenia i informację od osób cenzurowanych, a jego wynikiem jest iloraz hazardów.

Ile zdarzeń potrzeba do modelu Coxa?

Częsta reguła to co najmniej 10 zdarzeń na każdy szacowany współczynnik (Peduzzi i in., 1995). Przy mniejszej liczbie zmniejsz liczbę predyktorów.

Co zrobić, gdy założenie proporcjonalnych hazardów nie jest spełnione?

Można dodać interakcję predyktora z czasem, stratyfikować model według tej zmiennej albo podać HR osobno dla okresów obserwacji. Zawsze obejrzyj też krzywe przeżycia.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Cox, D. R. (1972). Regression models and life-tables. Journal of the Royal Statistical Society: Series B (Methodological), 34(2), 187–202. https://doi.org/10.1111/j.2517-6161.1972.tb00899.x
  2. Hernán, M. A. (2010). The hazards of hazard ratios. Epidemiology, 21(1), 13–15. https://doi.org/10.1097/ede.0b013e3181c1ea43 ● Otwarty dostęp: pełny tekst
  3. Peduzzi, P., Concato, J., Feinstein, A. R., & Holford, T. R. (1995). Importance of events per independent variable in proportional hazards regression analysis II. Accuracy and precision of regression estimates. Journal of Clinical Epidemiology, 48(12), 1503–1510. https://doi.org/10.1016/0895-4356(95)00048-8 ● Otwarty dostęp

Cytowania BibTeX

@article{cox1972regression, author={Cox, D. R.}, title={{Regression models and life-tables}}, journal={Journal of the Royal Statistical Society: Series B (Methodological)}, year={1972}, volume={34}, number={2}, pages={187--202}, doi={10.1111/j.2517-6161.1972.tb00899.x}}
@article{hernan2010hazards, author={Hernán, Miguel A.}, title={{The hazards of hazard ratios}}, journal={Epidemiology}, year={2010}, volume={21}, number={1}, pages={13--15}, doi={10.1097/ede.0b013e3181c1ea43}}
@article{peduzzi1995importance, author={Peduzzi, Peter and Concato, John and Feinstein, Alvan R. and Holford, Theodore R.}, title={{Importance of events per independent variable in proportional hazards regression analysis II. Accuracy and precision of regression estimates}}, journal={Journal of Clinical Epidemiology}, year={1995}, volume={48}, number={12}, pages={1503--1510}, doi={10.1016/0895-4356(95)00048-8}}
R